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