Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions e2e/tests/design-library.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,20 @@ test.describe( 'Design Library', () => {
await expect( page.locator( '.ugb-modal-design-library__designs' ).getByText( 'An error has occurred:' ) ).toHaveCount( 0 )
} )

test( 'opens while the page template is shown', async ( { page } ) => {
await page.evaluate( () => {
window.wp.data.dispatch( 'core/editor' ).setRenderingMode( 'template-locked' )
} )

await expect.poll( async () => {
return page.evaluate( () => window.wp.data.select( 'core/editor' ).getRenderingMode() )
} ).toBe( 'template-locked' )

await openDesignLibrary( page )

await expect( page.locator( '.ugb-modal-design-library' ) ).toBeVisible()
} )

test( 'lazy-renders design previews for visible items', async ( {
page,
} ) => {
Expand Down
13 changes: 11 additions & 2 deletions src/plugins/design-library-button/design-library-button.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import { SVGStackableIcon } from '~stackable/icons'
* WordPress dependencies
*/
import { createBlock } from '@wordpress/blocks'
import { dispatch, useSelect } from '@wordpress/data'
import {
dispatch, select, useSelect,
} from '@wordpress/data'
import { __ } from '@wordpress/i18n'
import { useCallback } from '@wordpress/element'
import { ToolbarButton } from '@wordpress/components'
Expand All @@ -31,7 +33,14 @@ const DesignLibraryButton = () => {
// Insert a design library block.
const block = createBlock( 'stackable/design-library' )

dispatch( 'core/block-editor' ).insertBlocks( block )
// "Show Template" locks the template root, so insert into its editable
// post content area instead.
const isTemplateShown = select( 'core/editor' )?.getRenderingMode?.() === 'template-locked'
const rootClientId = isTemplateShown
? select( 'core/block-editor' ).getBlocksByName( 'core/post-content' )?.[ 0 ]
: undefined

dispatch( 'core/block-editor' ).insertBlocks( block, undefined, rootClientId )
.then( () => {
const button = getEditorDom()?.querySelector( `[data-block="${ block.clientId }"] button` )
// Open the design library.
Expand Down
Loading