UNPKG

@wordpress/editor

Version:
136 lines (132 loc) 4.82 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = BlockThemeControl; var _data = require("@wordpress/data"); var _htmlEntities = require("@wordpress/html-entities"); var _components = require("@wordpress/components"); var _i18n = require("@wordpress/i18n"); var _coreData = require("@wordpress/core-data"); var _icons = require("@wordpress/icons"); var _notices = require("@wordpress/notices"); var _preferences = require("@wordpress/preferences"); var _store = require("../../store"); var _swapTemplateButton = _interopRequireDefault(require("./swap-template-button")); var _resetDefaultTemplate = _interopRequireDefault(require("./reset-default-template")); var _lockUnlock = require("../../lock-unlock"); var _createNewTemplate = _interopRequireDefault(require("./create-new-template")); var _jsxRuntime = require("react/jsx-runtime"); /** * WordPress dependencies */ /** * Internal dependencies */ const POPOVER_PROPS = { className: 'editor-post-template__dropdown', placement: 'bottom-start' }; function BlockThemeControl({ id }) { const { isTemplateHidden, onNavigateToEntityRecord, getEditorSettings, hasGoBack } = (0, _data.useSelect)(select => { const { getRenderingMode, getEditorSettings: _getEditorSettings } = (0, _lockUnlock.unlock)(select(_store.store)); const editorSettings = _getEditorSettings(); return { isTemplateHidden: getRenderingMode() === 'post-only', onNavigateToEntityRecord: editorSettings.onNavigateToEntityRecord, getEditorSettings: _getEditorSettings, hasGoBack: editorSettings.hasOwnProperty('onNavigateToPreviousEntityRecord') }; }, []); const { get: getPreference } = (0, _data.useSelect)(_preferences.store); const { editedRecord: template, hasResolved } = (0, _coreData.useEntityRecord)('postType', 'wp_template', id); const { createSuccessNotice } = (0, _data.useDispatch)(_notices.store); const { setRenderingMode } = (0, _data.useDispatch)(_store.store); const canCreateTemplate = (0, _data.useSelect)(select => !!select(_coreData.store).canUser('create', { kind: 'postType', name: 'wp_template' }), []); if (!hasResolved) { return null; } // The site editor does not have a `onNavigateToPreviousEntityRecord` setting as it uses its own routing // and assigns its own backlink to focusMode pages. const notificationAction = hasGoBack ? [{ label: (0, _i18n.__)('Go back'), onClick: () => getEditorSettings().onNavigateToPreviousEntityRecord() }] : undefined; const mayShowTemplateEditNotice = () => { if (!getPreference('core/edit-site', 'welcomeGuideTemplate')) { createSuccessNotice((0, _i18n.__)('Editing template. Changes made here affect all posts and pages that use the template.'), { type: 'snackbar', actions: notificationAction }); } }; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.DropdownMenu, { popoverProps: POPOVER_PROPS, focusOnMount: true, toggleProps: { size: 'compact', variant: 'tertiary', tooltipPosition: 'middle left' }, label: (0, _i18n.__)('Template options'), text: (0, _htmlEntities.decodeEntities)(template.title), icon: null, children: ({ onClose }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.MenuGroup, { children: [canCreateTemplate && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, { onClick: () => { onNavigateToEntityRecord({ postId: template.id, postType: 'wp_template' }); onClose(); mayShowTemplateEditNotice(); }, children: (0, _i18n.__)('Edit template') }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_swapTemplateButton.default, { onClick: onClose }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_resetDefaultTemplate.default, { onClick: onClose }), canCreateTemplate && /*#__PURE__*/(0, _jsxRuntime.jsx)(_createNewTemplate.default, { onClick: onClose })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuGroup, { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, { icon: !isTemplateHidden ? _icons.check : undefined, isSelected: !isTemplateHidden, role: "menuitemcheckbox", onClick: () => { setRenderingMode(isTemplateHidden ? 'template-locked' : 'post-only'); }, children: (0, _i18n.__)('Show template') }) })] }) }); } //# sourceMappingURL=block-theme.js.map