UNPKG

@wordpress/block-editor

Version:
101 lines (86 loc) 2.54 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _i18n = require("@wordpress/i18n"); var _components = require("@wordpress/components"); var _icons = require("@wordpress/icons"); var _useAvailableAlignments = _interopRequireDefault(require("./use-available-alignments")); /** * WordPress dependencies */ /** * Internal dependencies */ const BLOCK_ALIGNMENTS_CONTROLS = { left: { icon: _icons.positionLeft, title: (0, _i18n.__)('Align left') }, center: { icon: _icons.positionCenter, title: (0, _i18n.__)('Align center') }, right: { icon: _icons.positionRight, title: (0, _i18n.__)('Align right') }, wide: { icon: _icons.stretchWide, title: (0, _i18n.__)('Wide width') }, full: { icon: _icons.stretchFullWidth, title: (0, _i18n.__)('Full width') } }; const DEFAULT_CONTROL = 'center'; const POPOVER_PROPS = { isAlternate: true }; function BlockAlignmentUI({ value, onChange, controls, isToolbar, isCollapsed = true, isToolbarButton = true }) { const enabledControls = (0, _useAvailableAlignments.default)(controls); if (enabledControls.length === 0) { return null; } function applyOrUnset(align) { return () => onChange(value === align ? undefined : align); } const activeAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[value]; const defaultAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[DEFAULT_CONTROL]; const UIComponent = isToolbar ? _components.ToolbarGroup : _components.DropdownMenu; const extraProps = isToolbar ? { isCollapsed } : { isToolbarButton }; return (0, _element.createElement)(UIComponent, (0, _extends2.default)({ popoverProps: POPOVER_PROPS, icon: activeAlignmentControl ? activeAlignmentControl.icon : defaultAlignmentControl.icon, label: (0, _i18n.__)('Align'), toggleProps: { describedBy: (0, _i18n.__)('Change alignment') }, controls: enabledControls.map(control => { return { ...BLOCK_ALIGNMENTS_CONTROLS[control], isActive: value === control, role: isCollapsed ? 'menuitemradio' : undefined, onClick: applyOrUnset(control) }; }) }, extraProps)); } var _default = BlockAlignmentUI; exports.default = _default; //# sourceMappingURL=ui.js.map