fix(nx-dev): fix tabs logic (#28470)
Fix tabs being hidden when selecting a tab in a different tab group
This commit is contained in:
parent
5dbea2e16f
commit
494715929d
@ -23,8 +23,11 @@ export function Tabs({
|
|||||||
const [currentTab, setCurrentTab] = useState<string>(labels[0]);
|
const [currentTab, setCurrentTab] = useState<string>(labels[0]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleTabSelectedEvent = (defaultTab?: string) => {
|
const handleTabSelectedEvent = (
|
||||||
|
tabSelectedEvent: CustomEvent<{ defaultTab?: string }>
|
||||||
|
) => {
|
||||||
const selectedTab = localStorage.getItem(SELECTED_TAB_KEY);
|
const selectedTab = localStorage.getItem(SELECTED_TAB_KEY);
|
||||||
|
const defaultTab = tabSelectedEvent.detail.defaultTab;
|
||||||
if (selectedTab && labels.includes(selectedTab)) {
|
if (selectedTab && labels.includes(selectedTab)) {
|
||||||
setCurrentTab(selectedTab);
|
setCurrentTab(selectedTab);
|
||||||
} else if (defaultTab) {
|
} else if (defaultTab) {
|
||||||
@ -32,15 +35,23 @@ export function Tabs({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
handleTabSelectedEvent(labels[0]);
|
handleTabSelectedEvent(
|
||||||
window.addEventListener(TAB_SELECTED_EVENT, handleTabSelectedEvent);
|
new CustomEvent(TAB_SELECTED_EVENT, { detail: { defaultTab: labels[0] } })
|
||||||
|
);
|
||||||
|
window.addEventListener(
|
||||||
|
TAB_SELECTED_EVENT,
|
||||||
|
handleTabSelectedEvent as EventListener
|
||||||
|
);
|
||||||
return () =>
|
return () =>
|
||||||
window.removeEventListener(TAB_SELECTED_EVENT, handleTabSelectedEvent);
|
window.removeEventListener(
|
||||||
|
TAB_SELECTED_EVENT,
|
||||||
|
handleTabSelectedEvent as EventListener
|
||||||
|
);
|
||||||
}, [labels]);
|
}, [labels]);
|
||||||
|
|
||||||
const handleTabClick = (label: string) => {
|
const handleTabClick = (label: string) => {
|
||||||
localStorage.setItem(SELECTED_TAB_KEY, label);
|
localStorage.setItem(SELECTED_TAB_KEY, label);
|
||||||
window.dispatchEvent(new Event(TAB_SELECTED_EVENT));
|
window.dispatchEvent(new CustomEvent(TAB_SELECTED_EVENT, { detail: {} }));
|
||||||
setCurrentTab(label);
|
setCurrentTab(label);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user