@elastic/eui 116.3.0 → 116.3.1-snapshot.1782148316870

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 (199) hide show
  1. package/es/components/avatar/avatar.js +4 -0
  2. package/es/components/avatar/avatar.styles.js +16 -16
  3. package/es/components/banner/banner.js +1 -2
  4. package/es/components/banner/banner.styles.js +1 -1
  5. package/es/components/basic_table/basic_table.js +35 -5
  6. package/es/components/basic_table/basic_table.styles.js +19 -1
  7. package/es/components/basic_table/in_memory_table.js +17 -0
  8. package/es/components/basic_table/index.js +2 -1
  9. package/es/components/basic_table/pagination_bar.js +19 -4
  10. package/es/components/basic_table/pagination_bar.styles.js +21 -0
  11. package/es/components/basic_table/panel.styles.js +14 -0
  12. package/es/components/basic_table/use_panel_props.js +28 -0
  13. package/es/components/date_picker/auto_refresh/refresh_interval.js +176 -229
  14. package/es/components/date_picker/date_picker.js +1 -1
  15. package/es/components/flyout/flyout.component.js +10 -6
  16. package/es/components/flyout/flyout_menu.js +122 -19
  17. package/es/components/flyout/flyout_menu.styles.js +2 -1
  18. package/es/components/flyout/manager/actions.js +20 -0
  19. package/es/components/flyout/manager/flyout_child.js +23 -1
  20. package/es/components/flyout/manager/flyout_managed.js +65 -19
  21. package/es/components/flyout/manager/hooks.js +1 -1
  22. package/es/components/flyout/manager/index.js +2 -2
  23. package/es/components/flyout/manager/reducer.js +32 -8
  24. package/es/components/flyout/manager/selectors.js +8 -2
  25. package/es/components/flyout/manager/store.js +35 -2
  26. package/es/components/flyout/use_flyout_menu.js +2 -2
  27. package/es/components/form/field_password/field_password.styles.js +1 -1
  28. package/es/components/form/field_search/field_search.styles.js +1 -1
  29. package/es/components/form/form.styles.js +1 -1
  30. package/es/components/form/form_control_layout/form_control_layout_icons.js +95 -143
  31. package/es/components/form/select/select.styles.js +1 -1
  32. package/es/components/form/text_area/text_area.styles.js +1 -1
  33. package/es/components/form/validatable_control/validatable_control.js +8 -55
  34. package/es/components/table/mobile/table_sort_mobile.js +64 -103
  35. package/es/components/table/store/use_unique_column_id.js +25 -0
  36. package/es/components/table/table_header_cell.js +7 -8
  37. package/es/components/table/table_header_cell_checkbox.js +5 -6
  38. package/es/components/tool_tip/tool_tip.js +61 -30
  39. package/es/components/tool_tip/tool_tip_anchor.js +5 -5
  40. package/es/components/tool_tip/tool_tip_manager.js +27 -2
  41. package/eui.d.ts +679 -530
  42. package/i18ntokens.json +810 -738
  43. package/lib/components/avatar/avatar.js +4 -0
  44. package/lib/components/avatar/avatar.styles.js +16 -16
  45. package/lib/components/banner/banner.js +1 -2
  46. package/lib/components/banner/banner.styles.js +1 -1
  47. package/lib/components/basic_table/basic_table.js +34 -4
  48. package/lib/components/basic_table/basic_table.styles.js +19 -1
  49. package/lib/components/basic_table/in_memory_table.js +17 -0
  50. package/lib/components/basic_table/index.js +8 -1
  51. package/lib/components/basic_table/pagination_bar.js +19 -4
  52. package/lib/components/basic_table/pagination_bar.styles.js +26 -0
  53. package/lib/components/basic_table/panel.styles.js +20 -0
  54. package/lib/components/basic_table/use_panel_props.js +33 -0
  55. package/lib/components/date_picker/auto_refresh/refresh_interval.js +175 -229
  56. package/lib/components/date_picker/date_picker.js +1 -1
  57. package/lib/components/flyout/flyout.component.js +10 -6
  58. package/lib/components/flyout/flyout_menu.js +120 -19
  59. package/lib/components/flyout/flyout_menu.styles.js +2 -1
  60. package/lib/components/flyout/manager/actions.js +21 -1
  61. package/lib/components/flyout/manager/flyout_child.js +23 -1
  62. package/lib/components/flyout/manager/flyout_managed.js +41 -17
  63. package/lib/components/flyout/manager/hooks.js +6 -0
  64. package/lib/components/flyout/manager/index.js +12 -0
  65. package/lib/components/flyout/manager/reducer.js +31 -7
  66. package/lib/components/flyout/manager/selectors.js +9 -3
  67. package/lib/components/flyout/manager/store.js +34 -1
  68. package/lib/components/flyout/use_flyout_menu.js +2 -2
  69. package/lib/components/form/field_password/field_password.styles.js +1 -1
  70. package/lib/components/form/field_search/field_search.styles.js +1 -1
  71. package/lib/components/form/form.styles.js +1 -1
  72. package/lib/components/form/form_control_layout/form_control_layout_icons.js +95 -145
  73. package/lib/components/form/select/select.styles.js +1 -1
  74. package/lib/components/form/text_area/text_area.styles.js +1 -1
  75. package/lib/components/form/validatable_control/validatable_control.js +7 -52
  76. package/lib/components/table/mobile/table_sort_mobile.js +71 -108
  77. package/lib/components/table/store/use_unique_column_id.js +34 -0
  78. package/lib/components/table/table_header_cell.js +7 -8
  79. package/lib/components/table/table_header_cell_checkbox.js +5 -6
  80. package/lib/components/tool_tip/tool_tip.js +59 -29
  81. package/lib/components/tool_tip/tool_tip_anchor.js +5 -5
  82. package/lib/components/tool_tip/tool_tip_manager.js +27 -2
  83. package/optimize/es/components/avatar/avatar.js +4 -0
  84. package/optimize/es/components/avatar/avatar.styles.js +16 -16
  85. package/optimize/es/components/banner/banner.js +1 -2
  86. package/optimize/es/components/banner/banner.styles.js +1 -1
  87. package/optimize/es/components/basic_table/basic_table.js +18 -5
  88. package/optimize/es/components/basic_table/basic_table.styles.js +19 -1
  89. package/optimize/es/components/basic_table/index.js +2 -1
  90. package/optimize/es/components/basic_table/pagination_bar.js +19 -4
  91. package/optimize/es/components/basic_table/pagination_bar.styles.js +21 -0
  92. package/optimize/es/components/basic_table/panel.styles.js +14 -0
  93. package/optimize/es/components/basic_table/use_panel_props.js +28 -0
  94. package/optimize/es/components/date_picker/auto_refresh/refresh_interval.js +172 -196
  95. package/optimize/es/components/date_picker/date_picker.js +1 -1
  96. package/optimize/es/components/flyout/flyout.component.js +10 -6
  97. package/optimize/es/components/flyout/flyout_menu.js +99 -18
  98. package/optimize/es/components/flyout/flyout_menu.styles.js +2 -1
  99. package/optimize/es/components/flyout/manager/actions.js +20 -0
  100. package/optimize/es/components/flyout/manager/flyout_managed.js +42 -18
  101. package/optimize/es/components/flyout/manager/hooks.js +1 -1
  102. package/optimize/es/components/flyout/manager/index.js +2 -2
  103. package/optimize/es/components/flyout/manager/reducer.js +32 -8
  104. package/optimize/es/components/flyout/manager/selectors.js +8 -2
  105. package/optimize/es/components/flyout/manager/store.js +35 -2
  106. package/optimize/es/components/flyout/use_flyout_menu.js +2 -2
  107. package/optimize/es/components/form/field_password/field_password.styles.js +1 -1
  108. package/optimize/es/components/form/field_search/field_search.styles.js +1 -1
  109. package/optimize/es/components/form/form.styles.js +1 -1
  110. package/optimize/es/components/form/form_control_layout/form_control_layout_icons.js +96 -115
  111. package/optimize/es/components/form/select/select.styles.js +1 -1
  112. package/optimize/es/components/form/text_area/text_area.styles.js +1 -1
  113. package/optimize/es/components/form/validatable_control/validatable_control.js +7 -48
  114. package/optimize/es/components/table/mobile/table_sort_mobile.js +59 -82
  115. package/optimize/es/components/table/store/use_unique_column_id.js +25 -0
  116. package/optimize/es/components/table/table_header_cell.js +7 -8
  117. package/optimize/es/components/table/table_header_cell_checkbox.js +5 -6
  118. package/optimize/es/components/tool_tip/tool_tip.js +58 -30
  119. package/optimize/es/components/tool_tip/tool_tip_anchor.js +5 -5
  120. package/optimize/es/components/tool_tip/tool_tip_manager.js +27 -2
  121. package/optimize/lib/components/avatar/avatar.js +4 -0
  122. package/optimize/lib/components/avatar/avatar.styles.js +16 -16
  123. package/optimize/lib/components/banner/banner.js +1 -2
  124. package/optimize/lib/components/banner/banner.styles.js +1 -1
  125. package/optimize/lib/components/basic_table/basic_table.js +17 -4
  126. package/optimize/lib/components/basic_table/basic_table.styles.js +19 -1
  127. package/optimize/lib/components/basic_table/index.js +8 -1
  128. package/optimize/lib/components/basic_table/pagination_bar.js +19 -4
  129. package/optimize/lib/components/basic_table/pagination_bar.styles.js +26 -0
  130. package/optimize/lib/components/basic_table/panel.styles.js +20 -0
  131. package/optimize/lib/components/basic_table/use_panel_props.js +33 -0
  132. package/optimize/lib/components/date_picker/auto_refresh/refresh_interval.js +170 -194
  133. package/optimize/lib/components/date_picker/date_picker.js +1 -1
  134. package/optimize/lib/components/flyout/flyout.component.js +10 -6
  135. package/optimize/lib/components/flyout/flyout_menu.js +98 -18
  136. package/optimize/lib/components/flyout/flyout_menu.styles.js +2 -1
  137. package/optimize/lib/components/flyout/manager/actions.js +21 -1
  138. package/optimize/lib/components/flyout/manager/flyout_managed.js +41 -17
  139. package/optimize/lib/components/flyout/manager/hooks.js +6 -0
  140. package/optimize/lib/components/flyout/manager/index.js +12 -0
  141. package/optimize/lib/components/flyout/manager/reducer.js +31 -7
  142. package/optimize/lib/components/flyout/manager/selectors.js +9 -3
  143. package/optimize/lib/components/flyout/manager/store.js +34 -1
  144. package/optimize/lib/components/flyout/use_flyout_menu.js +2 -2
  145. package/optimize/lib/components/form/field_password/field_password.styles.js +1 -1
  146. package/optimize/lib/components/form/field_search/field_search.styles.js +1 -1
  147. package/optimize/lib/components/form/form.styles.js +1 -1
  148. package/optimize/lib/components/form/form_control_layout/form_control_layout_icons.js +96 -117
  149. package/optimize/lib/components/form/select/select.styles.js +1 -1
  150. package/optimize/lib/components/form/text_area/text_area.styles.js +1 -1
  151. package/optimize/lib/components/form/validatable_control/validatable_control.js +6 -49
  152. package/optimize/lib/components/table/mobile/table_sort_mobile.js +61 -83
  153. package/optimize/lib/components/table/store/use_unique_column_id.js +34 -0
  154. package/optimize/lib/components/table/table_header_cell.js +7 -8
  155. package/optimize/lib/components/table/table_header_cell_checkbox.js +5 -6
  156. package/optimize/lib/components/tool_tip/tool_tip.js +57 -29
  157. package/optimize/lib/components/tool_tip/tool_tip_anchor.js +5 -5
  158. package/optimize/lib/components/tool_tip/tool_tip_manager.js +27 -2
  159. package/package.json +8 -5
  160. package/test-env/components/avatar/avatar.js +4 -0
  161. package/test-env/components/avatar/avatar.styles.js +16 -16
  162. package/test-env/components/banner/banner.js +1 -2
  163. package/test-env/components/banner/banner.styles.js +1 -1
  164. package/test-env/components/basic_table/basic_table.js +34 -4
  165. package/test-env/components/basic_table/basic_table.styles.js +19 -1
  166. package/test-env/components/basic_table/in_memory_table.js +17 -0
  167. package/test-env/components/basic_table/index.js +8 -1
  168. package/test-env/components/basic_table/pagination_bar.js +19 -4
  169. package/test-env/components/basic_table/pagination_bar.styles.js +26 -0
  170. package/test-env/components/basic_table/panel.styles.js +20 -0
  171. package/test-env/components/basic_table/use_panel_props.js +33 -0
  172. package/test-env/components/date_picker/auto_refresh/refresh_interval.js +170 -220
  173. package/test-env/components/date_picker/date_picker.js +1 -1
  174. package/test-env/components/flyout/flyout.component.js +10 -6
  175. package/test-env/components/flyout/flyout_menu.js +121 -19
  176. package/test-env/components/flyout/flyout_menu.styles.js +2 -1
  177. package/test-env/components/flyout/manager/actions.js +21 -1
  178. package/test-env/components/flyout/manager/flyout_child.js +23 -1
  179. package/test-env/components/flyout/manager/flyout_managed.js +41 -17
  180. package/test-env/components/flyout/manager/hooks.js +6 -0
  181. package/test-env/components/flyout/manager/index.js +12 -0
  182. package/test-env/components/flyout/manager/reducer.js +31 -7
  183. package/test-env/components/flyout/manager/selectors.js +9 -3
  184. package/test-env/components/flyout/manager/store.js +34 -1
  185. package/test-env/components/flyout/use_flyout_menu.js +2 -2
  186. package/test-env/components/form/field_password/field_password.styles.js +1 -1
  187. package/test-env/components/form/field_search/field_search.styles.js +1 -1
  188. package/test-env/components/form/form.styles.js +1 -1
  189. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +95 -139
  190. package/test-env/components/form/select/select.styles.js +1 -1
  191. package/test-env/components/form/text_area/text_area.styles.js +1 -1
  192. package/test-env/components/form/validatable_control/validatable_control.js +6 -48
  193. package/test-env/components/table/mobile/table_sort_mobile.js +61 -98
  194. package/test-env/components/table/store/use_unique_column_id.js +34 -0
  195. package/test-env/components/table/table_header_cell.js +7 -8
  196. package/test-env/components/table/table_header_cell_checkbox.js +5 -6
  197. package/test-env/components/tool_tip/tool_tip.js +57 -29
  198. package/test-env/components/tool_tip/tool_tip_anchor.js +5 -5
  199. package/test-env/components/tool_tip/tool_tip_manager.js +27 -2
