@sis-cc/dotstatsuite-visions 7.20.4 → 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.
@@ -0,0 +1,56 @@
1
+ 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; };
2
+
3
+ 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; }
4
+
5
+ /* eslint react/prop-types: 0 */
6
+ import React, { useState, useEffect } from 'react';
7
+ import * as R from 'ramda';
8
+ import { getHierarchicalId } from './VirtualizedTree';
9
+
10
+ var withExpansionTree = function withExpansionTree(Component) {
11
+ return function (_ref) {
12
+ var items = _ref.items,
13
+ defaultExpandedIds = _ref.defaultExpandedIds,
14
+ rest = _objectWithoutProperties(_ref, ['items', 'defaultExpandedIds']);
15
+
16
+ var _useState = useState({}),
17
+ expandedIds = _useState[0],
18
+ setExpandedIds = _useState[1];
19
+
20
+ useEffect(function () {
21
+ if (!R.isNil(defaultExpandedIds) && !R.isEmpty(defaultExpandedIds)) {
22
+ setExpandedIds(defaultExpandedIds);
23
+ } else {
24
+ var ids = R.pipe(R.map(getHierarchicalId), R.indexBy(R.identity))(items);
25
+ setExpandedIds(ids);
26
+ }
27
+ }, [items, defaultExpandedIds]);
28
+
29
+ var expand = function expand(id) {
30
+ setExpandedIds(R.assoc(id, id, expandedIds));
31
+ };
32
+
33
+ var collapse = function collapse(id) {
34
+ setExpandedIds(R.dissoc(id, expandedIds));
35
+ };
36
+
37
+ var expandAll = function expandAll() {
38
+ var ids = R.pipe(R.map(getHierarchicalId), R.indexBy(R.identity))(items);
39
+ setExpandedIds(ids);
40
+ };
41
+
42
+ var collapseAll = function collapseAll() {
43
+ setExpandedIds({});
44
+ };
45
+
46
+ return React.createElement(Component, _extends({}, rest, {
47
+ items: items,
48
+ expand: expand,
49
+ collapse: collapse,
50
+ expandAll: expandAll,
51
+ collapseAll: collapseAll,
52
+ expandedIds: expandedIds
53
+ }));
54
+ };
55
+ };
56
+ export { withExpansionTree };
@@ -81,6 +81,8 @@ var _reactDraggable2 = _interopRequireDefault(_reactDraggable);
81
81
 
82
82
  var _ = require('..');
83
83
 
84
+ var _withExpansionTree = require('../VirtualizedTree/withExpansionTree');
85
+
84
86
  var _styles = require('@material-ui/core/styles');
85
87
 
86
88
  var _singleSelection = require('./images/single-selection.png');
@@ -133,7 +135,7 @@ var PaperComponent = function PaperComponent(props) {
133
135
  return _react2.default.createElement(
134
136
  _reactDraggable2.default,
135
137
  { handle: '#draggable-dialog-title', cancel: '[class*="MuiDialogContent-root"]' },
136
- _react2.default.createElement(_Paper2.default, _extends({ style: { minWidth: '75%', height: 700 } }, props))
138
+ _react2.default.createElement(_Paper2.default, _extends({ style: { minWidth: '75%', height: '75%' } }, props))
137
139
  );
138
140
  };
139
141
 
@@ -177,16 +179,19 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
177
179
  narrowSpotlight: { width: '100%' },
178
180
  selectionButton: {
179
181
  marginLeft: 24,
182
+ marginRight: 15,
180
183
  height: 32
181
184
  },
182
185
  narrowSelectionButton: {
183
186
  height: 32,
184
- marginTop: 5
187
+ marginTop: 5,
188
+ marginRight: 15
185
189
  },
186
190
  selectionMenu: {
187
191
  width: '50%',
192
+ maxHeight: '100%',
188
193
  position: 'absolute',
189
- top: 105,
194
+ top: 110,
190
195
  right: 48,
191
196
  zIndex: 1
192
197
  },
