@wordpress/edit-post
Version:
Edit Post module for WordPress.
123 lines (102 loc) • 4.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@wordpress/element");
var _lodash = require("lodash");
var _i18n = require("@wordpress/i18n");
var _components = require("@wordpress/components");
var _data = require("@wordpress/data");
var _editor = require("@wordpress/editor");
var _coreData = require("@wordpress/core-data");
var _store = require("../../../store");
var _blocks = require("@wordpress/blocks");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function PostTemplateActions() {
const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
const [title, setTitle] = (0, _element.useState)('');
const {
template,
supportsTemplateMode
} = (0, _data.useSelect)(select => {
var _getPostType$viewable, _getPostType;
const {
getCurrentPostType
} = select(_editor.store);
const {
getPostType
} = select(_coreData.store);
const {
getEditedPostTemplate
} = select(_store.store);
const isViewable = (_getPostType$viewable = (_getPostType = getPostType(getCurrentPostType())) === null || _getPostType === void 0 ? void 0 : _getPostType.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false;
const _supportsTemplateMode = select(_editor.store).getEditorSettings().supportsTemplateMode && isViewable;
return {
template: _supportsTemplateMode && getEditedPostTemplate(),
supportsTemplateMode: _supportsTemplateMode
};
}, []);
const {
__unstableSwitchToTemplateMode
} = (0, _data.useDispatch)(_store.store);
if (!supportsTemplateMode) {
return null;
}
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)("div", {
className: "edit-post-template__actions"
}, !!template && (0, _element.createElement)(_components.Button, {
isLink: true,
onClick: () => __unstableSwitchToTemplateMode()
}, (0, _i18n.__)('Edit')), (0, _element.createElement)(_components.Button, {
isLink: true,
onClick: () => setIsModalOpen(true)
}, (0, _i18n.__)('New'))), isModalOpen && (0, _element.createElement)(_components.Modal, {
title: (0, _i18n.__)('Create a custom template'),
closeLabel: (0, _i18n.__)('Close'),
onRequestClose: () => {
setIsModalOpen(false);
setTitle('');
},
overlayClassName: "edit-post-template__modal"
}, (0, _element.createElement)("form", {
onSubmit: event => {
event.preventDefault();
const defaultTitle = (0, _i18n.__)('Custom Template');
const templateContent = [(0, _blocks.createBlock)('core/site-title'), (0, _blocks.createBlock)('core/site-tagline'), (0, _blocks.createBlock)('core/separator'), (0, _blocks.createBlock)('core/post-title'), (0, _blocks.createBlock)('core/post-content')];
__unstableSwitchToTemplateMode({
slug: 'wp-custom-template-' + (0, _lodash.kebabCase)(title !== null && title !== void 0 ? title : defaultTitle),
content: (0, _blocks.serialize)(templateContent),
title: title !== null && title !== void 0 ? title : defaultTitle
});
setIsModalOpen(false);
}
}, (0, _element.createElement)(_components.TextControl, {
label: (0, _i18n.__)('Name'),
value: title,
onChange: setTitle
}), (0, _element.createElement)(_components.Flex, {
className: "edit-post-post-template__modal-actions",
justify: "flex-end"
}, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
isSecondary: true,
onClick: () => {
setIsModalOpen(false);
setTitle('');
}
}, (0, _i18n.__)('Cancel'))), (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
isPrimary: true,
type: "submit"
}, (0, _i18n.__)('Create')))))));
}
var _default = PostTemplateActions;
exports.default = _default;
//# sourceMappingURL=actions.js.map