@elastic/eui 88.5.4 → 89.0.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 (206) hide show
  1. package/dist/eui_theme_dark.css +26 -526
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +26 -526
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/basic_table/basic_table.js +7 -2
  6. package/es/components/basic_table/in_memory_table.js +7 -2
  7. package/es/components/collapsible_nav/collapsible_nav.js +5 -0
  8. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -2
  9. package/es/components/color_picker/index.js +0 -4
  10. package/es/components/combo_box/combo_box.js +142 -304
  11. package/es/components/combo_box/combo_box_input/combo_box_input.js +0 -13
  12. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +34 -118
  13. package/es/components/context_menu/context_menu_panel.js +6 -6
  14. package/es/components/flex/flex_grid.styles.js +1 -1
  15. package/es/components/flex/flex_group.styles.js +1 -1
  16. package/es/components/flyout/flyout.js +32 -33
  17. package/es/components/flyout/flyout.styles.js +13 -3
  18. package/es/components/form/range/dual_range.js +4 -0
  19. package/es/components/form/range/range.js +4 -0
  20. package/es/components/index.js +0 -1
  21. package/es/components/popover/input_popover.js +47 -3
  22. package/es/components/popover/popover.js +2 -2
  23. package/es/components/table/table_row_cell.js +27 -9
  24. package/es/components/text_truncate/index.js +1 -0
  25. package/es/components/text_truncate/text_block_truncate.js +78 -0
  26. package/es/global_styling/reset/global_styles.js +16 -2
  27. package/es/services/accessibility/index.js +0 -3
  28. package/es/services/index.js +1 -1
  29. package/es/test/rtl/component_helpers.d.ts +2 -0
  30. package/es/test/rtl/component_helpers.js +29 -1
  31. package/eui.d.ts +375 -667
  32. package/i18ntokens.json +52 -286
  33. package/lib/components/basic_table/basic_table.js +7 -2
  34. package/lib/components/basic_table/in_memory_table.js +7 -2
  35. package/lib/components/collapsible_nav/collapsible_nav.js +5 -0
  36. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -2
  37. package/lib/components/color_picker/index.js +0 -7
  38. package/lib/components/combo_box/combo_box.js +141 -303
  39. package/lib/components/combo_box/combo_box_input/combo_box_input.js +0 -13
  40. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +34 -118
  41. package/lib/components/context_menu/context_menu_panel.js +5 -5
  42. package/lib/components/flex/flex_grid.styles.js +1 -1
  43. package/lib/components/flex/flex_group.styles.js +1 -1
  44. package/lib/components/flyout/flyout.js +31 -32
  45. package/lib/components/flyout/flyout.styles.js +19 -10
  46. package/lib/components/form/range/dual_range.js +4 -0
  47. package/lib/components/index.js +0 -11
  48. package/lib/components/popover/input_popover.js +48 -3
  49. package/lib/components/popover/popover.js +1 -1
  50. package/lib/components/table/table_row_cell.js +26 -8
  51. package/lib/components/text_truncate/index.js +7 -0
  52. package/lib/components/text_truncate/text_block_truncate.js +85 -0
  53. package/lib/global_styling/reset/global_styles.js +16 -2
  54. package/lib/services/accessibility/index.js +0 -21
  55. package/lib/services/index.js +0 -21
  56. package/lib/test/rtl/component_helpers.d.ts +2 -0
  57. package/lib/test/rtl/component_helpers.js +31 -2
  58. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -2
  59. package/optimize/es/components/color_picker/index.js +0 -4
  60. package/optimize/es/components/combo_box/combo_box.js +137 -304
  61. package/optimize/es/components/combo_box/combo_box_input/combo_box_input.js +0 -12
  62. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +28 -107
  63. package/optimize/es/components/context_menu/context_menu_panel.js +6 -6
  64. package/optimize/es/components/flex/flex_grid.styles.js +1 -1
  65. package/optimize/es/components/flex/flex_group.styles.js +1 -1
  66. package/optimize/es/components/flyout/flyout.js +32 -33
  67. package/optimize/es/components/flyout/flyout.styles.js +13 -3
  68. package/optimize/es/components/index.js +0 -1
  69. package/optimize/es/components/popover/input_popover.js +43 -3
  70. package/optimize/es/components/popover/popover.js +2 -2
  71. package/optimize/es/components/table/table_row_cell.js +13 -5
  72. package/optimize/es/components/text_truncate/index.js +1 -0
  73. package/optimize/es/components/text_truncate/text_block_truncate.js +58 -0
  74. package/optimize/es/global_styling/reset/global_styles.js +13 -2
  75. package/optimize/es/services/accessibility/index.js +0 -3
  76. package/optimize/es/services/index.js +1 -1
  77. package/optimize/es/test/rtl/component_helpers.d.ts +2 -0
  78. package/optimize/es/test/rtl/component_helpers.js +29 -1
  79. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -2
  80. package/optimize/lib/components/color_picker/index.js +0 -7
  81. package/optimize/lib/components/combo_box/combo_box.js +136 -303
  82. package/optimize/lib/components/combo_box/combo_box_input/combo_box_input.js +0 -12
  83. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +28 -107
  84. package/optimize/lib/components/context_menu/context_menu_panel.js +5 -5
  85. package/optimize/lib/components/flex/flex_grid.styles.js +1 -1
  86. package/optimize/lib/components/flex/flex_group.styles.js +1 -1
  87. package/optimize/lib/components/flyout/flyout.js +31 -32
  88. package/optimize/lib/components/flyout/flyout.styles.js +19 -10
  89. package/optimize/lib/components/index.js +0 -11
  90. package/optimize/lib/components/popover/input_popover.js +44 -3
  91. package/optimize/lib/components/popover/popover.js +1 -1
  92. package/optimize/lib/components/table/table_row_cell.js +12 -4
  93. package/optimize/lib/components/text_truncate/index.js +7 -0
  94. package/optimize/lib/components/text_truncate/text_block_truncate.js +66 -0
  95. package/optimize/lib/global_styling/reset/global_styles.js +19 -10
  96. package/optimize/lib/services/accessibility/index.js +0 -21
  97. package/optimize/lib/services/index.js +0 -21
  98. package/optimize/lib/test/rtl/component_helpers.d.ts +2 -0
  99. package/optimize/lib/test/rtl/component_helpers.js +31 -2
  100. package/package.json +1 -1
  101. package/src/components/combo_box/combo_box_options_list/_combo_box_options_list.scss +5 -15
  102. package/src/components/context_menu/_context_menu_panel.scss +4 -0
  103. package/src/components/index.scss +0 -1
  104. package/src/global_styling/mixins/_index.scss +0 -1
  105. package/src/global_styling/variables/_index.scss +0 -1
  106. package/src/test/README.md +0 -15
  107. package/src/themes/amsterdam/global_styling/mixins/_index.scss +0 -1
  108. package/test-env/components/basic_table/basic_table.js +7 -2
  109. package/test-env/components/basic_table/in_memory_table.js +7 -2
  110. package/test-env/components/collapsible_nav/collapsible_nav.js +5 -0
  111. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -2
  112. package/test-env/components/color_picker/index.js +0 -7
  113. package/test-env/components/combo_box/combo_box.js +141 -303
  114. package/test-env/components/combo_box/combo_box_input/combo_box_input.js +0 -13
  115. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +33 -117
  116. package/test-env/components/context_menu/context_menu_panel.js +5 -5
  117. package/test-env/components/flex/flex_grid.styles.js +1 -1
  118. package/test-env/components/flex/flex_group.styles.js +1 -1
  119. package/test-env/components/flyout/flyout.styles.js +19 -10
  120. package/test-env/components/form/range/dual_range.js +4 -0
  121. package/test-env/components/index.js +0 -11
  122. package/test-env/components/popover/input_popover.js +48 -3
  123. package/test-env/components/popover/popover.js +1 -1
  124. package/test-env/components/table/table_row_cell.js +26 -8
  125. package/test-env/components/text_truncate/index.js +7 -0
  126. package/test-env/components/text_truncate/text_block_truncate.js +82 -0
  127. package/test-env/global_styling/reset/global_styles.js +19 -10
  128. package/test-env/services/accessibility/index.js +0 -21
  129. package/test-env/services/index.js +0 -21
  130. package/test-env/test/rtl/component_helpers.js +31 -2
  131. package/es/components/color_picker/color_stops/color_stop_thumb.js +0 -371
  132. package/es/components/color_picker/color_stops/color_stop_thumb.styles.js +0 -55
  133. package/es/components/color_picker/color_stops/color_stops.js +0 -499
  134. package/es/components/color_picker/color_stops/color_stops.styles.js +0 -61
  135. package/es/components/color_picker/color_stops/index.js +0 -9
  136. package/es/components/color_picker/color_stops/utils.js +0 -95
  137. package/es/components/suggest/index.js +0 -10
  138. package/es/components/suggest/suggest.a11y.js +0 -70
  139. package/es/components/suggest/suggest.js +0 -347
  140. package/es/components/suggest/suggest_item.js +0 -123
  141. package/es/components/suggest/types.js +0 -9
  142. package/es/services/accessibility/accessible_click_keys.js +0 -17
  143. package/es/services/accessibility/cascading_menu_keys.js +0 -28
  144. package/es/services/accessibility/combo_box_keys.js +0 -25
  145. package/lib/components/color_picker/color_stops/color_stop_thumb.js +0 -380
  146. package/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +0 -62
  147. package/lib/components/color_picker/color_stops/color_stops.js +0 -505
  148. package/lib/components/color_picker/color_stops/color_stops.styles.js +0 -67
  149. package/lib/components/color_picker/color_stops/index.js +0 -12
  150. package/lib/components/color_picker/color_stops/utils.js +0 -108
  151. package/lib/components/suggest/index.js +0 -19
  152. package/lib/components/suggest/suggest.a11y.js +0 -73
  153. package/lib/components/suggest/suggest.js +0 -356
  154. package/lib/components/suggest/suggest_item.js +0 -130
  155. package/lib/components/suggest/types.js +0 -16
  156. package/lib/services/accessibility/accessible_click_keys.js +0 -21
  157. package/lib/services/accessibility/cascading_menu_keys.js +0 -35
  158. package/lib/services/accessibility/combo_box_keys.js +0 -32
  159. package/optimize/es/components/color_picker/color_stops/color_stop_thumb.js +0 -329
  160. package/optimize/es/components/color_picker/color_stops/color_stop_thumb.styles.js +0 -55
  161. package/optimize/es/components/color_picker/color_stops/color_stops.js +0 -444
  162. package/optimize/es/components/color_picker/color_stops/color_stops.styles.js +0 -61
  163. package/optimize/es/components/color_picker/color_stops/index.js +0 -9
  164. package/optimize/es/components/color_picker/color_stops/utils.js +0 -90
  165. package/optimize/es/components/suggest/index.js +0 -10
  166. package/optimize/es/components/suggest/suggest.a11y.js +0 -70
  167. package/optimize/es/components/suggest/suggest.js +0 -256
  168. package/optimize/es/components/suggest/suggest_item.js +0 -89
  169. package/optimize/es/components/suggest/types.js +0 -9
  170. package/optimize/es/services/accessibility/accessible_click_keys.js +0 -14
  171. package/optimize/es/services/accessibility/cascading_menu_keys.js +0 -28
  172. package/optimize/es/services/accessibility/combo_box_keys.js +0 -25
  173. package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.js +0 -339
  174. package/optimize/lib/components/color_picker/color_stops/color_stop_thumb.styles.js +0 -62
  175. package/optimize/lib/components/color_picker/color_stops/color_stops.js +0 -451
  176. package/optimize/lib/components/color_picker/color_stops/color_stops.styles.js +0 -67
  177. package/optimize/lib/components/color_picker/color_stops/index.js +0 -12
  178. package/optimize/lib/components/color_picker/color_stops/utils.js +0 -106
  179. package/optimize/lib/components/suggest/index.js +0 -19
  180. package/optimize/lib/components/suggest/suggest.a11y.js +0 -73
  181. package/optimize/lib/components/suggest/suggest.js +0 -266
  182. package/optimize/lib/components/suggest/suggest_item.js +0 -96
  183. package/optimize/lib/components/suggest/types.js +0 -16
  184. package/optimize/lib/services/accessibility/accessible_click_keys.js +0 -20
  185. package/optimize/lib/services/accessibility/cascading_menu_keys.js +0 -35
  186. package/optimize/lib/services/accessibility/combo_box_keys.js +0 -32
  187. package/src/components/suggest/_index.scss +0 -5
  188. package/src/components/suggest/_suggest_input.scss +0 -4
  189. package/src/components/suggest/_suggest_item.scss +0 -103
  190. package/src/components/suggest/_variables.scss +0 -13
  191. package/src/global_styling/mixins/_header.scss +0 -29
  192. package/src/global_styling/variables/_header.scss +0 -3
  193. package/test-env/components/color_picker/color_stops/color_stop_thumb.js +0 -372
  194. package/test-env/components/color_picker/color_stops/color_stop_thumb.styles.js +0 -62
  195. package/test-env/components/color_picker/color_stops/color_stops.js +0 -494
  196. package/test-env/components/color_picker/color_stops/color_stops.styles.js +0 -67
  197. package/test-env/components/color_picker/color_stops/index.js +0 -12
  198. package/test-env/components/color_picker/color_stops/utils.js +0 -106
  199. package/test-env/components/suggest/index.js +0 -19
  200. package/test-env/components/suggest/suggest.a11y.js +0 -73
  201. package/test-env/components/suggest/suggest.js +0 -348
  202. package/test-env/components/suggest/suggest_item.js +0 -129
  203. package/test-env/components/suggest/types.js +0 -16
  204. package/test-env/services/accessibility/accessible_click_keys.js +0 -20
  205. package/test-env/services/accessibility/cascading_menu_keys.js +0 -35
  206. package/test-env/services/accessibility/combo_box_keys.js +0 -32
