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;