@sis-cc/dotstatsuite-visions 7.20.3 → 7.20.5

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.
@@ -26,6 +26,8 @@ var _PlaylistAddCheck2 = _interopRequireDefault(_PlaylistAddCheck);
26
26
 
27
27
  var _ = require('../');
28
28
 
29
+ var _withExpansionTree = require('../VirtualizedTree/withExpansionTree');
30
+
29
31
  var _styles = require('../ScopeList/styles');
30
32
 
31
33
  var _core = require('@material-ui/core');
@@ -62,12 +64,19 @@ var HierarchicalFilter = function HierarchicalFilter(props) {
62
64
  label = props.label,
63
65
  labels = props.labels,
64
66
  tagAccessor = props.tagAccessor,
65
- displayAccessor = props.displayAccessor;
67
+ displayAccessor = props.displayAccessor,
68
+ expandedIds = props.expandedIds,
69
+ defaultSpotlight = props.defaultSpotlight;
66
70
 
67
71
  var _useState = (0, _react.useState)({ term: '' }),
68
72
  term = _useState[0].term,
69
73
  setSpotlight = _useState[1];
70
74
 
75
+ (0, _react.useEffect)(function () {
76
+ if (!R.isNil(defaultSpotlight) && !R.isEmpty(defaultSpotlight)) {
77
+ setSpotlight(defaultSpotlight);
78
+ }
79
+ }, [defaultSpotlight]);
71
80
  var classes = (0, _styles.useStyles)({ accessibility: accessibility });
72
81
  var theme = (0, _core.useTheme)();
73
82
  var isRtl = (0, _utils.getIsRtl)(theme);
@@ -94,6 +103,11 @@ var HierarchicalFilter = function HierarchicalFilter(props) {
94
103
  var onSelect = function onSelect(values) {
95
104
  changeSelection(id, values);
96
105
  };
106
+
107
+ var onAdvancedToggle = function onAdvancedToggle() {
108
+ toggleBulk({ expandedIds: expandedIds, spotlight: { term: term } });
109
+ };
110
+
97
111
  return _react2.default.createElement(
98
112
  _.ExpansionPanel,
99
113
  _extends({
@@ -124,7 +138,7 @@ var HierarchicalFilter = function HierarchicalFilter(props) {
124
138
  {
125
139
  'aria-label': R.prop('advancedSelection')(labels),
126
140
  classes: { root: classes.bulkSelectionIcon },
127
- onClick: toggleBulk
141
+ onClick: onAdvancedToggle
128
142
  },
129
143
  _react2.default.createElement(_PlaylistAddCheck2.default, { color: 'primary' })
130
144
  )
@@ -162,8 +176,10 @@ HierarchicalFilter.propTypes = process.env.NODE_ENV !== "production" ? {
162
176
  testId: _propTypes2.default.string,
163
177
  expansionPanelProps: _propTypes2.default.object,
164
178
  toggleBulk: _propTypes2.default.func,
165
- tagAccessor: _propTypes2.default.func
179
+ tagAccessor: _propTypes2.default.func,
180
+ expandedIds: _propTypes2.default.object,
181
+ defaultSpotlight: _propTypes2.default.object
166
182
  } : {};
167
183
 
168
- exports.default = HierarchicalFilter;
184
+ exports.default = (0, _withExpansionTree.withExpansionTree)(HierarchicalFilter);
169
185
  module.exports = exports['default'];
@@ -84,7 +84,7 @@ var Flags = function Flags(_ref) {
84
84
  }, []), R.join(','))(flags);
85
85
  var content = _react2.default.createElement(
86
86
  'ul',
87
- { className: classes.content },
87
+ { 'data-testid': 'cell-flags-footnotes-content', className: classes.content },
88
88
  R.addIndex(R.map)(function (_ref2, index) {
89
89
  var label = _ref2.label;
90
90
  return _react2.default.createElement(
@@ -105,7 +105,10 @@ var Flags = function Flags(_ref) {
105
105
  },
106
106
  _react2.default.createElement(
107
107
  'span',
108
- { className: (0, _classnames2.default)(classes.flags, (_cx = {}, _cx[classes.header] = isHeader, _cx)) },
108
+ {
109
+ 'data-testid': 'cell-flags-footnotes-icon',
110
+ className: (0, _classnames2.default)(classes.flags, (_cx = {}, _cx[classes.header] = isHeader, _cx))
111
+ },
109
112
  R.not(R.isEmpty(codedIcons)) && codedIcons,
110
113
  R.and(R.not(R.isEmpty(codedIcons)), hasUncoded) && _react2.default.createElement(
111
114
  _react2.default.Fragment,
@@ -146,6 +146,13 @@ var Header = function Header(_ref) {
146
146
  _react2.default.createElement(
147
147
  'div',
148
148
  { className: classes.cellContentCenter },
149
+ !R.isEmpty(hierarchySpace) && mapIndexed(function (space, idx) {
150
+ return _react2.default.createElement(
151
+ 'div',
152
+ { key: idx },
153
+ space
154
+ );
155
+ })(hierarchySpace),
149
156
  _react2.default.createElement(
150
157
  _Typography2.default,
151
158
  {
@@ -156,13 +163,6 @@ var Header = function Header(_ref) {
156
163
  },
157
164
  variant: 'body1'
158
165
  },
159
- !R.isEmpty(hierarchySpace) && mapIndexed(function (space, idx) {
160
- return _react2.default.createElement(
161
- 'div',
162
- { key: idx },
163
- space
164
- );
165
- })(hierarchySpace),
166
166
  R.prop('label', headerItem),
167
167
  _react2.default.createElement(_flags2.default, { HTMLRenderer: HTMLRenderer, flags: flags, isHeader: true })
168
168
  )
@@ -117,7 +117,7 @@ var SectionHeader = function SectionHeader(_ref) {
117
117
  },
118
118
  _react2.default.createElement(
119
119
  _Grid2.default,
120
- { container: true, alignItems: 'center', spacing: 5 },
120
+ { container: true, alignItems: 'center' },
121
121
  _react2.default.createElement(
122
122
  _Grid2.default,
123
123
  { item: true },
@@ -164,7 +164,7 @@ var SectionHeader = function SectionHeader(_ref) {
164
164
  ),
165
165
  !R.isNil(SideIcon) && _react2.default.createElement(
166
166
  _Grid2.default,
167
- { item: true },
167
+ { item: true, style: { marginLeft: 40 } },
168
168
  _react2.default.createElement(SideIcon, { sideProps: R.path([0, 'sideProps'], section) })
169
169
  )
170
170
  )
@@ -125,6 +125,7 @@ var Item = function Item(_ref) {
125
125
  secondaryTypographyProps: { color: 'inherit' },
126
126
  classes: { root: classes.listItem },
127
127
  className: (0, _classnames2.default)((_cx = {}, _cx[classes.accessibilityItemHover] = accessibility, _cx[classes.listItemSelected] = R.and(isSelected, R.not(isDisabled)), _cx[classes.listItemHover] = R.not(isDisabled), _cx[classes.disabledLabel] = isDisabled, _cx)),
128
+ onClick: isDisabled ? null : callbacks.onClick,
128
129
  onMouseDown: isDisabled || isTooltipShown ? null : callbacks.onMouseDown,
129
130
  onMouseUp: isDisabled || isTooltipShown ? null : callbacks.onMouseUp,
130
131
  onMouseEnter: isDisabled || isTooltipShown ? null : callbacks.onMouseEnter
@@ -159,6 +160,7 @@ var Item = function Item(_ref) {
159
160
  return e.stopPropagation();
160
161
  } }),
161
162
  enterDelay: 400,
163
+ enterNextDelay: 400,
162
164
  tabIndex: 0,
163
165
  'aria-label': description,
164
166
  'aria-hidden': false,
@@ -25,10 +25,6 @@ var _List = require('react-virtualized/dist/commonjs/List');
25
25
 
26
26
  var _List2 = _interopRequireDefault(_List);
27
27
 
28
- var _Button = require('@material-ui/core/Button');
29
-
30
- var _Button2 = _interopRequireDefault(_Button);
31
-
32
28
  var _ExpandMore = require('@material-ui/icons/ExpandMore');
33
29
 
34
30
  var _ExpandMore2 = _interopRequireDefault(_ExpandMore);
@@ -103,7 +99,9 @@ var VirtualizedTree = function VirtualizedTree(props) {
103
99
  items = props.items,
104
100
  labelRenderer = props.labelRenderer,
105
101
  labels = props.labels,
106
- withExpandControl = props.withExpandControl,
102
+ expandedIds = props.expandedIds,
103
+ expand = props.expand,
104
+ collapse = props.collapse,
107
105
  _props$maxTreeHeight = props.maxTreeHeight,
108
106
  maxTreeHeight = _props$maxTreeHeight === undefined ? 250 : _props$maxTreeHeight,
109
107
  _props$getItemScope = props.getItemScope,
@@ -111,25 +109,21 @@ var VirtualizedTree = function VirtualizedTree(props) {
111
109
 
112
110
  var theme = (0, _core.useTheme)();
113
111
 
114
- var _useState = (0, _react.useState)({}),
115
- expandedIds = _useState[0],
116
- setExpandedIds = _useState[1];
112
+ var _useState = (0, _react.useState)(undefined),
113
+ scrollTop = _useState[0],
114
+ setScrollTop = _useState[1];
117
115
 
118
- var _useState2 = (0, _react.useState)(undefined),
119
- scrollTop = _useState2[0],
120
- setScrollTop = _useState2[1];
116
+ var _useState2 = (0, _react.useState)([]),
117
+ shiftIndexes = _useState2[0],
118
+ setShiftIndexes = _useState2[1];
121
119
 
122
- var _useState3 = (0, _react.useState)([]),
123
- shiftIndexes = _useState3[0],
124
- setShiftIndexes = _useState3[1];
120
+ var _useState3 = (0, _react.useState)({}),
121
+ selectIds = _useState3[0],
122
+ setSelectIds = _useState3[1];
125
123
 
126
- var _useState4 = (0, _react.useState)({}),
127
- selectIds = _useState4[0],
128
- setSelectIds = _useState4[1];
129
-
130
- var _useState5 = (0, _react.useState)(false),
131
- isMouseDown = _useState5[0],
132
- setIsMouseDown = _useState5[1];
124
+ var _useState4 = (0, _react.useState)(false),
125
+ isMouseDown = _useState4[0],
126
+ setIsMouseDown = _useState4[1];
133
127
 
134
128
  var _useMemo = (0, _react.useMemo)(function () {
135
129
  var indexedItemsById = R.indexBy(getHierarchicalId, items);
@@ -197,21 +191,26 @@ var VirtualizedTree = function VirtualizedTree(props) {
197
191
  apply();
198
192
  } : null,
199
193
  onMouseDown: function onMouseDown(e) {
200
- if (e.ctrlKey) {
201
- multiSelect(id);
202
- } else if (e.shiftKey) {
203
- shiftSelect(index);
204
- } else {
205
- multiSelect(id);
206
- setIsMouseDown(true);
194
+ if (e.ctrlKey || e.shiftKey) {
195
+ return;
207
196
  }
197
+ multiSelect(id);
198
+ setIsMouseDown(true);
208
199
  },
209
200
  onMouseEnter: isMouseDown ? function (e) {
210
201
  if (e.ctrlKey || e.shiftKey) {
211
202
  return;
212
203
  }
213
204
  multiSelect(id);
214
- } : null
205
+ } : null,
206
+ onClick: function onClick(e) {
207
+ e.preventDefault();
208
+ if (e.ctrlKey) {
209
+ multiSelect(id);
210
+ } else if (e.shiftKey) {
211
+ shiftSelect(index);
212
+ }
213
+ }
215
214
  };
216
215
  };
217
216
  var onKeyUp = function onKeyUp(e) {
@@ -263,99 +262,68 @@ var VirtualizedTree = function VirtualizedTree(props) {
263
262
  }, [scrollTop]);
264
263
  var maxHeight = R.pipe(R.length, R.multiply(_styles.height), R.ifElse(R.gt(maxTreeHeight), R.add(10), R.always(maxTreeHeight)))(list);
265
264
 
266
- var expand = function expand(index) {
267
- var parentId = R.nth(index, list);
268
- setExpandedIds(R.assoc(parentId, parentId, expandedIds));
269
- };
270
-
271
- var collapse = function collapse(index) {
272
- var parentId = R.nth(index, list);
273
- setExpandedIds(R.dissoc(parentId, expandedIds));
274
- };
275
-
276
- var expandAll = function expandAll() {
277
- setExpandedIds(indexedItemsById);
278
- };
279
-
280
- var collapseAll = function collapseAll() {
281
- setExpandedIds({});
282
- };
283
-
284
265
  if (R.isEmpty(list)) {
285
266
  return null;
286
267
  }
287
268
  var isRtl = (0, _utils.getIsRtl)(theme);
288
-
289
269
  return _react2.default.createElement(
290
- _react.Fragment,
291
- null,
270
+ _List4.default,
271
+ {
272
+ disablePadding: true,
273
+ style: { height: maxHeight + 2 },
274
+ onKeyUp: onKeyUp,
275
+ onMouseLeave: isMouseDown ? apply : null,
276
+ ref: ref
277
+ },
292
278
  _react2.default.createElement(
293
- _List4.default,
294
- { disablePadding: true, style: { height: maxHeight + 2 }, onKeyUp: onKeyUp, ref: ref },
295
- _react2.default.createElement(
296
- _AutoSizer2.default,
297
- null,
298
- function (_ref) {
299
- var height = _ref.height,
300
- width = _ref.width;
301
- return _react2.default.createElement(_List2.default, {
302
- overscan: 10,
303
- tabIndex: -1,
304
- height: height + 2,
305
- width: width,
306
- scrollTop: scrollTop // control scroll position with ctrl or shift key
307
- , rowCount: R.length(list),
308
- rowHeight: R.add(1)(_styles.height) // 1 is space between elements
309
- , rowRenderer: function rowRenderer(_ref2) {
310
- var index = _ref2.index,
311
- style = _ref2.style;
312
-
313
- var itemId = R.nth(index, list);
314
- var item = R.prop(itemId, indexedItemsById);
315
- return _react2.default.createElement(_Item2.default, _extends({}, item, {
316
- id: getHierarchicalId(item),
317
- label: labelRenderer(item),
318
- key: getHierarchicalId(item),
319
- depth: getDepth(indexedItemsById)(item),
320
- hasChild: R.has(itemId, groupedItemsByParentId),
321
- hasChildrenOnLevel: getHasChildrenOnLevel(groupedItemsByParentId)(item),
322
- changeList: R.has(itemId, expandedIds) ? function () {
323
- return collapse(index);
324
- } : function () {
325
- return expand(index);
326
- },
327
- NavigateIcon: R.has(itemId, expandedIds) ? _ExpandLess2.default : _ExpandMore2.default,
328
- isRtl: isRtl,
329
- isDisabled: R.is(Function, disableAccessor) ? disableAccessor(item) : false,
330
- eventsCallbacks: eventsCallbacks,
331
- isSelected: isItemSelected(item, index),
332
- HTMLRenderer: HTMLRenderer,
333
- classes: classes,
334
- labels: labels,
335
- index: index,
336
- style: style,
337
- accessibility: accessibility,
338
- ariaLabel: R.prop('navigateNext')(labels),
339
- theme: theme
340
- }));
341
- }
342
- });
343
- }
344
- )
345
- ),
346
- withExpandControl && _react2.default.createElement(
347
- 'div',
279
+ _AutoSizer2.default,
348
280
  null,
349
- _react2.default.createElement(
350
- _Button2.default,
351
- { onClick: collapseAll, color: 'primary' },
352
- R.prop('colapseAll', labels)
353
- ),
354
- _react2.default.createElement(
355
- _Button2.default,
356
- { onClick: expandAll, color: 'primary' },
357
- R.prop('expandAll', labels)
358
- )
281
+ function (_ref) {
282
+ var height = _ref.height,
283
+ width = _ref.width;
284
+ return _react2.default.createElement(_List2.default, {
285
+ overscan: 10,
286
+ tabIndex: -1,
287
+ height: height + 2,
288
+ width: width,
289
+ scrollTop: scrollTop // control scroll position with ctrl or shift key
290
+ , rowCount: R.length(list),
291
+ rowHeight: R.add(1)(_styles.height) // 1 is space between elements
292
+ , rowRenderer: function rowRenderer(_ref2) {
293
+ var index = _ref2.index,
294
+ style = _ref2.style;
295
+
296
+ var itemId = R.nth(index, list);
297
+ var item = R.prop(itemId, indexedItemsById);
298
+ return _react2.default.createElement(_Item2.default, _extends({}, item, {
299
+ id: getHierarchicalId(item),
300
+ label: labelRenderer(item),
301
+ key: getHierarchicalId(item),
302
+ depth: getDepth(indexedItemsById)(item),
303
+ hasChild: R.has(itemId, groupedItemsByParentId),
304
+ hasChildrenOnLevel: getHasChildrenOnLevel(groupedItemsByParentId)(item),
305
+ changeList: R.has(itemId, expandedIds) ? function () {
306
+ return collapse(getHierarchicalId(item));
307
+ } : function () {
308
+ return expand(getHierarchicalId(item));
309
+ },
310
+ NavigateIcon: R.has(itemId, expandedIds) ? _ExpandLess2.default : _ExpandMore2.default,
311
+ isRtl: isRtl,
312
+ isDisabled: R.is(Function, disableAccessor) ? disableAccessor(item) : false,
313
+ eventsCallbacks: eventsCallbacks,
314
+ isSelected: isItemSelected(item, index),
315
+ HTMLRenderer: HTMLRenderer,
316
+ classes: classes,
317
+ labels: labels,
318
+ index: index,
319
+ style: style,
320
+ accessibility: accessibility,
321
+ ariaLabel: R.prop('navigateNext')(labels),
322
+ theme: theme
323
+ }));
324
+ }
325
+ });
326
+ }
359
327
  )
360
328
  );
361
329
  };
@@ -375,7 +343,10 @@ VirtualizedTree.propTypes = process.env.NODE_ENV !== "production" ? {
375
343
  }),
376
344
  labelRenderer: _propTypes2.default.func,
377
345
  withExpandControl: _propTypes2.default.bool,
378
- maxTreeHeight: _propTypes2.default.number
346
+ maxTreeHeight: _propTypes2.default.number,
347
+ expandedIds: _propTypes2.default.object,
348
+ expand: _propTypes2.default.func,
349
+ collapse: _propTypes2.default.func
379
350
  } : {};
380
351
 
381
352
  exports.default = VirtualizedTree;
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+ exports.withExpansionTree = undefined;
5
+
6
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
7
+
8
+ var _react = require('react');
9
+
10
+ var _react2 = _interopRequireDefault(_react);
11
+
12
+ var _ramda = require('ramda');
13
+
14
+ var R = _interopRequireWildcard(_ramda);
15
+
16
+ var _VirtualizedTree = require('./VirtualizedTree');
17
+
18
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } /* eslint react/prop-types: 0 */
23
+
24
+
25
+ var withExpansionTree = function withExpansionTree(Component) {
26
+ return function (_ref) {
27
+ var items = _ref.items,
28
+ defaultExpandedIds = _ref.defaultExpandedIds,
29
+ rest = _objectWithoutProperties(_ref, ['items', 'defaultExpandedIds']);
30
+
31
+ var _useState = (0, _react.useState)({}),
32
+ expandedIds = _useState[0],
33
+ setExpandedIds = _useState[1];
34
+
35
+ (0, _react.useEffect)(function () {
36
+ if (!R.isNil(defaultExpandedIds) && !R.isEmpty(defaultExpandedIds)) {
37
+ setExpandedIds(defaultExpandedIds);
38
+ } else {
39
+ var ids = R.pipe(R.map(_VirtualizedTree.getHierarchicalId), R.indexBy(R.identity))(items);
40
+ setExpandedIds(ids);
41
+ }
42
+ }, [items, defaultExpandedIds]);
43
+
44
+ var expand = function expand(id) {
45
+ setExpandedIds(R.assoc(id, id, expandedIds));
46
+ };
47
+
48
+ var collapse = function collapse(id) {
49
+ setExpandedIds(R.dissoc(id, expandedIds));
50
+ };
51
+
52
+ var expandAll = function expandAll() {
53
+ var ids = R.pipe(R.map(_VirtualizedTree.getHierarchicalId), R.indexBy(R.identity))(items);
54
+ setExpandedIds(ids);
55
+ };
56
+
57
+ var collapseAll = function collapseAll() {
58
+ setExpandedIds({});
59
+ };
60
+
61
+ return _react2.default.createElement(Component, _extends({}, rest, {
62
+ items: items,
63
+ expand: expand,
64
+ collapse: collapse,
65
+ expandAll: expandAll,
66
+ collapseAll: collapseAll,
67
+ expandedIds: expandedIds
68
+ }));
69
+ };
70
+ };
71
+ exports.withExpansionTree = withExpansionTree;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-visions",
3
- "version": "7.20.3",
3
+ "version": "7.20.5",
4
4
  "description": "Library of visual components",
5
5
  "author": "OECD",
6
6
  "homepage": "https://visions-qa.siscc.org/#o",