From d159e89a08bf0f411aff35f4ef07c4cf25936c8c Mon Sep 17 00:00:00 2001 From: George Mamadashvili Date: Mon, 24 Jul 2023 16:15:29 +0400 Subject: [PATCH 1/4] Site Editor: Don't navigate to the patterns in Template Parts mode --- .../sidebar-navigation-screen-patterns/index.js | 8 -------- .../index.js | 10 ++++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/edit-site/src/components/sidebar-navigation-screen-patterns/index.js b/packages/edit-site/src/components/sidebar-navigation-screen-patterns/index.js index 86155c166d5839..f25a13552c4248 100644 --- a/packages/edit-site/src/components/sidebar-navigation-screen-patterns/index.js +++ b/packages/edit-site/src/components/sidebar-navigation-screen-patterns/index.js @@ -10,7 +10,6 @@ import { __experimentalHeading as Heading, } from '@wordpress/components'; import { useViewportMatch } from '@wordpress/compose'; -import { useSelect } from '@wordpress/data'; import { getTemplatePartIcon } from '@wordpress/editor'; import { __, sprintf } from '@wordpress/i18n'; import { getQueryArgs } from '@wordpress/url'; @@ -24,7 +23,6 @@ import SidebarNavigationItem from '../sidebar-navigation-item'; import SidebarNavigationScreen from '../sidebar-navigation-screen'; import CategoryItem from './category-item'; import { DEFAULT_CATEGORY, DEFAULT_TYPE } from '../page-patterns/utils'; -import { store as editSiteStore } from '../../store'; import { useLink } from '../routes/link'; import usePatternCategories from './use-pattern-categories'; import useMyPatterns from './use-my-patterns'; @@ -108,11 +106,6 @@ export default function SidebarNavigationScreenPatterns() { const { patternCategories, hasPatterns } = usePatternCategories(); const { myPatterns } = useMyPatterns(); - const isTemplatePartsMode = useSelect( ( select ) => { - const settings = select( editSiteStore ).getSettings(); - return !! settings.supportsTemplatePartsMode; - }, [] ); - const templatePartsLink = useLink( { path: '/wp_template_part/all' } ); const footer = ! isMobileViewport ? ( @@ -131,7 +124,6 @@ export default function SidebarNavigationScreenPatterns() { return ( { + const settings = select( editSiteStore ).getSettings(); + + return !! settings.supportsTemplatePartsMode; + }, [] ); + return ( Date: Mon, 24 Jul 2023 16:21:57 +0400 Subject: [PATCH 2/4] Remove leftovers --- .../sidebar-navigation-screen-templates/index.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/packages/edit-site/src/components/sidebar-navigation-screen-templates/index.js b/packages/edit-site/src/components/sidebar-navigation-screen-templates/index.js index b5e5aec5e3bb0e..af195a2f93b2dc 100644 --- a/packages/edit-site/src/components/sidebar-navigation-screen-templates/index.js +++ b/packages/edit-site/src/components/sidebar-navigation-screen-templates/index.js @@ -7,7 +7,6 @@ import { } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { useEntityRecords } from '@wordpress/core-data'; -import { useSelect } from '@wordpress/data'; import { decodeEntities } from '@wordpress/html-entities'; import { useViewportMatch } from '@wordpress/compose'; @@ -18,7 +17,6 @@ import SidebarNavigationScreen from '../sidebar-navigation-screen'; import { useLink } from '../routes/link'; import SidebarNavigationItem from '../sidebar-navigation-item'; import AddNewTemplate from '../add-new-template'; -import { store as editSiteStore } from '../../store'; import SidebarButton from '../sidebar-button'; const TemplateItem = ( { postType, postId, ...props } ) => { @@ -31,11 +29,6 @@ const TemplateItem = ( { postType, postId, ...props } ) => { export default function SidebarNavigationScreenTemplates() { const isMobileViewport = useViewportMatch( 'medium', '<' ); - const isTemplatePartsMode = useSelect( ( select ) => { - const settings = select( editSiteStore ).getSettings(); - - return !! settings.supportsTemplatePartsMode; - }, [] ); const { records: templates, isResolving: isLoading } = useEntityRecords( 'postType', @@ -51,10 +44,9 @@ export default function SidebarNavigationScreenTemplates() { ); const browseAllLink = useLink( { path: '/wp_template/all' } ); - const canCreate = ! isMobileViewport && ! isTemplatePartsMode; + const canCreate = ! isMobileViewport; return ( Date: Mon, 24 Jul 2023 17:30:49 +0400 Subject: [PATCH 3/4] No need for check in patterns navigation sidebar --- .../src/components/add-new-pattern/index.js | 15 +++-------- .../specs/site-editor/hybrid-theme.spec.js | 27 ------------------- 2 files changed, 3 insertions(+), 39 deletions(-) diff --git a/packages/edit-site/src/components/add-new-pattern/index.js b/packages/edit-site/src/components/add-new-pattern/index.js index 3879498834f42a..5d47964cfcc355 100644 --- a/packages/edit-site/src/components/add-new-pattern/index.js +++ b/packages/edit-site/src/components/add-new-pattern/index.js @@ -5,7 +5,6 @@ import { DropdownMenu } from '@wordpress/components'; import { useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { plus, symbol, symbolFilled } from '@wordpress/icons'; -import { useSelect } from '@wordpress/data'; import { privateApis as routerPrivateApis } from '@wordpress/router'; /** @@ -15,7 +14,6 @@ import CreatePatternModal from '../create-pattern-modal'; import CreateTemplatePartModal from '../create-template-part-modal'; import SidebarButton from '../sidebar-button'; import { unlock } from '../../lock-unlock'; -import { store as editSiteStore } from '../../store'; const { useHistory } = unlock( routerPrivateApis ); @@ -24,10 +22,6 @@ export default function AddNewPattern() { const [ showPatternModal, setShowPatternModal ] = useState( false ); const [ showTemplatePartModal, setShowTemplatePartModal ] = useState( false ); - const isTemplatePartsMode = useSelect( ( select ) => { - const settings = select( editSiteStore ).getSettings(); - return !! settings.supportsTemplatePartsMode; - }, [] ); function handleCreatePattern( { pattern, categoryId } ) { setShowPatternModal( false ); @@ -63,15 +57,12 @@ export default function AddNewPattern() { onClick: () => setShowPatternModal( true ), title: __( 'Create pattern' ), }, - ]; - - if ( ! isTemplatePartsMode ) { - controls.push( { + { icon: symbolFilled, onClick: () => setShowTemplatePartModal( true ), title: __( 'Create template part' ), - } ); - } + }, + ]; return ( <> diff --git a/test/e2e/specs/site-editor/hybrid-theme.spec.js b/test/e2e/specs/site-editor/hybrid-theme.spec.js index 993ca5eb6bde86..060daf508491aa 100644 --- a/test/e2e/specs/site-editor/hybrid-theme.spec.js +++ b/test/e2e/specs/site-editor/hybrid-theme.spec.js @@ -12,33 +12,6 @@ test.describe( 'Hybrid theme', () => { await requestUtils.activateTheme( 'twentytwentyone' ); } ); - test( 'should not show the Add Template Part button', async ( { - admin, - page, - } ) => { - await admin.visitAdminPage( - '/site-editor.php', - 'postType=wp_template_part&path=/wp_template_part/all' - ); - - await expect( - page.locator( 'role=button[name="Add New Template Part"i]' ) - ).toBeHidden(); - - // Back to Patterns page. - await page.click( - 'role=region[name="Navigation"i] >> role=button[name="Back"i]' - ); - - await page.click( - 'role=region[name="Navigation"i] >> role=button[name="Create pattern"i]' - ); - - await expect( - page.locator( 'role=menuitem[name="Create template part"i]' ) - ).toBeHidden(); - } ); - test( 'can access template parts list page', async ( { admin, page } ) => { await admin.visitAdminPage( 'site-editor.php', From 897458af6704b5051358518f97c386da1cf5d034 Mon Sep 17 00:00:00 2001 From: George Mamadashvili Date: Mon, 24 Jul 2023 18:29:46 +0400 Subject: [PATCH 4/4] Restore only condition --- .../src/components/add-new-pattern/index.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/edit-site/src/components/add-new-pattern/index.js b/packages/edit-site/src/components/add-new-pattern/index.js index 5d47964cfcc355..e7d97aad5feb4e 100644 --- a/packages/edit-site/src/components/add-new-pattern/index.js +++ b/packages/edit-site/src/components/add-new-pattern/index.js @@ -5,6 +5,7 @@ import { DropdownMenu } from '@wordpress/components'; import { useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { plus, symbol, symbolFilled } from '@wordpress/icons'; +import { useSelect } from '@wordpress/data'; import { privateApis as routerPrivateApis } from '@wordpress/router'; /** @@ -14,6 +15,7 @@ import CreatePatternModal from '../create-pattern-modal'; import CreateTemplatePartModal from '../create-template-part-modal'; import SidebarButton from '../sidebar-button'; import { unlock } from '../../lock-unlock'; +import { store as editSiteStore } from '../../store'; const { useHistory } = unlock( routerPrivateApis ); @@ -22,6 +24,10 @@ export default function AddNewPattern() { const [ showPatternModal, setShowPatternModal ] = useState( false ); const [ showTemplatePartModal, setShowTemplatePartModal ] = useState( false ); + const isTemplatePartsMode = useSelect( ( select ) => { + const settings = select( editSiteStore ).getSettings(); + return !! settings.supportsTemplatePartsMode; + }, [] ); function handleCreatePattern( { pattern, categoryId } ) { setShowPatternModal( false ); @@ -57,12 +63,17 @@ export default function AddNewPattern() { onClick: () => setShowPatternModal( true ), title: __( 'Create pattern' ), }, - { + ]; + + // Remove condition when command palette issues are resolved. + // See: https://github.com/WordPress/gutenberg/issues/52154. + if ( ! isTemplatePartsMode ) { + controls.push( { icon: symbolFilled, onClick: () => setShowTemplatePartModal( true ), title: __( 'Create template part' ), - }, - ]; + } ); + } return ( <>