@elastic/eui 76.0.2 → 76.2.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.
Files changed (107) hide show
  1. package/dist/eui_theme_dark.css +37 -6
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +37 -6
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/color_picker/color_palette_picker/color_palette_picker.js +5 -6
  6. package/es/components/datagrid/body/data_grid_body.js +19 -395
  7. package/es/components/datagrid/body/data_grid_body_custom.js +908 -0
  8. package/es/components/datagrid/body/data_grid_body_virtualized.js +1031 -0
  9. package/es/components/datagrid/body/data_grid_cell.js +16 -12
  10. package/es/components/datagrid/body/data_grid_cell_popover.js +32 -12
  11. package/es/components/datagrid/body/data_grid_cell_wrapper.js +132 -0
  12. package/es/components/datagrid/body/header/data_grid_header_row.js +3 -2
  13. package/es/components/datagrid/data_grid.js +21 -5
  14. package/es/components/datagrid/data_grid_types.js +18 -1
  15. package/es/components/datagrid/utils/row_heights.js +111 -31
  16. package/es/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  17. package/es/components/form/range/dual_range.js +14 -7
  18. package/es/components/form/range/range.js +10 -3
  19. package/es/components/form/super_select/super_select.js +21 -18
  20. package/es/components/form/super_select/super_select_control.js +7 -14
  21. package/es/components/selectable/selectable.js +59 -36
  22. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  23. package/es/components/suggest/suggest.js +3 -10
  24. package/eui.d.ts +253 -146
  25. package/i18ntokens.json +89 -57
  26. package/lib/components/color_picker/color_palette_picker/color_palette_picker.js +5 -6
  27. package/lib/components/datagrid/body/data_grid_body.js +19 -416
  28. package/lib/components/datagrid/body/data_grid_body_custom.js +927 -0
  29. package/lib/components/datagrid/body/data_grid_body_virtualized.js +1059 -0
  30. package/lib/components/datagrid/body/data_grid_cell.js +16 -12
  31. package/lib/components/datagrid/body/data_grid_cell_popover.js +35 -12
  32. package/lib/components/datagrid/body/data_grid_cell_wrapper.js +147 -0
  33. package/lib/components/datagrid/body/header/data_grid_header_row.js +4 -2
  34. package/lib/components/datagrid/data_grid.js +21 -4
  35. package/lib/components/datagrid/data_grid_types.js +22 -1
  36. package/lib/components/datagrid/utils/row_heights.js +116 -33
  37. package/lib/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  38. package/lib/components/form/range/dual_range.js +14 -7
  39. package/lib/components/form/range/range.js +10 -3
  40. package/lib/components/form/super_select/super_select.js +21 -18
  41. package/lib/components/form/super_select/super_select_control.js +7 -16
  42. package/lib/components/selectable/selectable.js +59 -36
  43. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  44. package/lib/components/suggest/suggest.js +3 -12
  45. package/optimize/es/components/datagrid/body/data_grid_body.js +17 -387
  46. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +176 -0
  47. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +311 -0
  48. package/optimize/es/components/datagrid/body/data_grid_cell.js +12 -9
  49. package/optimize/es/components/datagrid/body/data_grid_cell_popover.js +30 -12
  50. package/optimize/es/components/datagrid/body/data_grid_cell_wrapper.js +127 -0
  51. package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +3 -2
  52. package/optimize/es/components/datagrid/data_grid.js +8 -5
  53. package/optimize/es/components/datagrid/data_grid_types.js +18 -1
  54. package/optimize/es/components/datagrid/utils/row_heights.js +100 -31
  55. package/optimize/es/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  56. package/optimize/es/components/form/range/dual_range.js +14 -7
  57. package/optimize/es/components/form/range/range.js +10 -3
  58. package/optimize/es/components/form/super_select/super_select.js +16 -12
  59. package/optimize/es/components/form/super_select/super_select_control.js +7 -14
  60. package/optimize/es/components/selectable/selectable.js +50 -34
  61. package/optimize/es/components/selectable/selectable_list/selectable_list.js +1 -1
  62. package/optimize/es/components/suggest/suggest.js +3 -10
  63. package/optimize/lib/components/datagrid/body/data_grid_body.js +16 -409
  64. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +198 -0
  65. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +342 -0
  66. package/optimize/lib/components/datagrid/body/data_grid_cell.js +12 -9
  67. package/optimize/lib/components/datagrid/body/data_grid_cell_popover.js +33 -19
  68. package/optimize/lib/components/datagrid/body/data_grid_cell_wrapper.js +144 -0
  69. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +4 -2
  70. package/optimize/lib/components/datagrid/data_grid.js +8 -4
  71. package/optimize/lib/components/datagrid/data_grid_types.js +22 -1
  72. package/optimize/lib/components/datagrid/utils/row_heights.js +103 -37
  73. package/optimize/lib/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  74. package/optimize/lib/components/form/range/dual_range.js +14 -7
  75. package/optimize/lib/components/form/range/range.js +10 -3
  76. package/optimize/lib/components/form/super_select/super_select.js +16 -11
  77. package/optimize/lib/components/form/super_select/super_select_control.js +7 -16
  78. package/optimize/lib/components/selectable/selectable.js +50 -35
  79. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  80. package/optimize/lib/components/suggest/suggest.js +3 -12
  81. package/package.json +1 -1
  82. package/src/components/datagrid/_data_grid.scss +7 -0
  83. package/src/components/datagrid/_data_grid_data_row.scss +1 -0
  84. package/src/components/datagrid/body/footer/_data_grid_footer_row.scss +1 -0
  85. package/src/components/datagrid/body/header/_data_grid_header_row.scss +1 -0
  86. package/src/components/form/super_select/_super_select_control.scss +4 -0
  87. package/src/components/selectable/selectable_list/_selectable_list.scss +10 -3
  88. package/src/themes/amsterdam/global_styling/mixins/_states.scss +17 -8
  89. package/test-env/components/color_picker/color_palette_picker/color_palette_picker.js +5 -6
  90. package/test-env/components/datagrid/body/data_grid_body.js +18 -415
  91. package/test-env/components/datagrid/body/data_grid_body_custom.js +908 -0
  92. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +1057 -0
  93. package/test-env/components/datagrid/body/data_grid_cell.js +16 -12
  94. package/test-env/components/datagrid/body/data_grid_cell_popover.js +33 -19
  95. package/test-env/components/datagrid/body/data_grid_cell_wrapper.js +144 -0
  96. package/test-env/components/datagrid/body/header/data_grid_header_row.js +4 -2
  97. package/test-env/components/datagrid/data_grid.js +21 -4
  98. package/test-env/components/datagrid/data_grid_types.js +22 -1
  99. package/test-env/components/datagrid/utils/row_heights.js +103 -37
  100. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +2 -1
  101. package/test-env/components/form/range/dual_range.js +14 -7
  102. package/test-env/components/form/range/range.js +10 -3
  103. package/test-env/components/form/super_select/super_select.js +21 -17
  104. package/test-env/components/form/super_select/super_select_control.js +7 -16
  105. package/test-env/components/selectable/selectable.js +58 -36
  106. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  107. package/test-env/components/suggest/suggest.js +3 -12
