@wordpress/edit-post
Version:
Edit Post module for WordPress.
104 lines (87 loc) • 3.61 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ActionsPanel;
exports.ActionsPanelFill = void 0;
var _element = require("@wordpress/element");
var _editor = require("@wordpress/editor");
var _data = require("@wordpress/data");
var _components = require("@wordpress/components");
var _i18n = require("@wordpress/i18n");
var _pluginPostPublishPanel = _interopRequireDefault(require("../sidebar/plugin-post-publish-panel"));
var _pluginPrePublishPanel = _interopRequireDefault(require("../sidebar/plugin-pre-publish-panel"));
var _store = require("../../store");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const {
Fill,
Slot
} = (0, _components.createSlotFill)('ActionsPanel');
const ActionsPanelFill = Fill;
exports.ActionsPanelFill = ActionsPanelFill;
function ActionsPanel({
setEntitiesSavedStatesCallback,
closeEntitiesSavedStates,
isEntitiesSavedStatesOpen
}) {
const {
closePublishSidebar,
togglePublishSidebar
} = (0, _data.useDispatch)(_store.store);
const {
publishSidebarOpened,
hasActiveMetaboxes,
isSavingMetaBoxes,
hasNonPostEntityChanges
} = (0, _data.useSelect)(select => {
return {
publishSidebarOpened: select(_store.store).isPublishSidebarOpened(),
hasActiveMetaboxes: select(_store.store).hasMetaBoxes(),
isSavingMetaBoxes: select(_store.store).isSavingMetaBoxes(),
hasNonPostEntityChanges: select('core/editor').hasNonPostEntityChanges()
};
}, []);
const openEntitiesSavedStates = (0, _element.useCallback)(() => setEntitiesSavedStatesCallback(true), []); // It is ok for these components to be unmounted when not in visual use.
// We don't want more than one present at a time, decide which to render.
let unmountableContent;
if (publishSidebarOpened) {
unmountableContent = (0, _element.createElement)(_editor.PostPublishPanel, {
onClose: closePublishSidebar,
forceIsDirty: hasActiveMetaboxes,
forceIsSaving: isSavingMetaBoxes,
PrePublishExtension: _pluginPrePublishPanel.default.Slot,
PostPublishExtension: _pluginPostPublishPanel.default.Slot
});
} else if (hasNonPostEntityChanges) {
unmountableContent = (0, _element.createElement)("div", {
className: "edit-post-layout__toggle-entities-saved-states-panel"
}, (0, _element.createElement)(_components.Button, {
isSecondary: true,
className: "edit-post-layout__toggle-entities-saved-states-panel-button",
onClick: openEntitiesSavedStates,
"aria-expanded": false
}, (0, _i18n.__)('Open save panel')));
} else {
unmountableContent = (0, _element.createElement)("div", {
className: "edit-post-layout__toggle-publish-panel"
}, (0, _element.createElement)(_components.Button, {
isSecondary: true,
className: "edit-post-layout__toggle-publish-panel-button",
onClick: togglePublishSidebar,
"aria-expanded": false
}, (0, _i18n.__)('Open publish panel')));
} // Since EntitiesSavedStates controls its own panel, we can keep it
// always mounted to retain its own component state (such as checkboxes).
return (0, _element.createElement)(_element.Fragment, null, isEntitiesSavedStatesOpen && (0, _element.createElement)(_editor.EntitiesSavedStates, {
close: closeEntitiesSavedStates
}), (0, _element.createElement)(Slot, {
bubblesVirtually: true
}), !isEntitiesSavedStatesOpen && unmountableContent);
}
//# sourceMappingURL=actions-panel.js.map