@@ -68,12 +68,6 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
68
68
  inputWidth: inputWidth
69
69
  });
70
70
  });
71
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updatePosition", function () {
72
- // Wait a beat for the DOM to update, since we depend on DOM elements' bounds.
73
- requestAnimationFrame(function () {
74
- _this.props.updatePosition();
75
- });
76
- });
77
71
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onFocus", function (event) {
78
72
  _this.props.onFocus(event);
79
73
  _this.setState({
@@ -114,10 +108,6 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
114
108
  value: function componentDidUpdate(prevProps) {
115
109
  if (prevProps.searchValue !== this.props.searchValue) {
116
110
  this.updateInputSize(this.props.searchValue);
117
-
118
- // We need to update the position of everything if the user enters enough input to change
119
- // the size of the input.
120
- this.updatePosition();
121
111
  }
122
112
  }
123
113
  }, {
@@ -143,7 +133,6 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
143
133
  searchValue = _this$props3.searchValue,
144
134
  selectedOptions = _this$props3.selectedOptions,
145
135
  singleSelectionProp = _this$props3.singleSelection,
146
- toggleButtonRef = _this$props3.toggleButtonRef,
147
136
  value = _this$props3.value,
148
137
  prepend = _this$props3.prepend,
149
138
  append = _this$props3.append,
@@ -210,7 +199,6 @@ var EuiComboBoxInput = /*#__PURE__*/function (_Component) {
210
199
  'data-test-subj': 'comboBoxToggleListButton',
211
200
  disabled: isDisabled,
212
201
  onClick: isListOpen && !isDisabled ? onCloseListClick : onOpenListClick,
213
- ref: toggleButtonRef,
214
202
  side: 'right',
215
203
  tabIndex: -1,
216
204
  type: 'arrowDown'
@@ -326,7 +314,6 @@ EuiComboBoxInput.propTypes = {
326
314
  asPlainText: _propTypes.default.bool
327
315
  }).isRequired]),
