diff --git a/web-react/package.json b/web-react/package.json index 8de0070..8f2e44b 100644 --- a/web-react/package.json +++ b/web-react/package.json @@ -19,6 +19,7 @@ "nprogress": "^0.2.0", "photoswipe": "^4.1.3", "react": "^17.0.2", + "react-color": "^2.19.3", "react-dom": "^17.0.2", "react-json-view": "^1.21.3", "react-monaco-editor": "^0.43.0", diff --git a/web-react/src/assets/style/app.less b/web-react/src/assets/style/app.less index f4849cc..1e27ce4 100644 --- a/web-react/src/assets/style/app.less +++ b/web-react/src/assets/style/app.less @@ -35,6 +35,7 @@ @import './lib/tree-layout.less'; @import './lib/authority-view.less'; @import './lib/icon-selector.less'; +@import './lib/color-selector.less'; @import './lib/anchor.less'; @import './lib/disabled.less'; @import './theme/primary.less'; diff --git a/web-react/src/assets/style/lib/color-selector.less b/web-react/src/assets/style/lib/color-selector.less new file mode 100644 index 0000000..e030c16 --- /dev/null +++ b/web-react/src/assets/style/lib/color-selector.less @@ -0,0 +1,18 @@ +@import (reference) '../extend.less'; +.ant-select-dropdown { + .chrome-picker { + width: auto !important; + margin: -@padding-xxs 0; + + border-radius: 0 !important; + background: transparent !important; + box-shadow: none !important; + } +} +.color-selector--palette { + width: 32px; + height: 32px; + + border-radius: @border-radius-base; + box-shadow: inset 0 0 0 @border-width-base @border-color-base, inset 0 0 0 3px @white; +} diff --git a/web-react/src/components/color-selector/index.jsx b/web-react/src/components/color-selector/index.jsx new file mode 100644 index 0000000..3d67ab9 --- /dev/null +++ b/web-react/src/components/color-selector/index.jsx @@ -0,0 +1,55 @@ +import React, { Component } from 'react' +import { Col, Row, Select } from 'antd' +import { ChromePicker } from 'react-color' + +export default class index extends Component { + select = React.createRef() + + state = { + color: null, + } + + onChange(color) { + this.setState({ color: color.hex }) + } + + onChangeComplete(color) { + this.props.onChange && this.props.onChange(color.hex) + } + + render() { + const { color } = this.state + + const { value } = this.props + + return ( + + +