import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { Transfer } from 'antd'
|
import './index.scss'
|
|
class TransferForm extends Component {
|
static propTypes = {
|
fields: PropTypes.array,
|
selected: PropTypes.array
|
}
|
|
state = {
|
data: [],
|
targetKeys: [],
|
selectedKeys: []
|
}
|
|
handleChange = (nextTargetKeys, direction, moveKeys) => {
|
this.setState({ targetKeys: nextTargetKeys })
|
}
|
|
handleSelectChange = (sourceSelectedKeys, targetSelectedKeys) => {
|
this.setState({ selectedKeys: [...sourceSelectedKeys, ...targetSelectedKeys] })
|
}
|
|
UNSAFE_componentWillMount() {
|
let datas = new Map()
|
this.props.fields.forEach(item => {
|
if (!item.origin) {
|
datas.set(item.uuid, item)
|
}
|
})
|
|
let selecteds = []
|
|
this.props.selected.forEach(item => {
|
if (datas.has(item)) {
|
selecteds.push(item)
|
}
|
})
|
|
this.setState({
|
data: [...datas.values()].map(item => {
|
return {
|
key: item.uuid,
|
title: item.label,
|
description: ''
|
}
|
}),
|
targetKeys: selecteds
|
})
|
}
|
|
render() {
|
const { data, targetKeys, selectedKeys } = this.state
|
|
return (
|
<div className="modal-fields-transfer">
|
<Transfer
|
dataSource={data}
|
targetKeys={targetKeys}
|
selectedKeys={selectedKeys}
|
onChange={this.handleChange}
|
onSelectChange={this.handleSelectChange}
|
render={item => item.title}
|
/>
|
</div>
|
)
|
}
|
}
|
|
export default TransferForm
|