@@ -5,10 +5,20 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.useRowHeightUtils = exports.useDefaultRowHeight = exports.cellPaddingsMap = exports.RowHeightUtils = exports.DEFAULT_ROW_HEIGHT = exports.AUTO_HEIGHT = void 0;
8
+ exports.useRowHeightUtils = exports.useDefaultRowHeight = exports.cellPaddingsMap = exports.RowHeightVirtualizationUtils = exports.RowHeightUtils = exports.DEFAULT_ROW_HEIGHT = exports.AUTO_HEIGHT = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
12
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
+
14
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
12
22
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
23
 
14
24
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -25,13 +35,10 @@ var _predicate = require("../../../services/predicate");
25
35
 
26
36
  var _sorting = require("./sorting");
27
37
 
28
- /*
29
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
30
- * or more contributor license agreements. Licensed under the Elastic License
31
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
32
- * in compliance with, at your election, the Elastic License 2.0 or the Server
33
- * Side Public License, v 1.
34
- */
38
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
39
+
40
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
+
35
42
  // TODO: Once JS variables are available, use them here instead of hard-coded maps
36
43
  var cellPaddingsMap = {
37
44
  s: 4,
@@ -45,14 +52,10 @@ var DEFAULT_ROW_HEIGHT = 34;
45
52
  exports.DEFAULT_ROW_HEIGHT = DEFAULT_ROW_HEIGHT;
46
53
 
47
54
  var RowHeightUtils = /*#__PURE__*/function () {
48
- function RowHeightUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, rerenderGridBodyRef) {
55
+ function RowHeightUtils() {
49
56
  var _this = this;
50
57
 
51
58
  (0, _classCallCheck2.default)(this, RowHeightUtils);
52
- this.gridRef = gridRef;
53
- this.outerGridElementRef = outerGridElementRef;
54
- this.gridItemsRenderedRef = gridItemsRenderedRef;
55
- this.rerenderGridBodyRef = rerenderGridBodyRef;
56
59
  (0, _defineProperty2.default)(this, "styles", {
57
60
  paddingTop: 0,
58
61
  paddingBottom: 0
@@ -82,8 +85,6 @@ var RowHeightUtils = /*#__PURE__*/function () {
82
85
  };
83
86
  });
84
87
  (0, _defineProperty2.default)(this, "heightsCache", new Map());
85
- (0, _defineProperty2.default)(this, "timerId", void 0);
86
- (0, _defineProperty2.default)(this, "lastUpdatedRow", Infinity);
87
88
  }
88
89
 
89
90
  (0, _createClass2.default)(RowHeightUtils, [{
@@ -169,6 +170,11 @@ var RowHeightUtils = /*#__PURE__*/function () {
169
170
 
170
171
  return false;
171
172
  }
173
+ /**
174
+ * Heights cache utils
175
+ * This cache is primarily used by auto heights & secondarily used by lineCount row overrides
176
+ */
177
+
172
178
  }, {
173
179
  key: "getRowHeight",
174
180
  value: function getRowHeight(rowIndex) {
@@ -181,23 +187,20 @@ var RowHeightUtils = /*#__PURE__*/function () {
181
187
  }, {
182
188
  key: "setRowHeight",
183
189
  value: function setRowHeight(rowIndex, colId) {
184
- var _this$rerenderGridBod, _this$rerenderGridBod2;
185
-
186
190
  var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_ROW_HEIGHT;
187
- var visibleRowIndex = arguments.length > 3 ? arguments[3] : undefined;
191
+
192
+ var _visibleRowIndex = arguments.length > 3 ? arguments[3] : undefined;
193
+
188
194
  var rowHeights = this.heightsCache.get(rowIndex) || new Map();
189
195
  var adaptedHeight = Math.ceil(height + this.styles.paddingTop + this.styles.paddingBottom);
190
196
 
191
197
  if (rowHeights.get(colId) === adaptedHeight) {
192
- return;
198
+ return false;
199
+ } else {
200
+ rowHeights.set(colId, adaptedHeight);
201
+ this.heightsCache.set(rowIndex, rowHeights);
202
+ return true;
193
203
  }
194
-
195
- rowHeights.set(colId, adaptedHeight);
196
- this.heightsCache.set(rowIndex, rowHeights);
197
- this.resetRow(visibleRowIndex); // When an auto row height is updated, force a re-render
198
- // of the grid body to update the unconstrained height
199
-
200
- (_this$rerenderGridBod = (_this$rerenderGridBod2 = this.rerenderGridBodyRef).current) === null || _this$rerenderGridBod === void 0 ? void 0 : _this$rerenderGridBod.call(_this$rerenderGridBod2);
201
204
  }
202
205
  }, {
203
206
  key: "pruneHiddenColumnHeights",
@@ -216,22 +219,80 @@ var RowHeightUtils = /*#__PURE__*/function () {
216
219
  }
217
220
  });
218
221
  });
222
+ return didModify;
223
+ }
224
+ }]);
225
+ return RowHeightUtils;
226
+ }();
227
+ /**
228
+ * Row height utils with virtualization library-specific APIs
229
+ */
230
+
231
+
232
+ exports.RowHeightUtils = RowHeightUtils;
233
+
234
+ var RowHeightVirtualizationUtils = /*#__PURE__*/function (_RowHeightUtils) {
235
+ (0, _inherits2.default)(RowHeightVirtualizationUtils, _RowHeightUtils);
236
+
237
+ var _super = _createSuper(RowHeightVirtualizationUtils);
238
+
239
+ function RowHeightVirtualizationUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, rerenderGridBodyRef) {
240
+ var _this2;
241
+
242
+ (0, _classCallCheck2.default)(this, RowHeightVirtualizationUtils);
243
+ _this2 = _super.call(this);
244
+ _this2.gridRef = gridRef;
245
+ _this2.outerGridElementRef = outerGridElementRef;
246
+ _this2.gridItemsRenderedRef = gridItemsRenderedRef;
247
+ _this2.rerenderGridBodyRef = rerenderGridBodyRef;
248
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "timerId", void 0);
249
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "lastUpdatedRow", Infinity);
250
+ return _this2;
251
+ }
252
+ /**
253
+ * Virtualization workarounds for auto height rows
254
+ */
255
+
256
+
257
+ (0, _createClass2.default)(RowHeightVirtualizationUtils, [{
258
+ key: "setRowHeight",
259
+ value: function setRowHeight(rowIndex, colId) {
260
+ var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_ROW_HEIGHT;
261
+ var visibleRowIndex = arguments.length > 3 ? arguments[3] : undefined;
262
+ var didModify = (0, _get2.default)((0, _getPrototypeOf2.default)(RowHeightVirtualizationUtils.prototype), "setRowHeight", this).call(this, rowIndex, colId, height, visibleRowIndex); // When an auto row height is updated, force a re-render
263
+ // of the grid body to update the unconstrained height
264
+
265
+ if (didModify) {
266
+ var _this$rerenderGridBod, _this$rerenderGridBod2;
267
+
268
+ (_this$rerenderGridBod = (_this$rerenderGridBod2 = this.rerenderGridBodyRef).current) === null || _this$rerenderGridBod === void 0 ? void 0 : _this$rerenderGridBod.call(_this$rerenderGridBod2);
269
+ this.resetRow(visibleRowIndex);
270
+ }
271
+
272
+ return didModify; // Mostly just here for typing
273
+ }
274
+ }, {
275
+ key: "pruneHiddenColumnHeights",
276
+ value: function pruneHiddenColumnHeights(visibleColumns) {
277
+ var didModify = (0, _get2.default)((0, _getPrototypeOf2.default)(RowHeightVirtualizationUtils.prototype), "pruneHiddenColumnHeights", this).call(this, visibleColumns);
219
278
 
220
279
  if (didModify) {
221
280
  this.resetRow(0);
222
281
  }
282
+
283
+ return didModify; // Mostly just here for typing
223
284
  }
224
285
  }, {
225
286
  key: "resetRow",
226
287
  value: function resetRow(visibleRowIndex) {
227
- var _this2 = this;
288
+ var _this3 = this;
228
289
 
229
290
  // save the first row index of batch, reassigning it only
230
291
  // if this visible row index less than lastUpdatedRow
231
292
  this.lastUpdatedRow = Math.min(this.lastUpdatedRow, visibleRowIndex);
232
293
  clearTimeout(this.timerId);
233
294
  this.timerId = window.setTimeout(function () {
234
- return _this2.resetGrid();
295
+ return _this3.resetGrid();
235
296
  }, 0);
236
297
  }
237
298
  }, {
@@ -268,27 +329,32 @@ var RowHeightUtils = /*#__PURE__*/function () {
268
329
  });
269
330
  }
270
331
  }]);
