@sis-cc/dotstatsuite-visions 12.18.0 → 12.20.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.
@@ -0,0 +1,590 @@
1
+ 'use strict';
2
+
3
+ exports.__esModule = true;
4
+
5
+ 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; };
6
+
7
+ var _react = require('react');
8
+
9
+ var _react2 = _interopRequireDefault(_react);
10
+
11
+ var _propTypes = require('prop-types');
12
+
13
+ var _propTypes2 = _interopRequireDefault(_propTypes);
14
+
15
+ var _ramda = require('ramda');
16
+
17
+ var R = _interopRequireWildcard(_ramda);
18
+
19
+ var _classnames = require('classnames');
20
+
21
+ var _classnames2 = _interopRequireDefault(_classnames);
22
+
23
+ var _utils = require('../VirtualizedTree/utils');
24
+
25
+ var _Button = require('@mui/material/Button');
26
+
27
+ var _Button2 = _interopRequireDefault(_Button);
28
+
29
+ var _Paper = require('@mui/material/Paper');
30
+
31
+ var _Paper2 = _interopRequireDefault(_Paper);
32
+
33
+ var _Grid = require('@mui/material/Grid');
34
+
35
+ var _Grid2 = _interopRequireDefault(_Grid);
36
+
37
+ var _Typography = require('@mui/material/Typography');
38
+
39
+ var _Typography2 = _interopRequireDefault(_Typography);
40
+
41
+ var _ = require('..');
42
+
43
+ var _withExpansionTree = require('../VirtualizedTree/withExpansionTree');
44
+
45
+ var _withSpotlight = require('../VirtualizedTree/withSpotlight');
46
+
47
+ var _makeStyles = require('@mui/styles/makeStyles');
48
+
49
+ var _makeStyles2 = _interopRequireDefault(_makeStyles);
50
+
51
+ var _EmojiObjects = require('@mui/icons-material/EmojiObjects');
52
+
53
+ var _EmojiObjects2 = _interopRequireDefault(_EmojiObjects);
54
+
55
+ var _singleSelection = require('../AdvancedFilterDialog/images/single-selection.png');
56
+
57
+ var _singleSelection2 = _interopRequireDefault(_singleSelection);
58
+
59
+ var _childrenSelection = require('../AdvancedFilterDialog/images/children-selection.png');
60
+
61
+ var _childrenSelection2 = _interopRequireDefault(_childrenSelection);
62
+
63
+ var _branchSelection = require('../AdvancedFilterDialog/images/branch-selection.png');
64
+
65
+ var _branchSelection2 = _interopRequireDefault(_branchSelection);
66
+
67
+ var _levelSelection = require('../AdvancedFilterDialog/images/level-selection.png');
68
+
69
+ var _levelSelection2 = _interopRequireDefault(_levelSelection);
70
+
71
+ var _material = require('@mui/material');
72
+
73
+ var _SelectionModesMobile = require('./SelectionModesMobile');
74
+
75
+ var _SelectionModesMobile2 = _interopRequireDefault(_SelectionModesMobile);
76
+
77
+ 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; } }
78
+
79
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
80
+
81
+ 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; }
82
+
83
+ var useStyles = (0, _makeStyles2.default)(function (theme) {
84
+ return {
85
+ header: {
86
+ color: 'black',
87
+ display: 'flex',
88
+ alignItems: 'center',
89
+ justifyContent: 'space-between',
90
+ width: '100%'
91
+ },
92
+ headerLabel: {
93
+ fontSize: '16px',
94
+ fontFamily: 'PT Sans Narrow',
95
+ fontWeight: '700',
96
+ color: theme.palette.grey[700]
97
+ },
98
+ selectionTitle: {
99
+ fontSize: '12px',
100
+ fontFamily: "'Helvetica Neue', Helvetica, Arial, sans-serif",
101
+ fontWeight: '500',
102
+ color: theme.palette.grey['A700']
103
+ },
104
+ closeButton: {
105
+ color: 'grey !important',
106
+ padding: 0
107
+ },
108
+ selectMode: {
109
+ marginLeft: 10,
110
+ '& .MuiInputBase-root': {
111
+ height: 32
112
+ }
113
+ },
114
+ narrowTop: {
115
+ flexDirection: 'column',
116
+ alignItems: 'flex-start'
117
+ },
118
+ spotlight: { width: '45%' },
119
+ selection: {
120
+ display: 'flex',
121
+ alignItems: 'center'
122
+ },
123
+ narrowSpotlight: { width: '100%' },
124
+ selectionButton: {
125
+ marginLeft: 24,
126
+ marginRight: 15,
127
+ height: 32
128
+ },
129
+ narrowSelectionButton: {
130
+ height: 32,
131
+ marginTop: 15,
132
+ marginRight: 10
133
+ },
134
+ selectionMenu: {
135
+ width: '50%',
136
+ maxHeight: '100%',
137
+ position: 'absolute',
138
+ top: 110,
139
+ right: 48,
140
+ zIndex: 1
141
+ },
142
+ narrowSelectionMenu: {
143
+ width: '100%'
144
+ },
145
+ selectModeContainer: {
146
+ display: 'flex',
147
+ flexDirection: 'column',
148
+ flexWrap: 'wrap',
149
+ alignItems: 'flex-start'
150
+ },
151
+ selectButton: {
152
+ color: theme.palette.primary.main,
153
+ '&:hover': {
154
+ color: theme.palette.primary.main,
155
+ backgroundColor: theme.palette.action.hover
156
+ }
157
+ },
158
+ selectModeItem: {
159
+ boxShadow: 'none',
160
+ display: 'flex',
161
+ backgroundColor: 'transparent',
162
+ flexDirection: 'row-reverse',
163
+ alignItems: 'center',
164
+ '& p': {
165
+ paddingLeft: '5px',
166
+ fontSize: '12px',
167
+ fontFamily: "'Helvetica Neue', Helvetica, Arial, sans-serif",
168
+ color: theme.palette.primary.main,
169
+ fontWeight: '500',
170
+ lineHeight: 1.43,
171
+ textAlign: 'left'
172
+ },
173
+ '& img': {
174
+ width: 21,
175
+ height: 24
176
+ }
177
+ },
178
+ hint: {
179
+ display: 'flex',
180
+ flexDirection: 'row',
181
+ alignItems: 'center',
182
+ marginRight: 7,
183
+ color: theme.palette.primary.main
184
+ },
185
+ divider: {
186
+ backgroundColor: theme.palette.primary.light
187
+ },
188
+ actions: {
189
+ justifyContent: 'flex-end'
190
+ },
191
+ ellipsis: {
192
+ whiteSpace: 'nowrap',
193
+ overflow: 'hidden',
194
+ textOverflow: 'ellipsis'
195
+ },
196
+ tooltip: {
197
+ backgroundColor: theme.palette.action.hover
198
+ },
199
+ subheader: {
200
+ display: 'flex',
201
+ flexDirection: 'column',
202
+ alignItems: 'flex-start',
203
+ justifyContent: 'space-between'
204
+ },
205
+ narrowHeader: {
206
+ alignItems: 'flex-start',
207
+ width: '100%'
208
+ },
209
+ topElements: {
210
+ display: 'flex',
211
+ flexDirection: 'row',
212
+ justifyContent: 'space-between'
213
+ }
214
+ };
215
+ });
216
+
217
+ var AdvancedSelection = function AdvancedSelection(props) {
218
+ var _cx, _cx2, _cx3, _cx4;
219
+
220
+ var id = props.id,
221
+ items = props.items,
222
+ labelRenderer = props.labelRenderer,
223
+ isNarrow = props.isNarrow,
224
+ labels = props.labels,
225
+ _props$disableAccesso = props.disableAccessor,
226
+ disableAccessor = _props$disableAccesso === undefined ? R.always(false) : _props$disableAccesso,
227
+ expandAll = props.expandAll,
228
+ collapseAll = props.collapseAll,
229
+ selection = props.selection,
230
+ setSelection = props.setSelection,
231
+ allSelection = props.allSelection,
232
+ setAllSelection = props.setAllSelection,
233
+ spotlight = props.spotlight,
234
+ setSpotlight = props.setSpotlight,
235
+ expandedIds = props.expandedIds,
236
+ allItems = props.allItems,
237
+ filter = props.filter,
238
+ rest = _objectWithoutProperties(props, ['id', 'items', 'labelRenderer', 'isNarrow', 'labels', 'disableAccessor', 'expandAll', 'collapseAll', 'selection', 'setSelection', 'allSelection', 'setAllSelection', 'spotlight', 'setSpotlight', 'expandedIds', 'allItems', 'filter']);
239
+
240
+ var _useState = (0, _react.useState)('single'),
241
+ selectionMode = _useState[0],
242
+ setSelectionMode = _useState[1];
243
+
244
+ var classes = useStyles();
245
+ var getTotal = function getTotal(items, spotlightAcc) {
246
+ var itemsIds = R.pluck('id', items);
247
+ var total = R.pipe(R.uniq, R.length)(itemsIds);
248
+ if (R.is(Function, spotlightAcc)) {
249
+ return spotlightAcc(total);
250
+ }
251
+ return total;
252
+ };
253
+
254
+ var selectionItems = R.map(function (item) {
255
+ return _extends({}, item, {
256
+ isSelected: R.has(item.id, selection) ? !item.isSelected : !!item.isSelected
257
+ });
258
+ }, items);
259
+ var indexedFilteredItems = R.indexBy(_utils.getHierarchicalId, selectionItems);
260
+
261
+ var selectionOptions = [{
262
+ value: 'single',
263
+ label: R.prop('singleSelection', labels),
264
+ img: _singleSelection2.default
265
+ }, {
266
+ value: 'children',
267
+ label: R.prop('childrenSelection', labels),
268
+ img: _childrenSelection2.default
269
+ }, {
270
+ value: 'branch',
271
+ label: R.prop('branchSelection', labels),
272
+ img: _branchSelection2.default
273
+ }, {
274
+ value: 'level',
275
+ label: R.prop('levelSelection', labels),
276
+ img: _levelSelection2.default
277
+ }];
278
+
279
+ var _allGroupedItems = R.pipe(R.map(function (item) {
280
+ return _extends({}, item, {
281
+ isSelected: R.has(item.id, selection) ? !item.isSelected : !!item.isSelected
282
+ });
283
+ }), R.groupBy(R.propOr('#ROOT', 'parentId')))(allItems);
284
+
285
+ var isChildInSelectionScope = function isChildInSelectionScope(child, ancestor) {
286
+ if (!R.has((0, _utils.getHierarchicalId)(child), indexedFilteredItems)) {
287
+ return false;
288
+ }
289
+ if (selectionMode === 'single' || selectionMode === 'level') {
290
+ return false;
291
+ }
292
+ if (selectionMode === 'children') {
293
+ return child.parentId === (0, _utils.getHierarchicalId)(ancestor);
294
+ }
295
+ return true;
296
+ };
297
+
298
+ var _disableAccessor = (0, _utils.getEvolvedDisableAccessor)(_allGroupedItems, disableAccessor, isChildInSelectionScope);
299
+
300
+ var isDisabled = function isDisabled(item) {
301
+ return R.is(Function, disableAccessor) ? disableAccessor(item) : false;
302
+ };
303
+ var scopeGetter = R.prop(selectionMode, _utils.getScopeGetters);
304
+
305
+ var onChangeSelection = function onChangeSelection(ids) {
306
+ var _extends2;
307
+
308
+ var nextSelection = R.reduce(function (acc, id) {
309
+ return R.has(id, acc) ? R.dissoc(id, acc) : R.assoc(id, id, acc);
310
+ }, selection, ids);
311
+ setSelection(nextSelection);
312
+ setAllSelection(_extends({}, allSelection, (_extends2 = {}, _extends2[id] = R.values(nextSelection), _extends2)));
313
+ };
314
+
315
+ var rejectonlyDisabledItems = function rejectonlyDisabledItems(item) {
316
+ return _disableAccessor(item);
317
+ };
318
+ var getSelectedItems = function getSelectedItems(item) {
319
+ return R.propOr(false, 'isSelected')(item);
320
+ };
321
+
322
+ var selectAll = function selectAll() {
323
+ var _extends3;
324
+
325
+ var imposedIds = R.reduce(function (acc, item) {
326
+ return R.uniq(R.concat(R.propOr([], 'imposedIds', item), acc));
327
+ }, [])(items);
328
+ var ids = R.pluck('id', R.reject(getSelectedItems, R.reject(rejectonlyDisabledItems, items)));
329
+ var allIds = R.concat(imposedIds, ids);
330
+ var nextSelection = R.reduce(function (acc, id) {
331
+ return R.has(id, acc) ? acc : R.assoc(id, id, acc);
332
+ }, {}, allIds);
333
+ setSelection(nextSelection);
334
+ setAllSelection(_extends({}, allSelection, (_extends3 = {}, _extends3[id] = R.values(nextSelection), _extends3)));
335
+ };
336
+
337
+ var deselectAll = function deselectAll() {
338
+ var _extends4;
339
+
340
+ var itemIds = R.pipe(R.filter(getSelectedItems), R.pluck('id'))(items);
341
+ var ids = R.difference(itemIds, selection);
342
+ var nextSelection = R.reduce(function (acc, id) {
343
+ return R.has(id, acc) ? acc : R.assoc(id, id, acc);
344
+ }, {}, ids);
345
+ setSelection(nextSelection);
346
+ setAllSelection(_extends({}, allSelection, (_extends4 = {}, _extends4[id] = R.values(nextSelection), _extends4)));
347
+ };
348
+ var mapIndexed = R.addIndex(R.map);
349
+ return _react2.default.createElement(
350
+ _Grid2.default,
351
+ { container: true },
352
+ _react2.default.createElement(
353
+ _Grid2.default,
354
+ {
355
+ item: true,
356
+ container: true,
357
+ xs: 12,
358
+ className: (0, _classnames2.default)(classes.topElements, (_cx = {}, _cx[classes.narrowTop] = isNarrow, _cx))
359
+ },
360
+ isNarrow && _react2.default.createElement(
361
+ _Grid2.default,
362
+ { item: true, container: true, xs: 12 },
363
+ _react2.default.createElement(
364
+ 'div',
365
+ { className: (0, _classnames2.default)(classes.selectModeContainer, (_cx2 = {}, _cx2[classes.narrowHeader] = isNarrow, _cx2)) },
366
+ _react2.default.createElement(
367
+ 'div',
368
+ { className: classes.hint },
369
+ _react2.default.createElement(
370
+ _.Tooltip,
371
+ {
372
+ role: 'tooltip',
373
+ variant: 'light',
374
+ title: _react2.default.createElement(
375
+ _Typography2.default,
376
+ { variant: 'body2' },
377
+ R.prop('hint', labels)
378
+ ),
379
+ 'aria-label': R.prop('hint', labels),
380
+ tabIndex: 0
381
+ },
382
+ _react2.default.createElement(
383
+ _Button2.default,
384
+ null,
385
+ _react2.default.createElement(_EmojiObjects2.default, null)
386
+ )
387
+ ),
388
+ _react2.default.createElement(
389
+ _Typography2.default,
390
+ {
391
+ className: classes.selectionTitle,
392
+ 'aria-label': R.prop('selectionMode', labels),
393
+ tabIndex: 0
394
+ },
395
+ R.prop('selectionMode', labels)
396
+ )
397
+ ),
398
+ _react2.default.createElement(_SelectionModesMobile2.default, {
399
+ selectionModes: selectionOptions,
400
+ selectionMode: selectionMode,
401
+ setSelectionMode: setSelectionMode,
402
+ classes: classes,
403
+ isNarrow: isNarrow
404
+ })
405
+ )
406
+ ),
407
+ _react2.default.createElement(
408
+ 'div',
409
+ { className: classes.spotlight },
410
+ _react2.default.createElement(_.Spotlight, {
411
+ hasClearAll: true,
412
+ placeholder: getTotal(items, R.prop('placeholder', labels)),
413
+ term: spotlight.term,
414
+ hasCommit: false,
415
+ spotlight: { fields: {} },
416
+ action: setSpotlight
417
+ })
418
+ )
419
+ ),
420
+ _react2.default.createElement(
421
+ _Grid2.default,
422
+ { item: true, xs: isNarrow ? 12 : 8 },
423
+ _react2.default.createElement(
424
+ 'div',
425
+ { style: { display: 'flex', flexDirection: 'row' } },
426
+ _react2.default.createElement(
427
+ 'div',
428
+ null,
429
+ _react2.default.createElement(
430
+ _.Button,
431
+ { onClick: collapseAll, color: 'primary' },
432
+ R.prop('colapseAll', labels)
433
+ ),
434
+ _react2.default.createElement(
435
+ _.Button,
436
+ { style: { marginLeft: 10 }, onClick: expandAll, color: 'primary' },
437
+ R.prop('expandAll', labels)
438
+ )
439
+ ),
440
+ _react2.default.createElement(
441
+ 'div',
442
+ null,
443
+ _react2.default.createElement(
444
+ _.Button,
445
+ { onClick: selectAll, color: 'primary' },
446
+ R.prop('selectAll', labels)
447
+ ),
448
+ _react2.default.createElement(
449
+ _.Button,
450
+ { style: { marginLeft: 10 }, onClick: deselectAll, color: 'primary' },
451
+ R.prop('deselectAll', labels)
452
+ )
453
+ )
454
+ ),
455
+ _react2.default.createElement(_material.Divider, { className: classes.divider }),
456
+ _react2.default.createElement(_.VirtualizedTree, _extends({}, rest, {
457
+ disableAccessor: _disableAccessor,
458
+ isGreyed: isDisabled,
459
+ labels: labels,
460
+ labelRenderer: labelRenderer,
461
+ items: selectionItems,
462
+ changeSelection: function changeSelection(selection, ids) {
463
+ return onChangeSelection(selection, ids, filter);
464
+ },
465
+ withExpandControl: true,
466
+ treeHeight: isNarrow ? 0 : '700px',
467
+ scopeGetter: scopeGetter,
468
+ expandedIds: expandedIds
469
+ }))
470
+ ),
471
+ !isNarrow && _react2.default.createElement(
472
+ _Grid2.default,
473
+ { item: true, container: true, xs: 4 },
474
+ _react2.default.createElement(
475
+ 'div',
476
+ { className: (0, _classnames2.default)(classes.selectModeContainer, (_cx3 = {}, _cx3[classes.narrowHeader] = isNarrow, _cx3)) },
477
+ _react2.default.createElement(
478
+ 'div',
479
+ { className: classes.hint },
480
+ _react2.default.createElement(
481
+ _.Tooltip,
482
+ {
483
+ role: 'tooltip',
484
+ variant: 'light',
485
+ title: _react2.default.createElement(
486
+ _Typography2.default,
487
+ { variant: 'body2' },
488
+ R.prop('hint', labels)
489
+ ),
490
+ 'aria-label': R.prop('hint', labels),
491
+ tabIndex: 0
492
+ },
493
+ _react2.default.createElement(
494
+ _Button2.default,
495
+ null,
496
+ _react2.default.createElement(_EmojiObjects2.default, null)
497
+ )
498
+ ),
499
+ _react2.default.createElement(
500
+ _Typography2.default,
501
+ {
502
+ className: classes.selectionTitle,
503
+ 'aria-label': R.prop('selectionMode', labels),
504
+ tabIndex: 0
505
+ },
506
+ R.prop('selectionMode', labels)
507
+ )
508
+ ),
509
+ _react2.default.createElement(
510
+ 'div',
511
+ { className: (0, _classnames2.default)(classes.selectModeContainer, (_cx4 = {}, _cx4[classes.narrowHeader] = isNarrow, _cx4)) },
512
+ mapIndexed(function (_ref) {
513
+ var value = _ref.value,
514
+ label = _ref.label,
515
+ img = _ref.img;
516
+ return _react2.default.createElement(
517
+ _.Tooltip,
518
+ {
519
+ key: value,
520
+ classes: { tooltip: classes.tooltip },
521
+ title: _react2.default.createElement('img', { style: { width: '72px', height: '90px' }, src: img, alt: value }),
522
+ tabIndex: -1
523
+ },
524
+ _react2.default.createElement(
525
+ _.Button,
526
+ {
527
+ className: classes.selectButton,
528
+ selected: value === selectionMode,
529
+ onClick: function onClick() {
530
+ setSelectionMode(value);
531
+ },
532
+ 'aria-pressed': value === selectionMode,
533
+ 'aria-label': label,
534
+ tabIndex: 0
535
+ },
536
+ _react2.default.createElement(
537
+ _Paper2.default,
538
+ { elevation: 0, className: classes.selectModeItem, key: value },
539
+ _react2.default.createElement(
540
+ _Typography2.default,
541
+ null,
542
+ label
543
+ ),
544
+ !R.isNil(img) && R.is(String, img) && _react2.default.createElement('img', { src: img, alt: value })
545
+ )
546
+ )
547
+ );
548
+ }, selectionOptions)
549
+ )
550
+ )
551
+ )
552
+ );
553
+ };
554
+
555
+ AdvancedSelection.propTypes = process.env.NODE_ENV !== "production" ? {
556
+ id: _propTypes2.default.string,
557
+ accessibility: _propTypes2.default.bool,
558
+ disableAccessor: _propTypes2.default.func,
559
+ HTMLRenderer: _propTypes2.default.func,
560
+ filter: _propTypes2.default.object,
561
+ selection: _propTypes2.default.object,
562
+ allSelection: _propTypes2.default.object,
563
+ setAllSelection: _propTypes2.default.func,
564
+ setSelection: _propTypes2.default.func,
565
+ isRtl: _propTypes2.default.bool,
566
+ isNarrow: _propTypes2.default.bool,
567
+ items: _propTypes2.default.array,
568
+ labels: _propTypes2.default.shape({
569
+ placeholder: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]),
570
+ disableItemLabel: _propTypes2.default.string,
571
+ singleSelection: _propTypes2.default.string,
572
+ childrenSelection: _propTypes2.default.string,
573
+ branchSelection: _propTypes2.default.string,
574
+ levelSelection: _propTypes2.default.string,
575
+ selectAll: _propTypes2.default.string,
576
+ deselectAll: _propTypes2.default.string,
577
+ apply: _propTypes2.default.string,
578
+ cancel: _propTypes2.default.string
579
+ }),
580
+ labelRenderer: _propTypes2.default.func,
581
+ expandAll: _propTypes2.default.func,
582
+ collapseAll: _propTypes2.default.func,
583
+ spotlight: _propTypes2.default.object,
584
+ setSpotlight: _propTypes2.default.func,
585
+ expandedIds: _propTypes2.default.object,
586
+ allItems: _propTypes2.default.array
587
+ } : {};
588
+
589
+ exports.default = (0, _withSpotlight.withSpotlight)((0, _withExpansionTree.withExpansionTree)(AdvancedSelection));
590
+ module.exports = exports['default'];