@sis-cc/dotstatsuite-visions 10.14.1 → 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.
@@ -1,4 +1,4 @@
1
- import React, { Fragment } from '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
- return React.createElement(
58
- Tooltip,
59
- {
60
- placement: 'top',
61
- title: hasTooltip ? renderer(items) : hasMultiLinedTooltip ? multiLinedTooltipRenderer(items) : ''
62
- },
63
- React.createElement(Chip, {
64
- 'data-testid': testId,
65
- size: 'small',
66
- 'aria-label': label,
67
- label: hasTooltip || hasMultiLinedTooltip ? React.createElement(
68
- Fragment,
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
- ) : label,
78
- deleteIcon: React.createElement(
79
- IconButton,
80
- {
81
- disableRipple: true,
82
- className: iconClasses,
83
- 'aria-label': ariaLabel + ' ' + label,
84
- component: 'span',
85
- tabIndex: 0
86
- },
87
- React.createElement(Cross, null)
88
- ),
89
- clickable: true,
90
- onDelete: onChange,
91
- className: cx(chipClasses, (_cx = {}, _cx[classes.tooltipIndicator] = hasTooltip || hasMultiLinedTooltip, _cx)),
92
- classes: { label: labelClasses }
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;
@@ -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));
@@ -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/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
- List,
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
- { role: 'presentation' },
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
  });
@@ -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
- return _react2.default.createElement(
95
- _Tooltip2.default,
96
- {
97
- placement: 'top',
98
- title: hasTooltip ? renderer(items) : hasMultiLinedTooltip ? multiLinedTooltipRenderer(items) : ''
99
- },
100
- _react2.default.createElement(_Chip2.default, {
101
- 'data-testid': testId,
102
- size: 'small',
103
- 'aria-label': label,
104
- label: hasTooltip || hasMultiLinedTooltip ? _react2.default.createElement(
105
- _react.Fragment,
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
- ) : label,
115
- deleteIcon: _react2.default.createElement(
116
- _IconButton2.default,
117
- {
118
- disableRipple: true,
119
- className: iconClasses,
120
- 'aria-label': ariaLabel + ' ' + label,
121
- component: 'span',
122
- tabIndex: 0
123
- },
124
- _react2.default.createElement(_Cross2.default, null)
125
- ),
126
- clickable: true,
127
- onDelete: onChange,
128
- className: (0, _classnames2.default)(chipClasses, (_cx = {}, _cx[classes.tooltipIndicator] = hasTooltip || hasMultiLinedTooltip, _cx)),
129
- classes: { label: labelClasses }
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'];
@@ -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
  };