328
316
  toggleButtonRef: _propTypes.default.any,
329
- updatePosition: _propTypes.default.func.isRequired,
330
317
  value: _propTypes.default.string,
331
318
  prepend: _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]),
332
319
  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]),
@@ -28,11 +28,12 @@ var _combo_box_title = require("./combo_box_title");
28
28
  var _i18n = require("../../i18n");
29
29
  var _filter_select_item = require("../../filter_group/filter_select_item");
30
30
  var _badge = require("../../badge");
31
- var _popover_panel = require("../../popover/popover_panel");
32
31
  var _text_truncate = require("../../text_truncate");
32
+ var _input_popover = require("../../popover/input_popover");
33
33
  var _react2 = require("@emotion/react");
34
- var _excluded = ["key", "isGroupLabelOption", "label", "value", "prepend", "append", "truncationProps"],
35
- _excluded2 = ["data-test-subj", "activeOptionIndex", "areAllOptionsSelected", "customOptionText", "fullWidth", "getSelectedOptionForSearchValue", "isCaseSensitive", "isLoading", "listRef", "matchingOptions", "onCloseList", "onCreateOption", "onOptionClick", "onOptionEnterKey", "onScroll", "optionRef", "options", "position", "renderOption", "rootId", "rowHeight", "scrollToIndex", "searchValue", "selectedOptions", "singleSelection", "updatePosition", "width", "delimiter", "zIndex", "style", "truncationProps", "listboxAriaLabel"];
34
+ var _excluded = ["children"],
35
+ _excluded2 = ["key", "isGroupLabelOption", "label", "value", "prepend", "append", "truncationProps"],
36
+ _excluded3 = ["data-test-subj", "activeOptionIndex", "areAllOptionsSelected", "customOptionText", "fullWidth", "getSelectedOptionForSearchValue", "isCaseSensitive", "isLoading", "listRef", "matchingOptions", "onCloseList", "onCreateOption", "onOptionClick", "onOptionEnterKey", "onScroll", "options", "renderOption", "rootId", "rowHeight", "scrollToIndex", "searchValue", "selectedOptions", "singleSelection", "delimiter", "truncationProps", "listboxAriaLabel"];
36
37
  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); }
