Browse Source

Allow menu icon config as img url or ReactNode

pull/576/head
afc163 8 years ago
parent
commit
74f0a0aa6a
  1. 18
      src/components/SiderMenu/SiderMenu.js
  2. 7
      src/components/SiderMenu/index.less

18
src/components/SiderMenu/SiderMenu.js

@ -6,6 +6,20 @@ import styles from './index.less';
const { Sider } = Layout; const { Sider } = Layout;
const { SubMenu } = Menu; const { SubMenu } = Menu;
// Allow menu.js config icon as string or ReactNode
// icon: 'setting',
// icon: 'http://demo.com/icon.png',
// icon: <Icon type="setting" />,
const getIcon = (icon) => {
if (typeof icon === 'string' && icon.indexOf('http') === 0) {
return <img src={icon} alt="icon" className={styles.icon} />;
}
if (typeof icon === 'string') {
return <Icon type={icon} />;
}
return icon;
};
export default class SiderMenu extends PureComponent { export default class SiderMenu extends PureComponent {
constructor(props) { constructor(props) {
super(props); super(props);
@ -84,7 +98,7 @@ export default class SiderMenu extends PureComponent {
title={ title={
item.icon ? ( item.icon ? (
<span> <span>
<Icon type={item.icon} /> {getIcon(item.icon)}
<span>{item.name}</span> <span>{item.name}</span>
</span> </span>
) : item.name ) : item.name
@ -95,7 +109,7 @@ export default class SiderMenu extends PureComponent {
</SubMenu> </SubMenu>
); );
} }
const icon = item.icon && <Icon type={item.icon} />; const icon = getIcon(item.icon);
return item.hideInMenu ? null : return item.hideInMenu ? null :
( (
<Menu.Item key={item.key || item.path}> <Menu.Item key={item.key || item.path}>

7
src/components/SiderMenu/index.less

@ -23,12 +23,19 @@
font-weight: 600; font-weight: 600;
} }
} }
.sider { .sider {
min-height: 100vh; min-height: 100vh;
box-shadow: 2px 0 6px rgba(0, 21, 41, .35); box-shadow: 2px 0 6px rgba(0, 21, 41, .35);
position: relative; position: relative;
z-index: 10; z-index: 10;
} }
.icon {
width: 14px;
margin-right: 10px;
}
:global { :global {
.drawer .drawer-content { .drawer .drawer-content {
background: #001529; background: #001529;

Loading…
Cancel
Save