@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
54 lines (50 loc) • 1.61 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
import { Dropdown, Button } from '@wordpress/components';
import { useSelect } from '@wordpress/data';
import { info } from '@wordpress/icons';
import { forwardRef } from '@wordpress/element';
import { store as blockEditorStore } from '@wordpress/block-editor';
/**
* Internal dependencies
*/
import TableOfContentsPanel from './panel';
function TableOfContents({
hasOutlineItemsDisabled,
repositionDropdown,
...props
}, ref) {
const hasBlocks = useSelect(select => !!select(blockEditorStore).getBlockCount(), []);
return createElement(Dropdown, {
position: repositionDropdown ? 'middle right right' : 'bottom',
className: "table-of-contents",
contentClassName: "table-of-contents__popover",
renderToggle: ({
isOpen,
onToggle
}) => createElement(Button, _extends({}, props, {
ref: ref,
onClick: hasBlocks ? onToggle : undefined,
icon: info,
"aria-expanded": isOpen,
"aria-haspopup": "true"
/* translators: button label text should, if possible, be under 16 characters. */
,
label: __('Details'),
tooltipPosition: "bottom",
"aria-disabled": !hasBlocks
})),
renderContent: ({
onClose
}) => createElement(TableOfContentsPanel, {
onRequestClose: onClose,
hasOutlineItemsDisabled: hasOutlineItemsDisabled
})
});
}
export default forwardRef(TableOfContents);
//# sourceMappingURL=index.js.map