@elastic/eui 70.0.0 → 70.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 (209) hide show
  1. package/dist/eui_theme_dark.css +11 -180
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +11 -180
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/accessibility/screen_reader_only/screen_reader_only.js +1 -1
  6. package/es/components/accessibility/screen_reader_only/screen_reader_only.styles.js +1 -1
  7. package/es/components/accordion/accordion.a11y.js +35 -0
  8. package/es/components/badge/beta_badge/beta_badge.js +6 -6
  9. package/es/components/basic_table/in_memory_table.js +8 -0
  10. package/es/components/button/button_display/_button_display.js +7 -6
  11. package/es/components/button/button_display/_button_display.styles.js +4 -4
  12. package/es/components/button/button_display/_button_display_content.js +6 -9
  13. package/es/components/button/button_display/_button_display_content.styles.js +3 -41
  14. package/es/components/card/card.js +13 -31
  15. package/es/components/card/card.styles.js +15 -3
  16. package/es/components/card/card_select/card_select.styles.js +4 -4
  17. package/es/components/card/checkable_card/checkable_card.js +3 -2
  18. package/es/components/context_menu/context_menu_panel.a11y.js +34 -0
  19. package/es/components/datagrid/controls/column_selector.js +1 -1
  20. package/es/components/datagrid/controls/column_sorting.js +1 -1
  21. package/es/components/datagrid/controls/data_grid_toolbar.js +6 -2
  22. package/es/components/datagrid/controls/index.js +1 -0
  23. package/es/components/datagrid/controls/keyboard_shortcuts.js +191 -0
  24. package/es/components/datagrid/data_grid.js +12 -2
  25. package/es/components/date_picker/super_date_picker/super_date_picker.js +22 -4
  26. package/es/components/header/header_links/header_links.js +6 -0
  27. package/es/components/loading/loading_spinner.js +14 -3
  28. package/es/components/loading/loading_spinner.styles.js +11 -7
  29. package/es/components/modal/modal.js +17 -2
  30. package/es/components/page_template/page_template.js +6 -9
  31. package/es/components/popover/popover.js +13 -3
  32. package/es/components/popover/popover_arrow/_popover_arrow.js +1 -0
  33. package/es/components/popover/popover_panel/_popover_panel.js +8 -2
  34. package/es/components/popover/popover_panel/_popover_panel.styles.js +15 -1
  35. package/es/components/search_bar/search_bar.js +39 -5
  36. package/es/components/search_bar/search_box.js +37 -4
  37. package/es/components/selectable/selectable.a11y.js +118 -0
  38. package/es/components/selectable/selectable.js +9 -6
  39. package/es/components/tabs/tab.js +31 -7
  40. package/es/components/tabs/tab.styles.js +63 -0
  41. package/es/components/tabs/tabbed_content/tabbed_content.js +17 -1
  42. package/es/components/tabs/tabs.js +20 -14
  43. package/es/components/tabs/tabs.styles.js +21 -0
  44. package/es/components/tour/tour_step.js +6 -0
  45. package/es/services/string/to_initials.js +1 -1
  46. package/eui.d.ts +305 -198
  47. package/i18ntokens.json +442 -10
  48. package/lib/components/accessibility/screen_reader_only/screen_reader_only.js +1 -1
  49. package/lib/components/accessibility/screen_reader_only/screen_reader_only.styles.js +1 -1
  50. package/lib/components/accordion/accordion.a11y.js +44 -0
  51. package/lib/components/badge/beta_badge/beta_badge.js +6 -10
  52. package/lib/components/basic_table/in_memory_table.js +8 -0
  53. package/lib/components/button/button_display/_button_display.js +7 -6
  54. package/lib/components/button/button_display/_button_display.styles.js +4 -4
  55. package/lib/components/button/button_display/_button_display_content.js +6 -9
  56. package/lib/components/button/button_display/_button_display_content.styles.js +10 -40
  57. package/lib/components/card/card.js +14 -33
  58. package/lib/components/card/card.styles.js +15 -3
  59. package/lib/components/card/card_select/card_select.styles.js +4 -4
  60. package/lib/components/card/checkable_card/checkable_card.js +3 -2
  61. package/lib/components/context_menu/context_menu_panel.a11y.js +42 -0
  62. package/lib/components/datagrid/controls/column_selector.js +1 -1
  63. package/lib/components/datagrid/controls/column_sorting.js +1 -1
  64. package/lib/components/datagrid/controls/data_grid_toolbar.js +7 -2
  65. package/lib/components/datagrid/controls/index.js +8 -0
  66. package/lib/components/datagrid/controls/keyboard_shortcuts.js +208 -0
  67. package/lib/components/datagrid/data_grid.js +11 -1
  68. package/lib/components/date_picker/super_date_picker/super_date_picker.js +22 -4
  69. package/lib/components/header/header_links/header_links.js +6 -0
  70. package/lib/components/loading/loading_spinner.js +13 -2
  71. package/lib/components/loading/loading_spinner.styles.js +14 -6
  72. package/lib/components/modal/modal.js +23 -2
  73. package/lib/components/page_template/page_template.js +6 -9
  74. package/lib/components/popover/popover.js +13 -3
  75. package/lib/components/popover/popover_arrow/_popover_arrow.js +1 -0
  76. package/lib/components/popover/popover_panel/_popover_panel.js +8 -2
  77. package/lib/components/popover/popover_panel/_popover_panel.styles.js +16 -1
  78. package/lib/components/search_bar/search_bar.js +40 -5
  79. package/lib/components/search_bar/search_box.js +38 -4
  80. package/lib/components/selectable/selectable.a11y.js +122 -0
  81. package/lib/components/selectable/selectable.js +9 -6
  82. package/lib/components/tabs/tab.js +31 -6
  83. package/lib/components/tabs/tab.styles.js +69 -0
  84. package/lib/components/tabs/tabbed_content/tabbed_content.js +17 -1
  85. package/lib/components/tabs/tabs.js +24 -14
  86. package/lib/components/tabs/tabs.styles.js +32 -0
  87. package/lib/services/string/to_initials.js +1 -1
  88. package/optimize/es/components/accessibility/screen_reader_only/screen_reader_only.styles.js +1 -1
  89. package/optimize/es/components/accordion/accordion.a11y.js +35 -0
  90. package/optimize/es/components/badge/beta_badge/beta_badge.js +6 -6
  91. package/optimize/es/components/button/button_display/_button_display.js +6 -5
  92. package/optimize/es/components/button/button_display/_button_display.styles.js +4 -4
  93. package/optimize/es/components/button/button_display/_button_display_content.js +6 -9
  94. package/optimize/es/components/button/button_display/_button_display_content.styles.js +3 -41
  95. package/optimize/es/components/card/card.js +12 -30
  96. package/optimize/es/components/card/card.styles.js +15 -3
  97. package/optimize/es/components/card/card_select/card_select.styles.js +4 -4
  98. package/optimize/es/components/card/checkable_card/checkable_card.js +3 -2
  99. package/optimize/es/components/context_menu/context_menu_panel.a11y.js +34 -0
  100. package/optimize/es/components/datagrid/controls/column_selector.js +1 -1
  101. package/optimize/es/components/datagrid/controls/column_sorting.js +1 -1
  102. package/optimize/es/components/datagrid/controls/data_grid_toolbar.js +6 -2
  103. package/optimize/es/components/datagrid/controls/index.js +1 -0
  104. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +181 -0
  105. package/optimize/es/components/datagrid/data_grid.js +6 -2
  106. package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +12 -4
  107. package/optimize/es/components/loading/loading_spinner.js +13 -3
  108. package/optimize/es/components/loading/loading_spinner.styles.js +11 -7
  109. package/optimize/es/components/modal/modal.js +17 -2
  110. package/optimize/es/components/page_template/page_template.js +6 -9
  111. package/optimize/es/components/popover/popover.js +7 -3
  112. package/optimize/es/components/popover/popover_arrow/_popover_arrow.js +1 -0
  113. package/optimize/es/components/popover/popover_panel/_popover_panel.js +6 -1
  114. package/optimize/es/components/popover/popover_panel/_popover_panel.styles.js +15 -1
  115. package/optimize/es/components/search_bar/search_bar.js +31 -5
  116. package/optimize/es/components/search_bar/search_box.js +29 -3
  117. package/optimize/es/components/selectable/selectable.a11y.js +107 -0
  118. package/optimize/es/components/selectable/selectable.js +9 -6
  119. package/optimize/es/components/tabs/tab.js +19 -7
  120. package/optimize/es/components/tabs/tab.styles.js +63 -0
  121. package/optimize/es/components/tabs/tabs.js +20 -14
  122. package/optimize/es/components/tabs/tabs.styles.js +21 -0
  123. package/optimize/es/services/string/to_initials.js +1 -1
  124. package/optimize/lib/components/accessibility/screen_reader_only/screen_reader_only.styles.js +1 -1
  125. package/optimize/lib/components/accordion/accordion.a11y.js +44 -0
  126. package/optimize/lib/components/badge/beta_badge/beta_badge.js +6 -13
  127. package/optimize/lib/components/button/button_display/_button_display.js +7 -6
  128. package/optimize/lib/components/button/button_display/_button_display.styles.js +4 -4
  129. package/optimize/lib/components/button/button_display/_button_display_content.js +6 -9
  130. package/optimize/lib/components/button/button_display/_button_display_content.styles.js +10 -40
  131. package/optimize/lib/components/card/card.js +13 -32
  132. package/optimize/lib/components/card/card.styles.js +15 -3
  133. package/optimize/lib/components/card/card_select/card_select.styles.js +4 -4
  134. package/optimize/lib/components/card/checkable_card/checkable_card.js +3 -2
  135. package/optimize/lib/components/context_menu/context_menu_panel.a11y.js +42 -0
  136. package/optimize/lib/components/datagrid/controls/column_selector.js +1 -1
  137. package/optimize/lib/components/datagrid/controls/column_sorting.js +1 -1
  138. package/optimize/lib/components/datagrid/controls/data_grid_toolbar.js +7 -2
  139. package/optimize/lib/components/datagrid/controls/index.js +8 -0
  140. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +207 -0
  141. package/optimize/lib/components/datagrid/data_grid.js +5 -1
  142. package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +12 -4
  143. package/optimize/lib/components/loading/loading_spinner.js +14 -2
  144. package/optimize/lib/components/loading/loading_spinner.styles.js +14 -6
  145. package/optimize/lib/components/modal/modal.js +22 -2
  146. package/optimize/lib/components/page_template/page_template.js +6 -9
  147. package/optimize/lib/components/popover/popover.js +7 -3
  148. package/optimize/lib/components/popover/popover_arrow/_popover_arrow.js +1 -0
  149. package/optimize/lib/components/popover/popover_panel/_popover_panel.js +6 -1
  150. package/optimize/lib/components/popover/popover_panel/_popover_panel.styles.js +16 -1
  151. package/optimize/lib/components/search_bar/search_bar.js +31 -5
  152. package/optimize/lib/components/search_bar/search_box.js +30 -3
  153. package/optimize/lib/components/selectable/selectable.a11y.js +122 -0
  154. package/optimize/lib/components/selectable/selectable.js +9 -6
  155. package/optimize/lib/components/tabs/tab.js +19 -6
  156. package/optimize/lib/components/tabs/tab.styles.js +69 -0
  157. package/optimize/lib/components/tabs/tabs.js +24 -14
  158. package/optimize/lib/components/tabs/tabs.styles.js +32 -0
  159. package/optimize/lib/services/string/to_initials.js +1 -1
  160. package/package.json +5 -4
  161. package/src/components/datagrid/_index.scss +1 -0
  162. package/src/components/datagrid/controls/_data_grid_keyboard_shortcuts.scss +17 -0
  163. package/src/components/datagrid/controls/_data_grid_toolbar.scss +0 -8
  164. package/src/components/index.scss +0 -1
  165. package/src/components/modal/_modal.scss +3 -1
  166. package/src/themes/amsterdam/overrides/_index.scss +0 -1
  167. package/test-env/components/accessibility/screen_reader_only/screen_reader_only.js +1 -1
  168. package/test-env/components/accessibility/screen_reader_only/screen_reader_only.styles.js +1 -1
  169. package/test-env/components/accordion/accordion.a11y.js +44 -0
  170. package/test-env/components/badge/beta_badge/beta_badge.js +6 -13
  171. package/test-env/components/basic_table/in_memory_table.js +8 -0
  172. package/test-env/components/button/button_display/_button_display.js +7 -6
  173. package/test-env/components/button/button_display/_button_display.styles.js +4 -4
  174. package/test-env/components/button/button_display/_button_display_content.js +6 -9
  175. package/test-env/components/button/button_display/_button_display_content.styles.js +10 -40
  176. package/test-env/components/card/card.js +14 -33
  177. package/test-env/components/card/card.styles.js +15 -3
  178. package/test-env/components/card/card_select/card_select.styles.js +4 -4
  179. package/test-env/components/card/checkable_card/checkable_card.js +3 -2
  180. package/test-env/components/context_menu/context_menu_panel.a11y.js +42 -0
  181. package/test-env/components/datagrid/controls/column_selector.js +1 -1
  182. package/test-env/components/datagrid/controls/column_sorting.js +1 -1
  183. package/test-env/components/datagrid/controls/data_grid_toolbar.js +7 -2
  184. package/test-env/components/datagrid/controls/index.js +8 -0
  185. package/test-env/components/datagrid/controls/keyboard_shortcuts.js +207 -0
  186. package/test-env/components/datagrid/data_grid.js +11 -1
  187. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +22 -4
  188. package/test-env/components/header/header_links/header_links.js +6 -0
  189. package/test-env/components/loading/loading_spinner.js +14 -2
  190. package/test-env/components/loading/loading_spinner.styles.js +14 -6
  191. package/test-env/components/modal/modal.js +22 -2
  192. package/test-env/components/page_template/page_template.js +6 -9
  193. package/test-env/components/popover/popover.js +13 -3
  194. package/test-env/components/popover/popover_arrow/_popover_arrow.js +1 -0
  195. package/test-env/components/popover/popover_panel/_popover_panel.js +8 -2
  196. package/test-env/components/popover/popover_panel/_popover_panel.styles.js +16 -1
  197. package/test-env/components/search_bar/search_bar.js +39 -5
  198. package/test-env/components/search_bar/search_box.js +38 -4
  199. package/test-env/components/selectable/selectable.a11y.js +122 -0
  200. package/test-env/components/selectable/selectable.js +9 -6
  201. package/test-env/components/tabs/tab.js +31 -6
  202. package/test-env/components/tabs/tab.styles.js +69 -0
  203. package/test-env/components/tabs/tabbed_content/tabbed_content.js +17 -1
  204. package/test-env/components/tabs/tabs.js +24 -14
  205. package/test-env/components/tabs/tabs.styles.js +32 -0
  206. package/test-env/services/string/to_initials.js +1 -1
  207. package/src/components/tabs/_index.scss +0 -1
  208. package/src/components/tabs/_tabs.scss +0 -110
  209. package/src/themes/amsterdam/overrides/_tabs.scss +0 -80
