Skip to content

Commit 69170ff

Browse files
sync-nextgen: merge feat/restructure into preview-nextgen
2 parents 2814b2f + 72c013c commit 69170ff

File tree

3 files changed

+36
-27
lines changed

3 files changed

+36
-27
lines changed

src/components/Layout/Header/HeaderNav.tsx

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,7 @@ import {
2020
} from "./HeaderNavConfigType";
2121
import { generateNavConfig } from "./HeaderNavConfigData";
2222
import { clearAllNavStates } from "../LeftNav/LeftNavTree";
23-
24-
// Helper function to find selected item recursively
25-
const findSelectedItem = (
26-
configs: NavConfig[],
27-
namespace?: TOCNamespace
28-
): NavItemConfig | null => {
29-
for (const config of configs) {
30-
if (config.type === "item") {
31-
const isSelected =
32-
typeof config.selected === "function"
33-
? config.selected(namespace)
34-
: config.selected ?? false;
35-
if (isSelected) {
36-
return config;
37-
}
38-
} else if (config.type === "group" && config.children) {
39-
const item = findSelectedItem(config.children, namespace);
40-
if (item) {
41-
return item;
42-
}
43-
}
44-
}
45-
return null;
46-
};
23+
import { getSelectedNavItem } from "./getSelectedNavItem";
4724

4825
export default function HeaderNavStack(props: {
4926
buildType?: BuildType;
@@ -66,7 +43,7 @@ export default function HeaderNavStack(props: {
6643
// Find and notify selected item
6744
React.useEffect(() => {
6845
if (props.onSelectedNavItemChange) {
69-
const selectedNavItem = findSelectedItem(defaultConfig, props.namespace);
46+
const selectedNavItem = getSelectedNavItem(defaultConfig, props.namespace);
7047
props.onSelectedNavItemChange(selectedNavItem);
7148
}
7249
}, [defaultConfig, props.namespace, props.onSelectedNavItemChange]);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { TOCNamespace } from "shared/interface";
2+
import { NavConfig, NavItemConfig } from "./HeaderNavConfigType";
3+
4+
export const getSelectedNavItem = (
5+
configs: NavConfig[],
6+
namespace?: TOCNamespace
7+
): NavItemConfig | null => {
8+
for (const config of configs) {
9+
if (config.type === "item") {
10+
const isSelected =
11+
typeof config.selected === "function"
12+
? config.selected(namespace)
13+
: config.selected ?? false;
14+
if (isSelected) {
15+
return config;
16+
}
17+
continue;
18+
}
19+
20+
const item = getSelectedNavItem(config.children, namespace);
21+
if (item) {
22+
return item;
23+
}
24+
}
25+
return null;
26+
};
27+

src/templates/DocTemplate.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import {
2727
import Seo from "components/Seo";
2828
import { getStable, generateUrl } from "shared/utils";
2929
import { NavItemConfig } from "components/Layout/Header/HeaderNavConfigType";
30+
import { generateNavConfig } from "components/Layout/Header/HeaderNavConfigData";
31+
import { getSelectedNavItem } from "components/Layout/Header/getSelectedNavItem";
3032
import GitCommitInfoCard from "components/Card/GitCommitInfoCard";
3133
import { FeedbackSection } from "components/Card/FeedbackSection";
3234
import { FeedbackSurveyCampaign } from "components/Campaign/FeedbackSurvey";
@@ -136,7 +138,7 @@ function DocTemplate({
136138
: classicNavigation;
137139
const navigation = filterTOC(navigationByNamespace);
138140

139-
const { language } = useI18next();
141+
const { language, t } = useI18next();
140142
const haveStarter = starterNavigation.length > 0;
141143
const haveEssential = essentialNavigation.length > 0;
142144
const availablePlans = ["dedicated"];
@@ -167,7 +169,10 @@ function DocTemplate({
167169
const isGlobalHome = !!feature?.globalHome;
168170

169171
const [selectedNavItem, setSelectedNavItem] =
170-
React.useState<NavItemConfig | null>(null);
172+
React.useState<NavItemConfig | null>(() => {
173+
const headerNavConfig = generateNavConfig(t, cloudPlan, buildType, language);
174+
return getSelectedNavItem(headerNavConfig, namespace);
175+
});
171176

172177
return (
173178
<Layout

0 commit comments

Comments
 (0)