UNPKG

@wordpress/block-library

Version:
84 lines (81 loc) 3.07 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = TemplatePartPlaceholder; var _i18n = require("@wordpress/i18n"); var _components = require("@wordpress/components"); var _element = require("@wordpress/element"); var _data = require("@wordpress/data"); var _coreData = require("@wordpress/core-data"); var _hooks = require("./utils/hooks"); var _titleModal = _interopRequireDefault(require("./title-modal")); var _jsxRuntime = require("react/jsx-runtime"); /** * WordPress dependencies */ /** * Internal dependencies */ function TemplatePartPlaceholder({ area, clientId, templatePartId, onOpenSelectionModal, setAttributes }) { const { templateParts, isResolving } = (0, _hooks.useAlternativeTemplateParts)(area, templatePartId); const blockPatterns = (0, _hooks.useAlternativeBlockPatterns)(area, clientId); const { isBlockBasedTheme, canCreateTemplatePart } = (0, _data.useSelect)(select => { const { getCurrentTheme, canUser } = select(_coreData.store); return { isBlockBasedTheme: getCurrentTheme()?.is_block_theme, canCreateTemplatePart: canUser('create', { kind: 'postType', name: 'wp_template_part' }) }; }, []); const [showTitleModal, setShowTitleModal] = (0, _element.useState)(false); const areaObject = (0, _hooks.useTemplatePartArea)(area); const createFromBlocks = (0, _hooks.useCreateTemplatePartFromBlocks)(area, setAttributes); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Placeholder, { icon: areaObject.icon, label: areaObject.label, instructions: isBlockBasedTheme ? (0, _i18n.sprintf)( // Translators: %s as template part area title ("Header", "Footer", etc.). (0, _i18n.__)('Choose an existing %s or create a new one.'), areaObject.label.toLowerCase()) : (0, _i18n.sprintf)( // Translators: %s as template part area title ("Header", "Footer", etc.). (0, _i18n.__)('Choose an existing %s.'), areaObject.label.toLowerCase()), children: [isResolving && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {}), !isResolving && !!(templateParts.length || blockPatterns.length) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, { __next40pxDefaultSize: true, variant: "primary", onClick: onOpenSelectionModal, children: (0, _i18n.__)('Choose') }), !isResolving && isBlockBasedTheme && canCreateTemplatePart && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, { __next40pxDefaultSize: true, variant: "secondary", onClick: () => { setShowTitleModal(true); }, children: (0, _i18n.__)('Start blank') }), showTitleModal && /*#__PURE__*/(0, _jsxRuntime.jsx)(_titleModal.default, { areaLabel: areaObject.label, onClose: () => setShowTitleModal(false), onSubmit: title => { createFromBlocks([], title); } })] }); } //# sourceMappingURL=placeholder.js.map