| | |
| | | import PropTypes from 'prop-types' |
| | | // import { is, fromJS } from 'immutable' |
| | | import { SketchPicker } from 'react-color' |
| | | import { Popover } from 'antd' |
| | | import { Popover, Icon } from 'antd' |
| | | |
| | | import './index.scss' |
| | | |
| | |
| | | } |
| | | state = { |
| | | color: '', |
| | | allowClear: false |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | | const { defaultValue, value } = this.props |
| | | const { defaultValue, value, allowClear } = this.props |
| | | let initVal = '' |
| | | |
| | | if (this.props['data-__meta']) { |
| | |
| | | initVal = value |
| | | } |
| | | |
| | | this.setState({color: initVal}) |
| | | this.setState({color: initVal, allowClear: allowClear === true}) |
| | | } |
| | | |
| | | handleChange = (color) => { |
| | |
| | | }) |
| | | } |
| | | |
| | | clear = () => { |
| | | this.setState({ color: '' }, () => { |
| | | this.props.onChange && this.props.onChange('') |
| | | }) |
| | | } |
| | | |
| | | UNSAFE_componentWillReceiveProps(nextProps) { |
| | | if (nextProps.value !== undefined && nextProps.value !== this.state.color) { |
| | | this.setState({ color: nextProps.value }) |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { color } = this.state |
| | | const { color, allowClear } = this.state |
| | | return ( |
| | | <div className="color-sketch-block"> |
| | | <Popover content={ |
| | |
| | | <div className="color-sketch-block-inner" style={ {background: color} }></div> |
| | | </div> |
| | | </Popover> |
| | | <div className="color-sketch-value">{color}</div> |
| | | <div className="color-sketch-value">{color}{allowClear && color ? <Icon onClick={this.clear} type="close"/> : null}</div> |
| | | </div> |
| | | ) |
| | | } |