@gechiui/block-editor
Version:
92 lines (87 loc) • 2.08 kB
JavaScript
/**
* External dependencies
*/
import classnames from 'classnames';
/**
* GeChiUI dependencies
*/
import {
__experimentalItemGroup as ItemGroup,
__experimentalItem as Item,
__experimentalHStack as HStack,
FlexItem,
ColorIndicator,
Dropdown,
} from '@gechiui/components';
/**
* Internal dependencies
*/
import ColorGradientControl from './control';
export default function ColorGradientSettingsDropdown( {
colors,
gradients,
disableCustomColors,
disableCustomGradients,
__experimentalHasMultipleOrigins,
__experimentalIsRenderedInSidebar,
enableAlpha,
settings,
} ) {
let dropdownPosition;
if ( __experimentalIsRenderedInSidebar ) {
dropdownPosition = 'bottom left';
}
return (
<ItemGroup
isBordered
isSeparated
className="block-editor-panel-color-gradient-settings__item-group"
>
{ settings.map( ( setting, index ) => (
<Dropdown
key={ index }
position={ dropdownPosition }
className="block-editor-panel-color-gradient-settings__dropdown"
contentClassName="block-editor-panel-color-gradient-settings__dropdown-content"
renderToggle={ ( { isOpen, onToggle } ) => {
return (
<Item
onClick={ onToggle }
className={ classnames(
'block-editor-panel-color-gradient-settings__item',
{ 'is-open': isOpen }
) }
>
<HStack justify="flex-start">
<ColorIndicator
className="block-editor-panel-color-gradient-settings__color-indicator"
colorValue={
setting.gradientValue ??
setting.colorValue
}
/>
<FlexItem>{ setting.label }</FlexItem>
</HStack>
</Item>
);
} }
renderContent={ () => (
<ColorGradientControl
showTitle={ false }
{ ...{
colors,
gradients,
disableCustomColors,
disableCustomGradients,
__experimentalHasMultipleOrigins,
__experimentalIsRenderedInSidebar,
enableAlpha,
...setting,
} }
/>
) }
/>
) ) }
</ItemGroup>
);
}