import React, { PureComponent, Fragment } from 'react';
import { Select, List, Switch, Divider, Radio } from 'antd';
import DrawerMenu from 'rc-drawer-menu';
import styles from './index.less';
import ThemeColor from './ThemeColor';
import LayoutSeting from './LayoutSetting';
const RadioGroup = Radio.Group;
const ColorBlock = ({ color, title }) => (
{title}
);
const Body = ({ children, title, style }) => (
{title}
{children}
);
class Sidebar extends PureComponent {
static getDerivedStateFromProps(nextProps, prevState) {
const nextState = {};
Object.keys(nextProps).forEach(key => {
if (nextProps[key] && prevState[key] !== undefined) {
nextState[key] = nextProps[key];
}
});
return nextState;
}
constructor(props) {
super(props);
this.defaultstate = {
collapse: false,
silderTheme: 'dark',
themeColor: '#1890FF',
layout: 'sidemenu',
grid: 'Fluid',
fixedHeader: false,
autoHideHeader: false,
fixSiderbar: false,
colorWeak: 'close',
};
const propsState = this.propsToState(props);
this.state = { ...this.defaultstate, ...propsState };
}
getLayOutSetting = () => {
const { layout } = this.state;
return [
{
title: '栅格模式',
isShow: true,
action: [
,
],
},
{
title: 'Fixed Header',
isShow: true,
action: [
this.changeSetting('fixedHeader', checked)}
/>,
],
},
{
title: '↳ 下滑时隐藏 Header',
isShow: true,
action: [
this.changeSetting('autoHideHeader', checked)}
/>,
],
},
{
title: 'Fix Siderbar',
isShow: layout === 'sidemenu',
action: [],
},
].filter(item => item.isShow);
};
fixSiderbar = checked => {
this.changeSetting('fixSiderbar', checked);
};
changeSetting = (key, value) => {
const nextState = {};
nextState[key] = value;
if (key === 'layout') {
if (value === 'topmenu') {
nextState.grid = 'Wide';
} else {
nextState.grid = 'Fluid';
}
}
this.setState(nextState, () => {
if (this.props.onChange) {
this.props.onChange(this.state);
}
});
};
propsToState = props => {
const nextState = {};
Object.keys(props).forEach(key => {
if (props[key] && this.defaultstate[key] !== undefined) {
nextState[key] = props[key];
}
});
return nextState;
};
togglerContent = () => {
this.changeSetting('collapse', !this.state.collapse);
};
render() {
const radioStyle = {
display: 'block',
};
return (
<>
this.changeSetting('silderTheme', target.value)}
value={this.state.silderTheme}
>
this.changeSetting('themeColor', color)}
/>
this.changeSetting('layout', layout)}
/>
{item.title}}
/>
this.changeSetting('colorWeak', value)}
style={{ width: 120 }}
>
打开
关闭
,
],
},
]}
renderItem={item => {item.title}}
/>
>
);
}
}
export default Sidebar;