@wordpress/block-editor
Version:
78 lines (72 loc) • 2.1 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { ColorIndicator, Dropdown, DuotonePicker, DuotoneSwatch, MenuGroup, ToolbarButton } from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { DOWN } from '@wordpress/keycodes';
import { Icon, filter } from '@wordpress/icons';
function DuotoneControl({
colorPalette,
duotonePalette,
disableCustomColors,
disableCustomDuotone,
value,
onChange
}) {
let toolbarIcon;
if (value === 'unset') {
toolbarIcon = createElement(ColorIndicator, {
className: "block-editor-duotone-control__unset-indicator"
});
} else if (value) {
toolbarIcon = createElement(DuotoneSwatch, {
values: value
});
} else {
toolbarIcon = createElement(Icon, {
icon: filter
});
}
return createElement(Dropdown, {
popoverProps: {
className: 'block-editor-duotone-control__popover',
headerTitle: __('Duotone'),
variant: 'toolbar'
},
renderToggle: ({
isOpen,
onToggle
}) => {
const openOnArrowDown = event => {
if (!isOpen && event.keyCode === DOWN) {
event.preventDefault();
onToggle();
}
};
return createElement(ToolbarButton, {
showTooltip: true,
onClick: onToggle,
"aria-haspopup": "true",
"aria-expanded": isOpen,
onKeyDown: openOnArrowDown,
label: __('Apply duotone filter'),
icon: toolbarIcon
});
},
renderContent: () => createElement(MenuGroup, {
label: __('Duotone')
}, createElement("div", {
className: "block-editor-duotone-control__description"
}, __('Create a two-tone color effect without losing your original image.')), createElement(DuotonePicker, {
colorPalette: colorPalette,
duotonePalette: duotonePalette,
disableCustomColors: disableCustomColors,
disableCustomDuotone: disableCustomDuotone,
value: value,
onChange: onChange
}))
});
}
export default DuotoneControl;
//# sourceMappingURL=index.js.map