|
|
|
@ -1,12 +1,44 @@ |
|
|
|
import React, { Component } from 'react'; |
|
|
|
import PropTypes from 'prop-types'; |
|
|
|
import classNames from 'classnames'; |
|
|
|
import styles from './index.less'; |
|
|
|
|
|
|
|
export default class FooterToolbar extends Component { |
|
|
|
static contextTypes = { |
|
|
|
isMobile: PropTypes.bool, |
|
|
|
}; |
|
|
|
|
|
|
|
state = { |
|
|
|
width: undefined, |
|
|
|
}; |
|
|
|
|
|
|
|
componentDidMount() { |
|
|
|
window.addEventListener('resize', this.resizeFooterToolbar); |
|
|
|
this.resizeFooterToolbar(); |
|
|
|
} |
|
|
|
|
|
|
|
componentWillUnmount() { |
|
|
|
window.removeEventListener('resize', this.resizeFooterToolbar); |
|
|
|
} |
|
|
|
|
|
|
|
resizeFooterToolbar = () => { |
|
|
|
const sider = document.querySelector('.ant-layout-sider'); |
|
|
|
if (sider == null) { |
|
|
|
return; |
|
|
|
} |
|
|
|
const { isMobile } = this.context; |
|
|
|
const width = isMobile ? null : `calc(100% - ${sider.style.width})`; |
|
|
|
const { width: stateWidth } = this.state; |
|
|
|
if (stateWidth !== width) { |
|
|
|
this.setState({ width }); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
render() { |
|
|
|
const { children, className, extra, ...restProps } = this.props; |
|
|
|
const { width } = this.state; |
|
|
|
return ( |
|
|
|
<div className={classNames(className, styles.toolbar)} {...restProps}> |
|
|
|
<div className={classNames(className, styles.toolbar)} style={{ width }} {...restProps}> |
|
|
|
<div className={styles.left}>{extra}</div> |
|
|
|
<div className={styles.right}>{children}</div> |
|
|
|
</div> |
|
|
|
|