From da34ed105a02e62e61937d1e80d78903f28d4ece Mon Sep 17 00:00:00 2001 From: fisjac Date: Thu, 28 Sep 2023 08:40:29 -0500 Subject: [PATCH 1/6] added location tracking to header menu --- superset-frontend/src/features/home/Menu.tsx | 28 +++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/superset-frontend/src/features/home/Menu.tsx b/superset-frontend/src/features/home/Menu.tsx index 92766cfdda3a..f2953f21a2bc 100644 --- a/superset-frontend/src/features/home/Menu.tsx +++ b/superset-frontend/src/features/home/Menu.tsx @@ -24,7 +24,7 @@ import { getUrlParam } from 'src/utils/urlUtils'; import { Row, Col, Grid } from 'src/components'; import { MainNav as DropdownMenu, MenuMode } from 'src/components/Menu'; import { Tooltip } from 'src/components/Tooltip'; -import { Link } from 'react-router-dom'; +import { Link, useLocation } from 'react-router-dom'; import { GenericLink } from 'src/components/GenericLink/GenericLink'; import Icons from 'src/components/Icons'; import { useUiConfig } from 'src/components/UiConfigContext'; @@ -186,6 +186,31 @@ export function Menu({ return () => window.removeEventListener('resize', windowResize); }, []); + enum paths { + EXPLORE = '/explore', + DASHBOARD = '/dashboard', + CHART = '/chart', + DATASETS = '/tablemodelview', + } + const [activeTabs, setActiveTabs] = useState(['']); + const location = useLocation(); + useEffect(() => { + const path = location.pathname; + switch (true) { + case path.startsWith(paths.DASHBOARD): + setActiveTabs(['Dashboards']); + break; + case path.startsWith(paths.CHART) || path.startsWith(paths.EXPLORE): + setActiveTabs(['Charts']); + break; + case path.startsWith(paths.DATASETS): + setActiveTabs(['Datasets']); + break; + default: + setActiveTabs(['']); + } + }, [location]); + const standalone = getUrlParam(URL_PARAMS.standalone); if (standalone || uiConfig.hideNav) return <>; @@ -268,6 +293,7 @@ export function Menu({ mode={showMenu} data-test="navbar-top" className="main-nav" + selectedKeys={activeTabs} > {menu.map((item, index) => { const props = { From e6bcd507834040b436111e81d63b4a45864ffd69 Mon Sep 17 00:00:00 2001 From: fisjac Date: Wed, 4 Oct 2023 12:29:59 -0500 Subject: [PATCH 2/6] added missing useRouter: true in single test case --- superset-frontend/package-lock.json | 4 ++-- superset-frontend/src/features/home/Menu.test.tsx | 6 +++++- superset-frontend/src/features/home/Menu.tsx | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index 370cd3f1f246..8174442a4567 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -284,8 +284,8 @@ "webpack-sources": "^3.2.3" }, "engines": { - "node": "^16.9.1", - "npm": "^7.5.4 || ^8.1.2" + "node": "^16.20.2", + "npm": "^8.19.4" } }, "buildtools/eslint-plugin-theme-colors": { diff --git a/superset-frontend/src/features/home/Menu.test.tsx b/superset-frontend/src/features/home/Menu.test.tsx index 428a7366f024..bcb10dfbbe33 100644 --- a/superset-frontend/src/features/home/Menu.test.tsx +++ b/superset-frontend/src/features/home/Menu.test.tsx @@ -295,7 +295,11 @@ test('should render the environment tag', async () => { const { data: { environment_tag }, } = mockedProps; - render(, { useRedux: true, useQueryParams: true }); + render(, { + useRedux: true, + useQueryParams: true, + useRouter: true, + }); expect(await screen.findByText(environment_tag.text)).toBeInTheDocument(); }); diff --git a/superset-frontend/src/features/home/Menu.tsx b/superset-frontend/src/features/home/Menu.tsx index f2953f21a2bc..eb744e8007a1 100644 --- a/superset-frontend/src/features/home/Menu.tsx +++ b/superset-frontend/src/features/home/Menu.tsx @@ -209,7 +209,7 @@ export function Menu({ default: setActiveTabs(['']); } - }, [location]); + }, [location.pathname]); const standalone = getUrlParam(URL_PARAMS.standalone); if (standalone || uiConfig.hideNav) return <>; From a8bb03989382c9c99ec2ee2da7ba66b82e4afb10 Mon Sep 17 00:00:00 2001 From: fisjac Date: Fri, 6 Oct 2023 13:15:35 -0500 Subject: [PATCH 3/6] aligning package-lock with the latest pull from master --- superset-frontend/package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index 8174442a4567..370cd3f1f246 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -284,8 +284,8 @@ "webpack-sources": "^3.2.3" }, "engines": { - "node": "^16.20.2", - "npm": "^8.19.4" + "node": "^16.9.1", + "npm": "^7.5.4 || ^8.1.2" } }, "buildtools/eslint-plugin-theme-colors": { From 9cd28bb993bbafc0f72bbc5307db7d706093f6c6 Mon Sep 17 00:00:00 2001 From: fisjac Date: Thu, 12 Oct 2023 11:36:20 -0500 Subject: [PATCH 4/6] cleaning up initial state --- superset-frontend/src/features/home/Menu.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/superset-frontend/src/features/home/Menu.tsx b/superset-frontend/src/features/home/Menu.tsx index eb744e8007a1..7b7ff71a6130 100644 --- a/superset-frontend/src/features/home/Menu.tsx +++ b/superset-frontend/src/features/home/Menu.tsx @@ -192,7 +192,7 @@ export function Menu({ CHART = '/chart', DATASETS = '/tablemodelview', } - const [activeTabs, setActiveTabs] = useState(['']); + const [activeTabs, setActiveTabs] = useState(Array); const location = useLocation(); useEffect(() => { const path = location.pathname; @@ -207,7 +207,7 @@ export function Menu({ setActiveTabs(['Datasets']); break; default: - setActiveTabs(['']); + setActiveTabs([]); } }, [location.pathname]); From 61c60cc30394aea69a3eef2c94fd78ff2bd3955d Mon Sep 17 00:00:00 2001 From: fisjac Date: Fri, 13 Oct 2023 23:19:06 -0500 Subject: [PATCH 5/6] fixing TS lint error --- superset-frontend/src/features/home/Menu.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/superset-frontend/src/features/home/Menu.tsx b/superset-frontend/src/features/home/Menu.tsx index 7b7ff71a6130..a58548192ff6 100644 --- a/superset-frontend/src/features/home/Menu.tsx +++ b/superset-frontend/src/features/home/Menu.tsx @@ -192,7 +192,9 @@ export function Menu({ CHART = '/chart', DATASETS = '/tablemodelview', } - const [activeTabs, setActiveTabs] = useState(Array); + + const defaultSelection: string[] = []; + const [activeTabs, setActiveTabs] = useState(defaultSelection); const location = useLocation(); useEffect(() => { const path = location.pathname; From fed19e3709b17e81f72d538daabc9efbb661d402 Mon Sep 17 00:00:00 2001 From: fisjac Date: Fri, 13 Oct 2023 23:20:41 -0500 Subject: [PATCH 6/6] small renaming change --- superset-frontend/src/features/home/Menu.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/superset-frontend/src/features/home/Menu.tsx b/superset-frontend/src/features/home/Menu.tsx index a58548192ff6..56a2fd611ec9 100644 --- a/superset-frontend/src/features/home/Menu.tsx +++ b/superset-frontend/src/features/home/Menu.tsx @@ -193,8 +193,8 @@ export function Menu({ DATASETS = '/tablemodelview', } - const defaultSelection: string[] = []; - const [activeTabs, setActiveTabs] = useState(defaultSelection); + const defaultTabSelection: string[] = []; + const [activeTabs, setActiveTabs] = useState(defaultTabSelection); const location = useLocation(); useEffect(() => { const path = location.pathname; @@ -209,7 +209,7 @@ export function Menu({ setActiveTabs(['Datasets']); break; default: - setActiveTabs([]); + setActiveTabs(defaultTabSelection); } }, [location.pathname]);