|
|
@ -1,5 +1,5 @@ |
|
|
import React, { PureComponent } from 'react'; |
|
|
import React, { PureComponent } from 'react'; |
|
|
import { Select, message, Drawer, List, Switch, Divider, Icon, Button, Alert } from 'antd'; |
|
|
import { Select, message, Drawer, List, Switch, Divider, Icon, Button, Alert, Tooltip } from 'antd'; |
|
|
import { formatMessage } from 'umi/locale'; |
|
|
import { formatMessage } from 'umi/locale'; |
|
|
import { CopyToClipboard } from 'react-copy-to-clipboard'; |
|
|
import { CopyToClipboard } from 'react-copy-to-clipboard'; |
|
|
import { connect } from 'dva'; |
|
|
import { connect } from 'dva'; |
|
|
@ -8,6 +8,8 @@ import styles from './index.less'; |
|
|
import ThemeColor from './ThemeColor'; |
|
|
import ThemeColor from './ThemeColor'; |
|
|
import BlockChecbox from './BlockChecbox'; |
|
|
import BlockChecbox from './BlockChecbox'; |
|
|
|
|
|
|
|
|
|
|
|
const { Option } = Select; |
|
|
|
|
|
|
|
|
const Body = ({ children, title, style }) => ( |
|
|
const Body = ({ children, title, style }) => ( |
|
|
<div |
|
|
<div |
|
|
style={{ |
|
|
style={{ |
|
|
@ -33,55 +35,59 @@ class SettingDrawer extends PureComponent { |
|
|
return [ |
|
|
return [ |
|
|
{ |
|
|
{ |
|
|
title: formatMessage({ id: 'app.setting.content-width' }), |
|
|
title: formatMessage({ id: 'app.setting.content-width' }), |
|
|
action: [ |
|
|
action: ( |
|
|
<Select |
|
|
<Select |
|
|
value={contentWidth} |
|
|
value={contentWidth} |
|
|
size="small" |
|
|
size="small" |
|
|
onSelect={value => this.changeSetting('contentWidth', value)} |
|
|
onSelect={value => this.changeSetting('contentWidth', value)} |
|
|
style={{ width: 80 }} |
|
|
style={{ width: 80 }} |
|
|
> |
|
|
> |
|
|
<Select.Option value="Fixed"> |
|
|
{layout === 'sidemenu' ? null : ( |
|
|
{formatMessage({ id: 'app.setting.content-width.fixed' })} |
|
|
<Option value="Fixed"> |
|
|
</Select.Option> |
|
|
{formatMessage({ id: 'app.setting.content-width.fixed' })} |
|
|
<Select.Option value="Fluid"> |
|
|
</Option> |
|
|
|
|
|
)} |
|
|
|
|
|
<Option value="Fluid"> |
|
|
{formatMessage({ id: 'app.setting.content-width.fluid' })} |
|
|
{formatMessage({ id: 'app.setting.content-width.fluid' })} |
|
|
</Select.Option> |
|
|
</Option> |
|
|
</Select>, |
|
|
</Select> |
|
|
], |
|
|
), |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: formatMessage({ id: 'app.setting.fixedheader' }), |
|
|
title: formatMessage({ id: 'app.setting.fixedheader' }), |
|
|
action: [ |
|
|
action: ( |
|
|
<Switch |
|
|
<Switch |
|
|
size="small" |
|
|
size="small" |
|
|
checked={!!fixedHeader} |
|
|
checked={!!fixedHeader} |
|
|
onChange={checked => this.changeSetting('fixedHeader', checked)} |
|
|
onChange={checked => this.changeSetting('fixedHeader', checked)} |
|
|
/>, |
|
|
/> |
|
|
], |
|
|
), |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: formatMessage({ id: 'app.setting.hideheader' }), |
|
|
title: formatMessage({ id: 'app.setting.hideheader' }), |
|
|
hide: !fixedHeader, |
|
|
disabled: !fixedHeader, |
|
|
action: [ |
|
|
disabledReason: '固定 Header 时有效', |
|
|
|
|
|
action: ( |
|
|
<Switch |
|
|
<Switch |
|
|
size="small" |
|
|
size="small" |
|
|
checked={!!autoHideHeader} |
|
|
checked={!!autoHideHeader} |
|
|
onChange={checked => this.changeSetting('autoHideHeader', checked)} |
|
|
onChange={checked => this.changeSetting('autoHideHeader', checked)} |
|
|
/>, |
|
|
/> |
|
|
], |
|
|
), |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
title: formatMessage({ id: 'app.setting.fixedsidebar' }), |
|
|
title: formatMessage({ id: 'app.setting.fixedsidebar' }), |
|
|
hide: layout === 'topmenu', |
|
|
disabled: layout === 'topmenu', |
|
|
action: [ |
|
|
disabledReason: '侧边菜单布局时有效', |
|
|
|
|
|
action: ( |
|
|
<Switch |
|
|
<Switch |
|
|
size="small" |
|
|
size="small" |
|
|
checked={!!fixSiderbar} |
|
|
checked={!!fixSiderbar} |
|
|
onChange={checked => this.changeSetting('fixSiderbar', checked)} |
|
|
onChange={checked => this.changeSetting('fixSiderbar', checked)} |
|
|
/>, |
|
|
/> |
|
|
], |
|
|
), |
|
|
}, |
|
|
}, |
|
|
].filter(item => !item.hide); |
|
|
]; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
changeSetting = (key, value) => { |
|
|
changeSetting = (key, value) => { |
|
|
@ -107,6 +113,19 @@ class SettingDrawer extends PureComponent { |
|
|
this.setState({ collapse: !collapse }); |
|
|
this.setState({ collapse: !collapse }); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
renderLayoutSettingItem = item => { |
|
|
|
|
|
const action = React.cloneElement(item.action, { |
|
|
|
|
|
disabled: item.disabled, |
|
|
|
|
|
}); |
|
|
|
|
|
return ( |
|
|
|
|
|
<Tooltip title={item.disabled ? item.disabledReason : ''} placement="left"> |
|
|
|
|
|
<List.Item actions={[action]}> |
|
|
|
|
|
<span style={{ opacity: item.disabled ? '0.5' : '' }}>{item.title}</span> |
|
|
|
|
|
</List.Item> |
|
|
|
|
|
</Tooltip> |
|
|
|
|
|
); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
render() { |
|
|
render() { |
|
|
const { setting } = this.props; |
|
|
const { setting } = this.props; |
|
|
const { navTheme, primaryColor, layout, colorWeak } = setting; |
|
|
const { navTheme, primaryColor, layout, colorWeak } = setting; |
|
|
@ -183,7 +202,7 @@ class SettingDrawer extends PureComponent { |
|
|
<List |
|
|
<List |
|
|
split={false} |
|
|
split={false} |
|
|
dataSource={this.getLayoutSetting()} |
|
|
dataSource={this.getLayoutSetting()} |
|
|
renderItem={item => <List.Item actions={item.action}>{item.title}</List.Item>} |
|
|
renderItem={this.renderLayoutSettingItem} |
|
|
/> |
|
|
/> |
|
|
|
|
|
|
|
|
<Divider /> |
|
|
<Divider /> |
|
|
|