From 661a13a4ad98752c3b4a232aa3bf4de61484f402 Mon Sep 17 00:00:00 2001 From: Jorge Date: Thu, 30 May 2019 15:55:28 +0100 Subject: [PATCH] Extract the placeholder. --- .../src/legacy-widget/edit/index.js | 96 +++++++++++-------- 1 file changed, 57 insertions(+), 39 deletions(-) diff --git a/packages/block-library/src/legacy-widget/edit/index.js b/packages/block-library/src/legacy-widget/edit/index.js index ffe7083d37687f..97ef2474974544 100644 --- a/packages/block-library/src/legacy-widget/edit/index.js +++ b/packages/block-library/src/legacy-widget/edit/index.js @@ -3,13 +3,14 @@ */ import { map, + isEmpty, pickBy, } from 'lodash'; /** * WordPress dependencies */ -import { Component } from '@wordpress/element'; +import { Component, useMemo } from '@wordpress/element'; import { Button, IconButton, @@ -32,6 +33,51 @@ import { ServerSideRender } from '@wordpress/editor'; */ import LegacyWidgetEditHandler from './handler'; +const LegacyWidgetPlaceholder = ( { + availableLegacyWidgets, + currentWidget, + hasPermissionsToManageWidgets, + onChangeWidget, +} ) => { + const visibleLegacyWidgets = useMemo( + () => pickBy( + availableLegacyWidgets, + ( { isHidden } ) => ! isHidden + ), + [ availableLegacyWidgets ] + ); + let placeholderContent; + if ( ! hasPermissionsToManageWidgets ) { + placeholderContent = __( 'You don\'t have permissions to use widgets on this site.' ); + } + if ( isEmpty( visibleLegacyWidgets ) ) { + placeholderContent = __( 'There are no widgets available.' ); + } + placeholderContent = ( + { + return { + value: key, + label: widget.name, + }; + } ) + ) } + /> + ); + return ( + } + label={ __( 'Legacy Widget' ) } + > + { placeholderContent } + + ); +}; + class LegacyWidgetEdit extends Component { constructor() { super( ...arguments ); @@ -50,49 +96,21 @@ class LegacyWidgetEdit extends Component { hasPermissionsToManageWidgets, setAttributes, } = this.props; - const visibleLegacyWidgets = pickBy( - availableLegacyWidgets, - ( { isHidden } ) => ! isHidden - ); const { isPreview } = this.state; const { identifier, isCallbackWidget } = attributes; const widgetObject = identifier && availableLegacyWidgets[ identifier ]; if ( ! widgetObject ) { - let placeholderContent; - - if ( ! hasPermissionsToManageWidgets ) { - placeholderContent = __( 'You don\'t have permissions to use widgets on this site.' ); - } else if ( visibleLegacyWidgets.length === 0 ) { - placeholderContent = __( 'There are no widgets available.' ); - } else { - placeholderContent = ( - setAttributes( { - instance: {}, - identifier: value, - isCallbackWidget: availableLegacyWidgets[ value ].isCallbackWidget, - } ) } - options={ [ { value: 'none', label: 'Select widget' } ].concat( - map( visibleLegacyWidgets, ( widget, key ) => { - return { - value: key, - label: widget.name, - }; - } ) - ) } - /> - ); - } - return ( - } - label={ __( 'Legacy Widget' ) } - > - { placeholderContent } - + setAttributes( { + instance: {}, + identifier: newWidget, + isCallbackWidget: availableLegacyWidgets[ newWidget ].isCallbackWidget, + } ) } + /> ); }