@@ -205,12 +210,6 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
205
210
  backgroundColor: theme.palette.action.hover
206
211
  }
207
212
  },
208
- selectedButton: {
209
- backgroundColor: theme.palette.secondary.main,
210
- '&:hover': {
211
- backgroundColor: theme.palette.action.selected
212
- }
213
- },
214
213
  selectModeItem: {
215
214
  boxShadow: 'none',
216
215
  display: 'flex',
@@ -230,6 +229,9 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
230
229
  marginRight: 10,
231
230
  display: 'flex',
232
231
  flexDirection: 'row'
232
+ },
233
+ actions: {
234
+ justifyContent: 'space-between'
233
235
  }
234
236
  };
235
237
  });
@@ -272,7 +274,8 @@ var SelectionModeMenu = function SelectionModeMenu(_ref) {
272
274
  selected = _ref.selected,
273
275
  classes = _ref.classes,
274
276
  isNarrow = _ref.isNarrow,
275
- hint = _ref.hint;
277
+ hint = _ref.hint,
278
+ maxHeight = _ref.maxHeight;
276
279
 
277
280
  if (!isOpen) {
278
281
  return null;
@@ -282,26 +285,24 @@ var SelectionModeMenu = function SelectionModeMenu(_ref) {
282
285
  { className: isNarrow ? classes.narrowSelectionMenu : classes.selectionMenu },
283
286
  _react2.default.createElement(
284
287
  _Card2.default,
285
- null,
288
+ { style: { maxHeight: maxHeight - 5, overflow: 'auto' } },
286
289
  _react2.default.createElement(
287
290
  _CardContent2.default,
288
291
  { className: classes.selectModeContainer },
289
292
  R.map(function (_ref2) {
290
- var _cx;
291
-
292
293
  var value = _ref2.value,
293
294
  label = _ref2.label,
294
295
  img = _ref2.img;
295
296
  return _react2.default.createElement(
296
297
  _.Button,
297
- _extends({
298
- className: (0, _classnames2.default)(classes.selectButton, (_cx = {}, _cx[classes.selectedButton] = value === selected, _cx))
299
- }, value === selected ? { variant: 'contained', color: 'secondary' } : {}, {
298
+ {
299
+ className: classes.selectButton,
300
+ selected: value === selected,
300
301
  key: value,
301
302
  onClick: function onClick() {
302
303
  return onSelect(value);
303
304
  }
304
- }),
305
+ },
305
306
  _react2.default.createElement(
306
307
  _Paper2.default,
307
308
  { className: classes.selectModeItem, key: value },
@@ -335,7 +336,8 @@ SelectionModeMenu.propTypes = process.env.NODE_ENV !== "production" ? {
335
336
  isOpen: _propTypes2.default.bool,
336
337
  onSelect: _propTypes2.default.func,
337
338
  options: _propTypes2.default.array,
338
- selected: _propTypes2.default.string
339
+ selected: _propTypes2.default.string,
340
+ maxHeight: _propTypes2.default.number
339
341
  } : {};
340
342
 
341
343
  var icons = {
@@ -347,7 +349,7 @@ var icons = {
347
349
  };
348
350
 
349
351
  var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
350
- var _cx2;
352
+ var _cx;
351
353
 
352
354
  var id = props.id,
353
355
  title = props.title,
@@ -359,9 +361,13 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
359
361
  isNarrow = props.isNarrow,
360
362
  labels = props.labels,
361
363
  disableAccessor = props.disableAccessor,
362
- rest = _objectWithoutProperties(props, ['id', 'title', 'items', 'labelRenderer', 'onClose', 'changeSelection', 'isOpen', 'isNarrow', 'labels', 'disableAccessor']);
364
+ expandAll = props.expandAll,
365
+ collapseAll = props.collapseAll,
366
+ defaultSpotlight = props.defaultSpotlight,
367
+ expandedIds = props.expandedIds,
368
+ rest = _objectWithoutProperties(props, ['id', 'title', 'items', 'labelRenderer', 'onClose', 'changeSelection', 'isOpen', 'isNarrow', 'labels', 'disableAccessor', 'expandAll', 'collapseAll', 'defaultSpotlight', 'expandedIds']);
363
369
 
364
- var _useState = (0, _react.useState)(''),
370
+ var _useState = (0, _react.useState)({ term: '' }),
365
371
  term = _useState[0].term,
366
372
  setSpotlight = _useState[1];
367
373
 
@@ -379,6 +385,23 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
379
385
 
380
386
  var classes = useStyles();
381
387
 
388
+ var _useState5 = (0, _react.useState)(0),
389
+ height = _useState5[0],
390
+ setHeight = _useState5[1];
391
+
392
+ var measureRef = _react2.default.useCallback(function (node) {
393
+ if (node !== null) {
394
+ setHeight(node.getBoundingClientRect().height * 75 / 100);
395
+ }
396
+ });
397
+ (0, _react.useEffect)(function () {
398
+ if (!R.isNil(defaultSpotlight) && !R.isEmpty(defaultSpotlight)) {
399
+ setSpotlight(defaultSpotlight);
400
+ }
401
+ }, [defaultSpotlight]);
402
+
403
+ var listHeight = height - 170;
404
+
382
405
  var groupedItemsByParentId = R.groupBy(R.propOr('#ROOT', 'parentId'), items);
383
406
 
384
407
  var recurse = R.filter(function (item) {
@@ -438,8 +461,9 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
438
461
  };
439
462
 
440
463
  var handleSubmit = function handleSubmit() {
441
- changeSelection(id, R.values(selection));
464
+ changeSelection(id, R.values(selection), { expandedIds: expandedIds, spotlight: { term: term } });
442
465
  setSelection({});
466
+ setSpotlight({ term: '' });
443
467
  };
444
468
 
445
469
  return _react2.default.createElement(
@@ -448,7 +472,8 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
448
472
  open: isOpen,
449
473
  PaperComponent: PaperComponent,
450
474
  'aria-labelledby': 'draggable-dialog-title',
451
- onClose: onClose
475
+ onClose: onClose,
476
+ ref: measureRef
452
477
  },
453
478
  _react2.default.createElement(
454
479
  _DialogTitle2.default,
@@ -478,11 +503,12 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
478
503
  { container: true },
479
504
  _react2.default.createElement(
480
505
  _Grid2.default,
481
- { item: true, xs: 12, className: (0, _classnames2.default)(classes.topElements, (_cx2 = {}, _cx2[classes.narrowTop] = isNarrow, _cx2)) },
506
+ { item: true, xs: 12, className: (0, _classnames2.default)(classes.topElements, (_cx = {}, _cx[classes.narrowTop] = isNarrow, _cx)) },
482
507
  _react2.default.createElement(
483
508
  'div',
484
509
  { className: isNarrow ? classes.narrowSpotlight : classes.spotlight },
485
510
  _react2.default.createElement(_.Spotlight, {
511
+ hasClearAll: true,
486
512
  placeholder: R.prop('placeholder', labels),
487
513
  term: term,
488
514
  hasCommit: false,
@@ -513,7 +539,11 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
513
539
  _react.Fragment,
514
540
  null,
515
541
  '\xA0',
516
- _react2.default.createElement('img', { src: R.prop(selectionMode, icons), alt: selectionMode })
542
+ _react2.default.createElement('img', {
543
+ style: { marginLeft: 15 },
544
+ src: R.prop(selectionMode, icons),
545
+ alt: selectionMode
546
+ })
517
547
  )
518
548
  )
519
549
  ),
@@ -530,7 +560,8 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
530
560
  setIsOpenSelectionMenu(false);
531
561
  },
532
562
  selected: selectionMode,
533
- hint: R.prop('hint', labels)
563
+ hint: R.prop('hint', labels),
564
+ maxHeight: listHeight
534
565
  }),
535
566
  _react2.default.createElement(_.VirtualizedTree, _extends({}, rest, {
536
567
  disableAccessor: disableAccessor,
@@ -539,36 +570,57 @@ var AdvancedFilterDialog = function AdvancedFilterDialog(props) {
539
570
  items: selectionItems,
540
571
  changeSelection: onChangeSelection,
541
572
  withExpandControl: true,
542
- maxTreeHeight: 490,
543
- getItemScope: R.prop(selectionMode, scopeGetters)
573
+ maxTreeHeight: listHeight,
574
+ getItemScope: R.prop(selectionMode, scopeGetters),
575
+ expandedIds: expandedIds
544
576
  }))
545
577
  )
546
578
  )
547
579
  ),
548
580
  _react2.default.createElement(
549
581
  _DialogActions2.default,
550
- null,
551
- R.is(Function, onClose) && _react2.default.createElement(
552
- _.Button,
553
- {
554
- onClick: function onClick() {
555
- onClose();
556
- setSelection({});
557
- },
558
- color: 'primary'
559
- },
560
- R.prop('cancel', labels)
582
+ { className: classes.actions },
583
+ _react2.default.createElement(
584
+ 'div',
585
+ null,
586
+ _react2.default.createElement(
587
+ _.Button,
588
+ { onClick: collapseAll, color: 'primary' },
589
+ R.prop('colapseAll', labels)
590
+ ),
591
+ _react2.default.createElement(
592
+ _.Button,
593
+ { style: { marginLeft: 10 }, onClick: expandAll, color: 'primary' },
594
+ R.prop('expandAll', labels)
595
+ )
561
596
  ),
562
- R.is(Function, changeSelection) && _react2.default.createElement(
563
- _.Button,
564
- {
565
- disabled: R.isEmpty(selection),
566
- onClick: handleSubmit,
567
- color: 'primary',
568
- variant: 'contained',
569
- alternative: 'siscc'
570
- },
571
- R.prop('apply', labels)
597
+ _react2.default.createElement(
598
+ 'div',
599
+ null,
600
+ R.is(Function, onClose) && _react2.default.createElement(
601
+ _.Button,
602
+ {
603
+ onClick: function onClick() {
604
+ onClose();
605
+ setSelection({});
606
+ setSpotlight({ term: '' });
607
+ },
608
+ color: 'primary'
609
+ },
610
+ R.prop('cancel', labels)
611
+ ),
612
+ R.is(Function, changeSelection) && _react2.default.createElement(
613
+ _.Button,
614
+ {
615
+ disabled: R.isEmpty(selection),
616
+ onClick: handleSubmit,
617
+ color: 'primary',
618
+ variant: 'contained',
619
+ alternative: 'siscc',
620
+ style: { marginLeft: 10 }
621
+ },
622
+ R.prop('apply', labels)
623
+ )
572
624
  )
573
625
  )
574
626
  );
@@ -597,7 +649,11 @@ AdvancedFilterDialog.propTypes = process.env.NODE_ENV !== "production" ? {
597
649
  }),
598
650
  onClose: _propTypes2.default.func,
599
651
  labelRenderer: _propTypes2.default.func,
600
- title: _propTypes2.default.string
652
+ title: _propTypes2.default.string,
653
+ expandAll: _propTypes2.default.func,
654
+ collapseAll: _propTypes2.default.func,
655
+ defaultSpotlight: _propTypes2.default.object,
656
+ expandedIds: _propTypes2.default.object
601
657
  } : {};
602
658
 
603
- exports.default = AdvancedFilterDialog;
659
+ exports.default = (0, _withExpansionTree.withExpansionTree)(AdvancedFilterDialog);
@@ -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'];
@@ -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,