@sis-cc/dotstatsuite-visions 7.2.1 → 7.4.1

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.
@@ -93,7 +93,10 @@ var useStyles = makeStyles(function (theme) {
93
93
  padding: 0,
94
94
  marginLeft: 20,
95
95
  maxWidth: 270
96
- }, theme.typography.body1)
96
+ }, theme.typography.body1),
97
+ sideIconContainer: {
98
+ marginLeft: '10px'
99
+ }
97
100
  };
98
101
  });
99
102
 
@@ -137,7 +140,7 @@ var DataHeader = function DataHeader(_ref4) {
137
140
  title.label,
138
141
  !R.isNil(SideIcon) && React.createElement(
139
142
  'span',
140
- { style: { 'margin-left': '10px' } },
143
+ { className: classes.sideIconContainer },
141
144
  React.createElement(SideIcon, { sideProps: sideProps })
142
145
  ),
143
146
  React.createElement(Flags, { classes: classes, content: R.propOr([], 'flags', title) }),
@@ -24,10 +24,13 @@ var Period = function Period(_ref) {
24
24
 
25
25
  var classes = useStyles();
26
26
  var frequencies = getFrequencyOptions(availableFrequencies, labels);
27
+ console.log('frequencies', frequencies);
28
+ if (R.isEmpty(frequencies)) return null;
27
29
  var frequency = getDefaultFrequency({
28
30
  defaultFrequency: defaultFrequency,
29
31
  frequencies: R.pluck('value')(frequencies)
30
32
  });
33
+ console.log('frequency', frequency);
31
34
  var period = R.defaultTo([], _period);
32
35
  var boundaries = R.defaultTo([], _boundaries);
33
36
  var isPeriodDisabled = R.or(R.any(R.isEmpty)([period, boundaries]), periodDisabled);
@@ -114,11 +114,6 @@ export var getAjustedDate = function getAjustedDate(frequency) {
114
114
  };
115
115
 
116
116
  export var isValidNumber = R.both(R.is(Number), R.complement(R.equals(NaN)));
117
- export var getSupportFrequencies = function getSupportFrequencies(availableFrequencies) {
118
- return R.filter(function (freq) {
119
- return R.includes(freq)(supportedFrequenciesKey);
120
- })(availableFrequencies);
121
- };
122
117
  export var getDefaultFrequency = function getDefaultFrequency(_ref4) {
123
118
  var defaultFrequency = _ref4.defaultFrequency,
124
119
  frequencies = _ref4.frequencies;
@@ -128,10 +123,14 @@ export var getDefaultFrequency = function getDefaultFrequency(_ref4) {
128
123
  };
129
124
 
130
125
  export var getFrequencyOptions = function getFrequencyOptions(frequencyoptions, frequencyLabels) {
131
- var availableFrequencies = R.or(R.isEmpty(frequencyoptions), R.isNil(frequencyoptions)) ? [defaultfreq] : getSupportFrequencies(frequencyoptions);
132
- return R.map(function (option) {
133
- return { value: option, label: R.prop(option)(frequencyLabels) };
126
+ var availableFrequencies = R.or(R.isEmpty(frequencyoptions), R.isNil(frequencyoptions)) ? [defaultfreq] : R.filter(function (freq) {
127
+ return R.includes(freq, supportedFrequenciesKey);
128
+ })(frequencyoptions);
129
+ var options = R.map(function (option) {
130
+ return { value: option, label: R.prop(option, frequencyLabels) };
134
131
  })(availableFrequencies);
132
+ if (R.isEmpty(options)) return [{ value: 'A', label: R.propOr('Annual', 'A', frequencyLabels) }];
133
+ return options;
135
134
  };
136
135
 
137
136
  export var getLayout = function getLayout(type, range) {
@@ -10,6 +10,7 @@ import ListItemText from '@material-ui/core/ListItemText';
10
10
  import IconButton from '@material-ui/core/IconButton';
11
11
  import SvgIcon from '@material-ui/core/SvgIcon';
12
12
  import cx from 'classnames';
13
+ import { Tooltip } from '../';
13
14
 
14
15
  var checkBoxPath = 'M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z';
15
16
  var checkPath = 'M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z';
@@ -32,11 +33,13 @@ var Item = function Item(_ref) {
32
33
  var classes = _ref.classes,
33
34
  id = _ref.id,
34
35
  label = _ref.label,
36
+ description = _ref.description,
35
37
  _ref$nodePath = _ref.nodePath,
36
38
  nodePath = _ref$nodePath === undefined ? [] : _ref$nodePath,
37
39
  isSelected = _ref.isSelected,
38
40
  isDisabled = _ref.isDisabled,
39
41
  changeList = _ref.changeList,
42
+ changeListDescription = _ref.changeListDescription,
40
43
  ariaLabel = _ref.ariaLabel,
41
44
  NavigateIcon = _ref.NavigateIcon,
42
45
  changeSelection = _ref.changeSelection,
@@ -101,14 +104,24 @@ var Item = function Item(_ref) {
101
104
  React.createElement('path', { d: svgPath })
102
105
  ),
103
106
  React.createElement(
104
- Typography,
107
+ Tooltip,
105
108
  {
106
- 'data-testid': testId + '_value_' + id,
107
- color: 'inherit',
108
- variant: 'body2',
109
- className: cx(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6))
109
+ title: R.isNil(description) ? '' : description,
110
+ tabIndex: 0,
111
+ 'aria-label': description,
112
+ 'aria-hidden': false,
113
+ placement: 'top'
110
114
  },
111
- label
115
+ React.createElement(
116
+ Typography,
117
+ {
118
+ 'data-testid': testId + '_value_' + id,
119
+ color: 'inherit',
120
+ variant: 'body2',
121
+ className: cx(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isNil(description), _cx6))
122
+ },
123
+ label
124
+ )
112
125
  ),
113
126
  R.not(R.isNil(count)) && React.createElement(
114
127
  Typography,
@@ -148,17 +161,28 @@ var Item = function Item(_ref) {
148
161
  }
149
162
  },
150
163
  React.createElement(
151
- IconButton,
164
+ Tooltip,
152
165
  {
153
- disableRipple: true,
154
- disableFocusRipple: true,
155
- className: classes.arrow,
156
- 'aria-label': ariaLabel,
157
- tabIndex: -1,
158
- size: 'small',
159
- color: 'inherit'
166
+ title: changeListDescription || '',
167
+ tabIndex: 0,
168
+ 'aria-label': changeListDescription,
169
+ 'aria-hidden': false,
170
+ placement: 'top',
171
+ variant: 'light'
160
172
  },
161
- React.createElement(NavigateIcon, null)
173
+ React.createElement(
174
+ IconButton,
175
+ {
176
+ disableRipple: true,
177
+ disableFocusRipple: true,
178
+ className: classes.arrow,
179
+ 'aria-label': ariaLabel,
180
+ tabIndex: -1,
181
+ size: 'small',
182
+ color: 'inherit'
183
+ },
184
+ React.createElement(NavigateIcon, null)
185
+ )
162
186
  )
163
187
  )
164
188
  );
@@ -168,6 +192,7 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
168
192
  classes: PropTypes.object,
169
193
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
170
194
  label: PropTypes.string,
195
+ description: PropTypes.string,
171
196
  parentId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
172
197
  nodePath: PropTypes.array,
173
198
  ariaLabel: PropTypes.string,
@@ -177,6 +202,7 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
177
202
  hasChild: PropTypes.bool,
178
203
  isSection: PropTypes.bool,
179
204
  changeList: PropTypes.func,
205
+ changeListDescription: PropTypes.string,
180
206
  changeSelection: PropTypes.func,
181
207
  changeMouseSelection: PropTypes.func,
182
208
  count: PropTypes.number,
@@ -244,6 +244,7 @@ var ScopeList = function ScopeList(props) {
244
244
  classes: classes,
245
245
  isRtl: isRtl,
246
246
  changeList: changeList,
247
+ changeListDescription: labels.childrenNavigateDesc,
247
248
  changeSelection: changeSelection,
248
249
  changeMouseSelection: changeMouseSelection,
249
250
  ariaLabel: R.prop('navigateNext')(labels),
@@ -284,6 +285,7 @@ ScopeList.propTypes = process.env.NODE_ENV !== "production" ? {
284
285
  isBlank: PropTypes.bool,
285
286
  isCurrentListAllSelected: PropTypes.bool,
286
287
  labels: PropTypes.shape({
288
+ childrenNavigateDesc: PropTypes.string,
287
289
  navigateNext: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
288
290
  backHelper: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
289
291
  selection: PropTypes.shape({
@@ -47,6 +47,7 @@
47
47
  * hasPath: PropTypes.bool,
48
48
  * changeSelection: PropTypes.func,
49
49
  * labels: {
50
+ * childrenNavigateDesc: PropTypes.string,
50
51
  * navigateBefore: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
51
52
  * navigateNext: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
52
53
  * backHelper: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
@@ -143,6 +143,9 @@ export var useStyles = makeStyles(function (theme) {
143
143
  },
144
144
  bulkSelectionIcon: {
145
145
  minWidth: 50
146
+ },
147
+ tooltipNotice: {
148
+ textDecoration: 'underline dotted'
146
149
  }
147
150
  };
148
151
  });
@@ -1,11 +1,12 @@
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, { useEffect } from 'react';
4
4
  import * as R from 'ramda';
5
5
  import PropTypes from 'prop-types';
6
6
  import { makeStyles } from '@material-ui/core/styles';
7
7
  import TextField from '@material-ui/core/TextField';
8
8
  import MenuItem from '@material-ui/core/MenuItem';
9
+ import { Tooltip } from '../';
9
10
 
10
11
  var useStyles = makeStyles(function (theme) {
11
12
  return {
@@ -34,6 +35,15 @@ var Select = function Select(_ref) {
34
35
  dataTestId = _ref$dataTestId === undefined ? 'select-testid' : _ref$dataTestId;
35
36
 
36
37
  var classes = useStyles();
38
+ var ref = React.useRef(null);
39
+
40
+ var _React$useState = React.useState(false),
41
+ open = _React$useState[0],
42
+ setOpen = _React$useState[1];
43
+
44
+ var _React$useState2 = React.useState(0),
45
+ width = _React$useState2[0],
46
+ setWidth = _React$useState2[1];
37
47
 
38
48
  var handleChange = function handleChange(event) {
39
49
  if (R.is(Function)(onChange)) {
@@ -41,6 +51,12 @@ var Select = function Select(_ref) {
41
51
  }
42
52
  };
43
53
 
54
+ useEffect(function () {
55
+ if (ref.current && open) {
56
+ setWidth(ref.current.clientWidth);
57
+ }
58
+ }, [ref.current, open]);
59
+
44
60
  var getter = function getter(key) {
45
61
  return function (accessor) {
46
62
  return R.ifElse(R.is(Object), function (item) {
@@ -49,42 +65,62 @@ var Select = function Select(_ref) {
49
65
  };
50
66
  };
51
67
 
68
+ var joinByValue = R.innerJoin(function (obj, value) {
69
+ return obj.value === value;
70
+ });
71
+ var labels = R.pluck('label', joinByValue(items, R.is(Array, value) ? value : [value]));
52
72
  return React.createElement(
53
73
  TextField,
54
74
  _extends({
75
+ select: true,
55
76
  id: id,
56
77
  'data-testid': dataTestId,
57
78
  disabled: R.isEmpty(items),
58
- select: true,
59
79
  label: label,
60
80
  value: value,
81
+ title: R.join(', ', labels),
61
82
  onChange: handleChange,
62
83
  variant: 'outlined',
63
84
  size: 'small',
64
85
  fullWidth: true,
65
86
  SelectProps: {
87
+ ref: ref,
88
+ open: open,
89
+ autoWidth: true,
66
90
  multiple: isMultiple,
91
+ onOpen: function onOpen() {
92
+ return setOpen(true);
93
+ },
94
+ onClose: function onClose() {
95
+ return setOpen(false);
96
+ },
67
97
  classes: { root: classes.root },
68
98
  MenuProps: {
69
99
  getContentAnchorEl: null,
70
100
  anchorOrigin: { vertical: 'bottom', horizontal: 'center' },
71
101
  transformOrigin: { vertical: 'top', horizontal: 'center' },
72
- classes: { paper: classes.paper }
102
+ classes: { paper: classes.paper },
103
+ PaperProps: {
104
+ style: { width: width }
105
+ }
73
106
  }
74
107
  },
75
108
  className: classes.root
76
109
  }, textFieldProps),
77
110
  R.map(function (item) {
111
+ var value = getter('value')(valueAccessor)(item);
112
+ var label = getter('label')(labelAccessor)(item);
78
113
  return React.createElement(
79
114
  MenuItem,
80
115
  {
81
- key: optionsKey + '-' + getter('value')(valueAccessor)(item),
82
- value: getter('value')(valueAccessor)(item),
116
+ key: optionsKey + '-' + value,
117
+ id: label,
118
+ value: value,
83
119
  dense: true,
84
- id: getter('label')(labelAccessor)(item),
85
- 'aria-label': getter('label')(labelAccessor)(item)
120
+ 'aria-label': label,
121
+ title: label
86
122
  },
87
- getter('label')(labelAccessor)(item)
123
+ label
88
124
  );
89
125
  })(items)
90
126
  );
@@ -133,7 +133,10 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
133
133
  padding: 0,
134
134
  marginLeft: 20,
135
135
  maxWidth: 270
136
- }, theme.typography.body1)
136
+ }, theme.typography.body1),
137
+ sideIconContainer: {
138
+ marginLeft: '10px'
139
+ }
137
140
  };
138
141
  });
139
142
 
@@ -177,7 +180,7 @@ var DataHeader = function DataHeader(_ref4) {
177
180
  title.label,
178
181
  !R.isNil(SideIcon) && _react2.default.createElement(
179
182
  'span',
180
- { style: { 'margin-left': '10px' } },
183
+ { className: classes.sideIconContainer },
181
184
  _react2.default.createElement(SideIcon, { sideProps: sideProps })
182
185
  ),
183
186
  _react2.default.createElement(_Flags2.default, { classes: classes, content: R.propOr([], 'flags', title) }),
@@ -49,10 +49,13 @@ var Period = function Period(_ref) {
49
49
 
50
50
  var classes = (0, _styles2.default)();
51
51
  var frequencies = (0, _lib.getFrequencyOptions)(availableFrequencies, labels);
52
+ console.log('frequencies', frequencies);
53
+ if (R.isEmpty(frequencies)) return null;
52
54
  var frequency = (0, _lib.getDefaultFrequency)({
53
55
  defaultFrequency: defaultFrequency,
54
56
  frequencies: R.pluck('value')(frequencies)
55
57
  });
58
+ console.log('frequency', frequency);
56
59
  var period = R.defaultTo([], _period);
57
60
  var boundaries = R.defaultTo([], _boundaries);
58
61
  var isPeriodDisabled = R.or(R.any(R.isEmpty)([period, boundaries]), periodDisabled);
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  exports.__esModule = true;
4
- exports.numeralFormat = exports.getDateInTheRange = exports.getDate = exports.getPeriodValue = exports.getLayout = exports.getFrequencyOptions = exports.getDefaultFrequency = exports.getSupportFrequencies = exports.isValidNumber = exports.getAjustedDate = exports.getRange = exports.getDestructuringDate = undefined;
4
+ exports.numeralFormat = exports.getDateInTheRange = exports.getDate = exports.getPeriodValue = exports.getLayout = exports.getFrequencyOptions = exports.getDefaultFrequency = exports.isValidNumber = exports.getAjustedDate = exports.getRange = exports.getDestructuringDate = undefined;
5
5
 
6
6
  var _numeralFormat;
7
7
 
@@ -132,11 +132,6 @@ var getAjustedDate = exports.getAjustedDate = function getAjustedDate(frequency)
132
132
  };
133
133
 
134
134
  var isValidNumber = exports.isValidNumber = R.both(R.is(Number), R.complement(R.equals(NaN)));
135
- var getSupportFrequencies = exports.getSupportFrequencies = function getSupportFrequencies(availableFrequencies) {
136
- return R.filter(function (freq) {
137
- return R.includes(freq)(supportedFrequenciesKey);
138
- })(availableFrequencies);
139
- };
140
135
  var getDefaultFrequency = exports.getDefaultFrequency = function getDefaultFrequency(_ref4) {
141
136
  var defaultFrequency = _ref4.defaultFrequency,
142
137
  frequencies = _ref4.frequencies;
@@ -146,10 +141,14 @@ var getDefaultFrequency = exports.getDefaultFrequency = function getDefaultFrequ
146
141
  };
147
142
 
148
143
  var getFrequencyOptions = exports.getFrequencyOptions = function getFrequencyOptions(frequencyoptions, frequencyLabels) {
149
- var availableFrequencies = R.or(R.isEmpty(frequencyoptions), R.isNil(frequencyoptions)) ? [_constants.defaultfreq] : getSupportFrequencies(frequencyoptions);
150
- return R.map(function (option) {
151
- return { value: option, label: R.prop(option)(frequencyLabels) };
144
+ var availableFrequencies = R.or(R.isEmpty(frequencyoptions), R.isNil(frequencyoptions)) ? [_constants.defaultfreq] : R.filter(function (freq) {
145
+ return R.includes(freq, supportedFrequenciesKey);
146
+ })(frequencyoptions);
147
+ var options = R.map(function (option) {
148
+ return { value: option, label: R.prop(option, frequencyLabels) };
152
149
  })(availableFrequencies);
150
+ if (R.isEmpty(options)) return [{ value: 'A', label: R.propOr('Annual', 'A', frequencyLabels) }];
151
+ return options;
153
152
  };
154
153
 
155
154
  var getLayout = exports.getLayout = function getLayout(type, range) {
@@ -44,6 +44,8 @@ var _classnames = require('classnames');
44
44
 
45
45
  var _classnames2 = _interopRequireDefault(_classnames);
46
46
 
47
+ var _ = require('../');
48
+
47
49
  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; } }
48
50
 
49
51
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -69,11 +71,13 @@ var Item = function Item(_ref) {
69
71
  var classes = _ref.classes,
70
72
  id = _ref.id,
71
73
  label = _ref.label,
74
+ description = _ref.description,
72
75
  _ref$nodePath = _ref.nodePath,
73
76
  nodePath = _ref$nodePath === undefined ? [] : _ref$nodePath,
74
77
  isSelected = _ref.isSelected,
75
78
  isDisabled = _ref.isDisabled,
76
79
  changeList = _ref.changeList,
80
+ changeListDescription = _ref.changeListDescription,
77
81
  ariaLabel = _ref.ariaLabel,
78
82
  NavigateIcon = _ref.NavigateIcon,
79
83
  changeSelection = _ref.changeSelection,
@@ -138,14 +142,24 @@ var Item = function Item(_ref) {
138
142
  _react2.default.createElement('path', { d: svgPath })
139
143
  ),
140
144
  _react2.default.createElement(
141
- _Typography2.default,
145
+ _.Tooltip,
142
146
  {
143
- 'data-testid': testId + '_value_' + id,
144
- color: 'inherit',
145
- variant: 'body2',
146
- className: (0, _classnames2.default)(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6))
147
+ title: R.isNil(description) ? '' : description,
148
+ tabIndex: 0,
149
+ 'aria-label': description,
150
+ 'aria-hidden': false,
151
+ placement: 'top'
147
152
  },
148
- label
153
+ _react2.default.createElement(
154
+ _Typography2.default,
155
+ {
156
+ 'data-testid': testId + '_value_' + id,
157
+ color: 'inherit',
158
+ variant: 'body2',
159
+ className: (0, _classnames2.default)(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isNil(description), _cx6))
160
+ },
161
+ label
162
+ )
149
163
  ),
150
164
  R.not(R.isNil(count)) && _react2.default.createElement(
151
165
  _Typography2.default,
@@ -185,17 +199,28 @@ var Item = function Item(_ref) {
185
199
  }
186
200
  },
187
201
  _react2.default.createElement(
188
- _IconButton2.default,
202
+ _.Tooltip,
189
203
  {
190
- disableRipple: true,
191
- disableFocusRipple: true,
192
- className: classes.arrow,
193
- 'aria-label': ariaLabel,
194
- tabIndex: -1,
195
- size: 'small',
196
- color: 'inherit'
204
+ title: changeListDescription || '',
205
+ tabIndex: 0,
206
+ 'aria-label': changeListDescription,
207
+ 'aria-hidden': false,
208
+ placement: 'top',
209
+ variant: 'light'
197
210
  },
198
- _react2.default.createElement(NavigateIcon, null)
211
+ _react2.default.createElement(
212
+ _IconButton2.default,
213
+ {
214
+ disableRipple: true,
215
+ disableFocusRipple: true,
216
+ className: classes.arrow,
217
+ 'aria-label': ariaLabel,
218
+ tabIndex: -1,
219
+ size: 'small',
220
+ color: 'inherit'
221
+ },
222
+ _react2.default.createElement(NavigateIcon, null)
223
+ )
199
224
  )
200
225
  )
201
226
  );
@@ -205,6 +230,7 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
205
230
  classes: _propTypes2.default.object,
206
231
  id: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
207
232
  label: _propTypes2.default.string,
233
+ description: _propTypes2.default.string,
208
234
  parentId: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
209
235
  nodePath: _propTypes2.default.array,
210
236
  ariaLabel: _propTypes2.default.string,
@@ -214,6 +240,7 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
214
240
  hasChild: _propTypes2.default.bool,
215
241
  isSection: _propTypes2.default.bool,
216
242
  changeList: _propTypes2.default.func,
243
+ changeListDescription: _propTypes2.default.string,
217
244
  changeSelection: _propTypes2.default.func,
218
245
  changeMouseSelection: _propTypes2.default.func,
219
246
  count: _propTypes2.default.number,
@@ -297,6 +297,7 @@ var ScopeList = function ScopeList(props) {
297
297
  classes: classes,
298
298
  isRtl: isRtl,
299
299
  changeList: changeList,
300
+ changeListDescription: labels.childrenNavigateDesc,
300
301
  changeSelection: changeSelection,
301
302
  changeMouseSelection: changeMouseSelection,
302
303
  ariaLabel: R.prop('navigateNext')(labels),
@@ -337,6 +338,7 @@ ScopeList.propTypes = process.env.NODE_ENV !== "production" ? {
337
338
  isBlank: _propTypes2.default.bool,
338
339
  isCurrentListAllSelected: _propTypes2.default.bool,
339
340
  labels: _propTypes2.default.shape({
341
+ childrenNavigateDesc: _propTypes2.default.string,
340
342
  navigateNext: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
341
343
  backHelper: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
342
344
  selection: _propTypes2.default.shape({
@@ -149,6 +149,9 @@ var useStyles = exports.useStyles = (0, _styles.makeStyles)(function (theme) {
149
149
  },
150
150
  bulkSelectionIcon: {
151
151
  minWidth: 50
152
+ },
153
+ tooltipNotice: {
154
+ textDecoration: 'underline dotted'
152
155
  }
153
156
  };
154
157
  });
@@ -26,6 +26,8 @@ var _MenuItem = require('@material-ui/core/MenuItem');
26
26
 
27
27
  var _MenuItem2 = _interopRequireDefault(_MenuItem);
28
28
 
29
+ var _ = require('../');
30
+
29
31
  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; } }
30
32
 
31
33
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -57,6 +59,15 @@ var Select = function Select(_ref) {
57
59
  dataTestId = _ref$dataTestId === undefined ? 'select-testid' : _ref$dataTestId;
58
60
 
59
61
  var classes = useStyles();
62
+ var ref = _react2.default.useRef(null);
63
+
64
+ var _React$useState = _react2.default.useState(false),
65
+ open = _React$useState[0],
66
+ setOpen = _React$useState[1];
67
+
68
+ var _React$useState2 = _react2.default.useState(0),
69
+ width = _React$useState2[0],
70
+ setWidth = _React$useState2[1];
60
71
 
61
72
  var handleChange = function handleChange(event) {
62
73
  if (R.is(Function)(onChange)) {
@@ -64,6 +75,12 @@ var Select = function Select(_ref) {
64
75
  }
65
76
  };
66
77
 
78
+ (0, _react.useEffect)(function () {
79
+ if (ref.current && open) {
80
+ setWidth(ref.current.clientWidth);
81
+ }
82
+ }, [ref.current, open]);
83
+
67
84
  var getter = function getter(key) {
68
85
  return function (accessor) {
69
86
  return R.ifElse(R.is(Object), function (item) {
@@ -72,42 +89,62 @@ var Select = function Select(_ref) {
72
89
  };
73
90
  };
74
91
 
92
+ var joinByValue = R.innerJoin(function (obj, value) {
93
+ return obj.value === value;
94
+ });
95
+ var labels = R.pluck('label', joinByValue(items, R.is(Array, value) ? value : [value]));
75
96
  return _react2.default.createElement(
76
97
  _TextField2.default,
77
98
  _extends({
99
+ select: true,
78
100
  id: id,
79
101
  'data-testid': dataTestId,
80
102
  disabled: R.isEmpty(items),
81
- select: true,
82
103
  label: label,
83
104
  value: value,
105
+ title: R.join(', ', labels),
84
106
  onChange: handleChange,
85
107
  variant: 'outlined',
86
108
  size: 'small',
87
109
  fullWidth: true,
88
110
  SelectProps: {
111
+ ref: ref,
112
+ open: open,
113
+ autoWidth: true,
89
114
  multiple: isMultiple,
115
+ onOpen: function onOpen() {
116
+ return setOpen(true);
117
+ },
118
+ onClose: function onClose() {
119
+ return setOpen(false);
120
+ },
90
121
  classes: { root: classes.root },
91
122
  MenuProps: {
92
123
  getContentAnchorEl: null,
93
124
  anchorOrigin: { vertical: 'bottom', horizontal: 'center' },
94
125
  transformOrigin: { vertical: 'top', horizontal: 'center' },
95
- classes: { paper: classes.paper }
126
+ classes: { paper: classes.paper },
127
+ PaperProps: {
128
+ style: { width: width }
129
+ }
96
130
  }
97
131
  },
98
132
  className: classes.root
99
133
  }, textFieldProps),
100
134
  R.map(function (item) {
135
+ var value = getter('value')(valueAccessor)(item);
136
+ var label = getter('label')(labelAccessor)(item);
101
137
  return _react2.default.createElement(
102
138
  _MenuItem2.default,
103
139
  {
104
- key: optionsKey + '-' + getter('value')(valueAccessor)(item),
105
- value: getter('value')(valueAccessor)(item),
140
+ key: optionsKey + '-' + value,
141
+ id: label,
142
+ value: value,
106
143
  dense: true,
107
- id: getter('label')(labelAccessor)(item),
108
- 'aria-label': getter('label')(labelAccessor)(item)
144
+ 'aria-label': label,
145
+ title: label
109
146
  },
110
- getter('label')(labelAccessor)(item)
147
+ label
111
148
  );
112
149
  })(items)
113
150
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-visions",
3
- "version": "7.2.1",
3
+ "version": "7.4.1",
4
4
  "description": "Library of visual components",
5
5
  "author": "OECD",
6
6
  "homepage": "https://visions-qa.siscc.org/#o",