37
38
  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; }
38
39
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -61,43 +62,25 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
61
62
  args[_key] = arguments[_key];
62
63
  }
63
64
  _this = _super.call.apply(_super, [this].concat(args));
64
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "listRefInstance", null);
65
65
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "listRef", null);
66
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "listBoxRef", null);
67
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updatePosition", function () {
68
- // Wait a beat for the DOM to update, since we depend on DOM elements' bounds.
69
- requestAnimationFrame(function () {
70
- _this.props.updatePosition(_this.listRefInstance);
71
- });
72
- });
73
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "closeListOnScroll", function (event) {
74
- // Close the list when a scroll event happens, but not if the scroll happened in the options list.
75
- // This mirrors Firefox's approach of auto-closing `select` elements onscroll.
76
- if (_this.listRefInstance && event.target && _this.listRefInstance.contains(event.target) === false) {
77
- _this.props.onCloseList(event);
78
- }
79
- });
80
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "listRefCallback", function (ref) {
81
- _this.props.listRef(ref);
82
- _this.listRefInstance = ref;
83
- });
84
66
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setListRef", function (ref) {
85
67
  _this.listRef = ref;
86
68
  });
87
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setListBoxRef", function (ref) {
88
- _this.listBoxRef = ref;
89
- if (ref) {
90
- ref.setAttribute('aria-label', _this.props.listboxAriaLabel);
91
- ref.setAttribute('id', _this.props.rootId('listbox'));
92
- ref.setAttribute('role', 'listbox');
93
- ref.setAttribute('tabIndex', '0');
94
- }
69
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "ListInnerElement", function (_ref) {
70
+ var children = _ref.children,
71
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
72
+ return (0, _react2.jsx)("div", (0, _extends2.default)({}, rest, {
73
+ "aria-label": _this.props.listboxAriaLabel,
74
+ id: _this.props.rootId('listbox'),
75
+ role: "listbox",
76
+ tabIndex: "0"
77
+ }), children);
95
78
  });
96
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "ListRow", function (_ref) {
79
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "ListRow", function (_ref2) {
97
80
  var _option$key;
98
- var data = _ref.data,
99
- index = _ref.index,
100
- style = _ref.style;
81
+ var data = _ref2.data,
82
+ index = _ref2.index,
83
+ style = _ref2.style;
101
84
  var option = data[index];
102
85
  var key = option.key,
103
86
  isGroupLabelOption = option.isGroupLabelOption,
@@ -106,12 +89,11 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
106
89
  prepend = option.prepend,
107
90
  append = option.append,
108
91
  _truncationProps = option.truncationProps,
109
- rest = (0, _objectWithoutProperties2.default)(option, _excluded);
92
+ rest = (0, _objectWithoutProperties2.default)(option, _excluded2);
110
93
  var _this$props = _this.props,
111
94
  singleSelection = _this$props.singleSelection,
112
95
  selectedOptions = _this$props.selectedOptions,
113
96
  onOptionClick = _this$props.onOptionClick,
114
- optionRef = _this$props.optionRef,
115
97
  activeOptionIndex = _this$props.activeOptionIndex,
116
98
  renderOption = _this$props.renderOption,
117
99
  searchValue = _this$props.searchValue,
@@ -139,7 +121,6 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
139
121
  onOptionClick(option);
140
122
  }
141
123
  },
142
- ref: optionRef.bind((0, _assertThisInitialized2.default)(_this), index),
143
124
  isFocused: optionIsFocused,
144
125
  checked: checked,
145
126
  showIcons: singleSelection ? true : false,
@@ -198,51 +179,12 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
198
179
  return _this;
199
180
  }
