Skip to content

Commit bc2d0c6

Browse files
authored
[type:fix] sider menu support resize (#537)
1 parent 83a9360 commit bc2d0c6

File tree

1 file changed

+55
-30
lines changed

1 file changed

+55
-30
lines changed

src/components/SiderMenu/SiderMenu.js

Lines changed: 55 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import React, { PureComponent } from "react";
1919
import { Layout, Menu, Icon, Switch } from "antd";
2020
import pathToRegexp from "path-to-regexp";
2121
import { Link } from "dva/router";
22+
import { Resizable } from "react-resizable";
2223
import styles from "./index.less";
2324
import { urlToList } from "../_utils/pathTools";
2425
import { getCurrentLocale, getIntlContent } from "../../utils/IntlUtils";
@@ -86,6 +87,7 @@ export default class SiderMenu extends PureComponent {
8687
localeName: "",
8788
mode: "inline",
8889
theme: "dark",
90+
width: 250,
8991
};
9092
}
9193

@@ -276,6 +278,12 @@ export default class SiderMenu extends PureComponent {
276278
});
277279
};
278280

281+
onResize = (event, { size }) => {
282+
this.setState({
283+
width: size.width,
284+
});
285+
};
286+
279287
/** Modify the menu based on the current language */
280288
updateMenuData() {
281289
if (this.props.menuData.length === 0) {
@@ -330,38 +338,55 @@ export default class SiderMenu extends PureComponent {
330338
}
331339

332340
return (
333-
<Sider
334-
trigger={null}
335-
collapsible
336-
collapsed={collapsed}
337-
breakpoint="lg"
338-
onCollapse={onCollapse}
339-
width={220}
340-
className={styles.sider}
341+
<Resizable
342+
width={this.state.width}
343+
height={0}
344+
onResize={this.onResize}
345+
draggableOpts={{ enableUserSelectHack: false }}
346+
handle={
347+
<span
348+
className="react-resizable-handle"
349+
onClick={(e) => {
350+
e.stopPropagation();
351+
}}
352+
/>
353+
}
354+
minConstraints={[200, 0]}
355+
maxConstraints={[500, 0]}
341356
>
342-
<Link to="/">
343-
<div className={styles.logo} key="logo">
344-
<img className={styles.TitleLogo} src={TitleLogo} alt="logo" />
345-
</div>
346-
</Link>
347-
<Switch
348-
onChange={this.changeMode}
349-
checkedChildren="Change Mode"
350-
unCheckedChildren="Change Mode"
351-
className={styles.changeMode}
352-
/>
353-
<Menu
354-
key="Menu"
355-
theme={this.state.theme}
356-
mode={this.state.mode}
357-
{...menuProps}
358-
onOpenChange={this.handleOpenChange}
359-
selectedKeys={selectedKeys}
360-
style={{ padding: "16px 0", width: "100%" }}
357+
<Sider
358+
trigger={null}
359+
collapsible
360+
collapsed={collapsed}
361+
breakpoint="lg"
362+
onCollapse={onCollapse}
363+
width={this.state.width}
364+
className={styles.sider}
361365
>
362-
{this.getNavMenuItems(menuData)}
363-
</Menu>
364-
</Sider>
366+
<Link to="/">
367+
<div className={styles.logo} key="logo">
368+
<img className={styles.TitleLogo} src={TitleLogo} alt="logo" />
369+
</div>
370+
</Link>
371+
<Switch
372+
onChange={this.changeMode}
373+
checkedChildren="Change Mode"
374+
unCheckedChildren="Change Mode"
375+
className={styles.changeMode}
376+
/>
377+
<Menu
378+
key="Menu"
379+
theme={this.state.theme}
380+
mode={this.state.mode}
381+
{...menuProps}
382+
onOpenChange={this.handleOpenChange}
383+
selectedKeys={selectedKeys}
384+
style={{ padding: "16px 0", width: "100%" }}
385+
>
386+
{this.getNavMenuItems(menuData)}
387+
</Menu>
388+
</Sider>
389+
</Resizable>
365390
);
366391
}
367392
}

0 commit comments

Comments
 (0)