UNPKG

@wordpress/edit-post

Version:
130 lines (104 loc) 3.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.TemplatePanel = TemplatePanel; exports.default = void 0; var _element = require("@wordpress/element"); var _lodash = require("lodash"); var _i18n = require("@wordpress/i18n"); var _components = require("@wordpress/components"); var _editor = require("@wordpress/editor"); var _data = require("@wordpress/data"); var _coreData = require("@wordpress/core-data"); var _actions = _interopRequireDefault(require("./actions")); var _store = require("../../../store"); /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ /** * Module Constants */ const PANEL_NAME = 'template'; function TemplatePanel() { const { isEnabled, isOpened, selectedTemplate, availableTemplates, isViewable, template, supportsTemplateMode } = (0, _data.useSelect)(select => { var _getPostType$viewable, _getPostType; const { isEditorPanelEnabled, isEditorPanelOpened, getEditedPostTemplate } = select(_store.store); const { getEditedPostAttribute, getEditorSettings, getCurrentPostType } = select(_editor.store); const { getPostType } = select(_coreData.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 { isEnabled: isEditorPanelEnabled(PANEL_NAME), isOpened: isEditorPanelOpened(PANEL_NAME), selectedTemplate: getEditedPostAttribute('template'), availableTemplates: getEditorSettings().availableTemplates, template: _supportsTemplateMode && getEditedPostTemplate(), isViewable: _isViewable, supportsTemplateMode: _supportsTemplateMode }; }, []); const { toggleEditorPanelOpened } = (0, _data.useDispatch)(_store.store); const { editPost } = (0, _data.useDispatch)(_editor.store); if (!isEnabled || !isViewable || (0, _lodash.isEmpty)(availableTemplates) && !supportsTemplateMode) { return null; } const onTogglePanel = (0, _lodash.partial)(toggleEditorPanelOpened, PANEL_NAME); let panelTitle = (0, _i18n.__)('Template'); if (!!template) { var _template$title$raw, _template$title; panelTitle = (0, _i18n.sprintf)( /* translators: %s: template title */ (0, _i18n.__)('Template: %s'), (_template$title$raw = template === null || template === void 0 ? void 0 : (_template$title = template.title) === null || _template$title === void 0 ? void 0 : _template$title.raw) !== null && _template$title$raw !== void 0 ? _template$title$raw : template.slug); } return (0, _element.createElement)(_components.PanelBody, { title: panelTitle, opened: isOpened, onToggle: onTogglePanel }, (0, _element.createElement)(_components.SelectControl, { hideLabelFromVision: true, label: (0, _i18n.__)('Template:'), value: selectedTemplate, onChange: templateSlug => { editPost({ template: templateSlug || '' }); }, options: (0, _lodash.map)(availableTemplates, (templateName, templateSlug) => ({ value: templateSlug, label: templateName })) }), (0, _element.createElement)(_actions.default, null)); } var _default = TemplatePanel; exports.default = _default; //# sourceMappingURL=index.js.map