From 36d7327e4763127b402da671148b582e5c124af9 Mon Sep 17 00:00:00 2001 From: Adam Silverstein Date: Wed, 26 Sep 2018 08:06:12 -0600 Subject: [PATCH 1/3] withFiltered: Run props thru FilterNameProps --- packages/components/src/higher-order/with-filters/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/components/src/higher-order/with-filters/index.js b/packages/components/src/higher-order/with-filters/index.js index 6c621c679b377a..e903b67b27e5c2 100644 --- a/packages/components/src/higher-order/with-filters/index.js +++ b/packages/components/src/higher-order/with-filters/index.js @@ -28,6 +28,7 @@ export default function withFilters( hookName ) { /** @inheritdoc */ constructor( props ) { super( props ); + this.ComponentProps = applyFilters( hookName + 'Props', props ); this.onHooksUpdated = this.onHooksUpdated.bind( this ); this.Component = applyFilters( hookName, OriginalComponent ); @@ -54,14 +55,14 @@ export default function withFilters( hookName ) { * @param {string} updatedHookName Name of the hook that was updated. */ onHooksUpdated( updatedHookName ) { - if ( updatedHookName === hookName ) { + if ( updatedHookName === hookName || updatedHookName === hookName + 'Props' ) { this.throttledForceUpdate(); } } /** @inheritdoc */ render() { - return ; + return ; } }; }, 'withFilters' ); From e3ded0e185aed246cdd82b2be6da252a3c895769 Mon Sep 17 00:00:00 2001 From: Adam Silverstein Date: Wed, 26 Sep 2018 08:09:17 -0600 Subject: [PATCH 2/3] make publish buttons filterable --- packages/editor/src/components/post-publish-button/index.js | 3 ++- packages/editor/src/components/post-publish-panel/toggle.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/editor/src/components/post-publish-button/index.js b/packages/editor/src/components/post-publish-button/index.js index 3cd74e24e9f13d..836fb36cdc8536 100644 --- a/packages/editor/src/components/post-publish-button/index.js +++ b/packages/editor/src/components/post-publish-button/index.js @@ -6,7 +6,7 @@ import { noop, get } from 'lodash'; /** * WordPress dependencies */ -import { Button } from '@wordpress/components'; +import { Button, withFilters } from '@wordpress/components'; import { Component, createRef } from '@wordpress/element'; import { withSelect, withDispatch } from '@wordpress/data'; import { compose } from '@wordpress/compose'; @@ -102,4 +102,5 @@ export default compose( [ onSave: savePost, }; } ), + withFilters( 'editor.PostPublishButton' ), ] )( PostPublishButton ); diff --git a/packages/editor/src/components/post-publish-panel/toggle.js b/packages/editor/src/components/post-publish-panel/toggle.js index 3c8820cbba89d7..1be2839091d3e4 100644 --- a/packages/editor/src/components/post-publish-panel/toggle.js +++ b/packages/editor/src/components/post-publish-panel/toggle.js @@ -6,7 +6,7 @@ import { get } from 'lodash'; /** * WordPress Dependencies */ -import { Button } from '@wordpress/components'; +import { Button, withFilters } from '@wordpress/components'; import { compose } from '@wordpress/compose'; import { __ } from '@wordpress/i18n'; import { withSelect } from '@wordpress/data'; @@ -83,4 +83,5 @@ export default compose( [ postType: getCurrentPostType(), }; } ), + withFilters( 'editor.PostPublishPanelToggle' ), ] )( PostPublishPanelToggle ); From 08f27c335895dd6150f4bbd91b09e8e904617f15 Mon Sep 17 00:00:00 2001 From: Adam Silverstein Date: Mon, 8 Oct 2018 11:36:32 -0600 Subject: [PATCH 3/3] Apply the props filter inside the this.throttledForceUpdate callback --- packages/components/src/higher-order/with-filters/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/components/src/higher-order/with-filters/index.js b/packages/components/src/higher-order/with-filters/index.js index e903b67b27e5c2..90625d74c35825 100644 --- a/packages/components/src/higher-order/with-filters/index.js +++ b/packages/components/src/higher-order/with-filters/index.js @@ -35,6 +35,7 @@ export default function withFilters( hookName ) { this.namespace = uniqueId( 'core/with-filters/component-' ); this.throttledForceUpdate = debounce( () => { this.Component = applyFilters( hookName, OriginalComponent ); + this.ComponentProps = applyFilters( hookName + 'Props', props ); this.forceUpdate(); }, ANIMATION_FRAME_PERIOD );