Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Commit 707ef14

Browse files
committed
feat: add the setCollapsed
1 parent 419cbe6 commit 707ef14

File tree

6 files changed

+24
-9
lines changed

6 files changed

+24
-9
lines changed

packages/ui/xconsole-rc-app-layout/src/AppLayout.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import { withRouter } from 'dva/router';
44
import { IProp, ISidebarConfig } from './types/index';
55
import Context from './Context';
66
import Aside from './Aside';
7+
import useCollapsed from './hooks/useCollapsed';
78

89
let noticeFlag = false;
910

1011
const XConsoleAppLayout: React.FunctionComponent<IProp> = (props: IProp) => {
11-
const { sidebar: rawSidebar, consoleMenu, location, children, menuParams } = props;
12+
const { sidebar: rawSidebar, consoleMenu, location, children, menuParams } = props;
13+
const { pathname } = location;
1214

1315
let sidebar: ISidebarConfig = null;
1416

@@ -53,16 +55,28 @@ const XConsoleAppLayout: React.FunctionComponent<IProp> = (props: IProp) => {
5355
return () => window.removeEventListener('message', cb);
5456
}, []);
5557

58+
const { collapsed, setCollapsed, onNavCollapseTriggerClick } = useCollapsed(
59+
pathname,
60+
consoleMenu?.collapsedPath || []
61+
);
62+
5663
return (
5764
<Context.Provider
5865
value={{
5966
sidebar: { title, navs, collapsedKeys: [] },
6067
setTitle,
6168
setNavs,
69+
setCollapsed,
6270
onNavTriggerClick
6371
}}
6472
>
65-
<Aside consoleMenu={consoleMenu} location={location} menuParams={menuParams}>
73+
<Aside
74+
collapsed={collapsed}
75+
onNavCollapseTriggerClick={onNavCollapseTriggerClick}
76+
consoleMenu={consoleMenu}
77+
location={location}
78+
menuParams={menuParams}
79+
>
6680
{children}
6781
</Aside>
6882
</Context.Provider>

packages/ui/xconsole-rc-app-layout/src/Aside.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@ const XConsoleAppLayoutAside: React.FC<Partial<IProp>> = (
3535
location: { pathname },
3636
children,
3737
menuParams,
38+
collapsed,
39+
onNavCollapseTriggerClick
3840
} = props;
3941

4042
const { sidebar } = useContext(Context);
4143

4244
const {
4345
displayPath,
4446
notDisplayPath,
45-
collapsedPath = [],
4647
defaultOpen = [],
4748
} = consoleMenu;
4849

@@ -56,11 +57,6 @@ const XConsoleAppLayoutAside: React.FC<Partial<IProp>> = (
5657
// 合并 sidebar 的 defaultOpenKeys
5758
sidebar.defaultOpenKeys = defaultOpen;
5859

59-
const { collapsed, onNavCollapseTriggerClick } = useCollapsed(
60-
pathname,
61-
collapsedPath
62-
);
63-
6460
return (
6561
<XConsoleTheme>
6662
<AppLayout

packages/ui/xconsole-rc-app-layout/src/Context.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ interface IContextValue {
66
sidebar: Partial<ISidebarConfig>;
77
setTitle: (title: string) => void;
88
setNavs: (navs: INavConfig[]) => void;
9+
setCollapsed: (collapsed: boolean) => void;
910
onNavTriggerClick: (fn: () => void) => (() => void);
1011
}
1112

1213
export default React.createContext<IContextValue>({
1314
sidebar: {},
1415
setTitle: (title: string) => {/* nothing */},
1516
setNavs: (navs: INavConfig[]) => {/* nothing */},
17+
setCollapsed: (collapsed: boolean) => {/* nothing */},
1618
onNavTriggerClick: (fn: () => void) => () => {/* nothing */},
1719
});

packages/ui/xconsole-rc-app-layout/src/hooks/useCollapsed.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const useCollapsed = (pathname: string, collapsedPath: PathRule) => {
2727

2828
return {
2929
collapsed,
30+
setCollapsed,
3031
onNavCollapseTriggerClick,
3132
};
3233
};

packages/ui/xconsole-rc-app-layout/src/types/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ export interface IProp extends RouteComponentProps {
6464
consoleMenu?: IConsoleMenuConfig;
6565
children?: React.ReactChildren;
6666
menuParams: Record<string, any>;
67+
collapsed?: boolean;
68+
onNavCollapseTriggerClick?: any;
6769
}
6870

6971
export interface IMenuProps {

packages/ui/xconsole-rc-app-layout/stories/index.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ storiesOf('XConsoleAppLayout', module).add('XConsoleAppLayout', () => {
2525
<div id="app-wrapper">
2626
<div id="app">
2727
<Router history={createBrowserHistory()}>
28-
<WindProRcAppLayout sidebar={sidebar}>
28+
<WindProRcAppLayout sidebar={sidebar} consoleMenu={{collapsedPath: ['/basic-profile']}}>
2929
<Test/>
3030
</WindProRcAppLayout>
3131
</Router>

0 commit comments

Comments
 (0)