@wordpress/block-library
Version:
Block library for the WordPress editor.
52 lines (50 loc) • 1.89 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { __, sprintf } from '@wordpress/i18n';
import { Placeholder, Button, Spinner } from '@wordpress/components';
import { useState } from '@wordpress/element';
/**
* Internal dependencies
*/
import { useAlternativeBlockPatterns, useAlternativeTemplateParts, useCreateTemplatePartFromBlocks, useTemplatePartArea } from './utils/hooks';
import TitleModal from './title-modal';
export default function TemplatePartPlaceholder(_ref) {
let {
area,
clientId,
templatePartId,
onOpenSelectionModal,
setAttributes
} = _ref;
const {
templateParts,
isResolving
} = useAlternativeTemplateParts(area, templatePartId);
const blockPatterns = useAlternativeBlockPatterns(area, clientId);
const [showTitleModal, setShowTitleModal] = useState(false);
const areaObject = useTemplatePartArea(area);
const createFromBlocks = useCreateTemplatePartFromBlocks(area, setAttributes);
return createElement(Placeholder, {
icon: areaObject.icon,
label: areaObject.label,
instructions: sprintf( // Translators: %s as template part area title ("Header", "Footer", etc.).
__('Choose an existing %s or create a new one.'), areaObject.label.toLowerCase())
}, isResolving && createElement(Spinner, null), !isResolving && !!(templateParts.length || blockPatterns.length) && createElement(Button, {
variant: "primary",
onClick: onOpenSelectionModal
}, __('Choose')), !isResolving && createElement(Button, {
variant: "secondary",
onClick: () => {
setShowTitleModal(true);
}
}, __('Start blank')), showTitleModal && createElement(TitleModal, {
areaLabel: areaObject.label,
onClose: () => setShowTitleModal(false),
onSubmit: title => {
createFromBlocks([], title);
}
}));
}
//# sourceMappingURL=placeholder.js.map