@wordpress/block-editor
Version:
84 lines (75 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = SidesDropdown;
var _element = require("@wordpress/element");
var _components = require("@wordpress/components");
var _icons = require("@wordpress/icons");
var _utils = require("../utils");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const checkIcon = (0, _element.createElement)(_components.Icon, {
icon: _icons.check,
size: 24
});
function SidesDropdown({
label: labelProp,
onChange,
sides,
value
}) {
if (!sides || !sides.length) {
return;
}
const supportedItems = (0, _utils.getSupportedMenuItems)(sides);
const sideIcon = supportedItems[value].icon;
const {
custom: customItem,
...menuItems
} = supportedItems;
return (0, _element.createElement)(_components.DropdownMenu, {
icon: sideIcon,
label: labelProp,
className: "spacing-sizes-control__dropdown",
toggleProps: {
isSmall: true
}
}, ({
onClose
}) => {
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuGroup, null, Object.entries(menuItems).map(([slug, {
label,
icon
}]) => {
const isSelected = value === slug;
return (0, _element.createElement)(_components.MenuItem, {
key: slug,
icon: icon,
iconPosition: "left",
isSelected: isSelected,
role: "menuitemradio",
onClick: () => {
onChange(slug);
onClose();
},
suffix: isSelected ? checkIcon : undefined
}, label);
})), !!customItem && (0, _element.createElement)(_components.MenuGroup, null, (0, _element.createElement)(_components.MenuItem, {
icon: customItem.icon,
iconPosition: "left",
isSelected: value === _utils.VIEWS.custom,
role: "menuitemradio",
onClick: () => {
onChange(_utils.VIEWS.custom);
onClose();
},
suffix: value === _utils.VIEWS.custom ? checkIcon : undefined
}, customItem.label)));
});
}
//# sourceMappingURL=index.js.map