import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { SketchPicker } from 'react-color'
|
import { Popover } from 'antd'
|
|
import './index.scss'
|
|
const presetColors = [
|
'#f5222d', '#fa541c', '#fa8c16', '#faad14', '#fadb14', '#a0d911', '#52c41a', '#13c2c2', '#1890ff', '#3860f4', '#722ed1',
|
'#eb2f96', '#595959', '#ffa39e', '#ffbb96', '#ffd591', '#ffe58f', '#fffb8f', '#eaff8f', '#b7eb8f', '#87e8de', '#91d5ff',
|
'#adc6ff', '#d3adf7', '#ffadd2', '#d9d9d9', '#434343', '#000000', '#ffffff', 'transparent'
|
]
|
|
class MkColor extends Component {
|
static propTpyes = {
|
config: PropTypes.object,
|
onChange: PropTypes.func
|
}
|
state = {
|
color: '',
|
}
|
|
UNSAFE_componentWillMount () {
|
const { config } = this.props
|
|
this.setState({color: config.initval})
|
}
|
|
handleChange = (color) => {
|
let _color = `rgba(${ color.rgb.r }, ${ color.rgb.g }, ${ color.rgb.b }, ${ color.rgb.a })`
|
|
if (this.props.config.colorType !== 'hex') {
|
this.setState({ color: _color }, () => {
|
this.props.onChange(_color)
|
})
|
} else {
|
let _hex = color.hex === 'transparent' ? '#ffffff' : color.hex
|
|
this.setState({ color: _hex }, () => {
|
this.props.onChange(_hex)
|
})
|
}
|
}
|
|
componentWillUnmount () {
|
this.setState = () => {
|
return
|
}
|
}
|
|
render() {
|
const { color } = this.state
|
|
return (
|
<div className="color-sketch-block">
|
<Popover content={
|
<SketchPicker color={ color } presetColors={presetColors} onChange={ this.handleChange } />
|
} overlayClassName="color-sketch-popover" placement="bottomRight" title="" trigger="click">
|
<div className="color-sketch-block-box">
|
<div className="color-sketch-block-inner" style={ {background: color} }></div>
|
</div>
|
</Popover>
|
<div className="color-sketch-value">{color}</div>
|
</div>
|
)
|
}
|
}
|
|
export default MkColor
|