UNPKG

@wordpress/block-editor

Version:
73 lines (68 loc) 2.25 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { createElement } from "@wordpress/element"; /** * WordPress dependencies */ import { Button, Dropdown } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { useSelect } from '@wordpress/data'; import { useShortcut, store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts'; import { useCallback, forwardRef } from '@wordpress/element'; import { listView } from '@wordpress/icons'; /** * Internal dependencies */ import BlockNavigation from './'; import { store as blockEditorStore } from '../../store'; function BlockNavigationDropdownToggle({ isEnabled, onToggle, isOpen, innerRef, ...props }) { useShortcut('core/edit-post/toggle-block-navigation', useCallback(onToggle, [onToggle]), { bindGlobal: true, isDisabled: !isEnabled }); const shortcut = useSelect(select => select(keyboardShortcutsStore).getShortcutRepresentation('core/edit-post/toggle-block-navigation'), []); return createElement(Button, _extends({}, props, { ref: innerRef, icon: listView, "aria-expanded": isOpen, "aria-haspopup": "true", onClick: isEnabled ? onToggle : undefined /* translators: button label text should, if possible, be under 16 characters. */ , label: __('List view'), className: "block-editor-block-navigation", shortcut: shortcut, "aria-disabled": !isEnabled })); } function BlockNavigationDropdown({ isDisabled, __experimentalFeatures, ...props }, ref) { const hasBlocks = useSelect(select => !!select(blockEditorStore).getBlockCount(), []); const isEnabled = hasBlocks && !isDisabled; return createElement(Dropdown, { contentClassName: "block-editor-block-navigation__popover", position: "bottom right", renderToggle: ({ isOpen, onToggle }) => createElement(BlockNavigationDropdownToggle, _extends({}, props, { innerRef: ref, isOpen: isOpen, onToggle: onToggle, isEnabled: isEnabled })), renderContent: () => createElement(BlockNavigation, { __experimentalFeatures: __experimentalFeatures }) }); } export default forwardRef(BlockNavigationDropdown); //# sourceMappingURL=dropdown.js.map