@wordpress/block-library
Version:
Block library for the WordPress editor.
70 lines (63 loc) • 1.85 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { ToolbarDropdownMenu } from '@wordpress/components';
import { __, sprintf } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import HeadingLevelIcon from './heading-level-icon';
const HEADING_LEVELS = [1, 2, 3, 4, 5, 6];
const POPOVER_PROPS = {
className: 'block-library-heading-level-dropdown'
};
/** @typedef {import('@wordpress/element').WPComponent} WPComponent */
/**
* HeadingLevelDropdown props.
*
* @typedef WPHeadingLevelDropdownProps
*
* @property {number} selectedLevel The chosen heading level.
* @property {(newValue:number)=>any} onChange Callback to run when
* toolbar value is changed.
*/
/**
* Dropdown for selecting a heading level (1 through 6).
*
* @param {WPHeadingLevelDropdownProps} props Component props.
*
* @return {WPComponent} The toolbar.
*/
export default function HeadingLevelDropdown(_ref) {
let {
selectedLevel,
onChange
} = _ref;
return createElement(ToolbarDropdownMenu, {
popoverProps: POPOVER_PROPS,
icon: createElement(HeadingLevelIcon, {
level: selectedLevel
}),
label: __('Change heading level'),
controls: HEADING_LEVELS.map(targetLevel => {
{
const isActive = targetLevel === selectedLevel;
return {
icon: createElement(HeadingLevelIcon, {
level: targetLevel,
isPressed: isActive
}),
label: sprintf( // translators: %s: heading level e.g: "1", "2", "3"
__('Heading %d'), targetLevel),
isActive,
onClick() {
onChange(targetLevel);
},
role: 'menuitemradio'
};
}
})
});
}
//# sourceMappingURL=heading-level-dropdown.js.map