diff --git a/src/components/CellContainer.js b/src/components/CellContainer.js index eecf37bd..b796cfa5 100644 --- a/src/components/CellContainer.js +++ b/src/components/CellContainer.js @@ -5,13 +5,13 @@ import getContext from 'recompose/getContext'; import mapProps from 'recompose/mapProps'; import compose from 'recompose/compose'; -import { - customComponentSelector, - cellValueSelector, - cellPropertiesSelector, - classNamesForComponentSelector, - stylesForComponentSelector -} from '../selectors/dataSelectors'; +//import { +// customComponentSelector, +// cellValueSelector, +// cellPropertiesSelector, +// classNamesForComponentSelector, +// stylesForComponentSelector +//} from '../selectors/dataSelectors'; import { valueOrResult } from '../utils/valueUtils'; function hasWidthOrStyles(cellProperties) { @@ -41,11 +41,11 @@ const ComposedCellContainer = OriginalComponent => compose( }), connect((state, props) => { return { - value: cellValueSelector(state, props), - customComponent: customComponentSelector(state, props), - cellProperties: cellPropertiesSelector(state, props), - className: classNamesForComponentSelector(state, 'Cell'), - style: stylesForComponentSelector(state, 'Cell'), + value: props.selectors.cellValueSelector(state, props), + customComponent: props.selectors.customComponentSelector(state, props), + cellProperties: props.selectors.cellPropertiesSelector(state, props), + className: props.selectors.classNamesForComponentSelector(state, 'Cell'), + style: props.selectors.stylesForComponentSelector(state, 'Cell'), }; }), mapProps(props => { diff --git a/src/components/FilterContainer.js b/src/components/FilterContainer.js index 7d46bc05..e46422d4 100644 --- a/src/components/FilterContainer.js +++ b/src/components/FilterContainer.js @@ -1,13 +1,23 @@ import React from 'react'; import PropTypes from 'prop-types'; +import compose from 'recompose/compose'; +import getContext from 'recompose/getContext'; import { connect } from '../utils/griddleConnect'; -import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; import { setFilter } from '../actions'; -const EnhancedFilter = OriginalComponent => connect((state, props) => ({ - className: classNamesForComponentSelector(state, 'Filter'), - style: stylesForComponentSelector(state, 'Filter'), -}), { setFilter })(props => ); +const EnhancedFilter = OriginalComponent => compose( + getContext({ + selectors: PropTypes.object + }), + connect( + (state, props) => ({ + className: props.selectors.classNamesForComponentSelector(state, 'Filter'), + style: props.selectors.stylesForComponentSelector(state, 'Filter'), + }), + { setFilter } + ) +)(props => ); export default EnhancedFilter; diff --git a/src/components/LayoutContainer.js b/src/components/LayoutContainer.js index e44570b6..4b09b208 100644 --- a/src/components/LayoutContainer.js +++ b/src/components/LayoutContainer.js @@ -5,16 +5,17 @@ import getContext from 'recompose/getContext'; import mapProps from 'recompose/mapProps'; import compose from 'recompose/compose'; -import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; const EnhancedLayout = OriginalComponent => compose( getContext({ components: PropTypes.object, + selectors: PropTypes.object }), connect( (state, props) => ({ - className: classNamesForComponentSelector(state, 'Layout'), - style: stylesForComponentSelector(state, 'Layout'), + className: props.selectors.classNamesForComponentSelector(state, 'Layout'), + style: props.selectors.stylesForComponentSelector(state, 'Layout'), }) ), mapProps( props => ({ diff --git a/src/components/NextButtonContainer.js b/src/components/NextButtonContainer.js index 278d9eb6..d85d48cc 100644 --- a/src/components/NextButtonContainer.js +++ b/src/components/NextButtonContainer.js @@ -1,13 +1,21 @@ import React from 'react'; +import PropTypes from 'prop-types'; +import compose from 'recompose/compose'; +import getContext from 'recompose/getContext'; import { connect } from '../utils/griddleConnect'; -import { textSelector, hasNextSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { textSelector, hasNextSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; -const enhance = OriginalComponent => connect((state, props) => ({ - text: textSelector(state, { key: 'next' }), - hasNext: hasNextSelector(state, props), - className: classNamesForComponentSelector(state, 'NextButton'), - style: stylesForComponentSelector(state, 'NextButton'), -}))((props) => ); +const enhance = OriginalComponent => compose( + getContext({ + selectors: PropTypes.object + }), + connect((state, props) => ({ + text: props.selectors.textSelector(state, { key: 'next' }), + hasNext: props.selectors.hasNextSelector(state, props), + className: props.selectors.classNamesForComponentSelector(state, 'NextButton'), + style: props.selectors.stylesForComponentSelector(state, 'NextButton'), + })) +)((props) => ); export default enhance; diff --git a/src/components/NoResultsContainer.js b/src/components/NoResultsContainer.js index 2496b0e5..b560516f 100644 --- a/src/components/NoResultsContainer.js +++ b/src/components/NoResultsContainer.js @@ -5,16 +5,17 @@ import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; const NoResultsContainer = OriginalComponent => compose( getContext({ components: PropTypes.object, + selectors: PropTypes.object }), connect( - state => ({ - className: classNamesForComponentSelector(state, 'NoResults'), - style: stylesForComponentSelector(state, 'NoResults'), + (state, props) => ({ + className: props.selectors.classNamesForComponentSelector(state, 'NoResults'), + style: props.selectors.stylesForComponentSelector(state, 'NoResults'), }) ), mapProps((props) => { diff --git a/src/components/PageDropdownContainer.js b/src/components/PageDropdownContainer.js index 88b2bd8c..b1f78284 100644 --- a/src/components/PageDropdownContainer.js +++ b/src/components/PageDropdownContainer.js @@ -4,18 +4,21 @@ import { connect } from '../utils/griddleConnect'; import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { currentPageSelector, maxPageSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { currentPageSelector, maxPageSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; const enhance = OriginalComponent => compose( getContext({ events: PropTypes.object, + selectors: PropTypes.object }), - connect((state, props) => ({ - maxPages: maxPageSelector(state, props), - currentPage: currentPageSelector(state, props), - className: classNamesForComponentSelector(state, 'PageDropdown'), - style: stylesForComponentSelector(state, 'PageDropdown'), - })), + connect( + (state, props) => ({ + maxPages: props.selectors.maxPageSelector(state, props), + currentPage: props.selectors.currentPageSelector(state, props), + className: props.selectors.classNamesForComponentSelector(state, 'PageDropdown'), + style: props.selectors.stylesForComponentSelector(state, 'PageDropdown'), + }) + ), mapProps(({ events: { onGetPage: setPage }, ...props }) => ({ ...props, setPage, diff --git a/src/components/PaginationContainer.js b/src/components/PaginationContainer.js index c82b570f..22e05c7c 100644 --- a/src/components/PaginationContainer.js +++ b/src/components/PaginationContainer.js @@ -5,16 +5,17 @@ import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; const EnhancedPaginationContainer = OriginalComponent => compose( getContext({ components: PropTypes.object, + selectors: PropTypes.object }), connect( (state, props) => ({ - className: classNamesForComponentSelector(state, 'Pagination'), - style: stylesForComponentSelector(state, 'Pagination'), + className: props.selectors.classNamesForComponentSelector(state, 'Pagination'), + style: props.selectors.stylesForComponentSelector(state, 'Pagination'), }) ), mapProps((props) => { diff --git a/src/components/PreviousButtonContainer.js b/src/components/PreviousButtonContainer.js index 628e227c..e959783d 100644 --- a/src/components/PreviousButtonContainer.js +++ b/src/components/PreviousButtonContainer.js @@ -1,12 +1,22 @@ import React from 'react'; +import PropTypes from 'prop-types'; +import compose from 'recompose/compose'; +import getContext from 'recompose/getContext'; import { connect } from '../utils/griddleConnect'; -import { textSelector, hasPreviousSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { textSelector, hasPreviousSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; -const enhance = OriginalComponent => connect((state, props) => ({ - text: textSelector(state, { key: 'previous' }), - hasPrevious: hasPreviousSelector(state, props), - className: classNamesForComponentSelector(state, 'PreviousButton'), - style: stylesForComponentSelector(state, 'PreviousButton'), -}))((props) => ); +const enhance = OriginalComponent => compose( + getContext({ + selectors: PropTypes.object + }), + connect( + (state, props) => ({ + text: props.selectors.textSelector(state, { key: 'previous' }), + hasPrevious: props.selectors.hasPreviousSelector(state, props), + className: props.selectors.classNamesForComponentSelector(state, 'PreviousButton'), + style: props.selectors.stylesForComponentSelector(state, 'PreviousButton'), + }) + ) +)((props) => ); export default enhance; diff --git a/src/components/RowContainer.js b/src/components/RowContainer.js index 5006a78f..d68b5a39 100644 --- a/src/components/RowContainer.js +++ b/src/components/RowContainer.js @@ -5,26 +5,29 @@ import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { - columnIdsSelector, - rowDataSelector, - rowPropertiesSelector, - classNamesForComponentSelector, - stylesForComponentSelector, -} from '../selectors/dataSelectors'; +//import { +// columnIdsSelector, +// rowDataSelector, +// rowPropertiesSelector, +// classNamesForComponentSelector, +// stylesForComponentSelector, +//} from '../selectors/dataSelectors'; import { valueOrResult } from '../utils/valueUtils'; const ComposedRowContainer = OriginalComponent => compose( getContext({ components: PropTypes.object, + selectors: PropTypes.object }), - connect((state, props) => ({ - columnIds: columnIdsSelector(state), - rowProperties: rowPropertiesSelector(state), - rowData: rowDataSelector(state, props), - className: classNamesForComponentSelector(state, 'Row'), - style: stylesForComponentSelector(state, 'Row'), - })), + connect( + (state, props) => ({ + columnIds: props.selectors.columnIdsSelector(state), + rowProperties: props.selectors.rowPropertiesSelector(state), + rowData: props.selectors.rowDataSelector(state, props), + className: props.selectors.classNamesForComponentSelector(state, 'Row'), + style: props.selectors.stylesForComponentSelector(state, 'Row'), + }) + ), mapProps(props => { const { components, rowProperties, className, ...otherProps } = props; return { @@ -35,7 +38,7 @@ const ComposedRowContainer = OriginalComponent => compose( }), )(props => ( )); diff --git a/src/components/SettingsContainer.js b/src/components/SettingsContainer.js index c88801df..2eedc563 100644 --- a/src/components/SettingsContainer.js +++ b/src/components/SettingsContainer.js @@ -5,7 +5,7 @@ import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; function getSettingsComponentsArrayFromObject(settingsObject, settingsComponents) { //TODO: determine if we need to make this faster @@ -20,12 +20,13 @@ function getSettingsComponentsArrayFromObject(settingsObject, settingsComponents const EnhancedSettings = OriginalComponent => compose( getContext({ components: PropTypes.object, + selectors: PropTypes.object, settingsComponentObjects: PropTypes.object }), connect( (state, props) => ({ - className: classNamesForComponentSelector(state, 'Settings'), - style: stylesForComponentSelector(state, 'Settings'), + className: props.selectors.classNamesForComponentSelector(state, 'Settings'), + style: props.selectors.stylesForComponentSelector(state, 'Settings'), }) ), mapProps(props => { diff --git a/src/components/SettingsToggleContainer.js b/src/components/SettingsToggleContainer.js index 16037ed3..8a81ea7e 100644 --- a/src/components/SettingsToggleContainer.js +++ b/src/components/SettingsToggleContainer.js @@ -1,14 +1,19 @@ import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from '../utils/griddleConnect'; import compose from 'recompose/compose'; +import getContext from 'recompose/getContext'; import { textSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; import { toggleSettings as toggleSettingsAction } from '../actions'; const enhancedSettingsToggle = OriginalComponent => compose( + getContext({ + selectors: PropTypes.object + }), connect((state, props) => ({ - text: textSelector(state, { key: 'settingsToggle' }), - className: classNamesForComponentSelector(state, 'SettingsToggle'), - style: stylesForComponentSelector(state, 'SettingsToggle'), + text: props.selectors.textSelector(state, { key: 'settingsToggle' }), + className: props.selectors.classNamesForComponentSelector(state, 'SettingsToggle'), + style: props.selectors.stylesForComponentSelector(state, 'SettingsToggle'), }), { toggleSettings: toggleSettingsAction diff --git a/src/components/SettingsWrapperContainer.js b/src/components/SettingsWrapperContainer.js index 8475ad60..57ee0026 100644 --- a/src/components/SettingsWrapperContainer.js +++ b/src/components/SettingsWrapperContainer.js @@ -10,17 +10,24 @@ import { isSettingsEnabledSelector, isSettingsVisibleSelector, classNamesForComp const EnhancedSettingsWrapper = OriginalComponent => compose( getContext({ components: PropTypes.object, + selectors: PropTypes.object, }), - mapProps(props => ({ - Settings: props.components.Settings, - SettingsToggle: props.components.SettingsToggle - })), - connect((state, props) => ({ - isEnabled: isSettingsEnabledSelector(state), - isVisible: isSettingsVisibleSelector(state), - className: classNamesForComponentSelector(state, 'SettingsWrapper'), - style: stylesForComponentSelector(state, 'SettingsWrapper'), - })) + connect( + (state, props) => ({ + isEnabled: props.selectors.isSettingsEnabledSelector(state), + isVisible: props.selectors.isSettingsVisibleSelector(state), + className: props.selectors.classNamesForComponentSelector(state, 'SettingsWrapper'), + style: props.selectors.stylesForComponentSelector(state, 'SettingsWrapper'), + }) + ), + mapProps(props => { + const { components, ...otherProps } = props; + return { + Settings: components.Settings, + SettingsToggle: components.SettingsToggle, + ...otherProps + } + }) )(props => ( )); diff --git a/src/components/TableBodyContainer.js b/src/components/TableBodyContainer.js index 590aae9b..62e8ea86 100644 --- a/src/components/TableBodyContainer.js +++ b/src/components/TableBodyContainer.js @@ -5,20 +5,22 @@ import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { visibleRowIdsSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { visibleRowIdsSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; const ComposedTableBodyContainer = OriginalComponent => compose( getContext({ components: PropTypes.object, selectors: PropTypes.object, }), - connect((state, props) => ({ - visibleRowIds: visibleRowIdsSelector(state), - className: classNamesForComponentSelector(state, 'TableBody'), - style: stylesForComponentSelector(state, 'TableBody'), - })), + connect( + (state, props) => ({ + visibleRowIds: props.selectors.visibleRowIdsSelector(state), + className: props.selectors.classNamesForComponentSelector(state, 'TableBody'), + style: props.selectors.stylesForComponentSelector(state, 'TableBody'), + }) + ), mapProps(props => { - const { components, ...otherProps } = props; + const { components, selectors, ...otherProps } = props; return { Row: props.components.Row, ...otherProps, @@ -26,10 +28,10 @@ const ComposedTableBodyContainer = OriginalComponent => compose( }), )(({Row, visibleRowIds, style, className}) => ( )); diff --git a/src/components/TableContainer.js b/src/components/TableContainer.js index ac190468..78e8536d 100644 --- a/src/components/TableContainer.js +++ b/src/components/TableContainer.js @@ -8,23 +8,27 @@ import getContext from 'recompose/getContext'; import { classNamesForComponentSelector, stylesForComponentSelector, visibleRowCountSelector } from '../selectors/dataSelectors'; const ComposedContainerComponent = OriginalComponent => compose( - getContext( - { - components: PropTypes.object + getContext({ + components: PropTypes.object, + selectors: PropTypes.object }), - //TODO: Should we use withHandlers here instead? I realize that's not 100% the intent of that method - mapProps(props => ({ - TableHeading: props.components.TableHeading, - TableBody: props.components.TableBody, - NoResults: props.components.NoResults, - })), connect( (state, props) => ({ - visibleRows: visibleRowCountSelector(state), - className: classNamesForComponentSelector(state, 'Table'), - style: stylesForComponentSelector(state, 'Table'), + visibleRows: props.selectors.visibleRowCountSelector(state), + className: props.selectors.classNamesForComponentSelector(state, 'Table'), + style: props.selectors.stylesForComponentSelector(state, 'Table') }) ), + //TODO: Should we use withHandlers here instead? I realize that's not 100% the intent of that method + mapProps(props => { + const { components, ...otherProps } = props; + return { + TableHeading: components.TableHeading, + TableBody: components.TableBody, + NoResults: components.NoResults, + ...otherProps + } + }) )(props => ); export default ComposedContainerComponent; diff --git a/src/components/TableHeadingCellContainer.js b/src/components/TableHeadingCellContainer.js index 02121426..9d5d866f 100644 --- a/src/components/TableHeadingCellContainer.js +++ b/src/components/TableHeadingCellContainer.js @@ -5,7 +5,7 @@ import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { sortPropertyByIdSelector, iconsForComponentSelector, classNamesForComponentSelector, stylesForComponentSelector, customHeadingComponentSelector, cellPropertiesSelector } from '../selectors/dataSelectors'; +//import { sortPropertyByIdSelector, iconsForComponentSelector, classNamesForComponentSelector, stylesForComponentSelector, customHeadingComponentSelector, cellPropertiesSelector } from '../selectors/dataSelectors'; import { getSortIconProps } from '../utils/sortUtils'; import { valueOrResult } from '../utils/valueUtils'; @@ -22,12 +22,12 @@ const EnhancedHeadingCell = OriginalComponent => compose( }), connect( (state, props) => ({ - sortProperty: sortPropertyByIdSelector(state, props), - customHeadingComponent: customHeadingComponentSelector(state, props), - cellProperties: cellPropertiesSelector(state, props), - className: classNamesForComponentSelector(state, 'TableHeadingCell'), - style: stylesForComponentSelector(state, 'TableHeadingCell'), - ...iconsForComponentSelector(state, 'TableHeadingCell'), + sortProperty: props.selectors.sortPropertyByIdSelector(state, props), + customHeadingComponent: props.selectors.customHeadingComponentSelector(state, props), + cellProperties: props.selectors.cellPropertiesSelector(state, props), + className: props.selectors.classNamesForComponentSelector(state, 'TableHeadingCell'), + style: props.selectors.stylesForComponentSelector(state, 'TableHeadingCell'), + ...props.selectors.iconsForComponentSelector(state, 'TableHeadingCell'), }) ), mapProps(props => { diff --git a/src/components/TableHeadingContainer.js b/src/components/TableHeadingContainer.js index a7bf1377..4f204cef 100644 --- a/src/components/TableHeadingContainer.js +++ b/src/components/TableHeadingContainer.js @@ -5,7 +5,7 @@ import compose from 'recompose/compose'; import mapProps from 'recompose/mapProps'; import getContext from 'recompose/getContext'; -import { columnTitlesSelector, columnIdsSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; +//import { columnTitlesSelector, columnIdsSelector, classNamesForComponentSelector, stylesForComponentSelector } from '../selectors/dataSelectors'; const ComposedContainerComponent = OriginalComponent => compose( getContext({ @@ -13,10 +13,10 @@ const ComposedContainerComponent = OriginalComponent => compose( selectors: PropTypes.object, }), connect((state, props) => ({ - columnTitles: columnTitlesSelector(state), - columnIds: columnIdsSelector(state), - className: classNamesForComponentSelector(state, 'TableHeading'), - style: stylesForComponentSelector(state, 'TableHeading'), + columnTitles: props.selectors.columnTitlesSelector(state), + columnIds: props.selectors.columnIdsSelector(state), + className: props.selectors.classNamesForComponentSelector(state, 'TableHeading'), + style: props.selectors.stylesForComponentSelector(state, 'TableHeading'), })), mapProps(props => { const { components, ...otherProps } = props;