Skip to content

Commit

Permalink
Customizer: Integrate widget blocks live preview and saving.
Browse files Browse the repository at this point in the history
  • Loading branch information
epiqueras committed Jun 25, 2019
1 parent 8b6e94f commit 271a49f
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,19 @@ import { withDispatch } from '@wordpress/data';
* Internal dependencies
*/
import Layout from '../layout';
import { withWPCustomize } from '../../utils';

function EditWidgetsInitializer( { setupWidgetAreas, settings } ) {
function EditWidgetsInitializer( { setupWidgetAreas, saveWidgetAreas, settings } ) {
useEffect( () => {
setupWidgetAreas();
return withWPCustomize( ( { customize, saveButton } ) => {
const listener = () => {
saveWidgetAreas();
customize.previewer.refresh();
};
saveButton.addEventListener( 'click', listener );
return () => saveButton.removeEventListener( 'click', listener );
} );
}, [] );
return (
<Layout
Expand All @@ -23,9 +32,10 @@ function EditWidgetsInitializer( { setupWidgetAreas, settings } ) {

export default compose( [
withDispatch( ( dispatch ) => {
const { setupWidgetAreas } = dispatch( 'core/edit-widgets' );
const { setupWidgetAreas, saveWidgetAreas } = dispatch( 'core/edit-widgets' );
return {
setupWidgetAreas,
saveWidgetAreas,
};
} ),
] )( EditWidgetsInitializer );
8 changes: 1 addition & 7 deletions packages/edit-widgets/src/components/header/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,7 @@
}

#sub-accordion-section-gutenberg_widget_blocks & {
top: 0;
right: 0;
left: initial;
border-bottom: none;
border-left: 1px solid $light-gray-500;
height: 88px;
width: 280px;
display: none;
}
}
@include editor-left(".edit-widgets-header");
Expand Down
4 changes: 4 additions & 0 deletions packages/edit-widgets/src/components/sidebar/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,8 @@
.block-editor-block-inspector__card {
margin: 0;
}

#sub-accordion-section-gutenberg_widget_blocks & {
top: 0;
}
}
5 changes: 5 additions & 0 deletions packages/edit-widgets/src/components/widget-area/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { withDispatch, withSelect } from '@wordpress/data';
*/
import Sidebar from '../sidebar';
import SelectionObserver from './selection-observer';
import { withWPCustomize } from '../../utils';

function getBlockEditorSettings( blockEditorSettings, hasUploadPermissions ) {
if ( ! hasUploadPermissions ) {
Expand Down Expand Up @@ -108,6 +109,10 @@ export default compose( [
updateBlocksInWidgetArea,
} = dispatch( 'core/edit-widgets' );
updateBlocksInWidgetArea( id, blocks );
withWPCustomize( ( { previewBlocksInWidgetArea, saveButton } ) => {
previewBlocksInWidgetArea( id, blocks );
saveButton.disabled = false;
} );
},
};
} ),
Expand Down
1 change: 1 addition & 0 deletions packages/edit-widgets/src/utils/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default as withWPCustomize } from './with-wp-customize';
36 changes: 36 additions & 0 deletions packages/edit-widgets/src/utils/with-wp-customize.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/**
* WordPress dependencies
*/
import { serialize } from '@wordpress/blocks';

/* global wp */

function previewBlocksInWidgetArea( id, blocks ) {
const customizePreviewIframe = document.querySelector(
'#customize-preview > iframe'
);

if ( customizePreviewIframe && customizePreviewIframe.contentDocument ) {
const widgetArea = customizePreviewIframe.contentDocument.querySelector(
`[data-customize-partial-placement-context*='"sidebar_id":"${ id }"']`
);

if ( widgetArea ) {
widgetArea.innerHTML = serialize( blocks );
}
}
}

export default function withWPCustomize( func ) {
const saveButton = document.querySelector(
'#customize-save-button-wrapper > #save'
);

if ( wp && wp.customize && saveButton ) {
return func( {
customize: wp.customize,
previewBlocksInWidgetArea,
saveButton,
} );
}
}

0 comments on commit 271a49f

Please sign in to comment.