[Back] import { __ } from '@wordpress/i18n';
import React from "react";
import { Dropdown, RangeControl, ColorIndicator, ColorPicker, Button } from '@wordpress/components';
const BoxShadowControl = ({ shadowAttribute, attributes, setAttributes }) => {
const shadowString = attributes[shadowAttribute] || '';
const [x, y, blur, spread, color] = shadowString.split(' ');
const shadowValues = {
x: x || '',
y: y || '',
blur: blur || '',
spread: spread || '',
color: color || '',
};
const handleBoxShadowChange = (key, value) => {
const newShadow = { ...shadowValues, [key]: value };
const shadowString = `${newShadow.x} ${newShadow.y} ${newShadow.blur} ${newShadow.spread} ${newShadow.color}`.trim();
setAttributes({ [shadowAttribute]: shadowString });
};
const renderColorPicker = () => (
<ColorPicker
color={shadowValues.color || ''}
onChangeComplete={(value) => handleBoxShadowChange('color', value.hex)}
disableAlpha
/>
);
const getValue = (value = '') => (value ? parseInt(value) : null);
return (
<>
<div className="lb-boxshadow-actions">
<Button
className="latepoint-block-reset"
onClick={() => setAttributes({ [shadowAttribute]: "" })}
isSmall
disabled={!shadowString}
icon="dashicon dashicons dashicons-image-rotate"
/>
</div>
<RangeControl
label={__('Horizontal')}
value={getValue(shadowValues.x)}
onChange={(value) => handleBoxShadowChange('x', `${value}px`)}
min={-100}
max={100}
/>
<RangeControl
label={__('Vertical')}
value={getValue(shadowValues.y)}
onChange={(value) => handleBoxShadowChange('y', `${value}px`)}
min={-100}
max={100}
/>
<RangeControl
label={__('Blur')}
value={getValue(shadowValues.blur)}
onChange={(value) => handleBoxShadowChange('blur', `${value}px`)}
min={0}
max={100}
/>
<RangeControl
label={__('Spread')}
value={getValue(shadowValues.spread)}
onChange={(value) => handleBoxShadowChange('spread', `${value}px`)}
min={-100}
max={100}
/>
<Dropdown
className="lb-color-settings-dropdown"
renderToggle={({ isOpen, onToggle }) => (
<div className="lb-row lb-color-settings-w">
<div className="lb-label">{__('Color')}</div>
<Button onClick={onToggle} aria-expanded={isOpen}>
<ColorIndicator className="lb-color-indicator" colorValue={shadowValues.color || ''} />
</Button>
</div>
)}
renderContent={renderColorPicker}
/>
</>
);
};
export default BoxShadowControl;