@@ -267,12 +267,15 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
267
267
  cellPopoverContext = _useCellPopover.cellPopoverContext,
268
268
  cellPopover = _useCellPopover.cellPopover;
269
269
  /**
270
- * Toolbar & fullscreen
270
+ * Toolbar, keyboard shortcuts, & fullscreen
271
271
  */
272
272
 
273
273
 
274
274
  var showToolbar = !!toolbarVisibility;
275
275
 
276
+ var _useDataGridKeyboardS = (0, _controls.useDataGridKeyboardShortcuts)(),
277
+ keyboardShortcuts = _useDataGridKeyboardS.keyboardShortcuts;
278
+
276
279
  var _useDataGridFullScree = (0, _controls.useDataGridFullScreenSelector)(),
277
280
  isFullScreen = _useDataGridFullScree.isFullScreen,
278
281
  setIsFullScreen = _useDataGridFullScree.setIsFullScreen,
@@ -361,6 +364,7 @@ var EuiDataGrid = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
361
364
  toolbarVisibility: toolbarVisibility,
362
365
  isFullScreen: isFullScreen,
363
366
  fullScreenSelector: fullScreenSelector,
367
+ keyboardShortcuts: keyboardShortcuts,
364
368
  displaySelector: displaySelector,
365
369
  columnSelector: columnSelector,
