import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { DoubleLeftOutlined, DoubleRightOutlined } from '@ant-design/icons'
|
|
import asyncComponent from '@/utils/asyncComponent'
|
import MKEmitter from '@/utils/events.js'
|
import './index.scss'
|
|
const TabTransfer = asyncComponent(() => import('@/tabviews/custom/components/share/tabtransfer'))
|
|
class NormalGroup extends Component {
|
static propTpyes = {
|
config: PropTypes.object
|
}
|
|
state = {
|
visible: true,
|
hidden: false,
|
mergeAble: this.props.config.setting.mergeAble === 'true'
|
}
|
|
componentDidMount () {
|
const { config } = this.props
|
|
if (config.setting.bindPropId) {
|
MKEmitter.addListener('resetSelectLine', this.resetStatus)
|
}
|
}
|
|
componentWillUnmount () {
|
this.setState = () => {
|
return
|
}
|
MKEmitter.removeListener('resetSelectLine', this.resetStatus)
|
}
|
|
resetStatus = (MenuID, _, data) => {
|
const { config } = this.props
|
|
if (config.setting.bindPropId !== MenuID) return
|
|
if (!data || data.$$empty) {
|
this.setState({hidden: true})
|
} else {
|
this.setState({hidden: false})
|
}
|
}
|
|
render() {
|
const { config, style } = this.props
|
const { visible, mergeAble, hidden } = this.state
|
|
if (config.components.length === 0) return (<div className={'ant-col ant-col-' + config.width} style={style}><div style={config.style}></div></div>)
|
|
let _wrapStyle = style
|
if (hidden) {
|
_wrapStyle = {...style}
|
_wrapStyle.display = 'none'
|
}
|
|
return (
|
<div className={`ant-col ant-col-${config.width} ${mergeAble ? ' mk-merge-able mk-ctrl-' + (config.setting.ctrlNumber || 1) : ''} ${visible ? '' : ' close'}`} style={_wrapStyle}>
|
<div className={'normal-group-wrap ' + (config.setting.layout || '')} id={'anchor' + config.uuid} style={config.style}>
|
<div className="mk-control">
|
<DoubleLeftOutlined onClick={() => this.setState({visible: false})}/>
|
<DoubleRightOutlined onClick={() => this.setState({visible: true})}/>
|
</div>
|
{config.setting && config.setting.title ? <div className="group-header" style={config.headerStyle}>
|
<span className="title">{config.setting.title}</span>
|
</div> : null}
|
<TabTransfer config={config}/>
|
</div>
|
</div>
|
)
|
}
|
}
|
|
export default NormalGroup
|