271
- return RowHeightUtils;
272
- }();
332
+ return RowHeightVirtualizationUtils;
333
+ }(RowHeightUtils);
273
334
  /**
274
335
  * Hook for instantiating RowHeightUtils, setting internal class vars,
275
336
  * and setting up various row-height-related side effects
276
337
  */
277
338
 
278
339
 
279
- exports.RowHeightUtils = RowHeightUtils;
340
+ exports.RowHeightVirtualizationUtils = RowHeightVirtualizationUtils;
280
341
 
281
342
  var useRowHeightUtils = function useRowHeightUtils(_ref2) {
282
- var gridRef = _ref2.gridRef,
283
- outerGridElementRef = _ref2.outerGridElementRef,
284
- gridItemsRenderedRef = _ref2.gridItemsRenderedRef,
343
+ var virtualization = _ref2.virtualization,
344
+ rowHeightsOptions = _ref2.rowHeightsOptions,
285
345
  gridStyles = _ref2.gridStyles,
286
- columns = _ref2.columns,
287
- rowHeightsOptions = _ref2.rowHeightsOptions;
346
+ columns = _ref2.columns;
288
347
  var forceRenderRef = (0, _services.useLatest)((0, _services.useForceRender)());
289
348
 
290
349
  var _useState = (0, _react.useState)(function () {
291
- return new RowHeightUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, forceRenderRef);
350
+ if (virtualization) {
351
+ var _gridRef = virtualization.gridRef,
352
+ _outerGridElementRef = virtualization.outerGridElementRef,
353
+ _gridItemsRenderedRef = virtualization.gridItemsRenderedRef;
354
+ return new RowHeightVirtualizationUtils(_gridRef, _outerGridElementRef, _gridItemsRenderedRef, forceRenderRef);
355
+ } else {
356
+ return new RowHeightUtils();
357
+ }
292
358
  }),