366
370
  columnSorting: columnSorting
@@ -1139,6 +1143,12 @@ EuiDataGrid.propTypes = {
1139
1143
  */
1140
1144
  showSortSelector: _propTypes.default.bool,
1141
1145
 
1146
+ /**
1147
+ * Displays a popover listing all keyboard controls and shortcuts for the data grid.
1148
+ * If set to `false`, the toggle will be visually hidden, but still focusable by keyboard and screen reader users.
1149
+ */
1150
+ showKeyboardShortcuts: _propTypes.default.bool,
1151
+
1142
1152
  /**
1143
1153
  * Allows user to be able to fullscreen the data grid. If set to `false` make sure your grid fits within a large enough panel to still show the other controls.
1144
1154
  */
@@ -292,7 +292,8 @@ var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
292
292
  locale = _this$props2.locale,
293
293
  timeFormat = _this$props2.timeFormat,
294
294
  utcOffset = _this$props2.utcOffset,
295
- compressed = _this$props2.compressed;
295
+ compressed = _this$props2.compressed,
296
+ onFocus = _this$props2.onFocus;
296
297
 
297
298
  if (showPrettyDuration && !isStartDatePopoverOpen && !isEndDatePopoverOpen) {
298
299
  return (0, _react2.jsx)(_date_picker_range.EuiDatePickerRange, {
@@ -307,7 +308,8 @@ var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
307
308
  }),
308
309
  "data-test-subj": "superDatePickerShowDatesButton",
309
310
  disabled: isDisabled,
310
- onClick: _this.hidePrettyDuration
311
+ onClick: _this.hidePrettyDuration,
312
+ onFocus: onFocus
311
313
  }, (0, _react2.jsx)(_pretty_duration.PrettyDuration, {
312
314
  timeFrom: start,
313
315
  timeTo: end,
@@ -340,7 +342,10 @@ var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
340
342
  isOpen: _this.state.isStartDatePopoverOpen,
341
343
  onPopoverToggle: _this.onStartDatePopoverToggle,
342
344
  onPopoverClose: _this.onStartDatePopoverClose,
343
- timeOptions: timeOptions
345
+ timeOptions: timeOptions,
346
+ buttonProps: {
347
+ onFocus: onFocus
348
+ }
344
349
  }),
345
350
  endDateControl: (0, _react2.jsx)(_date_popover_button.EuiDatePopoverButton, {
346
351
  position: "end",
@@ -358,7 +363,10 @@ var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
358
363
  isOpen: _this.state.isEndDatePopoverOpen,
359
364
  onPopoverToggle: _this.onEndDatePopoverToggle,
360
365
  onPopoverClose: _this.onEndDatePopoverClose,
361
- timeOptions: timeOptions
366
+ timeOptions: timeOptions,
367
+ buttonProps: {
368
+ onFocus: onFocus
369
+ }
362
370
  })
363
371
  });
