diff --git a/packages/edit-post/src/components/sidebar/settings-sidebar/index.js b/packages/edit-post/src/components/sidebar/settings-sidebar/index.js index 465088b39bf80f..76d1f1b63ad636 100644 --- a/packages/edit-post/src/components/sidebar/settings-sidebar/index.js +++ b/packages/edit-post/src/components/sidebar/settings-sidebar/index.js @@ -13,6 +13,7 @@ import { store as interfaceStore } from '@wordpress/interface'; import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts'; import { store as editorStore, + PostExcerptPanel, PostFeaturedImagePanel, PostLastRevisionPanel, PostTaxonomiesPanel, @@ -23,7 +24,6 @@ import { */ import SettingsHeader from '../settings-header'; import PostStatus from '../post-status'; -import PostExcerpt from '../post-excerpt'; import DiscussionPanel from '../discussion-panel'; import PageAttributes from '../page-attributes'; import MetaBoxes from '../../meta-boxes'; @@ -84,7 +84,7 @@ const SidebarContent = ( { - + diff --git a/packages/edit-post/src/index.js b/packages/edit-post/src/index.js index ce30f3a26c1c2d..ffe55e50efab08 100644 --- a/packages/edit-post/src/index.js +++ b/packages/edit-post/src/index.js @@ -15,7 +15,10 @@ import { registerLegacyWidgetBlock, registerWidgetGroupBlock, } from '@wordpress/widgets'; -import { store as editorStore } from '@wordpress/editor'; +import { + privateApis as editorPrivateApis, + store as editorStore, +} from '@wordpress/editor'; /** * Internal dependencies @@ -24,6 +27,10 @@ import './hooks'; import './plugins'; import Editor from './editor'; import { store as editPostStore } from './store'; +import { unlock } from './lock-unlock'; + +const { PluginPostExcerpt: __experimentalPluginPostExcerpt } = + unlock( editorPrivateApis ); /** * Initializes and returns an instance of Editor. @@ -208,5 +215,5 @@ export { default as PluginSidebar } from './components/sidebar/plugin-sidebar'; export { default as PluginSidebarMoreMenuItem } from './components/header/plugin-sidebar-more-menu-item'; export { default as __experimentalFullscreenModeClose } from './components/header/fullscreen-mode-close'; export { default as __experimentalMainDashboardButton } from './components/header/main-dashboard-button'; -export { default as __experimentalPluginPostExcerpt } from './components/sidebar/plugin-post-excerpt'; +export { __experimentalPluginPostExcerpt }; export { store } from './store'; diff --git a/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js b/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js index f6c84d8cfd3adc..e350225a1212aa 100644 --- a/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js +++ b/packages/edit-site/src/components/sidebar-edit-mode/page-panels/index.js @@ -13,6 +13,7 @@ import { useSelect } from '@wordpress/data'; import { store as coreStore } from '@wordpress/core-data'; import { decodeEntities } from '@wordpress/html-entities'; import { + PostExcerptPanel, PostFeaturedImagePanel, PostLastRevisionPanel, PostTaxonomiesPanel, @@ -102,6 +103,7 @@ export default function PagePanels() { + ); } diff --git a/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js b/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js index 66b5991872cf96..157a56b2461712 100644 --- a/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js +++ b/packages/edit-site/src/components/sidebar-edit-mode/template-panel/index.js @@ -4,6 +4,7 @@ import { useSelect } from '@wordpress/data'; import { PanelBody } from '@wordpress/components'; import { + PostExcerptPanel, PostFeaturedImagePanel, PostLastRevisionPanel, PostTaxonomiesPanel, @@ -66,6 +67,7 @@ export default function TemplatePanel() { + ); } diff --git a/packages/editor/src/components/index.js b/packages/editor/src/components/index.js index 79a4d90663f669..0ae7ac0824a7fd 100644 --- a/packages/editor/src/components/index.js +++ b/packages/editor/src/components/index.js @@ -32,6 +32,7 @@ export { default as PostAuthorPanel } from './post-author/panel'; export { default as PostComments } from './post-comments'; export { default as PostExcerpt } from './post-excerpt'; export { default as PostExcerptCheck } from './post-excerpt/check'; +export { default as PostExcerptPanel } from './post-excerpt/panel'; export { default as PostFeaturedImage } from './post-featured-image'; export { default as PostFeaturedImageCheck } from './post-featured-image/check'; export { default as PostFeaturedImagePanel } from './post-featured-image/panel'; diff --git a/packages/editor/src/components/post-excerpt/check.js b/packages/editor/src/components/post-excerpt/check.js index 7d77ba77cd029a..f8ff4bb5d37dab 100644 --- a/packages/editor/src/components/post-excerpt/check.js +++ b/packages/editor/src/components/post-excerpt/check.js @@ -1,9 +1,27 @@ +/** + * WordPress dependencies + */ +import { useSelect } from '@wordpress/data'; + /** * Internal dependencies */ import PostTypeSupportCheck from '../post-type-support-check'; +import { store as editorStore } from '../../store'; function PostExcerptCheck( { children } ) { + const postType = useSelect( ( select ) => { + const { getEditedPostAttribute } = select( editorStore ); + return getEditedPostAttribute( 'type' ); + }, [] ); + + // This special case is unfortunate, but the REST API of wp_template and wp_template_part + // support the excerpt field throught the "description" field rather than "excerpt" which means + // the default ExcerptPanel won't work for these. + if ( [ 'wp_template', 'wp_template_part' ].includes( postType ) ) { + return null; + } + return ( { children } diff --git a/packages/edit-post/src/components/sidebar/post-excerpt/index.js b/packages/editor/src/components/post-excerpt/panel.js similarity index 83% rename from packages/edit-post/src/components/sidebar/post-excerpt/index.js rename to packages/editor/src/components/post-excerpt/panel.js index 8063ed6017b08c..ab4b60611493cc 100644 --- a/packages/edit-post/src/components/sidebar/post-excerpt/index.js +++ b/packages/editor/src/components/post-excerpt/panel.js @@ -3,24 +3,22 @@ */ import { __ } from '@wordpress/i18n'; import { PanelBody } from '@wordpress/components'; -import { - PostExcerpt as PostExcerptForm, - PostExcerptCheck, - store as editorStore, -} from '@wordpress/editor'; import { useDispatch, useSelect } from '@wordpress/data'; /** * Internal dependencies */ -import PluginPostExcerpt from '../plugin-post-excerpt'; +import PostExcerptForm from './index'; +import PostExcerptCheck from './check'; +import PluginPostExcerpt from './plugin'; +import { store as editorStore } from '../../store'; /** * Module Constants */ const PANEL_NAME = 'post-excerpt'; -export default function PostExcerpt() { +export default function PostExcerptPanel() { const { isOpened, isEnabled } = useSelect( ( select ) => { const { isEditorPanelOpened, isEditorPanelEnabled } = select( editorStore ); diff --git a/packages/edit-post/src/components/sidebar/plugin-post-excerpt/index.js b/packages/editor/src/components/post-excerpt/plugin.js similarity index 100% rename from packages/edit-post/src/components/sidebar/plugin-post-excerpt/index.js rename to packages/editor/src/components/post-excerpt/plugin.js diff --git a/packages/edit-post/src/components/sidebar/plugin-post-excerpt/test/index.js b/packages/editor/src/components/post-excerpt/test/plugin.js similarity index 94% rename from packages/edit-post/src/components/sidebar/plugin-post-excerpt/test/index.js rename to packages/editor/src/components/post-excerpt/test/plugin.js index 4b81a1326d5176..d6f81d459deb33 100644 --- a/packages/edit-post/src/components/sidebar/plugin-post-excerpt/test/index.js +++ b/packages/editor/src/components/post-excerpt/test/plugin.js @@ -11,7 +11,7 @@ import { SlotFillProvider } from '@wordpress/components'; /** * Internal dependencies */ -import PluginPostExcerptPanel from '../'; +import PluginPostExcerptPanel from '../plugin'; describe( 'PluginPostExcerptPanel', () => { test( 'renders fill properly', () => { diff --git a/packages/editor/src/private-apis.js b/packages/editor/src/private-apis.js index ac5bd4324946ee..da86d138bb2fd8 100644 --- a/packages/editor/src/private-apis.js +++ b/packages/editor/src/private-apis.js @@ -8,6 +8,7 @@ import { EntitiesSavedStatesExtensible } from './components/entities-saved-state import useBlockEditorSettings from './components/provider/use-block-editor-settings'; import PostPanelRow from './components/post-panel-row'; import PreviewDropdown from './components/preview-dropdown'; +import PluginPostExcerpt from './components/post-excerpt/plugin'; export const privateApis = {}; lock( privateApis, { @@ -16,6 +17,7 @@ lock( privateApis, { EntitiesSavedStatesExtensible, PostPanelRow, PreviewDropdown, + PluginPostExcerpt, // This is a temporary private API while we're updating the site editor to use EditorProvider. useBlockEditorSettings,