PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.3.0
GenerateBlocks v1.3.0
trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.3.0
generateblocks / src / components / color-picker / index.js
generateblocks / src / components / color-picker Last commit date
editor.scss 5 years ago index.js 5 years ago
index.js
176 lines
1 import classnames from 'classnames';
2 import hexToRGBA from '../../utils/hex-to-rgba';
3 import getIcon from '../../utils/get-icon';
4
5 // Import CSS
6 import './editor.scss';
7
8 import {
9 Component,
10 } from '@wordpress/element';
11
12 import {
13 __,
14 } from '@wordpress/i18n';
15
16 import {
17 Tooltip,
18 BaseControl,
19 ColorPicker,
20 RangeControl,
21 Popover,
22 Button,
23 } from '@wordpress/components';
24
25 import {
26 ColorPalette,
27 } from '@wordpress/block-editor';
28
29 export default class GenerateBlocksColorPicker extends Component {
30 constructor() {
31 super( ...arguments );
32
33 this.state = {
34 colorKey: false,
35 };
36 }
37
38 render() {
39 const {
40 value,
41 onChange,
42 onOpacityChange,
43 label,
44 alpha = false,
45 valueOpacity,
46 } = this.props;
47
48 const {
49 colorKey,
50 } = this.state;
51
52 const toggleVisible = () => {
53 this.setState( { isVisible: true } );
54 };
55
56 const toggleClose = () => {
57 if ( this.state.isVisible === true ) {
58 this.setState( { isVisible: false } );
59 }
60 };
61
62 return (
63 <BaseControl
64 className="gblocks-component-color-picker-wrapper"
65 >
66 { !! label &&
67 <div className="gblocks-color-component-label">
68 <span>{ label }</span>
69 </div>
70 }
71
72 <div className="gblocks-color-picker-area">
73 { ! this.state.isVisible &&
74 <div className={ classnames( 'components-color-palette__item-wrapper components-circular-option-picker__option-wrapper', value ? '' : 'components-color-palette__custom-color' ) }>
75 <Tooltip text={ __( 'Choose Color', 'generateblocks' ) }>
76 <button
77 type="button"
78 aria-expanded={ this.state.isVisible }
79 className="components-color-palette__item components-circular-option-picker__option"
80 onClick={ toggleVisible }
81 aria-label={ __( 'Custom color picker', 'generateblocks' ) }
82 style={ { color: value ? hexToRGBA( value, valueOpacity ) : 'transparent' } }
83 >
84 <span className="components-color-palette__custom-color-gradient" />
85 </button>
86 </Tooltip>
87 </div>
88 }
89
90 { this.state.isVisible &&
91 <div className={ classnames( 'components-color-palette__item-wrapper components-circular-option-picker__option-wrapper', value ? '' : 'components-color-palette__custom-color' ) }>
92 <Tooltip text={ __( 'Choose Color', 'generateblocks' ) }>
93 <button
94 type="button"
95 aria-expanded={ this.state.isVisible }
96 className="components-color-palette__item components-circular-option-picker__option"
97 onClick={ toggleClose }
98 aria-label={ __( 'Custom color picker', 'generateblocks' ) }
99 style={ { color: value ? hexToRGBA( value, valueOpacity ) : 'transparent' } }
100 >
101 <span className="components-color-palette__custom-color-gradient" />
102 </button>
103 </Tooltip>
104 </div>
105 }
106
107 { this.state.isVisible &&
108 <Popover position="top left" className="gblocks-component-color-picker" onClose={ toggleClose }>
109 <BaseControl key={ colorKey }>
110 <ColorPicker
111 key={ colorKey }
112 color={ value ? value : '' }
113 onChangeComplete={ ( color ) => {
114 onChange( color.hex );
115 } }
116 disableAlpha
117 />
118 </BaseControl>
119
120 { alpha &&
121 <div className="gblocks-component-color-opacity">
122 <Tooltip text={ __( 'Opacity', 'generateblocks' ) }>
123 { getIcon( 'gradient' ) }
124 </Tooltip>
125
126 <RangeControl
127 value={ valueOpacity ? valueOpacity : 0 }
128 onChange={ ( opacityValue ) => onOpacityChange( opacityValue ) }
129 min={ 0 }
130 max={ 1 }
131 step={ 0.01 }
132 initialPosition={ 1 }
133 />
134 </div>
135 }
136
137 <Button
138 isSmall
139 isSecondary
140 className="components-color-clear-color"
141 onClick={ () => {
142 onChange( '' );
143 onOpacityChange( 1 );
144
145 this.setState( {
146 colorKey: false,
147 } );
148 } }
149 >
150 { __( 'Clear Color', 'generateblocks' ) }
151 </Button>
152
153 <BaseControl
154 className="gblocks-component-color-picker-palette"
155 >
156 <ColorPalette
157 value={ value }
158 onChange={ ( color ) => {
159 onChange( color );
160
161 this.setState( {
162 colorKey: color,
163 } );
164 } }
165 disableCustomColors={ true }
166 clearable={ false }
167 />
168 </BaseControl>
169 </Popover>
170 }
171 </div>
172 </BaseControl>
173 );
174 }
175 }
176