@sis-cc/dotstatsuite-visions 10.14.0 → 10.15.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.
- package/es/Chips/CustomChip.js +69 -33
- package/es/Chips/GroupedChips.js +7 -3
- package/es/Chips/utils.js +7 -0
- package/es/DataFooter/DataFooter.js +4 -7
- package/es/ExpansionPanel/ExpansionPanel.js +1 -1
- package/es/HierarchicalFilter/HierarchicalFilter.js +7 -3
- package/es/TableHtml5/flags.js +27 -2
- package/es/TableHtml5/section.js +1 -1
- package/es/Tag/Tag.js +5 -3
- package/es/VirtualizedTree/Item.js +21 -5
- package/es/VirtualizedTree/VirtualizedTree.js +6 -9
- package/lib/Chips/CustomChip.js +67 -31
- package/lib/Chips/GroupedChips.js +7 -3
- package/lib/Chips/utils.js +8 -1
- package/lib/DataFooter/DataFooter.js +4 -7
- package/lib/ExpansionPanel/ExpansionPanel.js +1 -1
- package/lib/HierarchicalFilter/HierarchicalFilter.js +7 -3
- package/lib/TableHtml5/flags.js +26 -1
- package/lib/TableHtml5/section.js +1 -1
- package/lib/Tag/Tag.js +5 -3
- package/lib/VirtualizedTree/Item.js +20 -4
- package/lib/VirtualizedTree/VirtualizedTree.js +6 -12
- package/package.json +1 -1
- package/umd/@sis-cc/dotstatsuite-visions.js +446 -358
- package/umd/@sis-cc/dotstatsuite-visions.min.js +10 -10
- package/umd/@sis-cc/dotstatsuite-visions.min.js.map +1 -1
package/es/Chips/CustomChip.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useState, useCallback, useEffect } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import * as R from 'ramda';
|
|
4
4
|
import cx from 'classnames';
|
|
@@ -9,7 +9,7 @@ import Cross from '../Icons/Cross';
|
|
|
9
9
|
import { getIsRtl } from '../utils';
|
|
10
10
|
import Tooltip from '../Tooltip';
|
|
11
11
|
import makeStylesFn from './styles';
|
|
12
|
-
import { myTooltipRenderer, showMultiLinedTooltip, shownTooltip } from './utils';
|
|
12
|
+
import { myTooltipRenderer, myTooltipRendererSrOnly, showMultiLinedTooltip, shownTooltip } from './utils';
|
|
13
13
|
|
|
14
14
|
var useStyles = makeStyles(makeStylesFn);
|
|
15
15
|
|
|
@@ -32,6 +32,7 @@ var CustomChip = function CustomChip(_ref) {
|
|
|
32
32
|
testId = _ref$testId === undefined ? 'deleteChip-test-id' : _ref$testId,
|
|
33
33
|
_ref$labelRenderer = _ref.labelRenderer,
|
|
34
34
|
labelRenderer = _ref$labelRenderer === undefined ? R.prop('label') : _ref$labelRenderer,
|
|
35
|
+
ariaLabelTooltip = _ref.ariaLabelTooltip,
|
|
35
36
|
deprecated = _ref.deprecated;
|
|
36
37
|
|
|
37
38
|
var theme = useTheme();
|
|
@@ -54,18 +55,51 @@ var CustomChip = function CustomChip(_ref) {
|
|
|
54
55
|
})(R.prop('parents')(R.head(arr)));
|
|
55
56
|
};
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
58
|
+
var multiLinedTooltipRendererSrOnly = function multiLinedTooltipRendererSrOnly(items) {
|
|
59
|
+
return R.join(',')(R.map(myTooltipRendererSrOnly({ isRtl: isRtl, labelRenderer: labelRenderer, ariaLabelTooltip: ariaLabelTooltip }), R.propOr([], 'parents')(R.head(items))));
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
var _useState = useState(false),
|
|
63
|
+
open = _useState[0],
|
|
64
|
+
setOpen = _useState[1];
|
|
65
|
+
|
|
66
|
+
var handler = useCallback(function (e) {
|
|
67
|
+
if (e.key === 'Escape') {
|
|
68
|
+
setOpen(false);
|
|
69
|
+
}
|
|
70
|
+
}, []);
|
|
71
|
+
|
|
72
|
+
useEffect(function () {
|
|
73
|
+
document.addEventListener('keydown', handler);
|
|
74
|
+
return function () {
|
|
75
|
+
document.removeEventListener('keydown', handler);
|
|
76
|
+
};
|
|
77
|
+
}, []);
|
|
78
|
+
return React.createElement(Chip, {
|
|
79
|
+
'data-testid': testId,
|
|
80
|
+
size: 'small',
|
|
81
|
+
'aria-label': R.isNil(onDelete) ? label : null,
|
|
82
|
+
tabIndex: R.isNil(onDelete) ? 0 : -1,
|
|
83
|
+
label: hasTooltip || hasMultiLinedTooltip ? React.createElement(
|
|
84
|
+
Tooltip,
|
|
85
|
+
{
|
|
86
|
+
placement: 'top',
|
|
87
|
+
title: hasTooltip ? renderer(items) : hasMultiLinedTooltip ? multiLinedTooltipRenderer(items) : '',
|
|
88
|
+
tabIndex: 0,
|
|
89
|
+
'aria-label': hasTooltip ? myTooltipRendererSrOnly({ isRtl: isRtl, labelRenderer: labelRenderer, ariaLabelTooltip: ariaLabelTooltip })(items) : hasMultiLinedTooltip ? multiLinedTooltipRendererSrOnly(items) : null,
|
|
90
|
+
'aria-hidden': false,
|
|
91
|
+
interactive: true,
|
|
92
|
+
onOpen: function onOpen() {
|
|
93
|
+
return setOpen(true);
|
|
94
|
+
},
|
|
95
|
+
onClose: function onClose() {
|
|
96
|
+
return setOpen(false);
|
|
97
|
+
},
|
|
98
|
+
disableHoverListener: !hasTooltip && !hasMultiLinedTooltip,
|
|
99
|
+
open: open
|
|
100
|
+
},
|
|
101
|
+
React.createElement(
|
|
102
|
+
'span',
|
|
69
103
|
null,
|
|
70
104
|
'...',
|
|
71
105
|
React.createElement(
|
|
@@ -74,24 +108,25 @@ var CustomChip = function CustomChip(_ref) {
|
|
|
74
108
|
'>'
|
|
75
109
|
),
|
|
76
110
|
label
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
})
|
|
94
|
-
|
|
111
|
+
)
|
|
112
|
+
) : label,
|
|
113
|
+
role: 'presentation',
|
|
114
|
+
deleteIcon: React.createElement(
|
|
115
|
+
IconButton,
|
|
116
|
+
{
|
|
117
|
+
disableRipple: true,
|
|
118
|
+
className: iconClasses,
|
|
119
|
+
'aria-label': ariaLabel + ' ' + label,
|
|
120
|
+
component: 'span',
|
|
121
|
+
tabIndex: 0
|
|
122
|
+
},
|
|
123
|
+
React.createElement(Cross, null)
|
|
124
|
+
),
|
|
125
|
+
clickable: true,
|
|
126
|
+
onDelete: onChange,
|
|
127
|
+
className: cx(chipClasses, (_cx = {}, _cx[classes.tooltipIndicator] = hasTooltip || hasMultiLinedTooltip, _cx)),
|
|
128
|
+
classes: { label: labelClasses }
|
|
129
|
+
});
|
|
95
130
|
};
|
|
96
131
|
|
|
97
132
|
CustomChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
@@ -107,7 +142,8 @@ CustomChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
107
142
|
ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
108
143
|
items: PropTypes.array,
|
|
109
144
|
labelRenderer: PropTypes.func,
|
|
110
|
-
deprecated: PropTypes.array
|
|
145
|
+
deprecated: PropTypes.array,
|
|
146
|
+
ariaLabelTooltip: PropTypes.string
|
|
111
147
|
} : {};
|
|
112
148
|
|
|
113
149
|
export default CustomChip;
|
package/es/Chips/GroupedChips.js
CHANGED
|
@@ -22,7 +22,9 @@ var GroupedChips = function GroupedChips(_ref) {
|
|
|
22
22
|
reducingNbChips = _ref$reducingNbChips === undefined ? 15 : _ref$reducingNbChips,
|
|
23
23
|
labels = _ref.labels,
|
|
24
24
|
_ref$testId = _ref.testId,
|
|
25
|
-
testId = _ref$testId === undefined ? 'chips-test-id' : _ref$testId
|
|
25
|
+
testId = _ref$testId === undefined ? 'chips-test-id' : _ref$testId,
|
|
26
|
+
_ref$ariaLabelTooltip = _ref.ariaLabelTooltip,
|
|
27
|
+
ariaLabelTooltip = _ref$ariaLabelTooltip === undefined ? ' parent of ' : _ref$ariaLabelTooltip;
|
|
26
28
|
var parentId = itemProps.id,
|
|
27
29
|
isNotRemovable = itemProps.isNotRemovable,
|
|
28
30
|
_itemProps$values = itemProps.values,
|
|
@@ -72,7 +74,8 @@ var GroupedChips = function GroupedChips(_ref) {
|
|
|
72
74
|
onDelete: isNotRemovable ? null : onDelete,
|
|
73
75
|
chipClasses: cx(classes.secondaryChip, classes.chip),
|
|
74
76
|
iconClasses: classes.icon,
|
|
75
|
-
labelClasses: cx(classes.formatLabel)
|
|
77
|
+
labelClasses: cx(classes.formatLabel),
|
|
78
|
+
ariaLabelTooltip: ariaLabelTooltip
|
|
76
79
|
});
|
|
77
80
|
})(values)
|
|
78
81
|
);
|
|
@@ -96,6 +99,7 @@ GroupedChips.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
96
99
|
reducingNbChips: PropTypes.number,
|
|
97
100
|
labels: PropTypes.shape({
|
|
98
101
|
reducingChip: PropTypes.oneOfType([PropTypes.string, PropTypes.element])
|
|
99
|
-
})
|
|
102
|
+
}),
|
|
103
|
+
ariaLabelTooltip: PropTypes.string
|
|
100
104
|
} : {};
|
|
101
105
|
export default GroupedChips;
|
package/es/Chips/utils.js
CHANGED
|
@@ -6,6 +6,13 @@ export var myTooltipRenderer = function myTooltipRenderer(_ref) {
|
|
|
6
6
|
return R.pipe(R.map(labelRenderer), R.when(R.always(isRtl), R.reverse), R.join(isRtl ? ' < ' : ' > '));
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
+
export var myTooltipRendererSrOnly = function myTooltipRendererSrOnly(_ref2) {
|
|
10
|
+
var isRtl = _ref2.isRtl,
|
|
11
|
+
labelRenderer = _ref2.labelRenderer,
|
|
12
|
+
ariaLabelTooltip = _ref2.ariaLabelTooltip;
|
|
13
|
+
return R.pipe(R.map(labelRenderer), R.when(R.always(isRtl), R.reverse), R.join(ariaLabelTooltip));
|
|
14
|
+
};
|
|
15
|
+
|
|
9
16
|
export var isLast = function isLast(index, list) {
|
|
10
17
|
return index + 1 === R.length(list);
|
|
11
18
|
};
|
|
@@ -114,6 +114,7 @@ var DataFooter = function DataFooter(_ref3) {
|
|
|
114
114
|
{ variant: 'body2' },
|
|
115
115
|
copyright.content
|
|
116
116
|
),
|
|
117
|
+
'aria-label': copyright.content,
|
|
117
118
|
variant: 'light',
|
|
118
119
|
tabIndex: 0,
|
|
119
120
|
'aria-hidden': false,
|
|
@@ -127,7 +128,8 @@ var DataFooter = function DataFooter(_ref3) {
|
|
|
127
128
|
{
|
|
128
129
|
variant: 'body2',
|
|
129
130
|
className: classes.typo,
|
|
130
|
-
style: { cursor: 'pointer' }
|
|
131
|
+
style: { cursor: 'pointer' },
|
|
132
|
+
role: 'button'
|
|
131
133
|
},
|
|
132
134
|
copyright.label
|
|
133
135
|
)
|
|
@@ -147,12 +149,7 @@ var DataFooter = function DataFooter(_ref3) {
|
|
|
147
149
|
{ variant: 'body2', className: classes.typo },
|
|
148
150
|
React.createElement(
|
|
149
151
|
Link,
|
|
150
|
-
{
|
|
151
|
-
href: source.link,
|
|
152
|
-
rel: 'noopener noreferrer',
|
|
153
|
-
target: '_blank',
|
|
154
|
-
variant: 'body2'
|
|
155
|
-
},
|
|
152
|
+
{ href: source.link, rel: 'noopener noreferrer', target: '_blank', variant: 'body2' },
|
|
156
153
|
source.label
|
|
157
154
|
)
|
|
158
155
|
)
|
|
@@ -67,7 +67,7 @@ var CustomExpansionPanel = function CustomExpansionPanel(_ref) {
|
|
|
67
67
|
expandIcon: React.createElement(ExpandMoreIcon, null),
|
|
68
68
|
'aria-controls': id,
|
|
69
69
|
id: id,
|
|
70
|
-
'aria-label': label
|
|
70
|
+
'aria-label': isPinned ? label + ' ' + pinnedLabel + ' ' : label
|
|
71
71
|
},
|
|
72
72
|
React.createElement(
|
|
73
73
|
Grid,
|
|
@@ -46,6 +46,7 @@ var HierarchicalFilter = function HierarchicalFilter(props) {
|
|
|
46
46
|
label = props.label,
|
|
47
47
|
labels = props.labels,
|
|
48
48
|
tagAccessor = props.tagAccessor,
|
|
49
|
+
tagAriaLabel = props.tagAriaLabel,
|
|
49
50
|
expandedIds = props.expandedIds,
|
|
50
51
|
spotlight = props.spotlight,
|
|
51
52
|
setSpotlight = props.setSpotlight,
|
|
@@ -64,6 +65,7 @@ var HierarchicalFilter = function HierarchicalFilter(props) {
|
|
|
64
65
|
var _disableAccessor = simpleSelectionMode ? disableAccessor : getEvolvedDisableAccessor(_allGroupedItems, disableAccessor, R.always(false));
|
|
65
66
|
|
|
66
67
|
var tagValue = getCounter(items, _disableAccessor, tagAccessor);
|
|
68
|
+
var tagValueLabel = getCounter(items, _disableAccessor, tagAriaLabel);
|
|
67
69
|
var isDisabled = function isDisabled(item) {
|
|
68
70
|
return R.is(Function, disableAccessor) ? disableAccessor(item) : false;
|
|
69
71
|
};
|
|
@@ -84,12 +86,13 @@ var HierarchicalFilter = function HierarchicalFilter(props) {
|
|
|
84
86
|
label: labelRenderer({ id: id, label: label }),
|
|
85
87
|
onChangeActivePanel: onChangeActivePanel,
|
|
86
88
|
overflow: true,
|
|
89
|
+
tagValueLabel: tagValueLabel,
|
|
87
90
|
topElementComponent: React.createElement(
|
|
88
91
|
Fragment,
|
|
89
92
|
null,
|
|
90
93
|
React.createElement(
|
|
91
94
|
Container,
|
|
92
|
-
{ disableGutters: true, className: classes.spotlightContainer },
|
|
95
|
+
{ disableGutters: true, className: classes.spotlightContainer, role: 'presentation' },
|
|
93
96
|
hasSpotlight && React.createElement(Spotlight, {
|
|
94
97
|
className: { container: classes.middle },
|
|
95
98
|
fullWidth: true,
|
|
@@ -122,7 +125,7 @@ var HierarchicalFilter = function HierarchicalFilter(props) {
|
|
|
122
125
|
),
|
|
123
126
|
tag: React.createElement(
|
|
124
127
|
Chip,
|
|
125
|
-
{ items: items },
|
|
128
|
+
{ items: items, tagValueLabel: tagValueLabel },
|
|
126
129
|
tagValue
|
|
127
130
|
)
|
|
128
131
|
}, expansionPanelProps),
|
|
@@ -162,7 +165,8 @@ HierarchicalFilter.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
162
165
|
setSpotlight: PropTypes.func,
|
|
163
166
|
hasSpotlight: PropTypes.bool,
|
|
164
167
|
allItems: PropTypes.array,
|
|
165
|
-
simpleSelectionMode: PropTypes.bool
|
|
168
|
+
simpleSelectionMode: PropTypes.bool,
|
|
169
|
+
tagAriaLabel: PropTypes.func
|
|
166
170
|
} : {};
|
|
167
171
|
|
|
168
172
|
export default withSpotlight(withExpansionTree(HierarchicalFilter));
|
package/es/TableHtml5/flags.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
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
2
|
|
|
3
|
-
import React, { Fragment } from 'react';
|
|
3
|
+
import React, { Fragment, useState, useCallback, useEffect } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import * as R from 'ramda';
|
|
6
6
|
import cx from 'classnames';
|
|
@@ -51,6 +51,23 @@ var Flags = function Flags(_ref) {
|
|
|
51
51
|
|
|
52
52
|
var classes = useStyles();
|
|
53
53
|
var noFlags = R.isNil(flags) || R.isEmpty(flags);
|
|
54
|
+
|
|
55
|
+
var _useState = useState(false),
|
|
56
|
+
open = _useState[0],
|
|
57
|
+
setOpen = _useState[1];
|
|
58
|
+
|
|
59
|
+
var handler = useCallback(function (e) {
|
|
60
|
+
if (e.key === 'Escape') {
|
|
61
|
+
setOpen(false);
|
|
62
|
+
}
|
|
63
|
+
}, []);
|
|
64
|
+
|
|
65
|
+
useEffect(function () {
|
|
66
|
+
document.addEventListener('keydown', handler);
|
|
67
|
+
return function () {
|
|
68
|
+
document.removeEventListener('keydown', handler);
|
|
69
|
+
};
|
|
70
|
+
}, []);
|
|
54
71
|
if (noFlags) return null;
|
|
55
72
|
|
|
56
73
|
var hasUncoded = R.any(R.complement(R.has('code')), flags);
|
|
@@ -80,7 +97,15 @@ var Flags = function Flags(_ref) {
|
|
|
80
97
|
'aria-label': R.join(', ', labels),
|
|
81
98
|
'aria-hidden': false,
|
|
82
99
|
title: content,
|
|
83
|
-
placement: 'top'
|
|
100
|
+
placement: 'top',
|
|
101
|
+
open: open,
|
|
102
|
+
interactive: true,
|
|
103
|
+
onOpen: function onOpen() {
|
|
104
|
+
return setOpen(true);
|
|
105
|
+
},
|
|
106
|
+
onClose: function onClose() {
|
|
107
|
+
return setOpen(false);
|
|
108
|
+
}
|
|
84
109
|
},
|
|
85
110
|
React.createElement(
|
|
86
111
|
'span',
|
package/es/TableHtml5/section.js
CHANGED
|
@@ -195,7 +195,7 @@ var Section = function Section(_ref) {
|
|
|
195
195
|
return R.isNil(val) ? missingValLabel : cellValueAccessor(val);
|
|
196
196
|
}))(cells), {
|
|
197
197
|
key: intersectionCellId,
|
|
198
|
-
headers: rowIds + ' ' + columnIds + ' ' + currentSection
|
|
198
|
+
headers: rowIds + ' ' + columnIds + ' ' + currentSection,
|
|
199
199
|
cellHandler: cellHandler,
|
|
200
200
|
HTMLRenderer: HTMLRenderer,
|
|
201
201
|
labelAccessor: labelAccessor,
|
package/es/Tag/Tag.js
CHANGED
|
@@ -18,7 +18,8 @@ var useStyles = makeStyles(function (theme) {
|
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
var Tag = function Tag(_ref) {
|
|
21
|
-
var children = _ref.children
|
|
21
|
+
var children = _ref.children,
|
|
22
|
+
tagValueLabel = _ref.tagValueLabel;
|
|
22
23
|
|
|
23
24
|
var classes = useStyles();
|
|
24
25
|
|
|
@@ -29,14 +30,15 @@ var Tag = function Tag(_ref) {
|
|
|
29
30
|
null,
|
|
30
31
|
React.createElement(
|
|
31
32
|
Typography,
|
|
32
|
-
{ className: classes.tag },
|
|
33
|
+
{ tabIndex: 0, className: classes.tag, 'aria-label': tagValueLabel },
|
|
33
34
|
children
|
|
34
35
|
)
|
|
35
36
|
);
|
|
36
37
|
};
|
|
37
38
|
|
|
38
39
|
Tag.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
39
|
-
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])
|
|
40
|
+
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),
|
|
41
|
+
tagValueLabel: PropTypes.string
|
|
40
42
|
} : {};
|
|
41
43
|
|
|
42
44
|
export default Tag;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
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
2
|
|
|
3
|
-
import React from 'react';
|
|
3
|
+
import React, { useCallback, useEffect } from 'react';
|
|
4
4
|
import * as R from 'ramda';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import ListItem from '@material-ui/core/ListItem';
|
|
@@ -48,6 +48,20 @@ var Item = function Item(_ref) {
|
|
|
48
48
|
setIsTooltipShown = _React$useState[1];
|
|
49
49
|
|
|
50
50
|
var padding = depth * 30 + (depth > 0 && !hasChildrenOnLevel ? 30 : 0) + (!hasChild && hasChildrenOnLevel ? 30 : 0);
|
|
51
|
+
|
|
52
|
+
var handler = useCallback(function (e) {
|
|
53
|
+
if (e.key === 'Escape') {
|
|
54
|
+
setIsTooltipShown(false);
|
|
55
|
+
}
|
|
56
|
+
}, []);
|
|
57
|
+
|
|
58
|
+
useEffect(function () {
|
|
59
|
+
document.addEventListener('keydown', handler);
|
|
60
|
+
return function () {
|
|
61
|
+
document.removeEventListener('keydown', handler);
|
|
62
|
+
};
|
|
63
|
+
}, []);
|
|
64
|
+
|
|
51
65
|
return React.createElement(
|
|
52
66
|
ListItem,
|
|
53
67
|
{
|
|
@@ -58,7 +72,8 @@ var Item = function Item(_ref) {
|
|
|
58
72
|
tabIndex: -1,
|
|
59
73
|
style: _extends({}, style, (_extends2 = {
|
|
60
74
|
flexDirection: isRtl ? 'row-reverse' : 'row'
|
|
61
|
-
}, _extends2['' + (isRtl ? 'paddingRight' : 'paddingLeft')] = padding + 'px', _extends2))
|
|
75
|
+
}, _extends2['' + (isRtl ? 'paddingRight' : 'paddingLeft')] = padding + 'px', _extends2)),
|
|
76
|
+
role: 'listitem'
|
|
62
77
|
},
|
|
63
78
|
R.and(NavigateIcon, hasChild) && React.createElement(
|
|
64
79
|
IconButton,
|
|
@@ -97,8 +112,7 @@ var Item = function Item(_ref) {
|
|
|
97
112
|
primary: React.createElement(
|
|
98
113
|
'div',
|
|
99
114
|
{
|
|
100
|
-
className: cx(classes.labelContainer, (_cx2 = {}, _cx2[classes.rtlLabelContainer] = isRtl, _cx2))
|
|
101
|
-
style: { pointerEvents: 'none' }
|
|
115
|
+
className: cx(classes.labelContainer, (_cx2 = {}, _cx2[classes.rtlLabelContainer] = isRtl, _cx2))
|
|
102
116
|
},
|
|
103
117
|
React.createElement(
|
|
104
118
|
Icon,
|
|
@@ -135,7 +149,9 @@ var Item = function Item(_ref) {
|
|
|
135
149
|
},
|
|
136
150
|
onClose: function onClose() {
|
|
137
151
|
return setIsTooltipShown(false);
|
|
138
|
-
}
|
|
152
|
+
},
|
|
153
|
+
disableHoverListener: R.isEmpty(description),
|
|
154
|
+
open: isTooltipShown
|
|
139
155
|
},
|
|
140
156
|
React.createElement(
|
|
141
157
|
Typography,
|
|
@@ -7,7 +7,6 @@ import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer';
|
|
|
7
7
|
import VirtualizedList from 'react-virtualized/dist/commonjs/List';
|
|
8
8
|
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
|
|
9
9
|
import ExpandLessIcon from '@material-ui/icons/ExpandLess';
|
|
10
|
-
import List from '@material-ui/core/List';
|
|
11
10
|
import Item from './Item';
|
|
12
11
|
import { useTheme } from '@material-ui/core';
|
|
13
12
|
import { useStyles, height as rowHeight } from '../ScopeList/styles';
|
|
@@ -278,25 +277,24 @@ var VirtualizedTree = function VirtualizedTree(props) {
|
|
|
278
277
|
}
|
|
279
278
|
var isRtl = getIsRtl(theme);
|
|
280
279
|
return React.createElement(
|
|
281
|
-
|
|
280
|
+
'div',
|
|
282
281
|
{
|
|
283
|
-
disablePadding: true,
|
|
284
282
|
style: { height: maxHeight + 2 },
|
|
285
283
|
onKeyUp: onKeyUp,
|
|
286
284
|
onMouseUp: onMouseUp,
|
|
287
285
|
onMouseLeave: onMouseLeave,
|
|
288
|
-
ref: ref
|
|
286
|
+
ref: ref,
|
|
287
|
+
role: 'presentation'
|
|
289
288
|
},
|
|
290
289
|
React.createElement(
|
|
291
290
|
AutoSizer,
|
|
292
|
-
|
|
291
|
+
null,
|
|
293
292
|
function (_ref) {
|
|
294
293
|
var height = _ref.height,
|
|
295
294
|
width = _ref.width;
|
|
296
295
|
return React.createElement(VirtualizedList, {
|
|
296
|
+
containerRole: 'list',
|
|
297
297
|
role: 'presentation',
|
|
298
|
-
'aria-readonly': null,
|
|
299
|
-
'aria-label': 'content',
|
|
300
298
|
overscan: 10,
|
|
301
299
|
tabIndex: -1,
|
|
302
300
|
height: height + 2,
|
|
@@ -332,8 +330,7 @@ var VirtualizedTree = function VirtualizedTree(props) {
|
|
|
332
330
|
style: style,
|
|
333
331
|
accessibility: accessibility,
|
|
334
332
|
ariaLabel: R.prop('navigateNext')(labels),
|
|
335
|
-
theme: theme
|
|
336
|
-
role: 'presentation'
|
|
333
|
+
theme: theme
|
|
337
334
|
}));
|
|
338
335
|
}
|
|
339
336
|
});
|
package/lib/Chips/CustomChip.js
CHANGED
|
@@ -69,6 +69,7 @@ var CustomChip = function CustomChip(_ref) {
|
|
|
69
69
|
testId = _ref$testId === undefined ? 'deleteChip-test-id' : _ref$testId,
|
|
70
70
|
_ref$labelRenderer = _ref.labelRenderer,
|
|
71
71
|
labelRenderer = _ref$labelRenderer === undefined ? R.prop('label') : _ref$labelRenderer,
|
|
72
|
+
ariaLabelTooltip = _ref.ariaLabelTooltip,
|
|
72
73
|
deprecated = _ref.deprecated;
|
|
73
74
|
|
|
74
75
|
var theme = (0, _styles.useTheme)();
|
|
@@ -91,18 +92,51 @@ var CustomChip = function CustomChip(_ref) {
|
|
|
91
92
|
})(R.prop('parents')(R.head(arr)));
|
|
92
93
|
};
|
|
93
94
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
95
|
+
var multiLinedTooltipRendererSrOnly = function multiLinedTooltipRendererSrOnly(items) {
|
|
96
|
+
return R.join(',')(R.map((0, _utils2.myTooltipRendererSrOnly)({ isRtl: isRtl, labelRenderer: labelRenderer, ariaLabelTooltip: ariaLabelTooltip }), R.propOr([], 'parents')(R.head(items))));
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
var _useState = (0, _react.useState)(false),
|
|
100
|
+
open = _useState[0],
|
|
101
|
+
setOpen = _useState[1];
|
|
102
|
+
|
|
103
|
+
var handler = (0, _react.useCallback)(function (e) {
|
|
104
|
+
if (e.key === 'Escape') {
|
|
105
|
+
setOpen(false);
|
|
106
|
+
}
|
|
107
|
+
}, []);
|
|
108
|
+
|
|
109
|
+
(0, _react.useEffect)(function () {
|
|
110
|
+
document.addEventListener('keydown', handler);
|
|
111
|
+
return function () {
|
|
112
|
+
document.removeEventListener('keydown', handler);
|
|
113
|
+
};
|
|
114
|
+
}, []);
|
|
115
|
+
return _react2.default.createElement(_Chip2.default, {
|
|
116
|
+
'data-testid': testId,
|
|
117
|
+
size: 'small',
|
|
118
|
+
'aria-label': R.isNil(onDelete) ? label : null,
|
|
119
|
+
tabIndex: R.isNil(onDelete) ? 0 : -1,
|
|
120
|
+
label: hasTooltip || hasMultiLinedTooltip ? _react2.default.createElement(
|
|
121
|
+
_Tooltip2.default,
|
|
122
|
+
{
|
|
123
|
+
placement: 'top',
|
|
124
|
+
title: hasTooltip ? renderer(items) : hasMultiLinedTooltip ? multiLinedTooltipRenderer(items) : '',
|
|
125
|
+
tabIndex: 0,
|
|
126
|
+
'aria-label': hasTooltip ? (0, _utils2.myTooltipRendererSrOnly)({ isRtl: isRtl, labelRenderer: labelRenderer, ariaLabelTooltip: ariaLabelTooltip })(items) : hasMultiLinedTooltip ? multiLinedTooltipRendererSrOnly(items) : null,
|
|
127
|
+
'aria-hidden': false,
|
|
128
|
+
interactive: true,
|
|
129
|
+
onOpen: function onOpen() {
|
|
130
|
+
return setOpen(true);
|
|
131
|
+
},
|
|
132
|
+
onClose: function onClose() {
|
|
133
|
+
return setOpen(false);
|
|
134
|
+
},
|
|
135
|
+
disableHoverListener: !hasTooltip && !hasMultiLinedTooltip,
|
|
136
|
+
open: open
|
|
137
|
+
},
|
|
138
|
+
_react2.default.createElement(
|
|
139
|
+
'span',
|
|
106
140
|
null,
|
|
107
141
|
'...',
|
|
108
142
|
_react2.default.createElement(
|
|
@@ -111,24 +145,25 @@ var CustomChip = function CustomChip(_ref) {
|
|
|
111
145
|
'>'
|
|
112
146
|
),
|
|
113
147
|
label
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
})
|
|
131
|
-
|
|
148
|
+
)
|
|
149
|
+
) : label,
|
|
150
|
+
role: 'presentation',
|
|
151
|
+
deleteIcon: _react2.default.createElement(
|
|
152
|
+
_IconButton2.default,
|
|
153
|
+
{
|
|
154
|
+
disableRipple: true,
|
|
155
|
+
className: iconClasses,
|
|
156
|
+
'aria-label': ariaLabel + ' ' + label,
|
|
157
|
+
component: 'span',
|
|
158
|
+
tabIndex: 0
|
|
159
|
+
},
|
|
160
|
+
_react2.default.createElement(_Cross2.default, null)
|
|
161
|
+
),
|
|
162
|
+
clickable: true,
|
|
163
|
+
onDelete: onChange,
|
|
164
|
+
className: (0, _classnames2.default)(chipClasses, (_cx = {}, _cx[classes.tooltipIndicator] = hasTooltip || hasMultiLinedTooltip, _cx)),
|
|
165
|
+
classes: { label: labelClasses }
|
|
166
|
+
});
|
|
132
167
|
};
|
|
133
168
|
|
|
134
169
|
CustomChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
@@ -144,7 +179,8 @@ CustomChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
144
179
|
ariaLabel: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
|
|
145
180
|
items: _propTypes2.default.array,
|
|
146
181
|
labelRenderer: _propTypes2.default.func,
|
|
147
|
-
deprecated: _propTypes2.default.array
|
|
182
|
+
deprecated: _propTypes2.default.array,
|
|
183
|
+
ariaLabelTooltip: _propTypes2.default.string
|
|
148
184
|
} : {};
|
|
149
185
|
|
|
150
186
|
exports.default = CustomChip;
|
|
@@ -50,7 +50,9 @@ var GroupedChips = function GroupedChips(_ref) {
|
|
|
50
50
|
reducingNbChips = _ref$reducingNbChips === undefined ? 15 : _ref$reducingNbChips,
|
|
51
51
|
labels = _ref.labels,
|
|
52
52
|
_ref$testId = _ref.testId,
|
|
53
|
-
testId = _ref$testId === undefined ? 'chips-test-id' : _ref$testId
|
|
53
|
+
testId = _ref$testId === undefined ? 'chips-test-id' : _ref$testId,
|
|
54
|
+
_ref$ariaLabelTooltip = _ref.ariaLabelTooltip,
|
|
55
|
+
ariaLabelTooltip = _ref$ariaLabelTooltip === undefined ? ' parent of ' : _ref$ariaLabelTooltip;
|
|
54
56
|
var parentId = itemProps.id,
|
|
55
57
|
isNotRemovable = itemProps.isNotRemovable,
|
|
56
58
|
_itemProps$values = itemProps.values,
|
|
@@ -100,7 +102,8 @@ var GroupedChips = function GroupedChips(_ref) {
|
|
|
100
102
|
onDelete: isNotRemovable ? null : onDelete,
|
|
101
103
|
chipClasses: (0, _classnames2.default)(classes.secondaryChip, classes.chip),
|
|
102
104
|
iconClasses: classes.icon,
|
|
103
|
-
labelClasses: (0, _classnames2.default)(classes.formatLabel)
|
|
105
|
+
labelClasses: (0, _classnames2.default)(classes.formatLabel),
|
|
106
|
+
ariaLabelTooltip: ariaLabelTooltip
|
|
104
107
|
});
|
|
105
108
|
})(values)
|
|
106
109
|
);
|
|
@@ -124,7 +127,8 @@ GroupedChips.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
124
127
|
reducingNbChips: _propTypes2.default.number,
|
|
125
128
|
labels: _propTypes2.default.shape({
|
|
126
129
|
reducingChip: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element])
|
|
127
|
-
})
|
|
130
|
+
}),
|
|
131
|
+
ariaLabelTooltip: _propTypes2.default.string
|
|
128
132
|
} : {};
|
|
129
133
|
exports.default = GroupedChips;
|
|
130
134
|
module.exports = exports['default'];
|
package/lib/Chips/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.showMultiLinedTooltip = exports.shownTooltip = exports.isLast = exports.myTooltipRenderer = undefined;
|
|
4
|
+
exports.showMultiLinedTooltip = exports.shownTooltip = exports.isLast = exports.myTooltipRendererSrOnly = exports.myTooltipRenderer = undefined;
|
|
5
5
|
|
|
6
6
|
var _ramda = require('ramda');
|
|
7
7
|
|
|
@@ -15,6 +15,13 @@ var myTooltipRenderer = exports.myTooltipRenderer = function myTooltipRenderer(_
|
|
|
15
15
|
return R.pipe(R.map(labelRenderer), R.when(R.always(isRtl), R.reverse), R.join(isRtl ? ' < ' : ' > '));
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
+
var myTooltipRendererSrOnly = exports.myTooltipRendererSrOnly = function myTooltipRendererSrOnly(_ref2) {
|
|
19
|
+
var isRtl = _ref2.isRtl,
|
|
20
|
+
labelRenderer = _ref2.labelRenderer,
|
|
21
|
+
ariaLabelTooltip = _ref2.ariaLabelTooltip;
|
|
22
|
+
return R.pipe(R.map(labelRenderer), R.when(R.always(isRtl), R.reverse), R.join(ariaLabelTooltip));
|
|
23
|
+
};
|
|
24
|
+
|
|
18
25
|
var isLast = exports.isLast = function isLast(index, list) {
|
|
19
26
|
return index + 1 === R.length(list);
|
|
20
27
|
};
|