UNPKG

@wordpress/block-library

Version:
84 lines (76 loc) 2.54 kB
import { createElement, Fragment } from "@wordpress/element"; /** * External dependencies */ import classnames from 'classnames'; /** * WordPress dependencies */ import { AlignmentControl, BlockControls, InspectorControls, useBlockProps, Warning } from '@wordpress/block-editor'; import { ToggleControl, PanelBody } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ import HeadingLevelDropdown from '../heading/heading-level-dropdown'; const SUPPORTED_TYPES = ['archive', 'search']; export default function QueryTitleEdit(_ref) { let { attributes: { type, level, textAlign, showPrefix, showSearchTerm }, setAttributes } = _ref; const TagName = `h${level}`; const blockProps = useBlockProps({ className: classnames('wp-block-query-title__placeholder', { [`has-text-align-${textAlign}`]: textAlign }) }); if (!SUPPORTED_TYPES.includes(type)) { return createElement("div", blockProps, createElement(Warning, null, __('Provided type is not supported.'))); } let titleElement; if (type === 'archive') { titleElement = createElement(Fragment, null, createElement(InspectorControls, null, createElement(PanelBody, { title: __('Settings') }, createElement(ToggleControl, { label: __('Show archive type in title'), onChange: () => setAttributes({ showPrefix: !showPrefix }), checked: showPrefix }))), createElement(TagName, blockProps, showPrefix ? __('Archive type: Name') : __('Archive title'))); } if (type === 'search') { titleElement = createElement(Fragment, null, createElement(InspectorControls, null, createElement(PanelBody, { title: __('Settings') }, createElement(ToggleControl, { label: __('Show search term in title'), onChange: () => setAttributes({ showSearchTerm: !showSearchTerm }), checked: showSearchTerm }))), createElement(TagName, blockProps, showSearchTerm ? __('Search results for: “search term”') : __('Search results'))); } return createElement(Fragment, null, createElement(BlockControls, { group: "block" }, createElement(HeadingLevelDropdown, { selectedLevel: level, onChange: newLevel => setAttributes({ level: newLevel }) }), createElement(AlignmentControl, { value: textAlign, onChange: nextAlign => { setAttributes({ textAlign: nextAlign }); } })), titleElement); } //# sourceMappingURL=edit.js.map