From 162b6c7db09410d4f3277ad48ed740d745926a90 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Thu, 18 May 2023 18:09:07 +0200 Subject: [PATCH] [v10.0.x] Nested folders: only stop recursing up the tree if we hit a folder (#68716) Nested folders: only stop recursing up the tree if we hit a folder (#68676) only stop recursing up the tree if we hit a folder (cherry picked from commit 0a44793390aa81bb68296d92c665231a6c08fd4c) Co-authored-by: Ashley Harrison --- public/app/core/selectors/navModel.ts | 10 ++++------ public/app/features/folders/state/navModel.ts | 4 +++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/public/app/core/selectors/navModel.ts b/public/app/core/selectors/navModel.ts index a3ce03f60ea..4a966ff6250 100644 --- a/public/app/core/selectors/navModel.ts +++ b/public/app/core/selectors/navModel.ts @@ -1,5 +1,6 @@ import { NavModel, NavModelItem, NavIndex } from '@grafana/data'; import { config } from '@grafana/runtime'; +import { FOLDER_ID } from 'app/features/folders/state/navModel'; import { HOME_NAV_ID } from '../reducers/navModel'; @@ -38,12 +39,9 @@ export const getNavModel = (navIndex: NavIndex, id: string, fallback?: NavModel, }; export function getRootSectionForNode(node: NavModelItem): NavModelItem { - // Don't recurse fully up the tree when nested folders is enabled - // This is to handle folder tabs that still use getNavModel - // Once we've transitioned those pages to build the nav model directly (as in BrowseDashboardsPage) we won't need this - // I _think_ this is correct/safe, but put the change behind the feature toggle just in case - if (config.featureToggles.nestedFolders) { - return node.parentItem && node.parentItem.id !== HOME_NAV_ID ? node.parentItem : node; + // Don't recurse fully up the folder tree when nested folders is enabled + if (config.featureToggles.nestedFolders && node.id === FOLDER_ID) { + return node; } else { return node.parentItem && node.parentItem.id !== HOME_NAV_ID ? getRootSectionForNode(node.parentItem) : node; } diff --git a/public/app/features/folders/state/navModel.ts b/public/app/features/folders/state/navModel.ts index 468535807c0..4a9b29644b1 100644 --- a/public/app/features/folders/state/navModel.ts +++ b/public/app/features/folders/state/navModel.ts @@ -3,6 +3,8 @@ import { config } from '@grafana/runtime'; import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction, FolderDTO } from 'app/types'; +export const FOLDER_ID = 'manage-folder'; + export const getDashboardsTabID = (folderUID: string) => `folder-dashboards-${folderUID}`; export const getLibraryPanelsTabID = (folderUID: string) => `folder-library-panels-${folderUID}`; export const getAlertingTabID = (folderUID: string) => `folder-alerting-${folderUID}`; @@ -12,7 +14,7 @@ export const getSettingsTabID = (folderUID: string) => `folder-settings-${folder export function buildNavModel(folder: FolderDTO, parents = folder.parents): NavModelItem { const model: NavModelItem = { icon: 'folder', - id: 'manage-folder', + id: FOLDER_ID, subTitle: 'Manage folder dashboards and permissions', url: folder.url, text: folder.title,