@@ -1,21 +1,13 @@
1
1
  var _excluded = ["className", "anchorPosition", "items"];
2
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
4
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
6
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
8
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
4
9
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
5
10
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
6
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
7
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
8
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
9
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
10
- function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
11
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
12
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
13
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
14
- function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
15
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
16
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
18
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
11
  /*
20
12
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
21
13
  * or more contributor license agreements. Licensed under the Elastic License
@@ -24,8 +16,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
24
16
  * Side Public License, v 1.
25
17
  */
26
18
 
27
- import React, { Component } from 'react';
28
- import PropTypes from "prop-types";
19
+ import React, { useState } from 'react';
29
20
  import classNames from 'classnames';
30
21
  import { EuiButtonEmpty } from '../../button/button_empty';
31
22
  import { EuiPopover } from '../../popover';
@@ -33,91 +24,61 @@ import { EuiContextMenuPanel } from '../../context_menu';
33
24
  import { EuiI18n } from '../../i18n';
34
25
  import { EuiTableSortMobileItem } from './table_sort_mobile_item';
35
26
  import { jsx as ___EmotionJSX } from "@emotion/react";
36
- export var EuiTableSortMobile = /*#__PURE__*/function (_Component) {
37
- function EuiTableSortMobile() {
38
- var _this;
39
- _classCallCheck(this, EuiTableSortMobile);
40
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
41
- args[_key] = arguments[_key];
42
- }
43
- _this = _callSuper(this, EuiTableSortMobile, [].concat(args));
44
- _defineProperty(_this, "state", {
45
- isPopoverOpen: false
27
+ // Aligns the button to the right even when it's the only element present
28
+ var euiTableSortMobileStyles = {
29
+ marginInlineStart: 'auto',
30
+ label: 'euiTableSortMobile'
31
+ };
32
+ export var EuiTableSortMobile = function EuiTableSortMobile(_ref) {
33
+ var className = _ref.className,
34
+ anchorPosition = _ref.anchorPosition,
35
+ items = _ref.items,
36
+ rest = _objectWithoutProperties(_ref, _excluded);
37
+ var _useState = useState(false),
38
+ _useState2 = _slicedToArray(_useState, 2),
39
+ isPopoverOpen = _useState2[0],
40
+ setIsPopoverOpen = _useState2[1];
41
+ var classes = classNames('euiTableSortMobile', className);
42
+ var onButtonClick = function onButtonClick() {
43
+ setIsPopoverOpen(function (isOpen) {
44
+ return !isOpen;
46
45
  });
47
- _defineProperty(_this, "onButtonClick", function () {
48
- _this.setState({
49
- isPopoverOpen: !_this.state.isPopoverOpen
50
- });
51
- });
52
- _defineProperty(_this, "closePopover", function () {
53
- _this.setState({
54
- isPopoverOpen: false
55
- });
56
- });
57
- // Aligns the button to the right even when it's the only element present
58
- _defineProperty(_this, "euiTableSortMobileStyles", {
59
- marginInlineStart: 'auto',
60
- label: 'euiTableSortMobile'
61
- });
62
- return _this;
63
- }
64
- _inherits(EuiTableSortMobile, _Component);
65
- return _createClass(EuiTableSortMobile, [{
66
- key: "render",
67
- value: function render() {
68
- var _this$props = this.props,
69
- className = _this$props.className,
70
- anchorPosition = _this$props.anchorPosition,
71
- items = _this$props.items,
72
- rest = _objectWithoutProperties(_this$props, _excluded);
73
- var classes = classNames('euiTableSortMobile', className);
74
- var mobileSortButton = ___EmotionJSX(EuiButtonEmpty, {
75
- iconType: "chevronSingleDown",
76
- iconSide: "right",
77
- onClick: this.onButtonClick.bind(this),
78
- flush: "right",
79
- size: "xs"
80
- }, ___EmotionJSX(EuiI18n, {
81
- token: "euiTableSortMobile.sorting",
82
- default: "Sorting"
83
- }));
84
- var mobileSortPopover = ___EmotionJSX(EuiPopover, _extends({
85
- button: mobileSortButton,
86
- isOpen: this.state.isPopoverOpen,
87
- closePopover: this.closePopover,
88
- anchorPosition: anchorPosition || 'downRight',
89
- panelPaddingSize: "none"
90
- }, rest), ___EmotionJSX(EuiContextMenuPanel, {
91
- style: {
92
- minWidth: 200
93
- },
94
- items: items && items.length ? items.map(function (item) {
95
- return ___EmotionJSX(EuiTableSortMobileItem, {
96
- key: item.key,
97
- onSort: item.onSort,
98
- isSorted: item.isSorted,
99
- isSortAscending: item.isSortAscending
100
- }, item.name);
101
- }) : undefined
102
- }));
103
- return ___EmotionJSX("div", {
104
- className: classes,
105
- css: this.euiTableSortMobileStyles
106
- }, mobileSortPopover);
107
- }
108
- }]);
109
- }(Component);
110
- EuiTableSortMobile.propTypes = {
111
- anchorPosition: PropTypes.any,
112
- items: PropTypes.arrayOf(PropTypes.shape({
113
- name: PropTypes.node.isRequired,
114
- key: PropTypes.any,
115
- onSort: PropTypes.func,
116
- isSorted: PropTypes.bool,
117
- isSortAscending: PropTypes.bool
118
- }).isRequired),
119
- className: PropTypes.string,
120
- "aria-label": PropTypes.string,
121
- "data-test-subj": PropTypes.string,
122
- css: PropTypes.any
123
- };
46
+ };
47
+ var closePopover = function closePopover() {
48
+ setIsPopoverOpen(false);
49
+ };
50
+ var mobileSortButton = ___EmotionJSX(EuiButtonEmpty, {
51
+ iconType: "chevronSingleDown",
52
+ iconSide: "right",
53
+ onClick: onButtonClick,
54
+ flush: "right",
55
+ size: "xs"
56
+ }, ___EmotionJSX(EuiI18n, {
57
+ token: "euiTableSortMobile.sorting",
58
+ default: "Sorting"
59
+ }));
60
+ var mobileSortPopover = ___EmotionJSX(EuiPopover, _extends({
61
+ button: mobileSortButton,
62
+ isOpen: isPopoverOpen,
63
+ closePopover: closePopover,
64
+ anchorPosition: anchorPosition || 'downRight',
65
+ panelPaddingSize: "none"
66
+ }, rest), ___EmotionJSX(EuiContextMenuPanel, {
67
+ style: {
68
+ minWidth: 200
69
+ },
70
+ items: items !== null && items !== void 0 && items.length ? items.map(function (item) {
71
+ return ___EmotionJSX(EuiTableSortMobileItem, {
72
+ key: item.key,
73
+ onSort: item.onSort,
74
+ isSorted: item.isSorted,
75
+ isSortAscending: item.isSortAscending
76
+ }, item.name);
77
+ }) : undefined
78
+ }));
79
+ return ___EmotionJSX("div", {
80
+ className: classes,
81
+ css: euiTableSortMobileStyles
82
+ }, mobileSortPopover);
83
+ };
84
+ EuiTableSortMobile.displayName = 'EuiTableSortMobile';
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import React, { useId, useRef } from 'react';
10
+ import { v4 as uuidv4 } from 'uuid';
11
+ var useEuiTableStoreUniqueColumnIdFallback = function useEuiTableStoreUniqueColumnIdFallback() {
12
+ var ref = useRef(uuidv4());
13
+ return ref.current;
14
+ };
15
+
16
+ /**
17
+ * Returns a stable unique column ID to be used when registering columns.
18
+ * It uses `React.useId()` when available and falls back to UUID v4 on React 17.
19
+ *
20
+ * This is needed so that static `uuid` mocks don't break column registration
21
+ * (at least in React 18+; in older versions this function would need
22
+ * to be mocked to return something unique, but stable).
23
+ * @internal
24
+ */
25
+ export var useEuiTableStoreUniqueColumnId = 'useId' in React ? useId : useEuiTableStoreUniqueColumnIdFallback;
@@ -20,7 +20,6 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
20
20
  import React, { useEffect, useCallback, useRef } from 'react';
21
21
  import classNames from 'classnames';
22
22
  import { useEuiMemoizedStyles, LEFT_ALIGNMENT } from '../../services';
23
- import { useGeneratedHtmlId } from '../../services/accessibility/html_id_generator';
24
23
  import { EuiI18n } from '../i18n';
25
24
  import { EuiScreenReaderOnly } from '../accessibility';
26
25
  import { EuiIcon } from '../icon';
@@ -32,6 +31,7 @@ import { EuiTableCellContent } from './_table_cell_content';
32
31
  import { euiTableHeaderFooterCellStyles, _useEuiTableStickyCellStyles } from './table_cells_shared.styles';
33
32
  import { useEuiTableColumnDataStore } from './store/provider';
34
33
  import { useEuiTableWithinStickyHeader } from './sticky_header';
34
+ import { useEuiTableStoreUniqueColumnId } from './store/use_unique_column_id';
35
35
  import { jsx as ___EmotionJSX } from "@emotion/react";
36
36
  var CellContents = function CellContents(_ref) {
37
37
  var className = _ref.className,
@@ -109,7 +109,7 @@ export var EuiTableHeaderCell = function EuiTableHeaderCell(_ref2) {
109
109
  sticky = _ref2.sticky,
110
110
  rest = _objectWithoutProperties(_ref2, _excluded);
111
111
  var selfRef = useRef(null);
112
- var internalCellId = useGeneratedHtmlId();
112
+ var storeCellId = useEuiTableStoreUniqueColumnId();
113
113
  var store = useEuiTableColumnDataStore();
114
114
  var isWithinStickyHeader = useEuiTableWithinStickyHeader();
115
115
  var styles = useEuiMemoizedStyles(euiTableHeaderFooterCellStyles);
@@ -174,15 +174,15 @@ export var EuiTableHeaderCell = function EuiTableHeaderCell(_ref2) {
174
174
  if (!entry) {
175
175
  return;
176
176
  }
177
- store.updateColumnWidth(internalCellId, entry.contentRect.width);
178
- }, [store, internalCellId]);
177
+ store.updateColumnWidth(storeCellId, entry.contentRect.width);
178
+ }, [store, storeCellId]);
179
179
  useEffect(function () {
180
180
  // Don't register the column inside the sticky header as the original
181
181
  // column is already registered. This would cause an infinite loop.
182
182
  if (isWithinStickyHeader || !selfRef.current || !renderHeaderCellRef.current) {
183
183
  return;
184
184
  }
185
- var unregisterColumn = store.registerColumn(internalCellId, {
185
+ var unregisterColumn = store.registerColumn(storeCellId, {
186
186
  renderHeaderCellRef: renderHeaderCellRef,
187
187
  // getBoundingClientRect is not the cheapest, but we call it only once
188
188
  currentWidth: selfRef.current.getBoundingClientRect().width
@@ -204,8 +204,7 @@ export var EuiTableHeaderCell = function EuiTableHeaderCell(_ref2) {
204
204
  unregisterColumn();
205
205
  (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect();
206
206
  };
207
- // eslint-disable-next-line react-hooks/exhaustive-deps
208
- }, [store, internalCellId, isWithinStickyHeader]);
207
+ }, [store, isWithinStickyHeader, handleResize, storeCellId]);
209
208
 
210
209
  // Notify the store on every render so the sticky header stays in sync.
211
210
  // React's reconciliation will efficiently handle any duplicate renders.
@@ -220,7 +219,7 @@ export var EuiTableHeaderCell = function EuiTableHeaderCell(_ref2) {
220
219
  if (!selfRef.current) {
221
220
  return;
222
221
  }
223
- store.updateColumn(internalCellId, {
222
+ store.updateColumn(storeCellId, {
224
223
  renderHeaderCellRef: renderHeaderCellRef
225
224
  });
226
225
  });
@@ -14,11 +14,11 @@ import React, { useEffect, useRef } from 'react';
14
14
  import PropTypes from "prop-types";
15
15
  import classNames from 'classnames';
16
16
  import { useEuiMemoizedStyles } from '../../services';
17
- import { useGeneratedHtmlId } from '../../services/accessibility/html_id_generator';
18
17
  import { resolveWidthPropsAsStyle } from './utils';
19
18
  import { euiTableCellCheckboxStyles } from './table_cells_shared.styles';
20
19
  import { useEuiTableColumnDataStore } from './store/provider';
21
20
  import { useEuiTableWithinStickyHeader } from './sticky_header';
21
+ import { useEuiTableStoreUniqueColumnId } from './store/use_unique_column_id';
22
22
  import { jsx as ___EmotionJSX } from "@emotion/react";
23
23
  export var EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(props) {
24
24
  var children = props.children,
@@ -31,7 +31,7 @@ export var EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(prop
31
31
  maxWidth = props.maxWidth,
32
32
  append = props.append,
33
33
  rest = _objectWithoutProperties(props, _excluded);
34
- var internalCellId = useGeneratedHtmlId();
34
+ var storeCellId = useEuiTableStoreUniqueColumnId();
35
35
  var store = useEuiTableColumnDataStore();
36
36
  var isWithinStickyHeader = useEuiTableWithinStickyHeader();
37
37
  var styles = useEuiMemoizedStyles(euiTableCellCheckboxStyles);
@@ -58,21 +58,20 @@ export var EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(prop
58
58
  if (isWithinStickyHeader) {
59
59
  return;
60
60
  }
61
- var unregisterColumn = store.registerColumn(internalCellId, {
61
+ var unregisterColumn = store.registerColumn(storeCellId, {
62
62
  renderHeaderCellRef: renderHeaderCellRef
63
63
  });
64
64
  return function () {
65
65
  unregisterColumn();
66
66
  };
67
- // eslint-disable-next-line react-hooks/exhaustive-deps
68
- }, [store, internalCellId, isWithinStickyHeader]);
67
+ }, [store, isWithinStickyHeader, storeCellId]);
69
68
  useEffect(function () {
70
69
  // Notify the store on every render so the sticky header stays in sync.
71
70
  // React's reconciliation will efficiently handle any duplicate renders.
72
71
  if (isWithinStickyHeader) {
73
72
  return;
74
73
  }
75
- store.updateColumn(internalCellId, {
74
+ store.updateColumn(storeCellId, {
76
75
  renderHeaderCellRef: renderHeaderCellRef
77
76
  });
78
77
  });
@@ -1,4 +1,10 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
1
2
  var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "display", "repositionOnScroll", "disableScreenReaderOutput", "position", "offset", "id", "onMouseOut", "onBlur"];
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
2
8
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
9
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
4
10
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -19,7 +25,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
19
25
  import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';
20
26
  import PropTypes from "prop-types";
21
27
  import classNames from 'classnames';
22
- import { findPopoverPosition, htmlIdGenerator, keys } from '../../services';
28
+ import { findPopoverPosition, useGeneratedHtmlId, keys } from '../../services';
23
29
  import { getRepositionOnScroll } from '../../services/popover/reposition_on_scroll';
24
30
  import { EuiResizeObserver } from '../observer/resize_observer';
25
31
  import { EuiPortal } from '../portal';
@@ -82,22 +88,26 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
82
88
  setVisible = _useState2[1];
83
89
  var _useState3 = useState(false),
84
90
  _useState4 = _slicedToArray(_useState3, 2),
85
- hasFocus = _useState4[0],
86
- setHasFocus = _useState4[1];
87
- var _useState5 = useState(positionProp),
91
+ skipAnimation = _useState4[0],
92
+ setSkipAnimation = _useState4[1];
93
+ var _useState5 = useState(false),
88
94
  _useState6 = _slicedToArray(_useState5, 2),
89
- calculatedPosition = _useState6[0],
90
- setCalculatedPosition = _useState6[1];
91
- var _useState7 = useState(DEFAULT_TOOLTIP_STYLES),
95
+ hasFocus = _useState6[0],
96
+ setHasFocus = _useState6[1];
97
+ var _useState7 = useState(positionProp),
92
98
  _useState8 = _slicedToArray(_useState7, 2),
93
- toolTipStyles = _useState8[0],
94
- setToolTipStyles = _useState8[1];
95
- var _useState9 = useState(undefined),
99
+ calculatedPosition = _useState8[0],
100
+ setCalculatedPosition = _useState8[1];
101
+ var _useState9 = useState(DEFAULT_TOOLTIP_STYLES),
96
102
  _useState10 = _slicedToArray(_useState9, 2),
97
- arrowStyles = _useState10[0],
98
- setArrowStyles = _useState10[1];
99
- var generatedId = useRef(htmlIdGenerator()());
100
- var id = idProp !== null && idProp !== void 0 ? idProp : generatedId.current;
103
+ toolTipStyles = _useState10[0],
104
+ setToolTipStyles = _useState10[1];
105
+ var _useState11 = useState(undefined),
106
+ _useState12 = _slicedToArray(_useState11, 2),
107
+ arrowStyles = _useState12[0],
108
+ setArrowStyles = _useState12[1];
109
+ var generatedId = useGeneratedHtmlId();
110
+ var id = idProp !== null && idProp !== void 0 ? idProp : generatedId;
101
111
  var anchorRef = useRef(null);
102
112
  var popoverRef = useRef(null);
103
113
  var positionToolTip = useCallback(function () {
@@ -149,10 +159,19 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
149
159
  setArrowStyles(undefined);
150
160
  toolTipManager.deregisterToolTip(hideToolTip);
151
161
  }, []);
162
+
163
+ /**
164
+ * Show the tooltip.
165
+ *
166
+ * Uses the tooltip manager's `skipAnimation` signal to optionally skip the entry
167
+ * animation when another tooltip is already open or was just closed.
168
+ */
152
169
  var showToolTip = useCallback(function () {
153
170
  if (!content && !title) return;
171
+ var result = toolTipManager.registerTooltip(hideToolTip);
172
+ if (!result) return;
173
+ setSkipAnimation(result.skipAnimation);
154
174
  setVisible(true);
155
- toolTipManager.registerTooltip(hideToolTip);
156
175
  }, [content, title, hideToolTip]);
157
176
  useImperativeHandle(ref, function () {
158
177
  return {
@@ -232,18 +251,24 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
232
251
  hideToolTip();
233
252
  }
234
253
  }, [disableScreenReaderOutput, visible, hideToolTip]);
235
- var onMouseOut = useCallback(function (event) {
236
- // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has
237
- // left the anchor for a non-child.
238
- if (anchorRef.current === event.relatedTarget || anchorRef.current != null && !anchorRef.current.contains(event.relatedTarget)) {
239
- if (!hasFocus) {
240
- hideToolTip();
241
- }
242
- }
243
- if (onMouseOutProp) {
244
- onMouseOutProp(event);
245
- }
246
- }, [hasFocus, hideToolTip, onMouseOutProp]);
254
+
255
+ /**
256
+ * Show the tooltip on enter.
257
+ */
258
+ var onMouseEnter = useCallback(function (event) {
259
+ var _anchorProps$onMouseE;
260
+ showToolTip();
261
+ anchorProps === null || anchorProps === void 0 || (_anchorProps$onMouseE = anchorProps.onMouseEnter) === null || _anchorProps$onMouseE === void 0 || _anchorProps$onMouseE.call(anchorProps, event);
262
+ }, [showToolTip, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.onMouseEnter]);
263
+
264
+ /**
265
+ * Hide the tooltip if the mouse is not over the trigger.
266
+ */
267
+ var onMouseLeave = useCallback(function (event) {
268
+ var _anchorProps$onMouseL;
269
+ if (!hasFocus) hideToolTip();
270
+ anchorProps === null || anchorProps === void 0 || (_anchorProps$onMouseL = anchorProps.onMouseLeave) === null || _anchorProps$onMouseL === void 0 || _anchorProps$onMouseL.call(anchorProps, event);
271
+ }, [hasFocus, hideToolTip, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.onMouseLeave]);
247
272
  var classes = classNames('euiToolTip', className);
248
273
  var anchorClasses = classNames(anchorClassName, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.className);
249
274
  return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiToolTipAnchor, _extends({}, anchorProps, {
@@ -251,8 +276,9 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
251
276
  onBlur: onBlur,
252
277
  onFocus: onFocus,
253
278
  onKeyDown: onEscapeKey,
254
- onMouseOver: showToolTip,
255
- onMouseOut: onMouseOut
279
+ onMouseEnter: onMouseEnter,
280
+ onMouseLeave: onMouseLeave,
281
+ onMouseOut: onMouseOutProp
256
282
  // `id` defines if the trigger and tooltip are automatically linked via `aria-describedby`.
257
283
  ,
258
284
  id: !disableScreenReaderOutput ? id : undefined,
@@ -261,7 +287,12 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
261
287
  isVisible: visible
262
288
  }), children), visible && (content || title) && ___EmotionJSX(EuiPortal, null, ___EmotionJSX(EuiToolTipPopover, _extends({
263
289
  className: classes,
264
- style: toolTipStyles,
290
+ style: _objectSpread(_objectSpread({}, toolTipStyles), {}, {
291
+ // Inline `animation: none` overrides the keyframes fade-in
292
+ // shorthand on the base `.euiToolTip` class, so a tooltip
293
+ // shown right after another closes appears instantly.
294
+ animation: skipAnimation ? 'none' : undefined
295
+ }),
265
296
  positionToolTip: positionToolTip,
266
297
  popoverRef: setPopoverRef,
267
298
  title: title,
@@ -1,4 +1,4 @@
1
- var _excluded = ["onBlur", "onFocus", "onMouseOver", "onMouseOut", "id", "className", "children", "display", "isVisible"];
1
+ var _excluded = ["onBlur", "onFocus", "onMouseEnter", "onMouseLeave", "id", "className", "children", "display", "isVisible"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
3
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
4
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
@@ -19,8 +19,8 @@ import { jsx as ___EmotionJSX } from "@emotion/react";
19
19
  export var EuiToolTipAnchor = /*#__PURE__*/forwardRef(function (_ref, ref) {
20
20
  var _onBlur = _ref.onBlur,
21
21
  _onFocus = _ref.onFocus,
22
- onMouseOver = _ref.onMouseOver,
23
- onMouseOut = _ref.onMouseOut,
22
+ onMouseEnter = _ref.onMouseEnter,
23
+ onMouseLeave = _ref.onMouseLeave,
24
24
  id = _ref.id,
25
25
  className = _ref.className,
26
26
  children = _ref.children,
@@ -44,8 +44,8 @@ export var EuiToolTipAnchor = /*#__PURE__*/forwardRef(function (_ref, ref) {
44
44
  id: anchorId
45
45
  }, rest, {
46
46
  className: classes,
47
- onMouseOver: onMouseOver,
48
- onMouseOut: onMouseOut
47
+ onMouseEnter: onMouseEnter,
48
+ onMouseLeave: onMouseLeave
49
49
  }), /*#__PURE__*/cloneElement(children, {
50
50
  onFocus: function onFocus(e) {
51
51
  _onFocus(e);
@@ -12,29 +12,54 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
12
12
  * in compliance with, at your election, the Elastic License 2.0 or the Server
13
13
  * Side Public License, v 1.
14
14
  */
15
+
15
16
  /**
16
17
  * Manager utility that ensures only one tooltip is visible at a time
18
+ * and lets the next tooltip to open skip its entry animation if another was
19
+ * just opened or just closed.
17
20
  *
18
21
  * UX rationale (primarily for mouse-only users):
19
22
  * @see https://github.com/elastic/kibana/issues/144482
20
23
  * @see https://github.com/elastic/eui/issues/5883
21
24
  */
25
+
26
+ /**
27
+ * Time window in ms after a tooltip closes during which the next one to open
28
+ * skips its entry animation.
29
+ */
30
+ var SKIP_ANIMATION_WINDOW = 300;
22
31
  var ToolTipManager = /*#__PURE__*/_createClass(function ToolTipManager() {
23
32
  var _this = this;
24
33
  _classCallCheck(this, ToolTipManager);
25
34
  // We use a set instead of a single var just in case
26
35
  // multiple tooltips are registered via async shenanigans
27
36
  _defineProperty(this, "toolTipsToHide", new Set());
37
+ // Timestamp of the last hide; `null` means no tooltip has closed yet.
38
+ _defineProperty(this, "lastHiddenAt", null);
28
39
  _defineProperty(this, "registerTooltip", function (hideCallback) {
29
- if (_this.toolTipsToHide.has(hideCallback)) return;
40
+ if (_this.toolTipsToHide.has(hideCallback)) return null;
41
+ var hadOpen = _this.toolTipsToHide.size > 0;
42
+ var recentlyClosed = _this.lastHiddenAt !== null && Date.now() - _this.lastHiddenAt < SKIP_ANIMATION_WINDOW;
30
43
  _this.toolTipsToHide.forEach(function (hide) {
31
44
  return hide();
32
45
  });
33
46
  _this.toolTipsToHide.clear();
34
47
  _this.toolTipsToHide.add(hideCallback);
48
+ return {
49
+ skipAnimation: hadOpen || recentlyClosed
50
+ };
35
51
  });
36
52
  _defineProperty(this, "deregisterToolTip", function (hideCallback) {
37
- _this.toolTipsToHide.delete(hideCallback);
53
+ if (_this.toolTipsToHide.delete(hideCallback)) _this.lastHiddenAt = Date.now();
54
+ });
55
+ /**
56
+ * Resets all internal state. Primarily intended for tests, so that a
57
+ * tooltip shown in one test doesn't leak into the next (the manager is a
58
+ * module-level singleton).
59
+ */
60
+ _defineProperty(this, "reset", function () {
61
+ _this.toolTipsToHide.clear();
62
+ _this.lastHiddenAt = null;
38
63
  });
39
64
  });
40
65
  export var toolTipManager = new ToolTipManager();