293
359
  _useState2 = (0, _slicedToArray2.default)(_useState, 1),
294
360
  rowHeightUtils = _useState2[0]; // Forces a rerender whenever the row heights change, as this can cause the
@@ -165,7 +165,8 @@ var EuiAutoRefreshButton = function EuiAutoRefreshButton(_ref2) {
165
165
  isOpen: isPopoverOpen,
166
166
  closePopover: function closePopover() {
167
167
  setIsPopoverOpen(false);
168
- }
168
+ },
169
+ popoverScreenReaderText: isPaused ? autoRefeshLabelOff : autoRefeshLabelOn
169
170
  }, (0, _react2.jsx)(_refresh_interval.EuiRefreshInterval, {
170
171
  onRefreshChange: onRefreshChange,
171
172
  isPaused: isPaused,
@@ -69,6 +69,8 @@ var _range = require("./range.styles");
69
69
 
70
70
  var _dual_range = require("./dual_range.styles");
71
71
 
72
+ var _i18n = require("../../i18n");
73
+
72
74
  var _react2 = require("@emotion/react");
73
75
 
74
76
  var _excluded = ["className", "css", "compressed", "disabled", "fullWidth", "isLoading", "readOnly", "id", "max", "min", "name", "step", "showLabels", "showInput", "showTicks", "tickInterval", "ticks", "levels", "onBlur", "onChange", "onFocus", "showRange", "value", "isInvalid", "append", "prepend", "minInputProps", "maxInputProps", "isDraggable", "theme"];
@@ -560,6 +562,10 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
560
562
  var rightThumbStyles = rightThumbColor ? _objectSpread(_objectSpread({}, rightThumbPosition), {}, {
561
563
  backgroundColor: (0, _range_levels_colors.euiRangeLevelColor)(rightThumbColor, theme.euiTheme)
562
564
  }) : rightThumbPosition;
565
+ var dualSliderScreenReaderInstructions = (0, _react2.jsx)(_i18n.EuiI18n, {
566
+ token: "euiDualRange.sliderScreenReaderInstructions",
567
+ default: "You are in a custom range slider. Use the Up and Down arrow keys to change the minimum value. Press Tab to interact with the maximum value."
568
+ });
563
569
  var theRange = (0, _react2.jsx)(_range_wrapper.EuiRangeWrapper, {
564
570
  css: cssStyles,
565
571
  className: classes,
@@ -615,8 +621,8 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
615
621
  onFocus: _this2.onThumbFocus,
616
622
  onBlur: _this2.onThumbBlur,
617
623
  onKeyDown: _this2.handleDraggableKeyDown,
618
- "aria-describedby": _this2.props['aria-describedby'],
619
- "aria-label": _this2.props['aria-label']
624
+ "aria-describedby": showInputOnly ? undefined : _this2.props['aria-describedby'],
625
+ "aria-label": showInputOnly ? undefined : _this2.props['aria-label']
620
626
  }), (0, _react2.jsx)(_range_thumb.EuiRangeThumb, {
621
627
  min: min,
622
628
  max: Number(_this2.upperValue),
@@ -628,8 +634,8 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
628
634
  onFocus: _this2.onThumbFocus,
629
635
  onBlur: _this2.onThumbBlur,
630
636
  style: (0, _global_styling.logicalStyles)(leftThumbStyles),
631
- "aria-describedby": _this2.props['aria-describedby'],
632
- "aria-label": _this2.props['aria-label']
637
+ "aria-describedby": showInputOnly ? undefined : _this2.props['aria-describedby'],
638
+ "aria-label": showInputOnly ? undefined : _this2.props['aria-label']
633
639
  }), (0, _react2.jsx)(_range_thumb.EuiRangeThumb, {
634
640
  min: Number(_this2.lowerValue),
635
641
  max: max,
@@ -641,8 +647,8 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
641
647
  onFocus: _this2.onThumbFocus,
642
648
  onBlur: _this2.onThumbBlur,
643
649
  style: (0, _global_styling.logicalStyles)(rightThumbStyles),
644
- "aria-describedby": _this2.props['aria-describedby'],
645
- "aria-label": _this2.props['aria-label']
650
+ "aria-describedby": showInputOnly ? undefined : _this2.props['aria-describedby'],
651
+ "aria-label": showInputOnly ? undefined : _this2.props['aria-label']
646
652
  })), showRange && _this2.isValid && (0, _react2.jsx)(_range_highlight.EuiRangeHighlight, {
647
653
  showTicks: showTicks,
648
654
  min: Number(min),
@@ -675,7 +681,8 @@ var EuiDualRangeClass = /*#__PURE__*/function (_Component) {
675
681
  isOpen: this.state.isPopoverOpen,
676
682
  closePopover: this.closePopover,
677
683
  disableFocusTrap: true,
678
- onPanelResize: this.onResize
684
+ onPanelResize: this.onResize,
685
+ popoverScreenReaderText: dualSliderScreenReaderInstructions
679
686
  }, theRange) : undefined;
680
687
  return thePopover || theRange;
681
688
  }
@@ -59,6 +59,8 @@ var _range_wrapper = require("./range_wrapper");
59
59
 
60
60
  var _range = require("./range.styles");
61
61
 
62
+ var _i18n = require("../../i18n");
63
+
62
64
  var _react2 = require("@emotion/react");
63
65
 
64
66
  var _excluded = ["className", "compressed", "disabled", "fullWidth", "isLoading", "readOnly", "id", "max", "min", "name", "step", "showLabels", "showInput", "showTicks", "tickInterval", "ticks", "levels", "showRange", "showValue", "valueAppend", "valuePrepend", "onBlur", "onChange", "onFocus", "value", "tabIndex", "isInvalid", "theme"];
@@ -205,6 +207,10 @@ var EuiRangeClass = /*#__PURE__*/function (_Component) {
205
207
  var styles = (0, _range.euiRangeStyles)(theme);
206
208
  var cssStyles = [styles.euiRange, showInput && styles.hasInput];
207
209
  var thumbColor = levels && (0, _range_levels_colors.getLevelColor)(levels, Number(value));
210
+ var sliderScreenReaderInstructions = (0, _react2.jsx)(_i18n.EuiI18n, {
211
+ token: "euiRange.sliderScreenReaderInstructions",
212
+ default: "You are in a custom range slider. Use the Up and Down arrow keys to change the value."
213
+ });
208
214
  var theRange = (0, _react2.jsx)(_range_wrapper.EuiRangeWrapper, {
209
215
  className: classes,
210
216
  css: cssStyles,
@@ -225,7 +231,7 @@ var EuiRangeClass = /*#__PURE__*/function (_Component) {
225
231
  levels: levels,
226
232
  onChange: this.handleOnChange,
227
233
  value: value,
228
- "aria-hidden": showInput === true,
234
+ "aria-hidden": !!showInput,
229
235
  showRange: showRange
230
236
  }, function (trackWidth) {
231
237
  return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_range_slider.EuiRangeSlider, (0, _extends2.default)({
@@ -246,7 +252,7 @@ var EuiRangeClass = /*#__PURE__*/function (_Component) {
246
252
  } : undefined,
247
253
  onFocus: showInput === true ? undefined : onFocus,
248
254
  onBlur: showInputOnly ? _this2.onInputBlur : onBlur,
249
- "aria-hidden": showInput === true ? true : false,
255
+ "aria-hidden": !!showInput,
250
256
  thumbColor: thumbColor
251
257
  }, rest)), showRange && _this2.isValid && (0, _react2.jsx)(_range_highlight.EuiRangeHighlight, {
252
258
  showTicks: showTicks,
@@ -279,7 +285,8 @@ var EuiRangeClass = /*#__PURE__*/function (_Component) {
279
285
  fullWidth: fullWidth,
280
286
  isOpen: this.state.isPopoverOpen,
281
287
  closePopover: this.closePopover,
282
- disableFocusTrap: true
288
+ disableFocusTrap: true,
289
+ popoverScreenReaderText: sliderScreenReaderInstructions
283
290
  }, theRange) : undefined;
284
291
  return thePopover ? thePopover : theRange;
285
292
  }
@@ -47,7 +47,7 @@ var _i18n = require("../../i18n");
47
47
 
48
48
  var _react2 = require("@emotion/react");
49
49
 
50
- var _excluded = ["className", "options", "valueOfSelected", "onChange", "isOpen", "isInvalid", "hasDividers", "itemClassName", "itemLayoutAlign", "fullWidth", "popoverProps", "compressed"],
50
+ var _excluded = ["className", "options", "valueOfSelected", "placeholder", "onChange", "isOpen", "isInvalid", "hasDividers", "itemClassName", "itemLayoutAlign", "fullWidth", "popoverProps", "compressed"],
51
51
  _excluded2 = ["value", "dropdownDisplay", "inputDisplay"];
52
52
 
53
53
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -83,7 +83,6 @@ var EuiSuperSelect = /*#__PURE__*/function (_Component) {
83
83
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "itemNodes", []);
84
84
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_isMounted", false);
85
85
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "describedById", (0, _services.htmlIdGenerator)('euiSuperSelect_')('_screenreaderDescribeId'));
86
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "labelledById", (0, _services.htmlIdGenerator)('euiSuperSelect_')('_screenreaderLabelId'));
87
86
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
88
87
  isPopoverOpen: _this.props.isOpen || false
89
88
  });
