@wordpress/block-library
Version:
Block library for the WordPress editor.
84 lines (81 loc) • 3.07 kB
JavaScript
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
;