Skip to content

Commit

Permalink
Add blockEditor settings on the widget screen; Required to make legac…
Browse files Browse the repository at this point in the history
…y widgets work.
  • Loading branch information
jorgefilipecosta committed May 22, 2019
1 parent d15c484 commit 46e57de
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 14 deletions.
7 changes: 6 additions & 1 deletion lib/widgets-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,14 @@ function gutenberg_widgets_init( $hook ) {
return;
}

$block_editor_settings = apply_filters( 'block_editor_settings', $editor_settings, $post );

wp_add_inline_script(
'wp-edit-widgets',
'wp.editWidgets.initialize( "widgets-editor" );'
sprintf(
'wp.editWidgets.initialize( "widgets-editor", %s );',
wp_json_encode( $block_editor_settings )
)
);
// Preload server-registered block schemas.
wp_add_inline_script(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,53 @@
/**
* External dependencies
*/
import { pick } from 'lodash';

/**
* WordPress dependencies
*/
import { compose } from '@wordpress/compose';
import { useEffect } from '@wordpress/element';
import { useEffect, useMemo } from '@wordpress/element';
import { withDispatch } from '@wordpress/data';

/**
* Internal dependencies
*/
import Layout from '../layout';
import WidgetBlockEditorSettings from '../widget-block-editor-settings';

function EditWidgetsInitializer( { setupWidgetAreas } ) {
function EditWidgetsInitializer( { setupWidgetAreas, settings } ) {
useEffect( () => {
setupWidgetAreas();
}, [] );
return <Layout />;
const blockEditorSettings = useMemo(
() => (
pick( settings, [
'allowedBlockTypes',
'availableLegacyWidgets',
'bodyPlaceholder',
'colors',
'disableCustomColors',
'disableCustomFontSizes',
'focusMode',
'fontSizes',
'hasFixedToolbar',
'hasPermissionsToManageWidgets',
'imageSizes',
'isRTL',
'maxWidth',
'styles',
] )
),
[ settings ]
);
return (
<WidgetBlockEditorSettings.Provider
value={ blockEditorSettings }
>
<Layout />
</WidgetBlockEditorSettings.Provider>
);
}

export default compose( [
Expand Down
27 changes: 20 additions & 7 deletions packages/edit-widgets/src/components/widget-area/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ import {
} from '@wordpress/block-editor';
import { withDispatch, withSelect } from '@wordpress/data';

/**
* Internal dependencies
*/
import WidgetBlockEditorSettings from '../widget-block-editor-settings';

function WidgetArea( {
blocks,
initialOpen,
Expand All @@ -21,13 +26,21 @@ function WidgetArea( {
title={ widgetAreaName }
initialOpen={ initialOpen }
>
<BlockEditorProvider
value={ blocks }
onInput={ updateBlocks }
onChange={ updateBlocks }
>
<BlockList />
</BlockEditorProvider>
<WidgetBlockEditorSettings.Consumer>
{
( value ) => (
<BlockEditorProvider
value={ blocks }
onInput={ updateBlocks }
onChange={ updateBlocks }
settings={ value }
>
<BlockList />
</BlockEditorProvider>
)
}
</WidgetBlockEditorSettings.Consumer>

</PanelBody>
</Panel>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/**
* WordPress dependencies
*/
import { createContext } from '@wordpress/element';

/**
* Reference to an empty object
*/
const EMPTY_OBJECT = {};
const WidgetBlockEditorSettings = createContext( EMPTY_OBJECT );
export default WidgetBlockEditorSettings;
9 changes: 6 additions & 3 deletions packages/edit-widgets/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,15 @@ import EditWidgetsInitializer from './components/edit-widgets-initializer';
/**
* Initilizes the widgets screen
*
* @param {string} id Id of the root element to render the screen.
* @param {string} id Id of the root element to render the screen.
* @param {Object} settings Id of the root element to render the screen.
*/
export function initialize( id ) {
export function initialize( id, settings ) {
registerCoreBlocks();
render(
<EditWidgetsInitializer />,
<EditWidgetsInitializer
settings={ settings }
/>,
document.getElementById( id )
);
}

0 comments on commit 46e57de

Please sign in to comment.