@@ -242,6 +241,7 @@ var EuiSuperSelect = /*#__PURE__*/function (_Component) {
242
241
  className = _this$props.className,
243
242
  options = _this$props.options,
244
243
  valueOfSelected = _this$props.valueOfSelected,
244
+ placeholder = _this$props.placeholder,
245
245
  onChange = _this$props.onChange,
246
246
  isOpen = _this$props.isOpen,
247
247
  isInvalid = _this$props.isInvalid,
@@ -260,9 +260,9 @@ var EuiSuperSelect = /*#__PURE__*/function (_Component) {
260
260
  'euiSuperSelect__item--hasDividers': hasDividers
261
261
  }, itemClassName);
262
262
  var button = (0, _react2.jsx)(_super_select_control.EuiSuperSelectControl, (0, _extends2.default)({
263
- screenReaderId: this.labelledById,
264
263
  options: options,
265
264
  value: valueOfSelected,
265
+ placeholder: placeholder,
266
266
  onClick: this.state.isPopoverOpen ? this.closePopover : this.openPopover,
267
267
  onKeyDown: this.onSelectKeyDown,
268
268
  className: buttonClasses,
@@ -305,14 +305,19 @@ var EuiSuperSelect = /*#__PURE__*/function (_Component) {
305
305
  }, (0, _react2.jsx)(_i18n.EuiI18n, {
306
306
  token: "euiSuperSelect.screenReaderAnnouncement",
307
307
  default: "You are in a form selector and must select a single option. Use the Up and Down arrow keys to navigate or Escape to close."
308
- }))), (0, _react2.jsx)("div", {
309
- "aria-labelledby": this.labelledById,
310
- "aria-describedby": this.describedById,
311
- className: "euiSuperSelect__listbox",
312
- role: "listbox",
313
- "aria-activedescendant": valueOfSelected,
314
- tabIndex: 0
315
- }, items));
308
+ }))), (0, _react2.jsx)(_i18n.EuiI18n, {
309
+ token: "euiSuperSelect.ariaLabel",
310
+ default: "Select listbox"
311
+ }, function (ariaLabel) {
312
+ return (0, _react2.jsx)("div", {
313
+ "aria-label": ariaLabel,
314
+ "aria-describedby": _this2.describedById,
315
+ className: "euiSuperSelect__listbox",
316
+ role: "listbox",
317
+ "aria-activedescendant": valueOfSelected,
318
+ tabIndex: 0
319
+ }, items);
320
+ }));
316
321
  }
