UNPKG

@wordpress/block-library

Version:
108 lines (107 loc) 3.09 kB
// packages/block-library/src/template-part/edit/advanced-controls.js import { useEntityProp, store as coreStore } from "@wordpress/core-data"; import { SelectControl, TextControl } from "@wordpress/components"; import { sprintf, __ } from "@wordpress/i18n"; import { useSelect } from "@wordpress/data"; import { privateApis as blockEditorPrivateApis } from "@wordpress/block-editor"; import { TemplatePartImportControls } from "./import-controls"; import { unlock } from "../../lock-unlock"; import { Fragment, jsx, jsxs } from "react/jsx-runtime"; var { HTMLElementControl } = unlock(blockEditorPrivateApis); function TemplatePartAdvancedControls({ tagName, setAttributes, isEntityAvailable, templatePartId, defaultWrapper, hasInnerBlocks, clientId }) { const [area, setArea] = useEntityProp( "postType", "wp_template_part", "area", templatePartId ); const [title, setTitle] = useEntityProp( "postType", "wp_template_part", "title", templatePartId ); const defaultTemplatePartAreas = useSelect( (select) => select(coreStore).getCurrentTheme()?.default_template_part_areas || [], [] ); const areaOptions = defaultTemplatePartAreas.map( ({ label, area: _area }) => ({ label, value: _area }) ); return /* @__PURE__ */ jsxs(Fragment, { children: [ isEntityAvailable && /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx( TextControl, { __next40pxDefaultSize: true, __nextHasNoMarginBottom: true, label: __("Title"), value: title, onChange: (value) => { setTitle(value); }, onFocus: (event) => event.target.select() } ), /* @__PURE__ */ jsx( SelectControl, { __next40pxDefaultSize: true, __nextHasNoMarginBottom: true, label: __("Area"), labelPosition: "top", options: areaOptions, value: area, onChange: setArea } ) ] }), /* @__PURE__ */ jsx( HTMLElementControl, { tagName: tagName || "", onChange: (value) => setAttributes({ tagName: value }), clientId, options: [ { label: sprintf( /* translators: %s: HTML tag based on area. */ __("Default based on area (%s)"), `<${defaultWrapper}>` ), value: "" }, { label: "<header>", value: "header" }, { label: "<main>", value: "main" }, { label: "<section>", value: "section" }, { label: "<article>", value: "article" }, { label: "<aside>", value: "aside" }, { label: "<footer>", value: "footer" }, { label: "<div>", value: "div" } ] } ), !hasInnerBlocks && /* @__PURE__ */ jsx( TemplatePartImportControls, { area, setAttributes } ) ] }); } export { TemplatePartAdvancedControls }; //# sourceMappingURL=advanced-controls.js.map