@sis-cc/dotstatsuite-visions 12.19.0 → 12.20.2
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.
- package/es/DynamicDrawer/AdvancedSelection.js +59 -10
- package/es/DynamicDrawer/DynamicDrawer.js +125 -20
- package/es/DynamicDrawer/SelectionModesMobile.js +46 -54
- package/lib/DynamicDrawer/AdvancedSelection.js +62 -10
- package/lib/DynamicDrawer/DynamicDrawer.js +130 -19
- package/lib/DynamicDrawer/SelectionModesMobile.js +46 -57
- package/package.json +1 -2
- package/umd/@sis-cc/dotstatsuite-visions.js +667 -427
- package/umd/@sis-cc/dotstatsuite-visions.min.js +9 -9
- package/umd/@sis-cc/dotstatsuite-visions.min.js.map +1 -1
|
@@ -16,6 +16,10 @@ var _ramda = require('ramda');
|
|
|
16
16
|
|
|
17
17
|
var R = _interopRequireWildcard(_ramda);
|
|
18
18
|
|
|
19
|
+
var _classnames = require('classnames');
|
|
20
|
+
|
|
21
|
+
var _classnames2 = _interopRequireDefault(_classnames);
|
|
22
|
+
|
|
19
23
|
var _Box = require('@mui/material/Box');
|
|
20
24
|
|
|
21
25
|
var _Box2 = _interopRequireDefault(_Box);
|
|
@@ -38,6 +42,10 @@ var _Button = require('@mui/material/Button');
|
|
|
38
42
|
|
|
39
43
|
var _Button2 = _interopRequireDefault(_Button);
|
|
40
44
|
|
|
45
|
+
var _ArrowBack = require('@mui/icons-material/ArrowBack');
|
|
46
|
+
|
|
47
|
+
var _ArrowBack2 = _interopRequireDefault(_ArrowBack);
|
|
48
|
+
|
|
41
49
|
var _ = require('..');
|
|
42
50
|
|
|
43
51
|
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; } }
|
|
@@ -52,6 +60,20 @@ var useStyles = (0, _makeStyles2.default)(function (theme) {
|
|
|
52
60
|
textTransform: 'none',
|
|
53
61
|
color: theme.palette.grey[700]
|
|
54
62
|
}, R.pathOr({}, ['mixins', 'expansionPanel', 'title'], theme)),
|
|
63
|
+
labelSelected: {
|
|
64
|
+
color: theme.palette.primary.main
|
|
65
|
+
},
|
|
66
|
+
tabSelected: {
|
|
67
|
+
backgroundColor: theme.palette.action.hover + ' !important',
|
|
68
|
+
'&:hover': {
|
|
69
|
+
backgroundColor: theme.palette.action.selected + ' !important'
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
tab: {
|
|
73
|
+
'&:hover': {
|
|
74
|
+
backgroundColor: '' + theme.palette.action.selected
|
|
75
|
+
}
|
|
76
|
+
},
|
|
55
77
|
tabPanel: {
|
|
56
78
|
backgroundColor: theme.palette.background.default,
|
|
57
79
|
position: 'absolute',
|
|
@@ -71,7 +93,9 @@ var TabPanel = function TabPanel(props) {
|
|
|
71
93
|
classes = props.classes,
|
|
72
94
|
labels = props.labels,
|
|
73
95
|
onClose = props.onClose,
|
|
74
|
-
|
|
96
|
+
isNarrow = props.isNarrow,
|
|
97
|
+
setOpen = props.setOpen,
|
|
98
|
+
other = _objectWithoutProperties(props, ['children', 'open', 'item', 'classes', 'labels', 'onClose', 'isNarrow', 'setOpen']);
|
|
75
99
|
|
|
76
100
|
return _react2.default.createElement(
|
|
77
101
|
'div',
|
|
@@ -80,11 +104,27 @@ var TabPanel = function TabPanel(props) {
|
|
|
80
104
|
hidden: !open,
|
|
81
105
|
id: 'vertical-tabpanel-' + item.index,
|
|
82
106
|
'aria-labelledby': 'vertical-tab-' + item.index,
|
|
83
|
-
className: classes.tabPanel
|
|
107
|
+
className: isNarrow ? classes.tabPanelNarrow : classes.tabPanel
|
|
84
108
|
}, other),
|
|
85
109
|
open && _react2.default.createElement(
|
|
86
110
|
_Box2.default,
|
|
87
111
|
{ sx: { p: 3 } },
|
|
112
|
+
isNarrow && _react2.default.createElement(
|
|
113
|
+
_Button2.default,
|
|
114
|
+
{
|
|
115
|
+
onClick: function onClick() {
|
|
116
|
+
return setOpen(false);
|
|
117
|
+
},
|
|
118
|
+
'data-testid': 'back_button',
|
|
119
|
+
'aria-label': R.prop('cancel', labels),
|
|
120
|
+
sx: {
|
|
121
|
+
padding: 0,
|
|
122
|
+
float: 'left'
|
|
123
|
+
},
|
|
124
|
+
size: 'large'
|
|
125
|
+
},
|
|
126
|
+
_react2.default.createElement(_ArrowBack2.default, null)
|
|
127
|
+
),
|
|
88
128
|
_react2.default.createElement(
|
|
89
129
|
_Button2.default,
|
|
90
130
|
{
|
|
@@ -109,31 +149,44 @@ TabPanel.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
109
149
|
classes: _propTypes2.default.object,
|
|
110
150
|
labels: _propTypes2.default.object,
|
|
111
151
|
onClose: _propTypes2.default.func,
|
|
112
|
-
children: _propTypes2.default.node
|
|
152
|
+
children: _propTypes2.default.node,
|
|
153
|
+
isNarrow: _propTypes2.default.bool,
|
|
154
|
+
setOpen: _propTypes2.default.func
|
|
113
155
|
} : {};
|
|
114
156
|
|
|
115
157
|
var PaperComponent = function PaperComponent(props) {
|
|
158
|
+
var _cx;
|
|
159
|
+
|
|
116
160
|
var classes = useStyles();
|
|
117
|
-
// const Chip = R.isNil(props.tag) ? InternalTag : props.tag;
|
|
118
161
|
return _react2.default.createElement(
|
|
119
162
|
_material.Paper,
|
|
120
163
|
props,
|
|
121
164
|
_react2.default.createElement(
|
|
122
|
-
|
|
123
|
-
{
|
|
124
|
-
|
|
165
|
+
_Box2.default,
|
|
166
|
+
{ sx: { display: 'flex', justifyContent: 'space-between', width: '100%' } },
|
|
167
|
+
_react2.default.createElement(
|
|
168
|
+
_material.Typography,
|
|
169
|
+
{
|
|
170
|
+
noWrap: true,
|
|
171
|
+
variant: 'body2',
|
|
172
|
+
title: props.label,
|
|
173
|
+
className: (0, _classnames2.default)(classes.label, (_cx = {}, _cx[classes.labelSelected] = props.selected, _cx))
|
|
174
|
+
},
|
|
175
|
+
props.label
|
|
176
|
+
),
|
|
177
|
+
props.tag
|
|
125
178
|
)
|
|
126
179
|
);
|
|
127
180
|
};
|
|
128
181
|
PaperComponent.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
129
182
|
label: _propTypes2.default.string,
|
|
130
183
|
tag: _propTypes2.default.elementType,
|
|
131
|
-
|
|
132
|
-
tagValueLabel: _propTypes2.default.func,
|
|
133
|
-
tagValue: _propTypes2.default.string
|
|
184
|
+
selected: _propTypes2.default.bool
|
|
134
185
|
} : {};
|
|
135
186
|
|
|
136
187
|
var DynamicDrawer = function DynamicDrawer(props) {
|
|
188
|
+
var classNames = useStyles();
|
|
189
|
+
|
|
137
190
|
var _useState = (0, _react.useState)(false),
|
|
138
191
|
open = _useState[0],
|
|
139
192
|
setOpen = _useState[1];
|
|
@@ -150,6 +203,22 @@ var DynamicDrawer = function DynamicDrawer(props) {
|
|
|
150
203
|
allSelection = _useState4[0],
|
|
151
204
|
setAllSelection = _useState4[1];
|
|
152
205
|
|
|
206
|
+
var getCounter = function getCounter(items, tagAccessor) {
|
|
207
|
+
var selectedItemsIds = R.reduce(function (acc, item) {
|
|
208
|
+
if (R.prop('isSelected', item)) {
|
|
209
|
+
return R.append(item.id, acc);
|
|
210
|
+
}
|
|
211
|
+
return acc;
|
|
212
|
+
}, [], items);
|
|
213
|
+
var itemsIds = R.pluck('id', items);
|
|
214
|
+
var count = R.pipe(R.uniq, R.length)(selectedItemsIds);
|
|
215
|
+
var total = R.pipe(R.uniq, R.length)(itemsIds);
|
|
216
|
+
if (R.is(Function, tagAccessor)) {
|
|
217
|
+
return tagAccessor(count, total);
|
|
218
|
+
}
|
|
219
|
+
return count + '/' + total;
|
|
220
|
+
};
|
|
221
|
+
|
|
153
222
|
var list = props.list,
|
|
154
223
|
labelRenderer = props.labelRenderer,
|
|
155
224
|
onClick = props.onClick,
|
|
@@ -164,11 +233,12 @@ var DynamicDrawer = function DynamicDrawer(props) {
|
|
|
164
233
|
allItems = props.allItems,
|
|
165
234
|
periodPanel = props.periodPanel,
|
|
166
235
|
classes = props.classes,
|
|
167
|
-
tag = props.tag,
|
|
168
236
|
_props$testId = props.testId,
|
|
169
237
|
testId = _props$testId === undefined ? 'tabs' : _props$testId,
|
|
238
|
+
tagAccessor = props.tagAccessor,
|
|
239
|
+
tagAriaLabel = props.tagAriaLabel,
|
|
170
240
|
children = props.children,
|
|
171
|
-
rest = _objectWithoutProperties(props, ['list', 'labelRenderer', 'onClick', 'handleChangePanel', 'isNarrow', 'labels', 'disableAccessor', 'expandAll', 'collapseAll', 'expandedIds', 'allItems', 'periodPanel', 'classes', '
|
|
241
|
+
rest = _objectWithoutProperties(props, ['list', 'labelRenderer', 'onClick', 'handleChangePanel', 'isNarrow', 'labels', 'disableAccessor', 'expandAll', 'collapseAll', 'expandedIds', 'allItems', 'periodPanel', 'classes', 'testId', 'tagAccessor', 'tagAriaLabel', 'children']);
|
|
172
242
|
|
|
173
243
|
var handleChange = function handleChange(e, item) {
|
|
174
244
|
console.log({ item: item, selection: selection, allSelection: allSelection });
|
|
@@ -183,6 +253,13 @@ var DynamicDrawer = function DynamicDrawer(props) {
|
|
|
183
253
|
setSelection({});
|
|
184
254
|
setOpen(false);
|
|
185
255
|
};
|
|
256
|
+
var handleClose = function handleClose() {
|
|
257
|
+
setOpen(false);
|
|
258
|
+
setAllSelection({});
|
|
259
|
+
setSelection({});
|
|
260
|
+
};
|
|
261
|
+
var isHidden = open && isNarrow;
|
|
262
|
+
var isNotHiddenButton = !R.isEmpty(allSelection) && isNarrow;
|
|
186
263
|
|
|
187
264
|
return _react2.default.createElement(
|
|
188
265
|
'div',
|
|
@@ -196,25 +273,59 @@ var DynamicDrawer = function DynamicDrawer(props) {
|
|
|
196
273
|
onChange: handleChange,
|
|
197
274
|
'aria-label': 'filters',
|
|
198
275
|
'data-testid': testId,
|
|
199
|
-
sx: {
|
|
276
|
+
sx: {
|
|
277
|
+
display: isHidden ? 'none' : 'flex',
|
|
278
|
+
width: '100%',
|
|
279
|
+
height: '100%',
|
|
280
|
+
borderRight: 1,
|
|
281
|
+
borderColor: 'divider'
|
|
282
|
+
}
|
|
200
283
|
},
|
|
201
284
|
R.map(function (item) {
|
|
285
|
+
var _cx2;
|
|
286
|
+
|
|
287
|
+
var Chip = R.isNil(item.tag) ? _.Tag : item.tag;
|
|
288
|
+
var tagValueLabel = R.isNil(item.tag) && getCounter(item.values, tagAriaLabel);
|
|
289
|
+
|
|
202
290
|
return _react2.default.createElement(_material.Tab, {
|
|
203
291
|
key: item.id,
|
|
204
292
|
id: filter.id,
|
|
205
293
|
'data-testid': item.id + '-tab',
|
|
206
294
|
component: function component(props) {
|
|
207
|
-
return PaperComponent(_extends({
|
|
295
|
+
return PaperComponent(_extends({
|
|
296
|
+
label: labelRenderer(item),
|
|
297
|
+
selected: filter.id === item.id,
|
|
298
|
+
tag: R.isNil(item.tag) ? _react2.default.createElement(
|
|
299
|
+
Chip,
|
|
300
|
+
{ items: item.values, tagValueLabel: tagValueLabel },
|
|
301
|
+
getCounter(item.values, tagAccessor)
|
|
302
|
+
) : item.tag
|
|
303
|
+
}, props));
|
|
208
304
|
},
|
|
209
305
|
label: labelRenderer(item),
|
|
210
306
|
'aria-label': labelRenderer(item),
|
|
211
|
-
sx: { alignItems: 'start', maxWidth: '100%' },
|
|
212
307
|
value: item,
|
|
213
308
|
'aria-selected': filter.id === item.id,
|
|
309
|
+
className: (0, _classnames2.default)(classNames.tab, (_cx2 = {}, _cx2[classNames.tabSelected] = filter.id === item.id, _cx2)),
|
|
310
|
+
sx: {
|
|
311
|
+
alignItems: 'start',
|
|
312
|
+
maxWidth: '100%'
|
|
313
|
+
},
|
|
214
314
|
wrapped: true
|
|
215
315
|
});
|
|
216
316
|
})(list),
|
|
217
|
-
open && _react2.default.createElement(
|
|
317
|
+
open && !isNarrow && _react2.default.createElement(
|
|
318
|
+
_.Button,
|
|
319
|
+
{
|
|
320
|
+
sx: { float: 'bottom', margin: '10px' },
|
|
321
|
+
'aria-label': R.prop('apply', labels),
|
|
322
|
+
id: 'apply_button',
|
|
323
|
+
variant: 'contained',
|
|
324
|
+
onClick: handleSubmit
|
|
325
|
+
},
|
|
326
|
+
R.prop('apply', labels)
|
|
327
|
+
),
|
|
328
|
+
isNotHiddenButton && _react2.default.createElement(
|
|
218
329
|
_.Button,
|
|
219
330
|
{
|
|
220
331
|
sx: { float: 'bottom', margin: '10px' },
|
|
@@ -234,9 +345,9 @@ var DynamicDrawer = function DynamicDrawer(props) {
|
|
|
234
345
|
open: open,
|
|
235
346
|
labels: labels,
|
|
236
347
|
classes: classes,
|
|
237
|
-
onClose:
|
|
238
|
-
|
|
239
|
-
|
|
348
|
+
onClose: handleClose,
|
|
349
|
+
isNarrow: isNarrow,
|
|
350
|
+
setOpen: setOpen
|
|
240
351
|
},
|
|
241
352
|
R.equals(filter.id, periodPanel) ? children : _react2.default.createElement(_AdvancedSelection2.default, _extends({
|
|
242
353
|
id: filter.id,
|
|
@@ -10,10 +10,6 @@ var _propTypes = require('prop-types');
|
|
|
10
10
|
|
|
11
11
|
var _propTypes2 = _interopRequireDefault(_propTypes);
|
|
12
12
|
|
|
13
|
-
var _classnames = require('classnames');
|
|
14
|
-
|
|
15
|
-
var _classnames2 = _interopRequireDefault(_classnames);
|
|
16
|
-
|
|
17
13
|
var _ramda = require('ramda');
|
|
18
14
|
|
|
19
15
|
var R = _interopRequireWildcard(_ramda);
|
|
@@ -28,74 +24,68 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
28
24
|
|
|
29
25
|
var mapIndexed = R.addIndex(R.map);
|
|
30
26
|
var ButtonCarousel = function ButtonCarousel(_ref) {
|
|
31
|
-
var _cx;
|
|
32
|
-
|
|
33
27
|
var selectionModes = _ref.selectionModes,
|
|
34
28
|
selectionMode = _ref.selectionMode,
|
|
35
29
|
setSelectionMode = _ref.setSelectionMode,
|
|
36
|
-
isNarrow = _ref.isNarrow,
|
|
37
30
|
classes = _ref.classes;
|
|
38
31
|
|
|
39
32
|
return _react2.default.createElement(
|
|
40
33
|
_material.Box,
|
|
41
34
|
{
|
|
42
35
|
sx: {
|
|
43
|
-
display: 'flex',
|
|
44
36
|
overflowX: 'auto',
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
overflowY: 'hidden',
|
|
38
|
+
whiteSpace: 'nowrap',
|
|
39
|
+
display: 'block', // allow horizontal scrolling
|
|
40
|
+
width: '100%',
|
|
41
|
+
maxWidth: '100%',
|
|
42
|
+
'&::-webkit-scrollbar': { display: 'none' }, // optional: hide scrollbar
|
|
43
|
+
scrollbarWidth: 'none'
|
|
50
44
|
}
|
|
51
45
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
46
|
+
mapIndexed(function (_ref2) {
|
|
47
|
+
var value = _ref2.value,
|
|
48
|
+
label = _ref2.label,
|
|
49
|
+
img = _ref2.img;
|
|
50
|
+
return _react2.default.createElement(
|
|
51
|
+
_.Tooltip,
|
|
52
|
+
{
|
|
53
|
+
key: value,
|
|
54
|
+
classes: { tooltip: classes.tooltip },
|
|
55
|
+
title: _react2.default.createElement('img', { style: { width: '72px', height: '90px' }, src: img, alt: value }),
|
|
56
|
+
tabIndex: -1
|
|
57
|
+
},
|
|
58
|
+
_react2.default.createElement(
|
|
59
|
+
_material.Button,
|
|
61
60
|
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
className: classes.selectButton,
|
|
62
|
+
selected: value === selectionMode,
|
|
63
|
+
onClick: function onClick() {
|
|
64
|
+
setSelectionMode(value);
|
|
65
|
+
},
|
|
66
|
+
'aria-pressed': value === selectionMode,
|
|
67
|
+
'aria-label': label,
|
|
68
|
+
tabIndex: 0,
|
|
69
|
+
sx: {
|
|
70
|
+
flex: '0 0 auto', // Prevents buttons from shrinking
|
|
71
|
+
scrollSnapAlign: 'center',
|
|
72
|
+
minWidth: 120, // Minimum width for buttons
|
|
73
|
+
whiteSpace: 'nowrap'
|
|
74
|
+
}
|
|
66
75
|
},
|
|
67
76
|
_react2.default.createElement(
|
|
68
|
-
_material.
|
|
69
|
-
{
|
|
70
|
-
className: classes.selectButton,
|
|
71
|
-
selected: value === selectionMode,
|
|
72
|
-
onClick: function onClick() {
|
|
73
|
-
setSelectionMode(value);
|
|
74
|
-
},
|
|
75
|
-
'aria-pressed': value === selectionMode,
|
|
76
|
-
'aria-label': label,
|
|
77
|
-
tabIndex: 0,
|
|
78
|
-
sx: {
|
|
79
|
-
flex: '0 0 auto', // Prevents buttons from shrinking
|
|
80
|
-
scrollSnapAlign: 'center',
|
|
81
|
-
minWidth: 120, // Minimum width for buttons
|
|
82
|
-
whiteSpace: 'nowrap'
|
|
83
|
-
}
|
|
84
|
-
},
|
|
77
|
+
_material.Paper,
|
|
78
|
+
{ elevation: 0, className: classes.selectModeItem, key: value },
|
|
85
79
|
_react2.default.createElement(
|
|
86
|
-
_material.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
label
|
|
92
|
-
),
|
|
93
|
-
!R.isNil(img) && R.is(String, img) && _react2.default.createElement('img', { src: img, alt: value })
|
|
94
|
-
)
|
|
80
|
+
_material.Typography,
|
|
81
|
+
null,
|
|
82
|
+
label
|
|
83
|
+
),
|
|
84
|
+
!R.isNil(img) && R.is(String, img) && _react2.default.createElement('img', { src: img, alt: value })
|
|
95
85
|
)
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
)
|
|
86
|
+
)
|
|
87
|
+
);
|
|
88
|
+
}, selectionModes)
|
|
99
89
|
);
|
|
100
90
|
};
|
|
101
91
|
|
|
@@ -110,7 +100,6 @@ ButtonCarousel.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
110
100
|
})).isRequired,
|
|
111
101
|
selectionMode: _propTypes2.default.string.isRequired,
|
|
112
102
|
setSelectionMode: _propTypes2.default.func.isRequired,
|
|
113
|
-
classes: _propTypes2.default.object.isRequired
|
|
114
|
-
isNarrow: _propTypes2.default.bool.isRequired
|
|
103
|
+
classes: _propTypes2.default.object.isRequired
|
|
115
104
|
} : {};
|
|
116
105
|
module.exports = exports['default'];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sis-cc/dotstatsuite-visions",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.20.2",
|
|
4
4
|
"description": "Library of visual components",
|
|
5
5
|
"author": "OECD",
|
|
6
6
|
"homepage": "https://visions-qa.siscc.org/#o",
|
|
@@ -37,7 +37,6 @@
|
|
|
37
37
|
"@mui/styles": "^5.16.5",
|
|
38
38
|
"@react-hook/size": "^2.1.1",
|
|
39
39
|
"classnames": "^2.2.6",
|
|
40
|
-
"cross-env": "^7.0.3",
|
|
41
40
|
"date-fns": "^1.30.1",
|
|
42
41
|
"isemail": "^3.2.0",
|
|
43
42
|
"numeral": "^2.0.6",
|