@wordpress/edit-post
Version:
Edit Post module for WordPress.
86 lines (79 loc) • 4.03 kB
JavaScript
import { createElement, Fragment } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { BlockInspector, store as blockEditorStore } from '@wordpress/block-editor';
import { cog } from '@wordpress/icons';
import { Platform } from '@wordpress/element';
import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
import { store as interfaceStore } from '@wordpress/interface';
/**
* Internal dependencies
*/
import SettingsHeader from '../settings-header';
import PostStatus from '../post-status';
import LastRevision from '../last-revision';
import PostTaxonomies from '../post-taxonomies';
import FeaturedImage from '../featured-image';
import PostExcerpt from '../post-excerpt';
import PostLink from '../post-link';
import DiscussionPanel from '../discussion-panel';
import PageAttributes from '../page-attributes';
import MetaBoxes from '../../meta-boxes';
import PluginDocumentSettingPanel from '../plugin-document-setting-panel';
import PluginSidebarEditPost from '../plugin-sidebar';
import Template from '../template';
import TemplateSummary from '../template-summary';
import { __ } from '@wordpress/i18n';
import { useSelect } from '@wordpress/data';
import { store as editPostStore } from '../../../store';
const SIDEBAR_ACTIVE_BY_DEFAULT = Platform.select({
web: true,
native: false
});
const SettingsSidebar = () => {
const {
sidebarName,
keyboardShortcut,
isTemplateMode
} = useSelect(select => {
// The settings sidebar is used by the edit-post/document and edit-post/block sidebars.
// sidebarName represents the sidebar that is active or that should be active when the SettingsSidebar toggle button is pressed.
// If one of the two sidebars is active the component will contain the content of that sidebar.
// When neither of the the two sidebars is active we can not simply return null, because the PluginSidebarEditPost
// component, besides being used to render the sidebar, also renders the toggle button. In that case sidebarName
// should contain the sidebar that will be active when the toggle button is pressed. If a block
// is selected, that should be edit-post/block otherwise it's edit-post/document.
let sidebar = select(interfaceStore).getActiveComplementaryArea(editPostStore.name);
if (!['edit-post/document', 'edit-post/block'].includes(sidebar)) {
if (select(blockEditorStore).getBlockSelectionStart()) {
sidebar = 'edit-post/block';
}
sidebar = 'edit-post/document';
}
const shortcut = select(keyboardShortcutsStore).getShortcutRepresentation('core/edit-post/toggle-sidebar');
return {
sidebarName: sidebar,
keyboardShortcut: shortcut,
isTemplateMode: select(editPostStore).isEditingTemplate()
};
}, []);
return createElement(PluginSidebarEditPost, {
identifier: sidebarName,
header: createElement(SettingsHeader, {
sidebarName: sidebarName
}),
closeLabel: __('Close settings'),
headerClassName: "edit-post-sidebar__panel-tabs"
/* translators: button label text should, if possible, be under 16 characters. */
,
title: __('Settings'),
toggleShortcut: keyboardShortcut,
icon: cog,
isActiveByDefault: SIDEBAR_ACTIVE_BY_DEFAULT
}, !isTemplateMode && sidebarName === 'edit-post/document' && createElement(Fragment, null, createElement(PostStatus, null), createElement(Template, null), createElement(PluginDocumentSettingPanel.Slot, null), createElement(LastRevision, null), createElement(PostLink, null), createElement(PostTaxonomies, null), createElement(FeaturedImage, null), createElement(PostExcerpt, null), createElement(DiscussionPanel, null), createElement(PageAttributes, null), createElement(MetaBoxes, {
location: "side"
})), isTemplateMode && sidebarName === 'edit-post/document' && createElement(TemplateSummary, null), sidebarName === 'edit-post/block' && createElement(BlockInspector, null));
};
export default SettingsSidebar;
//# sourceMappingURL=index.js.map