Skip to content

Commit 322a2a9

Browse files
Merge pull request #125 from kylekim-oicr/master
IsotopeGrid + VisibilityFilter
2 parents 1701919 + eba2882 commit 322a2a9

4 files changed

Lines changed: 35 additions & 7 deletions

File tree

lib/IsotopeGrid/IsotopeGrid.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ var _isotopeLayout = require('isotope-layout');
3232

3333
var _isotopeLayout2 = _interopRequireDefault(_isotopeLayout);
3434

35+
var _reactRedux = require('react-redux');
36+
3537
var _reactBootstrap = require('react-bootstrap');
3638

3739
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -177,7 +179,7 @@ var IsotopeGrid = function (_React$Component) {
177179
});
178180
var reload = oldElems.length !== newElems.length;
179181
var options = {};
180-
if (this.props.searchTerm.toLowerCase().trim() !== nextProps.searchTerm.toLowerCase().trim() || JSON.stringify(this.props.filterList) !== JSON.stringify(nextProps.filterList)) {
182+
if (this.props.searchTerm.toLowerCase().trim() !== nextProps.searchTerm.toLowerCase().trim() || JSON.stringify(this.props.filterList) !== JSON.stringify(nextProps.filterList) || JSON.stringify(this.props.category) !== JSON.stringify(nextProps.category)) {
181183
var reg = nextProps.wholeWord ? RegExp('\\b' + nextProps.searchTerm.toLowerCase().trim() + '\\b', 'i') : RegExp('' + nextProps.searchTerm.toLowerCase().trim(), 'i');
182184
options.filter = function (itemElem) {
183185
var _this3 = this;
@@ -312,7 +314,8 @@ IsotopeGrid.propTypes = {
312314
sortOrder: _propTypes2.default.string,
313315
searchTerm: _propTypes2.default.string,
314316
wholeWord: _propTypes2.default.bool,
315-
filterList: _propTypes2.default.arrayOf(_propTypes2.default.func)
317+
filterList: _propTypes2.default.arrayOf(_propTypes2.default.func),
318+
category: _propTypes2.default.object
316319
};
317320

318321
IsotopeGrid.defaultProps = {
@@ -324,4 +327,8 @@ IsotopeGrid.defaultProps = {
324327

325328
IsotopeGrid.Item = IsotopeItem;
326329

327-
exports.default = IsotopeGrid;
330+
exports.default = (0, _reactRedux.connect)(function (state) {
331+
return {
332+
category: state.visibilityFilter && state.visibilityFilter.category
333+
};
334+
})(IsotopeGrid);

src/IsotopeGrid/IsotopeGrid.jsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import shallowCompare from 'react-addons-shallow-compare';
44
import PropTypes from 'prop-types';
55
import classNames from 'classnames';
66
import Isotope from 'isotope-layout';
7+
import { connect } from 'react-redux';
78
import { Row, Col } from 'react-bootstrap';
89

910
const columnProps = PropTypes.oneOfType([
@@ -126,7 +127,8 @@ class IsotopeGrid extends React.Component {
126127
if (
127128
this.props.searchTerm.toLowerCase().trim() !==
128129
nextProps.searchTerm.toLowerCase().trim() ||
129-
JSON.stringify(this.props.filterList) !== JSON.stringify(nextProps.filterList)
130+
JSON.stringify(this.props.filterList) !== JSON.stringify(nextProps.filterList) ||
131+
JSON.stringify(this.props.category) !== JSON.stringify(nextProps.category)
130132
) {
131133
const reg = nextProps.wholeWord
132134
? RegExp(`\\b${nextProps.searchTerm.toLowerCase().trim()}\\b`, 'i')
@@ -252,6 +254,7 @@ IsotopeGrid.propTypes = {
252254
searchTerm: PropTypes.string,
253255
wholeWord: PropTypes.bool,
254256
filterList: PropTypes.arrayOf(PropTypes.func),
257+
category: PropTypes.object,
255258
};
256259

257260
IsotopeGrid.defaultProps = {
@@ -263,4 +266,6 @@ IsotopeGrid.defaultProps = {
263266

264267
IsotopeGrid.Item = IsotopeItem;
265268

266-
export default IsotopeGrid;
269+
export default connect(state => ({
270+
category: state.visibilityFilter && state.visibilityFilter.category,
271+
}))(IsotopeGrid);

stories/IsotopeGrid/StoryBasicExample.src

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,9 @@ class IsotopeGridContainer extends React.Component {
6262
}
6363
}
6464

65-
return <IsotopeGridContainer />;
65+
const example = (
66+
<Provider store={store}>
67+
<IsotopeGridContainer />
68+
</Provider>
69+
);
70+
return example;

stories/IsotopeGrid/index.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
11
import React from 'react';
22
import { Button, ButtonGroup } from 'react-bootstrap';
3+
import thunk from 'redux-thunk';
34
import { storiesOf } from '@kadira/storybook';
45
import IsotopeGrid from '../../src/IsotopeGrid/IsotopeGrid';
56
import StoryBasicExample from 'raw!./StoryBasicExample.src';
7+
import { Provider } from 'react-redux';
8+
import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
9+
import { visibilityFilterReducer } from '../../src/util/visibilityFilter';
610

11+
const store = createStore(
12+
combineReducers({
13+
visibilityFilter: visibilityFilterReducer,
14+
}),
15+
{},
16+
compose(applyMiddleware(thunk), window.devToolsExtension ? window.devToolsExtension() : f => f),
17+
);
718
storiesOf('IsotopeGrid', module).addWithInfo('Basic Example', () => StoryBasicExample, {
8-
scope: { IsotopeGrid, Button, ButtonGroup },
19+
scope: { Provider, store, IsotopeGrid, Button, ButtonGroup },
920
});

0 commit comments

Comments
 (0)