import { useState } from '@wordpress/element'; import reactCSS from 'reactcss'; import './ColorPickerField.scss'; import { __ } from '@wordpress/i18n'; import { Tooltip } from '@WizardFields'; import { SwatchIcon, ArrowPathIcon } from '@heroicons/react/24/outline'; import { SketchPicker } from 'react-color'; function ColorPickerField( props ) { const { name, label, value, isActive = true, handleOnchange, displayAs = 'selector', } = props; const [ displayColorPicker, setdisplayColorPicker ] = useState( false ); const [ color, setColor ] = useState( value ); const styles = reactCSS( { default: { color: { width: '36px', height: '30px', background: color, }, }, } ); const handleClick = () => { setdisplayColorPicker( ( prevValue ) => ! prevValue ); }; const handleClose = () => { setdisplayColorPicker( false ); }; const handleResetColor = () => { handleChange( '' ); }; const handleChange = ( newcolor ) => { if ( newcolor ) { setColor( newcolor.hex ); } else { setColor( newcolor ); } // Trigger change const changeEvent = new CustomEvent( 'wcf:color:change', { bubbles: true, detail: { e: 'color', name: props.name, value: newcolor ? newcolor.hex : newcolor, }, } ); document.dispatchEvent( changeEvent ); if ( handleOnchange ) { handleOnchange( newcolor ); } }; return (
{ label && 'selector' === displayAs && (
) }
{ 'selector' === displayAs ? ( <>
{ __( 'Select Color', 'cartflows' ) }
{ color && ( ) } ) : ( ) }
{ displayColorPicker ? (
) : null }
); } export default ColorPickerField;