@bento-core/facet-filter 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,10 +75,11 @@ const FacetFilterController = props => {
75
75
  } = _ref,
76
76
  item = _objectWithoutProperties(_ref, _excluded);
77
77
  if (!sideBar[section]) {
78
+ var _facetSectionConfig$s;
78
79
  sideBar[section] = {
79
80
  name: section,
80
81
  sectionName: section,
81
- expandSection: facetSectionConfig[section].isExpanded,
82
+ expandSection: ((_facetSectionConfig$s = facetSectionConfig[section]) === null || _facetSectionConfig$s === void 0 ? void 0 : _facetSectionConfig$s.isExpanded) || true,
82
83
  items: []
83
84
  };
84
85
  }
@@ -90,8 +90,11 @@ const CheckBoxView = _ref => {
90
90
  root: classes.checkboxRoot
91
91
  }
92
92
  }), tooltip ? /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
93
+ id: datafield,
93
94
  title: tooltip
94
- }, /*#__PURE__*/_react.default.createElement(LabelComponent, null)) : /*#__PURE__*/_react.default.createElement(LabelComponent, null), /*#__PURE__*/_react.default.createElement(_core.ListItemText, null), /*#__PURE__*/_react.default.createElement(_core.Typography, {
95
+ }, /*#__PURE__*/_react.default.createElement("div", {
96
+ className: datafield
97
+ }, /*#__PURE__*/_react.default.createElement(LabelComponent, null))) : /*#__PURE__*/_react.default.createElement(LabelComponent, null), /*#__PURE__*/_react.default.createElement(_core.ListItemText, null), /*#__PURE__*/_react.default.createElement(_core.Typography, {
95
98
  className: (0, _clsx.default)("".concat(checkedSection, "Subjects"), {
96
99
  ["".concat(checkedSection, "SubjectUnChecked")]: !isChecked,
97
100
  ["".concat(checkedSection, "SubjectChecked")]: isChecked
@@ -33,6 +33,12 @@ const SliderView = _ref => {
33
33
  } = facet;
34
34
  const lowerBoundValue = facetValues[0];
35
35
  const upperBoundValue = facetValues[1];
36
+
37
+ // Determines whether the lower bound and upper bound values are valid
38
+ const isValid = () => {
39
+ const checks = [lowerBoundValue <= upperBoundValue, lowerBoundValue >= minLowerBound, upperBoundValue <= maxUpperBound];
40
+ return checks.every(condition => condition === true);
41
+ };
36
42
  const handleChangeCommittedSlider = value => {
37
43
  if (!value.includes('')) {
38
44
  onSliderToggle(_objectSpread({
@@ -93,8 +99,8 @@ const SliderView = _ref => {
93
99
  max: maxUpperBound,
94
100
  classes: {
95
101
  rail: classes.rail,
96
- thumb: lowerBoundValue <= upperBoundValue ? classes.thumb : classes.invalidThumb,
97
- track: lowerBoundValue <= upperBoundValue ? classes.track : classes.invalidTrack
102
+ thumb: isValid() ? classes.thumb : classes.invalidThumb,
103
+ track: isValid() ? classes.track : classes.invalidTrack
98
104
  }
99
105
  })), /*#__PURE__*/_react.default.createElement(_core.Box, {
100
106
  className: classes.lowerUpperBound
@@ -103,7 +109,7 @@ const SliderView = _ref => {
103
109
  }, minLowerBound), /*#__PURE__*/_react.default.createElement(_core.Typography, {
104
110
  className: classes.upperBound
105
111
  }, maxUpperBound))), (sliderValue[0] > minLowerBound || sliderValue[1] < maxUpperBound) && /*#__PURE__*/_react.default.createElement(_core.Typography, {
106
- className: lowerBoundValue <= upperBoundValue ? classes.sliderText : classes.invalidSliderText
112
+ className: isValid() ? classes.sliderText : classes.invalidSliderText
107
113
  }, sliderValue[0], ' - ', sliderValue[1], "\xA0", quantifier));
108
114
  };
109
115
  var _default = (0, _core.withStyles)(_SliderStyle.default)(SliderView);
@@ -9,18 +9,9 @@ var _reactRedux = require("react-redux");
9
9
  var _Actions = require("../../store/actions/Actions");
10
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
11
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
- /* eslint-disable block-scoped-var */
13
- /* eslint-disable no-plusplus */
14
- /* eslint-disable no-unused-vars */
15
- /* eslint-disable no-shadow */
16
- /* eslint-disable no-var */
17
- /* eslint-disable vars-on-top */
18
- /* eslint-disable block-spacing */
19
- /* eslint-disable no-param-reassign */
20
-
21
12
  const ClearAllFiltersBtn = _ref => {
22
13
  let {
23
- CustomClearAllBtn,
14
+ Component,
24
15
  onClearAllFilters,
25
16
  activeFilters = {}
26
17
  } = _ref;
@@ -29,30 +20,28 @@ const ClearAllFiltersBtn = _ref => {
29
20
  (0, _react.useEffect)(() => {
30
21
  if (activeFilters) {
31
22
  const filters = Object.keys(activeFilters).reduce((count, key) => {
23
+ // eslint-disable-next-line no-param-reassign
32
24
  if (activeFilters[key].length > 0) {
33
25
  count += 1;
34
26
  }
35
27
  return count;
36
28
  }, 0);
37
- if (!disable && filters === 0) {
29
+ if (filters === 0) {
38
30
  setDisable(true);
39
31
  } else {
40
32
  setDisable(false);
41
33
  }
42
34
  }
43
35
  }, [activeFilters]);
44
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(CustomClearAllBtn, {
36
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Component, {
45
37
  onClearAllFilters: dispatchClearAllFilters,
46
38
  disable: disable
47
39
  }));
48
40
  };
49
- const mapStateToProps = state => ({
50
- filterState: state.statusReducer.filterState
51
- });
52
41
  const mapDispatchToProps = dispatch => ({
53
42
  onClearAllFilters: () => {
54
43
  dispatch((0, _Actions.clearAllFilters)());
55
44
  }
56
45
  });
57
- var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(ClearAllFiltersBtn);
46
+ var _default = (0, _reactRedux.connect)(null, mapDispatchToProps)(ClearAllFiltersBtn);
58
47
  exports.default = _default;
@@ -3,10 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.generateFacetSectionView = exports.generateClearAllFilterBtn = void 0;
6
+ exports.generateFacetSectionView = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _FacetSectionView = _interopRequireDefault(require("../components/section/FacetSectionView"));
9
- var _ReduxClearAllBtn = _interopRequireDefault(require("../components/reset/ReduxClearAllBtn"));
10
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
10
  /* eslint-disable no-multiple-empty-lines */
12
11
  /* eslint-disable no-trailing-spaces */
@@ -19,18 +18,6 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
18
  /* eslint-disable no-multiple-empty-lines */
20
19
  /* eslint-disable semi */
21
20
 
22
- /**
23
- * accepts button as component
24
- * @param {*} CustomBtn
25
- *
26
- */
27
- const generateClearAllFilterBtn = (CustomBtn, activeFilters) => {
28
- return /*#__PURE__*/_react.default.createElement(_ReduxClearAllBtn.default, {
29
- activeFilters: activeFilters,
30
- CustomClearAllBtn: props => /*#__PURE__*/_react.default.createElement(CustomBtn, props)
31
- });
32
- };
33
- exports.generateClearAllFilterBtn = generateClearAllFilterBtn;
34
21
  const generateFacetSectionView = props => {
35
22
  return /*#__PURE__*/_react.default.createElement(_FacetSectionView.default, props);
36
23
  };
package/dist/index.js CHANGED
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "ClearAllFiltersBtn", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ReduxClearAllBtn.default;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "FacetFilter", {
7
13
  enumerable: true,
8
14
  get: function get() {
@@ -39,12 +45,6 @@ Object.defineProperty(exports, "clearSliderSection", {
39
45
  return _Actions.clearSliderSection;
40
46
  }
41
47
  });
42
- Object.defineProperty(exports, "generateClearAllFilterBtn", {
43
- enumerable: true,
44
- get: function get() {
45
- return _component.generateClearAllFilterBtn;
46
- }
47
- });
48
48
  Object.defineProperty(exports, "generateFacetSectionView", {
49
49
  enumerable: true,
50
50
  get: function get() {
@@ -130,4 +130,5 @@ var _Types = require("./components/inputs/Types");
130
130
  var _SideBarReducer = require("./store/reducers/SideBarReducer");
131
131
  var _Actions = require("./store/actions/Actions");
132
132
  var _component = require("./generator/component");
133
+ var _ReduxClearAllBtn = _interopRequireDefault(require("./components/reset/ReduxClearAllBtn"));
133
134
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/package.json CHANGED
@@ -1,25 +1,29 @@
1
1
  {
2
2
  "name": "@bento-core/facet-filter",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
- "build": "rm -rf dist && NODE_ENV=production BABEL_ENV=es babel src --out-dir dist --copy-files",
8
- "test": "echo \"Error: no test specified\" && exit 1"
7
+ "build": "npm run lint && rm -rf dist && NODE_ENV=production BABEL_ENV=es babel src --out-dir dist --copy-files",
8
+ "test": "echo \"Error: no test specified\" && exit 1",
9
+ "lint": "eslint src"
9
10
  },
10
11
  "repository": "https://github.com/CBIIT/bento-frontend",
11
12
  "publishConfig": {
12
13
  "access": "public"
13
14
  },
14
15
  "dependencies": {
15
- "@material-ui/core": "^4.12.4"
16
+ "lodash": "^4.17.20"
16
17
  },
17
18
  "peerDependencies": {
19
+ "@material-ui/core": "^4.12.4",
20
+ "@material-ui/icons": "^4.9.1",
21
+ "clsx": "^1.2.1",
18
22
  "react": "^17.0.2",
19
23
  "react-dom": "^17.0.0",
20
24
  "react-redux": "^7.2.1"
21
25
  },
22
26
  "author": "CTOS Bento Team",
23
27
  "license": "ISC",
24
- "gitHead": "10ee9deeae6dd0f139ecb7a70afc4c96a4e33d74"
28
+ "gitHead": "9b75062e5092b403db02b167870ea4331361c26f"
25
29
  }
@@ -68,7 +68,7 @@ const FacetFilterController = (props) => {
68
68
  sideBar[section] = {
69
69
  name: section,
70
70
  sectionName: section,
71
- expandSection: facetSectionConfig[section].isExpanded,
71
+ expandSection: facetSectionConfig[section]?.isExpanded || true,
72
72
  items: [],
73
73
  };
74
74
  }
@@ -1,6 +1,3 @@
1
- /* eslint-disable react/jsx-wrap-multilines */
2
- /* eslint-disable react/jsx-indent */
3
- /* eslint-disable react/jsx-closing-tag-location */
4
1
  import React, { useEffect, useState } from 'react';
5
2
  import {
6
3
  Accordion,
@@ -96,13 +93,15 @@ const FacetView = ({
96
93
  )}
97
94
  {
98
95
  (facet.type === InputTypes.SLIDER || facetValues.length === 0)
99
- && (<div className={classes.NonSortGroup}>
100
- <span
101
- className={classes.NonSortGroupItem}
102
- >
103
- No data for this field
104
- </span>
105
- </div>)
96
+ && (
97
+ <div className={classes.NonSortGroup}>
98
+ <span
99
+ className={classes.NonSortGroupItem}
100
+ >
101
+ No data for this field
102
+ </span>
103
+ </div>
104
+ )
106
105
  }
107
106
  {
108
107
  (facet.type === InputTypes.SLIDER || facetValues.length > 0)
@@ -121,35 +120,38 @@ const FacetView = ({
121
120
  />
122
121
  </Icon>
123
122
  </span>
124
- { (facet.type === InputTypes.CHECKBOX && facetValues.length > 0)
125
- && (<>
126
- <span
127
- className={
123
+ { (facet.type === InputTypes.CHECKBOX && facetValues.length > 0)
124
+ && (
125
+ <>
126
+ <span
127
+ className={
128
128
  clsx(classes.sortGroupItem, {
129
129
  [classes.highlight]: sortBy === sortType.ALPHABET,
130
130
  })
131
131
  }
132
- onClick={() => {
133
- onSortFacet(sortType.ALPHABET);
134
- }}
135
- >
136
- Sort alphabetically
137
- </span>
138
- <span
139
- className={
132
+ onClick={() => {
133
+ onSortFacet(sortType.ALPHABET);
134
+ }}
135
+ >
136
+ Sort alphabetically
137
+ </span>
138
+ <span
139
+ className={
140
140
  clsx(classes.sortGroupItemCounts, {
141
141
  [classes.highlight]: sortBy === sortType.NUMERIC,
142
142
  })
143
143
  }
144
- onClick={() => {
145
- onSortFacet(sortType.NUMERIC);
146
- }}
147
- >
148
- Sort by count
149
- </span>
150
- </>)}
144
+ onClick={() => {
145
+ onSortFacet(sortType.NUMERIC);
146
+ }}
147
+ >
148
+ Sort by count
149
+ </span>
150
+ </>
151
+ )}
151
152
  </div>
152
- )}
153
+ )
154
+ }
153
155
  <FilterItems
154
156
  facet={facet}
155
157
  sortBy={sortBy}
@@ -94,8 +94,10 @@ const CheckBoxView = ({
94
94
  classes={{ root: classes.checkboxRoot }}
95
95
  />
96
96
  { tooltip ? (
97
- <Tooltip title={tooltip}>
98
- <LabelComponent />
97
+ <Tooltip id={datafield} title={tooltip}>
98
+ <div className={datafield}>
99
+ <LabelComponent />
100
+ </div>
99
101
  </Tooltip>
100
102
  ) : (
101
103
  <LabelComponent />
@@ -18,6 +18,16 @@ const SliderView = ({
18
18
  const lowerBoundValue = facetValues[0];
19
19
  const upperBoundValue = facetValues[1];
20
20
 
21
+ // Determines whether the lower bound and upper bound values are valid
22
+ const isValid = () => {
23
+ const checks = [
24
+ lowerBoundValue <= upperBoundValue,
25
+ lowerBoundValue >= minLowerBound,
26
+ upperBoundValue <= maxUpperBound,
27
+ ];
28
+
29
+ return checks.every((condition) => condition === true);
30
+ };
21
31
  const handleChangeCommittedSlider = (value) => {
22
32
  if (!value.includes('')) {
23
33
  onSliderToggle({ sliderValue: value, ...facet });
@@ -84,8 +94,8 @@ const SliderView = ({
84
94
  max={maxUpperBound}
85
95
  classes={{
86
96
  rail: classes.rail,
87
- thumb: lowerBoundValue <= upperBoundValue ? classes.thumb : classes.invalidThumb,
88
- track: lowerBoundValue <= upperBoundValue ? classes.track : classes.invalidTrack,
97
+ thumb: isValid() ? classes.thumb : classes.invalidThumb,
98
+ track: isValid() ? classes.track : classes.invalidTrack,
89
99
  }}
90
100
  />
91
101
  </div>
@@ -103,7 +113,7 @@ const SliderView = ({
103
113
  (sliderValue[0] > minLowerBound || sliderValue[1] < maxUpperBound)
104
114
  && (
105
115
  <Typography
106
- className={lowerBoundValue <= upperBoundValue
116
+ className={isValid()
107
117
  ? classes.sliderText
108
118
  : classes.invalidSliderText}
109
119
  >
@@ -1,17 +1,9 @@
1
- /* eslint-disable block-scoped-var */
2
- /* eslint-disable no-plusplus */
3
- /* eslint-disable no-unused-vars */
4
- /* eslint-disable no-shadow */
5
- /* eslint-disable no-var */
6
- /* eslint-disable vars-on-top */
7
- /* eslint-disable block-spacing */
8
- /* eslint-disable no-param-reassign */
9
1
  import React, { useEffect, useState } from 'react';
10
2
  import { connect } from 'react-redux';
11
3
  import { clearAllFilters } from '../../store/actions/Actions';
12
4
 
13
5
  const ClearAllFiltersBtn = ({
14
- CustomClearAllBtn,
6
+ Component,
15
7
  onClearAllFilters,
16
8
  activeFilters = {},
17
9
  }) => {
@@ -21,10 +13,11 @@ const ClearAllFiltersBtn = ({
21
13
  useEffect(() => {
22
14
  if (activeFilters) {
23
15
  const filters = Object.keys(activeFilters).reduce((count, key) => {
24
- if (activeFilters[key].length > 0) { count += 1;}
16
+ // eslint-disable-next-line no-param-reassign
17
+ if (activeFilters[key].length > 0) { count += 1; }
25
18
  return count;
26
19
  }, 0);
27
- if (!disable && filters === 0) {
20
+ if (filters === 0) {
28
21
  setDisable(true);
29
22
  } else {
30
23
  setDisable(false);
@@ -34,7 +27,7 @@ const ClearAllFiltersBtn = ({
34
27
 
35
28
  return (
36
29
  <>
37
- <CustomClearAllBtn
30
+ <Component
38
31
  onClearAllFilters={dispatchClearAllFilters}
39
32
  disable={disable}
40
33
  />
@@ -42,12 +35,8 @@ const ClearAllFiltersBtn = ({
42
35
  );
43
36
  };
44
37
 
45
- const mapStateToProps = (state) => ({
46
- filterState: state.statusReducer.filterState,
47
- });
48
-
49
38
  const mapDispatchToProps = (dispatch) => ({
50
- onClearAllFilters: () => {dispatch(clearAllFilters());},
39
+ onClearAllFilters: () => { dispatch(clearAllFilters()); },
51
40
  });
52
41
 
53
- export default connect(mapStateToProps, mapDispatchToProps)(ClearAllFiltersBtn);
42
+ export default connect(null, mapDispatchToProps)(ClearAllFiltersBtn);
@@ -11,19 +11,6 @@
11
11
 
12
12
  import React from 'react';
13
13
  import FacetSectionView from '../components/section/FacetSectionView';
14
- import ClearAllFiltersBtn from '../components/reset/ReduxClearAllBtn';
15
-
16
- /**
17
- * accepts button as component
18
- * @param {*} CustomBtn
19
- *
20
- */
21
- export const generateClearAllFilterBtn = (CustomBtn, activeFilters) => {
22
- return ( <ClearAllFiltersBtn
23
- activeFilters={activeFilters}
24
- CustomClearAllBtn={(props) => (<CustomBtn {...props} />)}
25
- />);
26
- };
27
14
 
28
15
  export const generateFacetSectionView = (props) => {
29
16
  return (
package/src/index.js CHANGED
@@ -24,7 +24,8 @@ export {
24
24
  clearAllAndSelectFacet,
25
25
  } from './store/actions/Actions';
26
26
  export {
27
- generateClearAllFilterBtn,
28
27
  generateFacetSectionView,
29
28
  } from './generator/component';
30
-
29
+ export {
30
+ default as ClearAllFiltersBtn,
31
+ } from './components/reset/ReduxClearAllBtn';