import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
// import { is, fromJS } from 'immutable'
|
import { Form, Icon, Popover, Input, Modal } from 'antd'
|
|
import zhCN from '@/locales/zh-CN/mob.js'
|
import enUS from '@/locales/en-US/mob.js'
|
import FileUpload from '@/tabviews/zshare/fileupload'
|
import './index.scss'
|
|
const { TextArea } = Input
|
const { confirm } = Modal
|
|
class ContentUpdate extends Component {
|
static propTpyes = {
|
deletable: PropTypes.any,
|
element: PropTypes.object,
|
updateContent: PropTypes.func
|
}
|
|
state = {
|
dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
|
images: [],
|
visible: false
|
}
|
|
UNSAFE_componentWillMount () {
|
|
}
|
|
// shouldComponentUpdate (nextProps, nextState) {
|
// return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
|
// }
|
|
onVisibleChange = (visible) => {
|
const { element } = this.props
|
let val = this.props.form.getFieldValue('content')
|
let _url = this.props.form.getFieldValue('url')
|
|
this.setState({
|
visible: visible
|
})
|
|
if (element.eleType === 'link') {
|
if ((val && element.content !== val) || (_url && element.url !== _url)) {
|
this.props.updateContent({...element, content: val, url: _url})
|
} else {
|
this.props.form.setFieldsValue({content: element.content, url: element.url})
|
}
|
} else {
|
if (val && element.content !== val) {
|
this.props.updateContent({...element, content: val})
|
} else {
|
this.props.form.setFieldsValue({content: element.content})
|
}
|
}
|
}
|
|
handleSubmit = () => {
|
const { element } = this.props
|
let val = this.props.form.getFieldValue('content')
|
|
this.setState({
|
visible: false
|
})
|
|
if (val && element.content !== val) {
|
this.props.updateContent({...element, content: val})
|
} else {
|
this.props.form.setFieldsValue({content: element.content})
|
}
|
}
|
|
deleteElement = () => {
|
const _this = this
|
|
confirm({
|
title: '确定删除元素吗?',
|
onOk() {
|
_this.props.updateContent(null)
|
},
|
onCancel() {}
|
})
|
}
|
|
imgChange = (list) => {
|
const { element } = this.props
|
|
this.setState({images: list})
|
if (list && list.length && list[0].response) {
|
this.setState({
|
visible: false,
|
images: []
|
})
|
let val = list[0].response
|
if (val && element.content !== val) {
|
this.props.updateContent({...element, content: val})
|
}
|
this.props.form.setFieldsValue({content: val})
|
}
|
}
|
|
render () {
|
const { element, deletable } = this.props
|
const { getFieldDecorator } = this.props.form
|
const { visible, images } = this.state
|
|
return (
|
<div className="mob-content-update">
|
{deletable !== false ? <Icon type="delete" onClick={this.deleteElement} /> : null}
|
<Popover content={
|
<div>
|
{element.eleType === 'img' ? <FileUpload accept=".jpg,.png,.gif,.svg" value={images} maxFile={1} fileType="text" onChange={this.imgChange}/> : null}
|
{getFieldDecorator('content', {
|
initialValue: element.content
|
})(element.eleType !== 'textarea' ?
|
<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} /> :
|
<TextArea autoSize={{ minRows: 2, maxRows: 3 }} onPressEnter={this.handleSubmit} />
|
)}
|
{element.eleType === 'link' ? <div className="link-url">
|
<p>链接地址:</p>
|
{getFieldDecorator('url', {
|
initialValue: element.url
|
})(
|
<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />
|
)}
|
</div> : null}
|
</div>
|
} overlayClassName="mob-content-update-popover" placement="bottomRight" title="" visible={visible} trigger="click" onVisibleChange={this.onVisibleChange}>
|
<Icon type="edit" />
|
</Popover>
|
</div>
|
)
|
}
|
}
|
|
export default Form.create()(ContentUpdate)
|