364
372
  });
@@ -576,6 +584,11 @@ EuiSuperDatePickerInternal.propTypes = {
576
584
  */
577
585
  locale: _propTypes.default.any,
578
586
 
587
+ /**
588
+ * Triggered whenever the EuiSuperDatePicker's dates are focused
589
+ */
590
+ onFocus: _propTypes.default.any,
591
+
579
592
  /**
580
593
  * Callback for when the refresh interval is fired.
581
594
  * EuiSuperDatePicker will only manage a refresh interval timer when onRefresh callback is supplied
@@ -786,6 +799,11 @@ EuiSuperDatePicker.propTypes = {
786
799
  */
787
800
  locale: _propTypes.default.any,
788
801
 
802
+ /**
803
+ * Triggered whenever the EuiSuperDatePicker's dates are focused
804
+ */
805
+ onFocus: _propTypes.default.any,
806
+
789
807
  /**
790
808
  * Callback for when the refresh interval is fired.
791
809
  * EuiSuperDatePicker will only manage a refresh interval timer when onRefresh callback is supplied
@@ -272,6 +272,12 @@ EuiHeaderLinks.propTypes = {
272
272
  */
273
273
  repositionOnScroll: _propTypes.default.bool,
274
274
 
275
+ /**
276
+ * Must be set to true if using `EuiDragDropContext` within a popover,
277
+ * otherwise your nested drag & drop will have incorrect positioning
278
+ */
279
+ hasDragDrop: _propTypes.default.bool,
280
+
275
281
  /**
276
282
  * By default, popover content inherits the z-index of the anchor
277
283
  * component; pass `zIndex` to override
@@ -19,12 +19,18 @@ var _loading_spinner = require("./loading_spinner.styles");
19
19
 
20
20
  var _react2 = require("@emotion/react");
21
21
 
22
- var _excluded = ["size", "className", "aria-label", "color"];
22
+ var _excluded = ["size", "className", "aria-label", "color", "style"];
23
23
 
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
 
26
26
  function _extends() { _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; }; return _extends.apply(this, arguments); }
27
27
 
28
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
29
+
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
+
32
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
33
+
28
34
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
29
35
 
30
36
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -38,16 +44,21 @@ var EuiLoadingSpinner = function EuiLoadingSpinner(_ref) {
38
44
  className = _ref.className,
39
45
  ariaLabel = _ref['aria-label'],
40
46
  color = _ref.color,
47
+ style = _ref.style,
41
48
  rest = _objectWithoutProperties(_ref, _excluded);
42
49
 
43
50
  var euiTheme = (0, _services.useEuiTheme)();
44
- var styles = (0, _loading_spinner.euiLoadingSpinnerStyles)(euiTheme, color);
51
+ var styles = (0, _loading_spinner.euiLoadingSpinnerStyles)(euiTheme);
45
52
  var cssStyles = [styles.euiLoadingSpinner, styles[size]];
46
53
  var classes = (0, _classnames.default)('euiLoadingSpinner', className);
47
54
  var defaultLabel = (0, _loading_strings.useLoadingAriaLabel)();
55
+ var customColorStyle = color ? _objectSpread(_objectSpread({}, style), {}, {
56
+ borderColor: (0, _loading_spinner.euiSpinnerBorderColorsCSS)(euiTheme, color)
57
+ }) : style;
48
58
  return (0, _react2.jsx)("span", _extends({
49
59
  className: classes,
50
60
  css: cssStyles,
61
+ style: customColorStyle,
51
62
  role: "progressbar",
52
63
  "aria-label": ariaLabel || defaultLabel
53
64
  }, rest));
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.euiLoadingSpinnerStyles = void 0;
6
+ exports.euiSpinnerBorderColorsCSS = exports.euiLoadingSpinnerStyles = void 0;
7
7
 
8
8
  var _react = require("@emotion/react");
9
9
 
@@ -23,14 +23,22 @@ var spinnerSizes = {
23
23
  xxl: 'xxl'
24
24
  };
25
25
 
26
- var spinnerColorsCSS = function spinnerColorsCSS(border, highlight) {
27
- return "\n border-color: ".concat(highlight, " ").concat(border, " ").concat(border, " ").concat(border, ";\n ");
26
+ var euiSpinnerBorderColorsCSS = function euiSpinnerBorderColorsCSS(_ref) {
27
+ var euiTheme = _ref.euiTheme;
28
+ var colors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
29
+ var _colors$border = colors.border,
30
+ border = _colors$border === void 0 ? euiTheme.colors.lightShade : _colors$border,
31
+ _colors$highlight = colors.highlight,
32
+ highlight = _colors$highlight === void 0 ? euiTheme.colors.primary : _colors$highlight;
33
+ return "".concat(highlight, " ").concat(border, " ").concat(border, " ").concat(border);
28
34
  };
29
35
 
30
- var euiLoadingSpinnerStyles = function euiLoadingSpinnerStyles(_ref, color) {
31
- var euiTheme = _ref.euiTheme;
36
+ exports.euiSpinnerBorderColorsCSS = euiSpinnerBorderColorsCSS;
37
+
38
+ var euiLoadingSpinnerStyles = function euiLoadingSpinnerStyles(euiThemeContext) {
39
+ var euiTheme = euiThemeContext.euiTheme;
32
40
  return {
33
- euiLoadingSpinner: /*#__PURE__*/(0, _react.css)("flex-shrink:0;display:inline-block;border-radius:50%;border:", euiTheme.border.thick, ";", spinnerColorsCSS((color === null || color === void 0 ? void 0 : color.border) || euiTheme.colors.lightShade, (color === null || color === void 0 ? void 0 : color.highlight) || euiTheme.colors.primary), ";", _global_styling.euiCanAnimate, "{animation:", _loadingSpinner, " 0.6s infinite linear;};label:euiLoadingSpinner;"),
41
+ euiLoadingSpinner: /*#__PURE__*/(0, _react.css)("flex-shrink:0;display:inline-block;border-radius:50%;border:", euiTheme.border.thick, ";border-color:", euiSpinnerBorderColorsCSS(euiThemeContext), ";", _global_styling.euiCanAnimate, "{animation:", _loadingSpinner, " 0.6s infinite linear;};label:euiLoadingSpinner;"),
34
42
  // Sizes
35
43
  s: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalSizeCSS)(euiTheme.size[spinnerSizes.s], euiTheme.size[spinnerSizes.s]), " border-width:calc(", euiTheme.border.width.thin, " * 1.5);;label:s;"),