200
181
  (0, _createClass2.default)(EuiComboBoxOptionsList, [{
201
- key: "componentDidMount",
202
- value: function componentDidMount() {
203
- var _this2 = this;
204
- // Wait a frame, otherwise moving focus from one combo box to another will result in the class
205
- // being removed from the body.
206
- requestAnimationFrame(function () {
207
- document.body.classList.add('euiBody-hasPortalContent');
208
- });
209
- this.updatePosition();
210
- window.addEventListener('resize', this.updatePosition);
211
-
212
- // Firefox will trigger a scroll event in many common situations when the options list div is appended
213
- // to the DOM; in testing it was always within 100ms, but setting a timeout here for 500ms to be safe
214
- setTimeout(function () {
215
- window.addEventListener('scroll', _this2.closeListOnScroll, {
216
- passive: true,
217
- // for better performance as we won't call preventDefault
218
- capture: true // scroll events don't bubble, they must be captured instead
219
- });
220
- }, 500);
221
- }
222
- }, {
223
182
  key: "componentDidUpdate",
224
183
  value: function componentDidUpdate(prevProps) {
225
- var options = prevProps.options,
226
- selectedOptions = prevProps.selectedOptions,
227
- searchValue = prevProps.searchValue;
228
-
229
- // We don't compare matchingOptions because that will result in a loop.
230
- if (searchValue !== this.props.searchValue || options !== this.props.options || selectedOptions !== this.props.selectedOptions) {
231
- this.updatePosition();
232
- }
233
184
  if (this.listRef && typeof this.props.activeOptionIndex !== 'undefined' && this.props.activeOptionIndex !== prevProps.activeOptionIndex) {
234
185
  this.listRef.scrollToItem(this.props.activeOptionIndex, 'auto');
235
186
  }
236
187
  }
237
- }, {
238
- key: "componentWillUnmount",
239
- value: function componentWillUnmount() {
240
- document.body.classList.remove('euiBody-hasPortalContent');
241
- window.removeEventListener('resize', this.updatePosition);
242
- window.removeEventListener('scroll', this.closeListOnScroll, {
243
- capture: true
244
- });
245
- }
246
188
  }, {
247
189
  key: "render",
248
190
  value: function render() {
@@ -262,10 +204,7 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
262
204
  onOptionClick = _this$props2.onOptionClick,
263
205
  onOptionEnterKey = _this$props2.onOptionEnterKey,
264
206
  onScroll = _this$props2.onScroll,
265
- optionRef = _this$props2.optionRef,
266
207
  options = _this$props2.options,
267
- _this$props2$position = _this$props2.position,
268
- position = _this$props2$position === void 0 ? 'bottom' : _this$props2$position,
269
208
  renderOption = _this$props2.renderOption,
270
209
  rootId = _this$props2.rootId,
271
210
  rowHeight = _this$props2.rowHeight,
@@ -273,14 +212,10 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
273
212
  searchValue = _this$props2.searchValue,
274
213
  selectedOptions = _this$props2.selectedOptions,
275
214
  singleSelection = _this$props2.singleSelection,
276
- updatePosition = _this$props2.updatePosition,
277
- width = _this$props2.width,
278
215
  delimiter = _this$props2.delimiter,
279
- zIndex = _this$props2.zIndex,
280
- style = _this$props2.style,
281
216
  truncationProps = _this$props2.truncationProps,
282
217
  listboxAriaLabel = _this$props2.listboxAriaLabel,
283
- rest = (0, _objectWithoutProperties2.default)(_this$props2, _excluded2);
218
+ rest = (0, _objectWithoutProperties2.default)(_this$props2, _excluded3);
284
219
  var emptyStateContent;
285
220
  if (isLoading) {
286
221
  emptyStateContent = (0, _react2.jsx)(_flex.EuiFlexGroup, {
@@ -377,44 +312,30 @@ var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
377
312
  var numVisibleOptions = matchingOptions.length < 7 ? matchingOptions.length : 7;
378
313
  var height = numVisibleOptions * (rowHeight + 1); // Add one for the border
379
314
 
380
- // bounded by max-height of euiComboBoxOptionsList__rowWrap
315
+ // bounded by max-height of .euiComboBoxOptionsList
381
316
  var boundedHeight = height > 200 ? 200 : height;
382
317
  var optionsList = (0, _react2.jsx)(_reactWindow.FixedSizeList, {
318
+ className: "euiComboBoxOptionsList__virtualization",
383
319
  height: boundedHeight,
384
320
  onScroll: onScroll,
385
321
  itemCount: matchingOptions.length,
386
322
  itemSize: rowHeight,
387
323
  itemData: matchingOptions,
388
324
  ref: this.setListRef,
389
- innerRef: this.setListBoxRef,
390
- width: width
325
+ innerElementType: this.ListInnerElement,
326
+ width: this.context
391
327
  }, this.ListRow);
392
-
393
- /**
394
- * Reusing the EuiPopover__panel classes to help with consistency/maintenance.
395
- * But this should really be converted to user the popover component.
396
- */
397
- var classes = (0, _classnames.default)('euiComboBoxOptionsList');
398
- return (0, _react2.jsx)(_popover_panel.EuiPopoverPanel, (0, _extends2.default)({
399
- paddingSize: "none",
400
- hasShadow: false,
401
- className: classes,
402
- panelRef: this.listRefCallback,
328
+ return (0, _react2.jsx)("div", (0, _extends2.default)({
329
+ className: "euiComboBoxOptionsList",
403
330
  "data-test-subj": (0, _classnames.default)('comboBoxOptionsList', dataTestSubj),
404
- style: _objectSpread(_objectSpread({}, style), {}, {
405
- zIndex: zIndex
406
- }),
407
- isOpen: true,
408
- isAttached: true,
409
- position: position
410
- }, rest), (0, _react2.jsx)("div", {
411
- className: "euiComboBoxOptionsList__rowWrap"
412
- }, emptyState || optionsList));
331
+ ref: listRef
332
+ }, rest), emptyState || optionsList);
413
333
  }
414
334
  }]);
415
335
  return EuiComboBoxOptionsList;
416
336
  }(_react.Component);
417
337
  exports.EuiComboBoxOptionsList = EuiComboBoxOptionsList;
338
+ (0, _defineProperty2.default)(EuiComboBoxOptionsList, "contextType", _input_popover.EuiInputPopoverWidthContext);
418
339
  (0, _defineProperty2.default)(EuiComboBoxOptionsList, "defaultProps", {
419
340
  'data-test-subj': '',
420
341
  rowHeight: 29,
@@ -430,9 +351,9 @@ EuiComboBoxOptionsList.propTypes = {
430
351
  areAllOptionsSelected: _propTypes.default.bool,
431
352
  listboxAriaLabel: _propTypes.default.string.isRequired,
432
353
  /**
433
- * Creates a custom text option. You can use `{searchValue}` inside your string to better customize your text.
434
- * It won't show if there's no onCreateOption.
435
- */
354
+ * Creates a custom text option. You can use `{searchValue}` inside your string to better customize your text.
355
+ * It won't show if there's no onCreateOption.
356
+ */
436
357
  customOptionText: _propTypes.default.string,
437
358
  fullWidth: _propTypes.default.bool,
438
359
  getSelectedOptionForSearchValue: _propTypes.default.func,
@@ -471,10 +392,9 @@ EuiComboBoxOptionsList.propTypes = {
471
392
  onOptionClick: _propTypes.default.func,
472
393
  onOptionEnterKey: _propTypes.default.func,
473
394
  onScroll: _propTypes.default.any,
474
- optionRef: _propTypes.default.func.isRequired,
475
395
  /**
476
- * Array of EuiComboBoxOptionOption objects. See #EuiComboBoxOptionOption
477
- */
396
+ * Array of EuiComboBoxOptionOption objects. See #EuiComboBoxOptionOption
397
+ */
478
398
  options: _propTypes.default.arrayOf(_propTypes.default.shape({
479
399
  isGroupLabelOption: _propTypes.default.bool,
480
400
  label: _propTypes.default.string.isRequired,
@@ -502,7 +422,6 @@ EuiComboBoxOptionsList.propTypes = {
502
422
  "data-test-subj": _propTypes.default.string,
503
423
  css: _propTypes.default.any
504
424
  }).isRequired).isRequired,
505
- position: _propTypes.default.oneOf(["top", "bottom"]),
506
425
  renderOption: _propTypes.default.func,
507
426
  rootId: _propTypes.default.any.isRequired,
508
427
  rowHeight: _propTypes.default.number.isRequired,
@@ -535,12 +454,9 @@ EuiComboBoxOptionsList.propTypes = {
535
454
  "data-test-subj": _propTypes.default.string,
536
455
  css: _propTypes.default.any
537
456
  }).isRequired).isRequired,
538
- updatePosition: _propTypes.default.func.isRequired,
539
- width: _propTypes.default.number.isRequired,
540
457
  singleSelection: _propTypes.default.oneOfType([_propTypes.default.bool.isRequired, _propTypes.default.shape({
541
458
  asPlainText: _propTypes.default.bool
542
459
  }).isRequired]),
543
460
  delimiter: _propTypes.default.string,
544
- zIndex: _propTypes.default.number,
545
461
  truncationProps: _propTypes.default.any
546
462
  };
@@ -109,7 +109,7 @@ var EuiContextMenuPanel = /*#__PURE__*/function (_Component) {
109
109
  onClose = _this$props.onClose,
110
110
  showPreviousPanel = _this$props.showPreviousPanel;
111
111
  if (onClose && (items !== null && items !== void 0 && items.length || document.activeElement === _this.backButton || document.activeElement === _this.panel)) {
112
- if (event.key === _services.cascadingMenuKeys.ARROW_LEFT) {
112
+ if (event.key === _services.keys.ARROW_LEFT) {
113
113
  if (showPreviousPanel) {
114
114
  event.preventDefault();
115
115
  event.stopPropagation();
@@ -122,7 +122,7 @@ var EuiContextMenuPanel = /*#__PURE__*/function (_Component) {
122
122
  }
123
123
  if (items !== null && items !== void 0 && items.length) {
124
124
  switch (event.key) {
125
- case _services.cascadingMenuKeys.TAB:
125
+ case _services.keys.TAB:
126
126
  requestAnimationFrame(function () {
127
127
  // NOTE: document.activeElement is stale if not wrapped in requestAnimationFrame
128
128
  var focusedItemIndex = _this.state.menuItems.indexOf(document.activeElement);
@@ -133,21 +133,21 @@ var EuiContextMenuPanel = /*#__PURE__*/function (_Component) {
133
133
  });
134
134
  });
135
135
  break;
136
- case _services.cascadingMenuKeys.ARROW_UP:
136
+ case _services.keys.ARROW_UP:
137
137
  event.preventDefault();
138
138
  _this.focusMenuItem('up');
139
139
  if (_this.props.onUseKeyboardToNavigate) {
140
140
  _this.props.onUseKeyboardToNavigate();
141
141
  }
142
142
  break;
143
- case _services.cascadingMenuKeys.ARROW_DOWN:
143
+ case _services.keys.ARROW_DOWN:
144
144
  event.preventDefault();
145
145
  _this.focusMenuItem('down');
146
146
  if (_this.props.onUseKeyboardToNavigate) {
147
147
  _this.props.onUseKeyboardToNavigate();
148
148
  }
149
149
  break;
150
- case _services.cascadingMenuKeys.ARROW_RIGHT:
150
+ case _services.keys.ARROW_RIGHT:
151
151
  if (_this.props.showNextPanel) {
152
152
  event.preventDefault();
153
153
  _this.props.showNextPanel(onClose && _this.state.focusedItemIndex ? _this.state.focusedItemIndex - 1 // Account for panel title back button
@@ -115,7 +115,7 @@ var euiFlexGridStyles = function euiFlexGridStyles(euiThemeContext) {
115
115
  gutterSizes: {
116
116
  none: /*#__PURE__*/(0, _react.css)(";label:none;"),
117
117
  s: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.s, ";;label:s;"),
118
- m: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.m, ";;label:m;"),
118
+ m: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.base, ";;label:m;"),
119
119
  l: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.l, ";;label:l;"),
120
120
  xl: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.xl, ";;label:xl;")
121
121
  },
@@ -159,7 +159,7 @@ var euiFlexGroupStyles = function euiFlexGroupStyles(euiThemeContext) {
159
159
  none: /*#__PURE__*/(0, _react.css)(";label:none;"),
160
160
  xs: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.xs, ";;label:xs;"),
161
161
  s: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.s, ";;label:s;"),
162
- m: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.m, ";;label:m;"),
162
+ m: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.base, ";;label:m;"),
163
163
  l: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.l, ";;label:l;"),
164
164
  xl: /*#__PURE__*/(0, _react.css)("gap:", euiTheme.size.xxl, ";;label:xl;")
165
165
  },
@@ -12,13 +12,13 @@ var _mixins = require("../../themes/amsterdam/global_styling/mixins");
12
12
  var _color = require("../../services/color");
13
13
  var _form = require("../form/form.styles");
14
14
  var _templateObject, _templateObject2;
15
- /*
16
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
17
- * or more contributor license agreements. Licensed under the Elastic License
18
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
19
- * in compliance with, at your election, the Elastic License 2.0 or the Server
20
- * Side Public License, v 1.
21
- */
15
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /*
16
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
17
+ * or more contributor license agreements. Licensed under the Elastic License
18
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
19
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
20
+ * Side Public License, v 1.
21
+ */
22
22
  var euiFlyoutSlideInRight = (0, _react.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n 0% {\n opacity: 0;\n transform: translateX(100%);\n }\n 75% {\n opacity: 1;\n transform: translateX(0%);\n }\n"])));
23
23
  exports.euiFlyoutSlideInRight = euiFlyoutSlideInRight;
24
24
  var euiFlyoutSlideInLeft = (0, _react.keyframes)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n 0% {\n opacity: 0;\n transform: translateX(-100%);\n }\n 75% {\n opacity: 1;\n transform: translateX(0%);\n }\n"])));
@@ -38,6 +38,14 @@ var euiFlyoutCloseButtonStyles = function euiFlyoutCloseButtonStyles(euiThemeCon
38
38
  };
39
39
  };
40
40
  exports.euiFlyoutCloseButtonStyles = euiFlyoutCloseButtonStyles;
41
+ var _ref = process.env.NODE_ENV === "production" ? {
42
+ name: "yokctr-noAnimation",
43
+ styles: "animation-duration:0s!important;label:noAnimation;"
44
+ } : {
45
+ name: "yokctr-noAnimation",
46
+ styles: "animation-duration:0s!important;label:noAnimation;",
47
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
48
+ };
41
49
  var euiFlyoutStyles = function euiFlyoutStyles(euiThemeContext) {
42
50
  var euiTheme = euiThemeContext.euiTheme;
43
51
  return {
@@ -53,10 +61,11 @@ var euiFlyoutStyles = function euiFlyoutStyles(euiThemeContext) {
53
61
  left: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('left', 0), " clip-path:polygon(0 0, 150% 0, 150% 100%, 0 100%);", _global_styling.euiCanAnimate, "{animation:", euiFlyoutSlideInLeft, " ", euiTheme.animation.normal, " ", euiTheme.animation.resistance, ";};label:left;"),
54
62
  // Type
55
63
  overlay: /*#__PURE__*/(0, _react.css)((0, _mixins.euiShadowXLarge)(euiThemeContext), ";;label:overlay;"),
56
- push: /*#__PURE__*/(0, _react.css)("clip-path:none;animation-duration:0s!important;z-index:", Number(euiTheme.levels.flyout) - 1, ";;label:push;"),
57
- pushSide: {
64
+ push: {
65
+ push: /*#__PURE__*/(0, _react.css)("clip-path:none;z-index:", Number(euiTheme.levels.flyout) - 1, ";;label:push;"),
58
66
  right: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('border-left', euiTheme.border.thick), ";;label:right;"),
59
- left: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('border-right', euiTheme.border.thick), ";;label:left;")
67
+ left: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('border-right', euiTheme.border.thick), ";;label:left;"),
68
+ noAnimation: _ref
60
69
  },
61
70
  // Padding
62
71
  paddingSizes: {
@@ -794,6 +794,10 @@ EuiDualRangeClass.propTypes = {
794
794
  * Alignment of the popover relative to the input
795
795
  */
796
796
  anchorPosition: _propTypes.default.oneOf(["downLeft", "downRight", "downCenter"]),
797
+ /**
798
+ * Allows automatically closing the input popover on page scroll
799
+ */
800
+ closeOnScroll: _propTypes.default.bool,
797
801
  inputRef: _propTypes.default.any,
798
802
  onPanelResize: _propTypes.default.func,
799
803
  /**
@@ -817,17 +817,6 @@ Object.keys(_steps).forEach(function (key) {
817
817
  }
818
818
  });
819
819
  });
820
- var _suggest = require("./suggest");
821
- Object.keys(_suggest).forEach(function (key) {
822
- if (key === "default" || key === "__esModule") return;
823
- if (key in exports && exports[key] === _suggest[key]) return;
824
- Object.defineProperty(exports, key, {
825
- enumerable: true,
826
- get: function get() {
827
- return _suggest[key];
828
- }
829
- });
830
- });
831
820
  var _table = require("./table");
832
821
  Object.keys(_table).forEach(function (key) {
833
822
  if (key === "default" || key === "__esModule") return;
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.EuiInputPopover = void 0;
8
+ exports.EuiInputPopoverWidthContext = exports.EuiInputPopover = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -21,7 +21,7 @@ var _resize_observer = require("../observer/resize_observer");
21
21
  var _focus_trap = require("../focus_trap");
22
22
  var _form = require("../form/form.styles");
23
23
  var _popover = require("./popover");
24
- var _excluded = ["children", "className", "closePopover", "disableFocusTrap", "focusTrapProps", "input", "fullWidth", "panelMinWidth", "onPanelResize", "inputRef", "panelRef"];
24
+ var _excluded = ["children", "className", "closePopover", "closeOnScroll", "disableFocusTrap", "focusTrapProps", "input", "fullWidth", "panelMinWidth", "onPanelResize", "inputRef", "panelRef"];
25
25
  /*
26
26
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
27
27
  * or more contributor license agreements. Licensed under the Elastic License
@@ -33,11 +33,16 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
33
33
  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; }
34
34
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
35
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
36
+ // Used by child components that want to know the parent popover width
37
+ var EuiInputPopoverWidthContext = /*#__PURE__*/(0, _react.createContext)(0);
38
+ exports.EuiInputPopoverWidthContext = EuiInputPopoverWidthContext;
36
39
  var EuiInputPopover = function EuiInputPopover(_ref) {
37
40
  var _props$panelProps;
38
41
  var children = _ref.children,
39
42
  className = _ref.className,
40
43
  closePopover = _ref.closePopover,
44
+ _ref$closeOnScroll = _ref.closeOnScroll,
45
+ closeOnScroll = _ref$closeOnScroll === void 0 ? false : _ref$closeOnScroll,
41
46
  _ref$disableFocusTrap = _ref.disableFocusTrap,
42
47
  disableFocusTrap = _ref$disableFocusTrap === void 0 ? false : _ref$disableFocusTrap,
43
48
  focusTrapProps = _ref.focusTrapProps,
@@ -118,6 +123,40 @@ var EuiInputPopover = function EuiInputPopover(_ref) {
118
123
  }
119
124
  }
120
125
  }, [disableFocusTrap, closePopover, panelPropsOnKeyDown]);
126
+
127
+ /**
128
+ * Optional close on scroll behavior
129
+ */
130
+
131
+ (0, _react.useEffect)(function () {
132
+ // When the popover opens, add a scroll listener to the page (& remove it after)
133
+ if (closeOnScroll && panelEl) {
134
+ // Close the popover, but only if the scroll event occurs outside the input or the popover itself
135
+ var closePopoverOnScroll = function closePopoverOnScroll(event) {
136
+ if (!panelEl || !inputEl || !event.target) return;
137
+ var scrollTarget = event.target;
138
+ if (panelEl.contains(scrollTarget) === false && inputEl.contains(scrollTarget) === false) {
139
+ closePopover();
140
+ }
141
+ };
142
+
143
+ // Firefox will trigger a scroll event in many common situations when the options list div is appended
144
+ // to the DOM; in testing it was always within 100ms, but setting a timeout here for 500ms to be safe
145
+ var timeoutId = setTimeout(function () {
146
+ window.addEventListener('scroll', closePopoverOnScroll, {
147
+ passive: true,
148
+ // for better performance as we won't call preventDefault
149
+ capture: true // scroll events don't bubble, they must be captured instead
150
+ });
151
+ }, 500);
152
+ return function () {
153
+ window.removeEventListener('scroll', closePopoverOnScroll, {
154
+ capture: true
155
+ });
156
+ clearTimeout(timeoutId);
157
+ };
158
+ }
159
+ }, [closeOnScroll, closePopover, panelEl, inputEl]);
121
160
  return (0, _react2.jsx)(_popover.EuiPopover, (0, _extends2.default)({
122
161
  css: /*#__PURE__*/(0, _react2.css)(fullWidth ? undefined : (0, _global_styling.logicalCSS)('max-width', form.maxWidth), ";label:EuiInputPopover;"),
123
162
  repositionToCrossAxis: false,
@@ -135,7 +174,9 @@ var EuiInputPopover = function EuiInputPopover(_ref) {
135
174
  }), (0, _react2.jsx)(_focus_trap.EuiFocusTrap, (0, _extends2.default)({
136
175
  clickOutsideDisables: true,
137
176
  disabled: disableFocusTrap
138
- }, focusTrapProps), children));
177
+ }, focusTrapProps), (0, _react2.jsx)(EuiInputPopoverWidthContext.Provider, {
178
+ value: panelWidth
179
+ }, children)));
139
180
  };
140
181
  exports.EuiInputPopover = EuiInputPopover;
141
182
  EuiInputPopover.propTypes = {
@@ -148,6 +189,10 @@ EuiInputPopover.propTypes = {
148
189
  */
149
190
  anchorPosition: _propTypes.default.oneOf(["downLeft", "downRight", "downCenter"]),
150
191
  disableFocusTrap: _propTypes.default.bool,
192
+ /**
193
+ * Allows automatically closing the input popover on page scroll
194
+ */
195
+ closeOnScroll: _propTypes.default.bool,
151
196
  fullWidth: _propTypes.default.bool,
152
197
  input: _propTypes.default.any.isRequired,
153
198
  inputRef: _propTypes.default.any,
@@ -135,7 +135,7 @@ var EuiPopover = /*#__PURE__*/function (_Component) {
135
135
  }, closingTransitionTime);
136
136
  });
137
137
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onKeyDown", function (event) {
138
- if (event.key === _services.cascadingMenuKeys.ESCAPE) {
138
+ if (event.key === _services.keys.ESCAPE) {
139
139
  _this.onEscapeKey(event);
140
140
  }
141
141
  });