Skip to content

Commit

Permalink
Packages: Add a new compose package (#7948)
Browse files Browse the repository at this point in the history
* Compose: Extract UI-less Higher order components into a wordpress/compose package

* Use a range version for lodash

* Move createHigherOrderComponent to @wordpress/compose

* Fix unit tests

* Remove useless dev dependency

* Compose: Use ranges for dev dependencies
  • Loading branch information
youknowriad authored Jul 16, 2018
1 parent 8db4360 commit a6c36e5
Show file tree
Hide file tree
Showing 182 changed files with 714 additions and 402 deletions.
4 changes: 2 additions & 2 deletions components/autocomplete/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ import 'element-closest';
/**
* WordPress dependencies
*/
import { Component, compose, renderToString } from '@wordpress/element';
import { Component, renderToString } from '@wordpress/element';
import { ENTER, ESCAPE, UP, DOWN, LEFT, RIGHT, SPACE } from '@wordpress/keycodes';
import { __, _n, sprintf } from '@wordpress/i18n';
import { withInstanceId, compose } from '@wordpress/compose';

/**
* Internal dependencies
Expand All @@ -19,7 +20,6 @@ import './style.scss';
import withFocusOutside from '../higher-order/with-focus-outside';
import Button from '../button';
import Popover from '../popover';
import withInstanceId from '../higher-order/with-instance-id';
import withSpokenMessages from '../higher-order/with-spoken-messages';

/**
Expand Down
6 changes: 5 additions & 1 deletion components/checkbox-control/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
/**
* External dependencies
*/
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
*/
import BaseControl from '../base-control';
import withInstanceId from '../higher-order/with-instance-id';
import './style.scss';

function CheckboxControl( { label, className, heading, checked, help, instanceId, onChange, ...props } ) {
Expand Down
35 changes: 35 additions & 0 deletions components/deprecated.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* External dependencies
*/
import { mapValues } from 'lodash';

/**
* WordPress dependencies
*/
import {
ifCondition,
withGlobalEvents,
withInstanceId,
withSafeTimeout,
withState,
} from '@wordpress/compose';
import deprecated from '@wordpress/deprecated';

const deprecatedFunctions = {
ifCondition,
withGlobalEvents,
withInstanceId,
withSafeTimeout,
withState,
};

export default mapValues( deprecatedFunctions, ( deprecatedFunction, key ) => {
return ( ...args ) => {
deprecated( 'wp.components.' + key, {
version: '3.5',
alternative: 'wp.compose.' + key,
} );

return deprecatedFunction( ...args );
};
} );
2 changes: 1 addition & 1 deletion components/draggable/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import classnames from 'classnames';
* WordPress Dependencies
*/
import { Component } from '@wordpress/element';
import { withSafeTimeout } from '@wordpress/compose';

/**
* Internal Dependencies
*/
import withSafeTimeout from '../higher-order/with-safe-timeout';
import './style.scss';

const dragImageClass = 'components-draggable__invisible-drag-image';
Expand Down
6 changes: 1 addition & 5 deletions components/focusable-iframe/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ import { omit } from 'lodash';
* WordPress dependencies
*/
import { Component, createRef } from '@wordpress/element';

/**
* Internal dependencies
*/
import withGlobalEvents from '../higher-order/with-global-events';
import { withGlobalEvents } from '@wordpress/compose';

/**
* Browser dependencies
Expand Down
2 changes: 1 addition & 1 deletion components/form-token-field/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import classnames from 'classnames';
*/
import { __, _n, sprintf } from '@wordpress/i18n';
import { Component } from '@wordpress/element';
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
Expand All @@ -17,7 +18,6 @@ import './style.scss';
import Token from './token';
import TokenInput from './token-input';
import SuggestionsList from './suggestions-list';
import withInstanceId from '../higher-order/with-instance-id';
import withSpokenMessages from '../higher-order/with-spoken-messages';

const initialState = {
Expand Down
2 changes: 1 addition & 1 deletion components/form-token-field/token.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { noop } from 'lodash';
/**
* WordPress dependencies
*/
import withInstanceId from '../higher-order/with-instance-id';
import { withInstanceId } from '@wordpress/compose';
import { __, sprintf } from '@wordpress/i18n';

/**
Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/navigate-regions/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import classnames from 'classnames';
/**
* WordPress Dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';

/**
* Internal Dependencies
Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-api-data/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import { mapValues, reduce, forEach, noop } from 'lodash';
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';
import isShallowEqual from '@wordpress/is-shallow-equal';

/**
Expand Down
7 changes: 2 additions & 5 deletions components/higher-order/with-constrained-tabbing/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
/**
* WordPress dependencies
*/
import {
Component,
createRef,
createHigherOrderComponent,
} from '@wordpress/element';
import { Component, createRef } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';
import { keycodes } from '@wordpress/utils';
import { focus } from '@wordpress/dom';

Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-context/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import { noop } from 'lodash';
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';

export default ( contextName ) => ( mapSettingsToProps ) => createHigherOrderComponent(
( OriginalComponent ) => {
Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-fallback-styles/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import { every, isEqual } from 'lodash';
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';

export default ( mapNodeToProps ) => createHigherOrderComponent(
( WrappedComponent ) => {
Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-filters/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import { debounce, uniqueId } from 'lodash';
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { addAction, applyFilters, removeAction } from '@wordpress/hooks';
import { createHigherOrderComponent } from '@wordpress/compose';

const ANIMATION_FRAME_PERIOD = 16;

Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-focus-outside/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import { includes } from 'lodash';
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';

/**
* Input types which are classified as button types, for use in considering
Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-focus-return/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';

/**
* Higher Order Component used to be used to wrap disposable elements like
Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-notices/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import uuid from 'uuid/v4';
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { createHigherOrderComponent } from '@wordpress/compose';

/**
* Internal dependencies
Expand Down
3 changes: 2 additions & 1 deletion components/higher-order/with-spoken-messages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import { debounce } from 'lodash';
/**
* WordPress dependencies
*/
import { Component, createHigherOrderComponent } from '@wordpress/element';
import { Component } from '@wordpress/element';
import { speak } from '@wordpress/a11y';
import { createHigherOrderComponent } from '@wordpress/compose';

/**
* A Higher Order Component used to be provide a unique instance ID by
Expand Down
16 changes: 11 additions & 5 deletions components/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/**
* Internal dependencies
*/
import deprecated from './deprecated';

// Components
export { default as APIProvider } from './higher-order/with-api-data/provider';
export { default as Autocomplete } from './autocomplete';
Expand Down Expand Up @@ -57,7 +62,6 @@ export { default as TreeSelect } from './tree-select';
export { createSlotFill, Slot, Fill, Provider as SlotFillProvider } from './slot-fill';

// Higher-Order Components
export { default as ifCondition } from './higher-order/if-condition';
export { default as navigateRegions } from './higher-order/navigate-regions';
export { default as withAPIData } from './higher-order/with-api-data';
export { default as withContext } from './higher-order/with-context';
Expand All @@ -66,9 +70,11 @@ export { default as withFallbackStyles } from './higher-order/with-fallback-styl
export { default as withFilters } from './higher-order/with-filters';
export { default as withFocusOutside } from './higher-order/with-focus-outside';
export { default as withFocusReturn } from './higher-order/with-focus-return';
export { default as withGlobalEvents } from './higher-order/with-global-events';
export { default as withInstanceId } from './higher-order/with-instance-id';
export { default as withNotices } from './higher-order/with-notices';
export { default as withSafeTimeout } from './higher-order/with-safe-timeout';
export { default as withSpokenMessages } from './higher-order/with-spoken-messages';
export { default as withState } from './higher-order/with-state';

export const ifCondition = deprecated.ifCondition;
export const withGlobalEvents = deprecated.withGlobalEvents;
export const withInstanceId = deprecated.withInstanceId;
export const withSafeTimeout = deprecated.withSafeTimeout;
export const withState = deprecated.withState;
2 changes: 1 addition & 1 deletion components/menu-group/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import classnames from 'classnames';
*/
import { Children } from '@wordpress/element';
import { applyFilters } from '@wordpress/hooks';
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
*/
import './style.scss';
import { NavigableMenu } from '../navigable-container';
import withInstanceId from '../higher-order/with-instance-id';

export function MenuGroup( {
children,
Expand Down
4 changes: 2 additions & 2 deletions components/modal/frame.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
/**
* WordPress dependencies
*/
import { Component, compose, createRef } from '@wordpress/element';
import { Component, createRef } from '@wordpress/element';
import { ESCAPE } from '@wordpress/keycodes';
import { focus } from '@wordpress/dom';
import { withGlobalEvents, compose } from '@wordpress/compose';

/**
* External dependencies
Expand All @@ -16,7 +17,6 @@ import clickOutside from 'react-click-outside';
import './style.scss';
import withFocusReturn from '../higher-order/with-focus-return';
import withConstrainedTabbing from '../higher-order/with-constrained-tabbing';
import withGlobalEvents from '../higher-order/with-global-events';

class ModalFrame extends Component {
constructor() {
Expand Down
2 changes: 1 addition & 1 deletion components/modal/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { noop } from 'lodash';
* WordPress dependencies
*/
import { Component, createPortal } from '@wordpress/element';
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
Expand All @@ -16,7 +17,6 @@ import './style.scss';
import ModalFrame from './frame';
import ModalHeader from './header';
import * as ariaHelper from './aria-helper';
import withInstanceId from '../higher-order/with-instance-id';

// Used to count the number of open modals.
let parentElement,
Expand Down
6 changes: 5 additions & 1 deletion components/radio-control/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@
import { isEmpty } from 'lodash';
import classnames from 'classnames';

/**
* WordPress dependencies
*/
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
*/
import BaseControl from '../base-control';
import withInstanceId from '../higher-order/with-instance-id';
import './style.scss';

function RadioControl( { label, className, selected, help, instanceId, onChange, options = [] } ) {
Expand Down
2 changes: 1 addition & 1 deletion components/range-control/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import classnames from 'classnames';
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
*/
import { BaseControl, Button, Dashicon } from '../';
import withInstanceId from '../higher-order/with-instance-id';
import './style.scss';

function RangeControl( {
Expand Down
4 changes: 2 additions & 2 deletions components/sandbox/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
* WordPress dependencies
*/
import { Component, renderToString, createRef } from '@wordpress/element';
import { withGlobalEvents } from '@wordpress/compose';

/**
* Internal dependencies
*/
import FocusableIframe from '../focusable-iframe';
import withGlobalEvents from '../higher-order/with-global-events';

class Sandbox extends Component {
constructor() {
Expand Down Expand Up @@ -151,7 +151,7 @@ class Sandbox extends Component {
aspectRatio = potentialIframe.width / potentialIframe.height;
potentialIframe.width = '100%';
}
}
}
sendResize();
Expand Down
6 changes: 5 additions & 1 deletion components/select-control/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@
*/
import { isEmpty } from 'lodash';

/**
* WordPress dependencies
*/
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
*/
import BaseControl from '../base-control';
import withInstanceId from '../higher-order/with-instance-id';
import './style.scss';

function SelectControl( {
Expand Down
2 changes: 1 addition & 1 deletion components/tab-panel/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import { partial, noop, find } from 'lodash';
* WordPress dependencies
*/
import { Component } from '@wordpress/element';
import { withInstanceId } from '@wordpress/compose';

/**
* Internal dependencies
*/
import { default as withInstanceId } from '../higher-order/with-instance-id';
import { NavigableMenu } from '../navigable-container';

const TabButton = ( { tabId, onClick, children, selected, ...rest } ) => (
Expand Down
Loading

0 comments on commit a6c36e5

Please sign in to comment.