317
322
  }]);
318
323
  return EuiSuperSelect;
@@ -356,6 +361,11 @@ EuiSuperSelect.propTypes = {
356
361
  readOnly: _propTypes.default.bool,
357
362
  name: _propTypes.default.string,
358
363
 
364
+ /**
365
+ * Placeholder to display when the current selected value is empty.
366
+ */
367
+ placeholder: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.node]),
368
+
359
369
  /**
360
370
  * Creates an input group with element(s) coming before input.
361
371
  * `string` | `ReactElement` or an array of these
@@ -368,12 +378,6 @@ EuiSuperSelect.propTypes = {
368
378
  */
369
379
  append: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.element.isRequired]).isRequired, _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.element.isRequired]).isRequired).isRequired]),
370
380
 
371
- /**
372
- * Creates a semantic label ID for the `div[role="listbox"]` that's opened on click or keypress.
373
- * __Generated and passed down by `EuiSuperSelect`.__
374
- */
375
- screenReaderId: _propTypes.default.string,
376
-
377
381
  /**
378
382
  * Pass an array of options that must at least include:
379
383
  * `value`: storing unique value of item,
@@ -17,19 +17,15 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _classnames = _interopRequireDefault(require("classnames"));
19
19
 
20
- var _accessibility = require("../../accessibility");
21
-
22
20
  var _form_control_layout = require("../form_control_layout");
23
21
 
24
- var _i18n = require("../../i18n");
25
-
26
22
  var _num_icons = require("../form_control_layout/_num_icons");
27
23
 
28
24
  var _eui_form_context = require("../eui_form_context");
29
25
 
30
26
  var _react2 = require("@emotion/react");
31
27
 
32
- var _excluded = ["className", "options", "id", "name", "fullWidth", "isLoading", "isInvalid", "readOnly", "defaultValue", "compressed", "value", "prepend", "append", "screenReaderId", "disabled"];
28
+ var _excluded = ["className", "options", "id", "name", "fullWidth", "isLoading", "isInvalid", "readOnly", "defaultValue", "compressed", "value", "placeholder", "prepend", "append", "disabled"];
33
29
 
34
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
31
 
@@ -55,9 +51,9 @@ var EuiSuperSelectControl = function EuiSuperSelectControl(props) {
55
51
  _props$compressed = props.compressed,
56
52
  compressed = _props$compressed === void 0 ? false : _props$compressed,
57
53
  value = props.value,
54
+ placeholder = props.placeholder,
58
55
  prepend = props.prepend,
59
56
  append = props.append,
60
- screenReaderId = props.screenReaderId,
61
57
  disabled = props.disabled,
62
58
  rest = (0, _objectWithoutProperties2.default)(props, _excluded);
63
59
  var numIconsClass = (0, _num_icons.getFormControlClassNameForIconCount)({
@@ -89,6 +85,7 @@ var EuiSuperSelectControl = function EuiSuperSelectControl(props) {
89
85
  selectedValue = selectedOption ? selectedOption.inputDisplay : selectedValue;
90
86
  }
91
87
 
88
+ var showPlaceholder = !!placeholder && !selectedValue;
92
89
  return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)("input", {
93
90
  type: "hidden",
94
91
  id: id,
@@ -106,22 +103,16 @@ var EuiSuperSelectControl = function EuiSuperSelectControl(props) {
106
103
  compressed: compressed,
107
104
  prepend: prepend,
108
105
  append: append
109
- }, (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("span", {
110
- id: screenReaderId
111
- }, (0, _react2.jsx)(_i18n.EuiI18n, {
112
- token: "euiSuperSelectControl.selectAnOption",
113
- default: "Select an option: {selectedValue}, is selected",
114
- values: {
115
- selectedValue: selectedValue
116
- }
117
- }))), (0, _react2.jsx)("button", (0, _extends2.default)({
106
+ }, (0, _react2.jsx)("button", (0, _extends2.default)({
118
107
  type: "button",
119
108
  className: classes,
120
109
  "aria-haspopup": "listbox",
121
110
  disabled: disabled || readOnly // @ts-ignore Using as a selector only for mixin use
122
111
  ,
123
112
  readOnly: readOnly
124
- }, rest), selectedValue)));
113
+ }, rest), showPlaceholder ? (0, _react2.jsx)("span", {
114
+ className: "euiSuperSelectControl__placeholder"
115
+ }, placeholder) : selectedValue)));
125
116
  };
126
117
 
127
118
  exports.EuiSuperSelectControl = EuiSuperSelectControl;