36
44
  m: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalSizeCSS)(euiTheme.size[spinnerSizes.m], euiTheme.size[spinnerSizes.m]), " border-width:calc(", euiTheme.border.width.thin, " * 1.5);;label:m;"),
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.EuiModal = void 0;
7
9
 
8
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
9
11
 
10
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
13
 
@@ -27,6 +29,10 @@ var _excluded = ["className", "children", "initialFocus", "onClose", "maxWidth",
27
29
 
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
31
 
32
+ 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); }
33
+
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+
30
36
  function _extends() { _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; }; return _extends.apply(this, arguments); }
31
37
 
32
38
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -49,6 +55,19 @@ var EuiModal = function EuiModal(_ref) {
49
55
  style = _ref.style,
50
56
  rest = _objectWithoutProperties(_ref, _excluded);
51
57
 
58
+ // TODO: Remove this onFocus scroll workaround after react-focus-on supports focusOptions
59
+ // @see https://github.com/elastic/eui/issues/6304
60
+ var bodyScrollTop = (0, _react.useRef)(typeof window === 'undefined' ? undefined : window.scrollY // Account for SSR
61
+ );
62
+ var onFocus = (0, _react.useCallback)(function () {
63
+ if (bodyScrollTop.current != null) {
64
+ window.scrollTo({
65
+ top: bodyScrollTop.current
66
+ });
67
+ bodyScrollTop.current = undefined; // Unset after first auto focus
68
+ }
69
+ }, []);
70
+
52
71
  var onKeyDown = function onKeyDown(event) {
53
72
  if (event.key === _services.keys.ESCAPE) {
54
73
  event.preventDefault();
@@ -71,11 +90,13 @@ var EuiModal = function EuiModal(_ref) {
71
90
 
72
91
  var classes = (0, _classnames.default)('euiModal', widthClassName, className);
73
92
  return (0, _react2.jsx)(_overlay_mask.EuiOverlayMask, null, (0, _react2.jsx)(_focus_trap.EuiFocusTrap, {
74
- initialFocus: initialFocus
93
+ initialFocus: initialFocus,
94
+ scrollLock: true
75
95
  }, (0, _react2.jsx)("div", _extends({
76
96
  className: classes,
77
97
  onKeyDown: onKeyDown,
78
98
  tabIndex: 0,
99
+ onFocus: onFocus,
79
100
  style: newStyle || style
80
101
  }, rest), (0, _react2.jsx)(_i18n.EuiI18n, {
81
102
  token: "euiModal.closeModal",
@@ -169,15 +169,12 @@ var _EuiPageTemplate = function _EuiPageTemplate(_ref) {
169
169
  _react.default.Children.toArray(children).forEach(function (child, index) {
170
170
  if (! /*#__PURE__*/_react.default.isValidElement(child)) return; // Skip non-components
171
171
 
172
- switch (child.type) {
173
- case _page.EuiPageSidebar:
174
- sidebar.push( /*#__PURE__*/_react.default.cloneElement(child, _objectSpread(_objectSpread({
175
- key: "sidebar".concat(index)
176
- }, getSideBarProps()), child.props)));
177
- break;
178
-
179
- default:
180
- sections.push(child);
172
+ if (child.type === _page.EuiPageSidebar || child.props.__EMOTION_TYPE_PLEASE_DO_NOT_USE__ === _page.EuiPageSidebar) {
173
+ sidebar.push( /*#__PURE__*/_react.default.cloneElement(child, _objectSpread(_objectSpread({
174
+ key: "sidebar".concat(index)
175
+ }, getSideBarProps()), child.props)));
176
+ } else {
177
+ sections.push(child);
181
178
  }
182
179
  });
183
180
 
@@ -42,7 +42,7 @@ var _popover2 = require("./popover.styles");
42
42
 
43
43
  var _popover_panel = require("./popover_panel");
44
44
 
45
- var _excluded = ["anchorClassName", "anchorPosition", "button", "buttonRef", "insert", "isOpen", "ownFocus", "children", "className", "closePopover", "panelClassName", "panelPaddingSize", "panelProps", "panelRef", "panelStyle", "popoverScreenReaderText", "popoverRef", "hasArrow", "arrowChildren", "repositionOnScroll", "zIndex", "attachToAnchor", "display", "offset", "onPositionChange", "onTrapDeactivation", "buffer", "aria-label", "aria-labelledby", "container", "focusTrapProps", "initialFocus", "tabIndex"];
45
+ var _excluded = ["anchorClassName", "anchorPosition", "button", "buttonRef", "insert", "isOpen", "ownFocus", "children", "className", "closePopover", "panelClassName", "panelPaddingSize", "panelProps", "panelRef", "panelStyle", "popoverScreenReaderText", "popoverRef", "hasArrow", "arrowChildren", "repositionOnScroll", "hasDragDrop", "zIndex", "attachToAnchor", "display", "offset", "onPositionChange", "onTrapDeactivation", "buffer", "aria-label", "aria-labelledby", "container", "focusTrapProps", "initialFocus", "tabIndex"];
46
46
 
47
47
  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); }
48
48
 
@@ -446,7 +446,8 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
446
446
  }, {
447
447
  key: "render",
448
448
  value: function render() {
449
- var _this4 = this;
449
+ var _panelProps$tabIndex,
450
+ _this4 = this;
450
451
 
451
452
  var _this$props = this.props,
452
453
  anchorClassName = _this$props.anchorClassName,
@@ -469,6 +470,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
469
470
  hasArrow = _this$props.hasArrow,
470
471
  arrowChildren = _this$props.arrowChildren,
471
472
  repositionOnScroll = _this$props.repositionOnScroll,
473
+ hasDragDrop = _this$props.hasDragDrop,
472
474
  zIndex = _this$props.zIndex,
473
475
  attachToAnchor = _this$props.attachToAnchor,
474
476
  display = _this$props.display,
@@ -481,9 +483,10 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
481
483
  container = _this$props.container,
482
484
  focusTrapProps = _this$props.focusTrapProps,
483
485
  initialFocusProp = _this$props.initialFocus,
484
- tabIndexProp = _this$props.tabIndex,
486
+ _tabIndexProp = _this$props.tabIndex,
485
487
  rest = _objectWithoutProperties(_this$props, _excluded);
486
488
 
489
+ var tabIndexProp = (_panelProps$tabIndex = panelProps === null || panelProps === void 0 ? void 0 : panelProps.tabIndex) !== null && _panelProps$tabIndex !== void 0 ? _panelProps$tabIndex : _tabIndexProp;
487
490
  var styles = (0, _popover2.euiPopoverStyles)();
488
491
  var popoverStyles = [styles.euiPopover, {
489
492
  display: display
@@ -547,6 +550,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
547
550
  position: this.state.arrowPosition,
548
551
  isAttached: attachToAnchor,
549
552
  className: (0, _classnames.default)(panelClassName, panelProps === null || panelProps === void 0 ? void 0 : panelProps.className),
553
+ hasDragDrop: hasDragDrop,
550
554
  hasShadow: false,
551
555
  paddingSize: panelPaddingSize,
552
556
  tabIndex: tabIndex,
@@ -767,6 +771,12 @@ EuiPopover.propTypes = {
767
771
  */
768
772
  repositionOnScroll: _propTypes.default.bool,
769
773
 
774
+ /**
775
+ * Must be set to true if using `EuiDragDropContext` within a popover,
776
+ * otherwise your nested drag & drop will have incorrect positioning
777
+ */
778
+ hasDragDrop: _propTypes.default.bool,
779
+
770
780
  /**
771
781
  * By default, popover content inherits the z-index of the anchor
772
782
  * component; pass `zIndex` to override
@@ -37,6 +37,7 @@ var EuiPopoverArrow = function EuiPopoverArrow(_ref) {
37
37
  var styles = (0, _popover_arrow.euiPopoverArrowStyles)(euiTheme);
38
38
  var cssStyles = [styles.euiPopoverArrow, styles[position]];
39
39
  return (0, _react2.jsx)("div", _extends({
40
+ className: "euiPopover__arrow",
40
41
  "data-popover-arrow": position,
41
42
  css: cssStyles
42
43
  }, rest), children);
@@ -21,7 +21,7 @@ var _popover_panel = require("./_popover_panel.styles");
21
21
 
22
22
  var _react2 = require("@emotion/react");
23
23
 
24
- var _excluded = ["children", "className", "isOpen", "isAttached", "position"];
24
+ var _excluded = ["children", "className", "isOpen", "isAttached", "hasDragDrop", "position"];
25
25
 
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
@@ -61,6 +61,7 @@ var EuiPopoverPanel = function EuiPopoverPanel(_ref) {
61
61
  className = _ref.className,
62
62
  isOpen = _ref.isOpen,
63
63
  isAttached = _ref.isAttached,
64
+ hasDragDrop = _ref.hasDragDrop,
64
65
  position = _ref.position,
65
66
  rest = _objectWithoutProperties(_ref, _excluded);
66
67
 
@@ -76,6 +77,10 @@ var EuiPopoverPanel = function EuiPopoverPanel(_ref) {
76
77
  panelCSS = [].concat(_toConsumableArray(panelCSS), [isOpen && styles.attached.isOpen, position && styles.attached[position]]);
77
78
  }
78
79
 
80
+ if (hasDragDrop) {
81
+ panelCSS = [].concat(_toConsumableArray(panelCSS), [styles.hasDragDrop.hasDragDrop, position && styles.hasDragDrop[position]]);
82
+ }
83
+
79
84
  return (0, _react2.jsx)(EuiPopoverPanelContext.Provider, {
80
85
  value: panelContext
81
86
  }, (0, _react2.jsx)(_panel.EuiPanel, _extends({
@@ -129,5 +134,6 @@ EuiPopoverPanel.propTypes = {
129
134
  css: _propTypes.default.any,
130
135
  isOpen: _propTypes.default.bool,
131
136
  isAttached: _propTypes.default.bool,
132
- position: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([null])])
137
+ position: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([null])]),
138
+ hasDragDrop: _propTypes.default.bool
133
139
  };
@@ -9,6 +9,8 @@ var _react = require("@emotion/react");
9
9
 
10
10
  var _mixins = require("../../../themes/amsterdam/global_styling/mixins");
11
11
 
12
+ var _functions = require("../../../themes/amsterdam/global_styling/functions");
13
+
12
14
  var _global_styling = require("../../../global_styling");
13
15
 
14
16
  /*
@@ -28,7 +30,8 @@ var translateDistance = 's';
28
30
  */
29
31
 
30
32
  var euiPopoverPanelStyles = function euiPopoverPanelStyles(euiThemeContext) {
31
- var euiTheme = euiThemeContext.euiTheme;
33
+ var euiTheme = euiThemeContext.euiTheme,
34
+ colorMode = euiThemeContext.colorMode;
32
35
  return {
33
36
  // Base
34
37
  euiPopover__panel: /*#__PURE__*/(0, _react.css)("position:absolute;", (0, _global_styling.logicalCSS)('min-width', "".concat(euiTheme.base * 7, "px")), ";", (0, _global_styling.logicalCSS)('max-width', "calc(100vw - ".concat(euiTheme.size.xl, ")")), ";backface-visibility:hidden;pointer-events:none;opacity:0;transform:translateY(0) translateX(0) translateZ(0);", (0, _mixins.euiShadowMedium)(euiThemeContext, {
@@ -49,6 +52,18 @@ var euiPopoverPanelStyles = function euiPopoverPanelStyles(euiThemeContext) {
49
52
  // Satisfies TS
50
53
  left: /*#__PURE__*/(0, _react.css)(";label:left;"),
51
54
  right: /*#__PURE__*/(0, _react.css)(";label:right;")
55
+ },
56
+ // Overrides for drag & drop contexts within popovers. This is required because
57
+ // the fixed positions of drag and drop don't work inside of transformed elements
58
+ hasDragDrop: {
59
+ hasDragDrop: /*#__PURE__*/(0, _react.css)("transform:none;filter:none;", (0, _mixins.euiShadowMedium)(euiThemeContext, {
60
+ property: 'box-shadow'
61
+ }), ";;label:hasDragDrop;"),
62
+ // The offset transforms must be recreated in margins
63
+ top: /*#__PURE__*/(0, _react.css)("margin-block-start:", euiTheme.size[translateDistance], ";;label:top;"),
64
+ bottom: /*#__PURE__*/(0, _react.css)("margin-block-start:-", euiTheme.size[translateDistance], ";.euiPopover__arrow{filter:drop-shadow(\n 0 -6px 6px ", (0, _functions.getShadowColor)(euiTheme.colors.shadow, 0.12, colorMode), "\n );};label:bottom;"),
65
+ left: /*#__PURE__*/(0, _react.css)("margin-inline-start:", euiTheme.size[translateDistance], ";.euiPopover__arrow{filter:drop-shadow(\n 6px 0 6px ", (0, _functions.getShadowColor)(euiTheme.colors.shadow, 0.12, colorMode), "\n );};label:left;"),
66
+ right: /*#__PURE__*/(0, _react.css)("margin-inline-start:-", euiTheme.size[translateDistance], ";.euiPopover__arrow{filter:drop-shadow(\n -6px 0 6px ", (0, _functions.getShadowColor)(euiTheme.colors.shadow, 0.12, colorMode), "\n );};label:right;")
52
67
  }
53
68
  };
54
69
  };
@@ -21,6 +21,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
22
  var _react = _interopRequireWildcard(require("react"));
23
23
 
24
+ var _accessibility = require("../../services/accessibility");
25
+
24
26
  var _predicate = require("../../services/predicate");
25
27
 
26
28
  var _flex = require("../flex");
@@ -43,6 +45,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
43
45
 
44
46
  function _extends() { _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; }; return _extends.apply(this, arguments); }
45
47
 
48
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
49
+
50
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
51
+
46
52
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
47
53
 
48
54
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -103,6 +109,8 @@ var EuiSearchBar = /*#__PURE__*/function (_Component) {
103
109
 
104
110
  _this = _super.call(this, props);
105
111
 
112
+ _defineProperty(_assertThisInitialized(_this), "hintId", (0, _accessibility.htmlIdGenerator)('__hint')());
113
+
106
114
  _defineProperty(_assertThisInitialized(_this), "onSearch", function (queryText) {
107
115
  try {
108
116
  var query = parseQuery(queryText, _this.props);
@@ -159,7 +167,8 @@ var EuiSearchBar = /*#__PURE__*/function (_Component) {
159
167
  _this.state = {
160
168
  query: _query,
161
169
  queryText: _query.text,
162
- error: null
170
+ error: null,
171
+ isHintVisible: false
163
172
  };
164
173
  return _this;
165
174
  }
@@ -221,10 +230,15 @@ var EuiSearchBar = /*#__PURE__*/function (_Component) {
221
230
  }, {
222
231
  key: "render",
223
232
  value: function render() {
233
+ var _hint$popoverProps$is,
234
+ _hint$popoverProps,
235
+ _this2 = this;
236
+
224
237
  var _this$state = this.state,
225
238
  query = _this$state.query,
226
239
  queryText = _this$state.queryText,
227
- error = _this$state.error;
240
+ error = _this$state.error,
241
+ isHintVisibleState = _this$state.isHintVisible;
228
242
  var _this$props = this.props,
229
243
  _this$props$box = _this$props.box;
230
244
  _this$props$box = _this$props$box === void 0 ? {
@@ -235,7 +249,8 @@ var EuiSearchBar = /*#__PURE__*/function (_Component) {
235
249
  box = _objectWithoutProperties(_this$props$box, _excluded),
236
250
  filters = _this$props.filters,
237
251
  toolsLeft = _this$props.toolsLeft,
238
- toolsRight = _this$props.toolsRight;
252
+ toolsRight = _this$props.toolsRight,
253
+ hint = _this$props.hint;
239
254
 
240
255
  var toolsLeftEl = this.renderTools(toolsLeft);
241
256
  var filtersBar = !filters ? undefined : (0, _react2.jsx)(_flex.EuiFlexItem, {
@@ -247,6 +262,7 @@ var EuiSearchBar = /*#__PURE__*/function (_Component) {
247
262
  onChange: this.onFiltersChange
248
263
  }));
249
264
  var toolsRightEl = this.renderTools(toolsRight);
265
+ var isHintVisible = (_hint$popoverProps$is = hint === null || hint === void 0 ? void 0 : (_hint$popoverProps = hint.popoverProps) === null || _hint$popoverProps === void 0 ? void 0 : _hint$popoverProps.isOpen) !== null && _hint$popoverProps$is !== void 0 ? _hint$popoverProps$is : isHintVisibleState;
250
266
  return (0, _react2.jsx)(_flex.EuiFlexGroup, {
251
267
  gutterSize: "m",
252
268
  alignItems: "center",
@@ -258,7 +274,17 @@ var EuiSearchBar = /*#__PURE__*/function (_Component) {
258
274
  query: queryText,
259
275
  onSearch: this.onSearch,
260
276
  isInvalid: error != null,
261
- title: error ? error.message : undefined
277
+ title: error ? error.message : undefined,
278
+ "aria-describedby": isHintVisible ? "".concat(this.hintId) : undefined,
279
+ hint: hint ? _objectSpread({
280
+ isVisible: isHintVisible,
281
+ setIsVisible: function setIsVisible(isVisible) {
282
+ _this2.setState({
283
+ isHintVisible: isVisible
284
+ });
285
+ },
286
+ id: this.hintId
287
+ }, hint) : undefined
262
288
  }))), filtersBar, toolsRightEl);
263
289
  }
264
290
  }], [{
@@ -269,7 +295,8 @@ var EuiSearchBar = /*#__PURE__*/function (_Component) {
269
295
  return {
270
296
  query: query,
271
297
  queryText: query.text,
272
- error: null
298
+ error: null,
299
+ isHintVisible: prevState.isHintVisible
273
300
  };
274
301
  }
275
302
 
@@ -463,6 +490,14 @@ EuiSearchBar.propTypes = {
463
490
  * Date formatter to use when parsing date values
464
491
  */
465
492
  dateFormat: _propTypes.default.any,
493
+
494
+ /**
495
+ * Hint to render below the search bar
496
+ */
497
+ hint: _propTypes.default.shape({
498
+ content: _propTypes.default.node.isRequired,
499
+ popoverProps: _propTypes.default.any
500
+ }),
466
501
  className: _propTypes.default.string,
467
502
  "aria-label": _propTypes.default.string,
468
503
  "data-test-subj": _propTypes.default.string,
@@ -13,9 +13,11 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _form = require("../form");
15
15
 
16
+ var _popover = require("../popover");
17
+
16
18
  var _react2 = require("@emotion/react");
17
19
 
18
- var _excluded = ["query", "incremental"];
20
+ var _excluded = ["query", "incremental", "hint"];
19
21
 
20
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
23
 
@@ -88,6 +90,7 @@ var EuiSearchBox = /*#__PURE__*/function (_Component) {
88
90
  var _this$props = this.props,
89
91
  query = _this$props.query,
90
92
  incremental = _this$props.incremental,
93
+ hint = _this$props.hint,
91
94
  rest = _objectWithoutProperties(_this$props, _excluded);
92
95
 
93
96
  var ariaLabel;
@@ -98,15 +101,39 @@ var EuiSearchBox = /*#__PURE__*/function (_Component) {
98
101
  ariaLabel = 'This is a search bar. After typing your query, hit enter to filter the results lower in the page.';
99
102
  }
100
103
 
101
- return (0, _react2.jsx)(_form.EuiFieldSearch, _extends({
104
+ var search = (0, _react2.jsx)(_form.EuiFieldSearch, _extends({
102
105
  inputRef: function inputRef(input) {
103
106
  return _this2.inputElement = input;
104
107
  },
105
108
  fullWidth: true,
106
109
  defaultValue: query,
107
110
  incremental: incremental,
108
- "aria-label": ariaLabel
111
+ "aria-label": ariaLabel,
112
+ onFocus: function onFocus() {
113
+ hint === null || hint === void 0 ? void 0 : hint.setIsVisible(true);
114
+ }
109
115
  }, rest));
116
+
117
+ if (hint) {
118
+ return (0, _react2.jsx)(_popover.EuiInputPopover, _extends({
119
+ disableFocusTrap: true,
120
+ input: search,
121
+ isOpen: hint.isVisible,
122
+ fullWidth: true,
123
+ closePopover: function closePopover() {
124
+ hint.setIsVisible(false);
125
+ },
126
+ panelProps: {
127
+ 'aria-live': undefined,
128
+ 'aria-modal': undefined,
129
+ role: undefined,
130
+ tabIndex: -1,
131
+ id: hint.id
132
+ }
133
+ }, hint.popoverProps), hint.content);
134
+ }
135
+
136
+ return search;
110
137
  }
111
138
  }]);
112
139
 
@@ -123,5 +150,12 @@ _defineProperty(EuiSearchBox, "defaultProps", {
123
150
  EuiSearchBox.propTypes = {
124
151
  query: _propTypes.default.string.isRequired,
125
152
  // This is optional in EuiFieldSearchProps
126
- onSearch: _propTypes.default.func.isRequired
153
+ onSearch: _propTypes.default.func.isRequired,
154
+ hint: _propTypes.default.shape({
155
+ id: _propTypes.default.string.isRequired,
156
+ isVisible: _propTypes.default.bool.isRequired,
157
+ setIsVisible: _propTypes.default.func.isRequired,
158
+ content: _propTypes.default.node.isRequired,
159
+ popoverProps: _propTypes.default.any
160
+ })
127
161
  };