@elastic/eui 114.2.0 → 115.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 (163) hide show
  1. package/es/components/basic_table/basic_table.js +3 -6
  2. package/es/components/basic_table/collapsed_item_actions.js +1 -3
  3. package/es/components/basic_table/default_item_action.js +0 -1
  4. package/es/components/basic_table/in_memory_table.js +3 -6
  5. package/es/components/color_picker/color_picker_swatch.js +1 -2
  6. package/es/components/datagrid/controls/display_selector.js +1 -2
  7. package/es/components/datagrid/controls/fullscreen_selector.js +1 -2
  8. package/es/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  9. package/es/components/datagrid/utils/scrolling.js +7 -1
  10. package/es/components/filter_group/filter_select_item.js +36 -17
  11. package/es/components/flyout/flyout.component.js +8 -7
  12. package/es/components/flyout/hooks.js +11 -3
  13. package/es/components/flyout/manager/flyout_main.js +4 -2
  14. package/es/components/icon/assets/chart_pie.js +1 -2
  15. package/es/components/icon/assets/product_dashboard.js +5 -3
  16. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -2
  17. package/es/components/list_group/list_group_item.js +1 -2
  18. package/es/components/markdown_editor/markdown_editor.js +1 -1
  19. package/es/components/markdown_editor/markdown_editor_drop_zone.js +6 -3
  20. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  21. package/es/components/markdown_editor/markdown_editor_toolbar.js +14 -10
  22. package/es/components/portal/portal.js +72 -117
  23. package/es/components/search_bar/filters/field_value_toggle_group_filter.js +42 -91
  24. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  25. package/es/components/steps/step_horizontal.js +8 -5
  26. package/es/components/table/table_header_cell.js +1 -2
  27. package/es/components/tool_tip/icon_tip.js +4 -8
  28. package/es/components/tool_tip/tool_tip.js +233 -261
  29. package/es/components/tool_tip/tool_tip.styles.js +10 -18
  30. package/es/components/tool_tip/tool_tip_anchor.js +3 -3
  31. package/es/components/tool_tip/tool_tip_manager.js +1 -0
  32. package/es/components/tool_tip/tool_tip_popover.js +7 -7
  33. package/es/test/rtl/component_helpers.d.ts +0 -3
  34. package/es/test/rtl/component_helpers.js +40 -62
  35. package/eui.d.ts +29 -98
  36. package/lib/components/basic_table/basic_table.js +3 -6
  37. package/lib/components/basic_table/collapsed_item_actions.js +1 -3
  38. package/lib/components/basic_table/default_item_action.js +0 -1
  39. package/lib/components/basic_table/in_memory_table.js +3 -6
  40. package/lib/components/color_picker/color_picker_swatch.js +1 -2
  41. package/lib/components/datagrid/controls/display_selector.js +1 -2
  42. package/lib/components/datagrid/controls/fullscreen_selector.js +1 -2
  43. package/lib/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  44. package/lib/components/datagrid/utils/scrolling.js +7 -1
  45. package/lib/components/filter_group/filter_select_item.js +35 -16
  46. package/lib/components/flyout/flyout.component.js +8 -7
  47. package/lib/components/flyout/hooks.js +10 -2
  48. package/lib/components/flyout/manager/flyout_main.js +3 -1
  49. package/lib/components/icon/assets/chart_pie.js +1 -2
  50. package/lib/components/icon/assets/product_dashboard.js +5 -3
  51. package/lib/components/icon/svgs/chart_pie.svg +1 -1
  52. package/lib/components/icon/svgs/product_dashboard.svg +4 -5
  53. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -2
  54. package/lib/components/list_group/list_group_item.js +1 -2
  55. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  56. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +6 -3
  57. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  58. package/lib/components/markdown_editor/markdown_editor_toolbar.js +12 -10
  59. package/lib/components/portal/portal.js +73 -118
  60. package/lib/components/search_bar/filters/field_value_toggle_group_filter.js +44 -93
  61. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  62. package/lib/components/steps/step_horizontal.js +8 -5
  63. package/lib/components/table/table_header_cell.js +1 -2
  64. package/lib/components/tool_tip/icon_tip.js +4 -8
  65. package/lib/components/tool_tip/tool_tip.js +240 -266
  66. package/lib/components/tool_tip/tool_tip.styles.js +8 -16
  67. package/lib/components/tool_tip/tool_tip_anchor.js +2 -2
  68. package/lib/components/tool_tip/tool_tip_manager.js +1 -0
  69. package/lib/components/tool_tip/tool_tip_popover.js +6 -6
  70. package/lib/test/rtl/component_helpers.d.ts +0 -3
  71. package/lib/test/rtl/component_helpers.js +41 -63
  72. package/optimize/es/components/basic_table/collapsed_item_actions.js +1 -3
  73. package/optimize/es/components/basic_table/default_item_action.js +0 -1
  74. package/optimize/es/components/datagrid/controls/display_selector.js +1 -2
  75. package/optimize/es/components/datagrid/controls/fullscreen_selector.js +1 -2
  76. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  77. package/optimize/es/components/datagrid/utils/scrolling.js +7 -1
  78. package/optimize/es/components/filter_group/filter_select_item.js +36 -17
  79. package/optimize/es/components/flyout/flyout.component.js +8 -7
  80. package/optimize/es/components/flyout/hooks.js +11 -3
  81. package/optimize/es/components/flyout/manager/flyout_main.js +4 -2
  82. package/optimize/es/components/icon/assets/chart_pie.js +1 -2
  83. package/optimize/es/components/icon/assets/product_dashboard.js +5 -3
  84. package/optimize/es/components/key_pad_menu/key_pad_menu_item.js +1 -2
  85. package/optimize/es/components/list_group/list_group_item.js +1 -2
  86. package/optimize/es/components/markdown_editor/markdown_editor_drop_zone.js +5 -2
  87. package/optimize/es/components/markdown_editor/markdown_editor_toolbar.js +13 -9
  88. package/optimize/es/components/portal/portal.js +65 -91
  89. package/optimize/es/components/search_bar/filters/field_value_toggle_group_filter.js +43 -66
  90. package/optimize/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  91. package/optimize/es/components/steps/step_horizontal.js +8 -5
  92. package/optimize/es/components/tool_tip/icon_tip.js +3 -5
  93. package/optimize/es/components/tool_tip/tool_tip.js +227 -250
  94. package/optimize/es/components/tool_tip/tool_tip.styles.js +10 -18
  95. package/optimize/es/components/tool_tip/tool_tip_anchor.js +3 -3
  96. package/optimize/es/components/tool_tip/tool_tip_manager.js +1 -0
  97. package/optimize/es/components/tool_tip/tool_tip_popover.js +7 -7
  98. package/optimize/es/test/rtl/component_helpers.d.ts +0 -3
  99. package/optimize/es/test/rtl/component_helpers.js +40 -62
  100. package/optimize/lib/components/basic_table/collapsed_item_actions.js +1 -3
  101. package/optimize/lib/components/basic_table/default_item_action.js +0 -1
  102. package/optimize/lib/components/datagrid/controls/display_selector.js +1 -2
  103. package/optimize/lib/components/datagrid/controls/fullscreen_selector.js +1 -2
  104. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  105. package/optimize/lib/components/datagrid/utils/scrolling.js +7 -1
  106. package/optimize/lib/components/filter_group/filter_select_item.js +35 -16
  107. package/optimize/lib/components/flyout/flyout.component.js +8 -7
  108. package/optimize/lib/components/flyout/hooks.js +10 -2
  109. package/optimize/lib/components/flyout/manager/flyout_main.js +3 -1
  110. package/optimize/lib/components/icon/assets/chart_pie.js +1 -2
  111. package/optimize/lib/components/icon/assets/product_dashboard.js +5 -3
  112. package/optimize/lib/components/icon/svgs/chart_pie.svg +1 -1
  113. package/optimize/lib/components/icon/svgs/product_dashboard.svg +4 -5
  114. package/optimize/lib/components/key_pad_menu/key_pad_menu_item.js +1 -2
  115. package/optimize/lib/components/list_group/list_group_item.js +1 -2
  116. package/optimize/lib/components/markdown_editor/markdown_editor_drop_zone.js +5 -2
  117. package/optimize/lib/components/markdown_editor/markdown_editor_toolbar.js +13 -9
  118. package/optimize/lib/components/portal/portal.js +68 -93
  119. package/optimize/lib/components/search_bar/filters/field_value_toggle_group_filter.js +45 -69
  120. package/optimize/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  121. package/optimize/lib/components/steps/step_horizontal.js +8 -5
  122. package/optimize/lib/components/tool_tip/icon_tip.js +3 -5
  123. package/optimize/lib/components/tool_tip/tool_tip.js +229 -251
  124. package/optimize/lib/components/tool_tip/tool_tip.styles.js +8 -16
  125. package/optimize/lib/components/tool_tip/tool_tip_anchor.js +2 -2
  126. package/optimize/lib/components/tool_tip/tool_tip_manager.js +1 -0
  127. package/optimize/lib/components/tool_tip/tool_tip_popover.js +6 -6
  128. package/optimize/lib/test/rtl/component_helpers.d.ts +0 -3
  129. package/optimize/lib/test/rtl/component_helpers.js +41 -63
  130. package/package.json +2 -10
  131. package/test-env/components/basic_table/basic_table.js +3 -6
  132. package/test-env/components/basic_table/collapsed_item_actions.js +1 -3
  133. package/test-env/components/basic_table/default_item_action.js +0 -1
  134. package/test-env/components/basic_table/in_memory_table.js +3 -6
  135. package/test-env/components/color_picker/color_picker_swatch.js +1 -2
  136. package/test-env/components/datagrid/controls/display_selector.js +1 -2
  137. package/test-env/components/datagrid/controls/fullscreen_selector.js +1 -2
  138. package/test-env/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  139. package/test-env/components/datagrid/utils/scrolling.js +7 -1
  140. package/test-env/components/filter_group/filter_select_item.js +35 -16
  141. package/test-env/components/flyout/flyout.component.js +8 -7
  142. package/test-env/components/flyout/hooks.js +10 -2
  143. package/test-env/components/flyout/manager/flyout_main.js +3 -1
  144. package/test-env/components/icon/assets/chart_pie.js +1 -2
  145. package/test-env/components/icon/assets/product_dashboard.js +5 -3
  146. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -2
  147. package/test-env/components/list_group/list_group_item.js +1 -2
  148. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  149. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +6 -3
  150. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  151. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +14 -10
  152. package/test-env/components/portal/portal.js +70 -113
  153. package/test-env/components/search_bar/filters/field_value_toggle_group_filter.js +44 -88
  154. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  155. package/test-env/components/steps/step_horizontal.js +8 -5
  156. package/test-env/components/table/table_header_cell.js +1 -2
  157. package/test-env/components/tool_tip/icon_tip.js +4 -8
  158. package/test-env/components/tool_tip/tool_tip.js +230 -256
  159. package/test-env/components/tool_tip/tool_tip.styles.js +8 -16
  160. package/test-env/components/tool_tip/tool_tip_anchor.js +2 -2
  161. package/test-env/components/tool_tip/tool_tip_manager.js +1 -0
  162. package/test-env/components/tool_tip/tool_tip_popover.js +6 -6
  163. package/test-env/test/rtl/component_helpers.js +41 -63
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ 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
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -9,7 +10,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
10
  var _classnames = _interopRequireDefault(require("classnames"));
10
11
  var _services = require("../../services");
11
12
  var _reposition_on_scroll = require("../../services/popover/reposition_on_scroll");
12
- var _react2 = require("../../services/react");
13
13
  var _resize_observer = require("../observer/resize_observer");
14
14
  var _portal = require("../portal");
15
15
  var _component_defaults = require("../provider/component_defaults");
@@ -17,40 +17,41 @@ var _tool_tip_popover = require("./tool_tip_popover");
17
17
  var _tool_tip_anchor = require("./tool_tip_anchor");
18
18
  var _tool_tip_arrow = require("./tool_tip_arrow");
19
19
  var _tool_tip_manager = require("./tool_tip_manager");
20
- var _react3 = require("@emotion/react");
21
- var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "delay", "display", "repositionOnScroll", "disableScreenReaderOutput"];
22
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
- 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); }
26
- 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); }
27
- 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; }
28
- 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; }
29
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
30
- 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); } }
31
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
32
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
33
- 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); }
34
- function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
35
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
36
- function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
37
- 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); }
38
- function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
39
- 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; }
40
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
41
- 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); } /*
20
+ var _react2 = require("@emotion/react");
21
+ var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "display", "repositionOnScroll", "disableScreenReaderOutput", "position", "offset", "id", "onMouseOut"];
22
+ /*
42
23
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
43
24
  * or more contributor license agreements. Licensed under the Elastic License
44
25
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
45
26
  * in compliance with, at your election, the Elastic License 2.0 or the Server
46
27
  * Side Public License, v 1.
47
28
  */
29
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
30
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
31
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
32
+ 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); }
33
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
34
+ 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."); }
35
+ 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; } }
36
+ 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; }
37
+ 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; } }
38
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
39
+ 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; }
40
+ 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; }
48
41
  var POSITIONS = exports.POSITIONS = ['top', 'right', 'bottom', 'left'];
49
42
  var DISPLAYS = ['inlineBlock', 'block'];
50
43
  var DEFAULT_TOOLTIP_OFFSET = exports.DEFAULT_TOOLTIP_OFFSET = 16;
51
- var delayToMsMap = {
52
- regular: 250,
53
- long: 250 * 5
44
+
45
+ /**
46
+ * `:focus-visible` may throw in browsers that don't support the selector,
47
+ * fall back to treating all focus as visible so tooltips still appear.
48
+ */
49
+ var isFocusVisible = function isFocusVisible(element) {
50
+ try {
51
+ return element.matches(':focus-visible');
52
+ } catch (_unused) {
53
+ return element.matches(':focus');
54
+ }
54
55
  };
55
56
  var DEFAULT_TOOLTIP_STYLES = {
56
57
  // position the tooltip content near the top-left
@@ -64,251 +65,227 @@ var DEFAULT_TOOLTIP_STYLES = {
64
65
  // prevent accidental mouse interaction while positioning
65
66
  visibility: 'hidden'
66
67
  };
67
- var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/function (_Component) {
68
- function EuiToolTip(props) {
69
- var _this;
70
- _classCallCheck(this, EuiToolTip);
71
- _this = _callSuper(this, EuiToolTip, [props]);
72
- _defineProperty(_this, "repositionOnScroll", void 0);
73
- _defineProperty(_this, "_isMounted", false);
74
- _defineProperty(_this, "anchor", null);
75
- _defineProperty(_this, "popover", null);
76
- _defineProperty(_this, "timeoutId", void 0);
77
- _defineProperty(_this, "clearAnimationTimeout", function () {
78
- if (_this.timeoutId) {
79
- _this.timeoutId = clearTimeout(_this.timeoutId);
80
- }
81
- });
82
- _defineProperty(_this, "testAnchor", function () {
83
- // when the tooltip is visible, this checks if the anchor is still part of document
84
- // this fixes when the react root is removed from the dom without unmounting
85
- // https://github.com/elastic/eui/issues/1105
86
- if (document.body.contains(_this.anchor) === false) {
68
+ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
69
+ var children = _ref.children,
70
+ className = _ref.className,
71
+ anchorClassName = _ref.anchorClassName,
72
+ anchorProps = _ref.anchorProps,
73
+ content = _ref.content,
74
+ title = _ref.title,
75
+ _ref$display = _ref.display,
76
+ display = _ref$display === void 0 ? 'inlineBlock' : _ref$display,
77
+ repositionOnScroll = _ref.repositionOnScroll,
78
+ _ref$disableScreenRea = _ref.disableScreenReaderOutput,
79
+ disableScreenReaderOutput = _ref$disableScreenRea === void 0 ? false : _ref$disableScreenRea,
80
+ _ref$position = _ref.position,
81
+ positionProp = _ref$position === void 0 ? 'top' : _ref$position,
82
+ offset = _ref.offset,
83
+ idProp = _ref.id,
84
+ onMouseOutProp = _ref.onMouseOut,
85
+ rest = _objectWithoutProperties(_ref, _excluded);
86
+ var componentDefaultsContext = (0, _react.useContext)(_component_defaults.EuiComponentDefaultsContext);
87
+ var _useState = (0, _react.useState)(false),
88
+ _useState2 = _slicedToArray(_useState, 2),
89
+ visible = _useState2[0],
90
+ setVisible = _useState2[1];
91
+ var _useState3 = (0, _react.useState)(false),
92
+ _useState4 = _slicedToArray(_useState3, 2),
93
+ hasFocus = _useState4[0],
94
+ setHasFocus = _useState4[1];
95
+ var _useState5 = (0, _react.useState)(positionProp),
96
+ _useState6 = _slicedToArray(_useState5, 2),
97
+ calculatedPosition = _useState6[0],
98
+ setCalculatedPosition = _useState6[1];
99
+ var _useState7 = (0, _react.useState)(DEFAULT_TOOLTIP_STYLES),
100
+ _useState8 = _slicedToArray(_useState7, 2),
101
+ toolTipStyles = _useState8[0],
102
+ setToolTipStyles = _useState8[1];
103
+ var _useState9 = (0, _react.useState)(undefined),
104
+ _useState10 = _slicedToArray(_useState9, 2),
105
+ arrowStyles = _useState10[0],
106
+ setArrowStyles = _useState10[1];
107
+ var generatedId = (0, _react.useRef)((0, _services.htmlIdGenerator)()());
108
+ var id = idProp !== null && idProp !== void 0 ? idProp : generatedId.current;
109
+ var anchorRef = (0, _react.useRef)(null);
110
+ var popoverRef = (0, _react.useRef)(null);
111
+ var positionToolTip = (0, _react.useCallback)(function () {
112
+ if (!anchorRef.current || !popoverRef.current) {
113
+ return;
114
+ }
115
+ var _findPopoverPosition = (0, _services.findPopoverPosition)({
116
+ anchor: anchorRef.current,
117
+ popover: popoverRef.current,
118
+ position: positionProp,
119
+ offset: offset !== null && offset !== void 0 ? offset : DEFAULT_TOOLTIP_OFFSET,
120
+ arrowConfig: {
121
+ arrowWidth: 12,
122
+ arrowBuffer: 4
123
+ }
124
+ }),
125
+ position = _findPopoverPosition.position,
126
+ left = _findPopoverPosition.left,
127
+ top = _findPopoverPosition.top,
128
+ arrow = _findPopoverPosition.arrow;
129
+
130
+ // If encroaching the right edge of the window:
131
+ // When `props.content` changes and is longer than `prevProps.content`, the tooltip width remains and
132
+ // the resizeObserver callback will fire twice (once for vertical resize caused by text line wrapping,
133
+ // once for a subsequent position correction) and cause a flash rerender and reposition.
134
+ // To prevent this, we can orient from the right so that text line wrapping does not occur, negating
135
+ // the second resizeObserver callback call.
136
+ var windowWidth = document.documentElement.clientWidth || window.innerWidth;
137
+ var useRightValue = windowWidth / 2 < left;
138
+ var newToolTipStyles = {
139
+ top: top,
140
+ left: useRightValue ? 'auto' : left,
141
+ right: useRightValue ? windowWidth - left - popoverRef.current.offsetWidth : 'auto'
142
+ };
143
+ setCalculatedPosition(position);
144
+ setToolTipStyles(newToolTipStyles);
145
+ setArrowStyles(arrow);
146
+ }, [positionProp, offset]);
147
+ var setAnchorRef = (0, _react.useCallback)(function (el) {
148
+ anchorRef.current = el;
149
+ }, []);
150
+ var setPopoverRef = (0, _react.useCallback)(function (el) {
151
+ popoverRef.current = el;
152
+ if (el) positionToolTip();
153
+ }, [positionToolTip]);
154
+ var hideToolTip = (0, _react.useCallback)(function () {
155
+ setVisible(false);
156
+ setToolTipStyles(DEFAULT_TOOLTIP_STYLES);
157
+ setArrowStyles(undefined);
158
+ _tool_tip_manager.toolTipManager.deregisterToolTip(hideToolTip);
159
+ }, []);
160
+ var showToolTip = (0, _react.useCallback)(function () {
161
+ if (!content && !title) return;
162
+ setVisible(true);
163
+ _tool_tip_manager.toolTipManager.registerTooltip(hideToolTip);
164
+ }, [content, title, hideToolTip]);
165
+ (0, _react.useImperativeHandle)(ref, function () {
166
+ return {
167
+ showToolTip: showToolTip,
168
+ hideToolTip: hideToolTip,
169
+ id: id
170
+ };
171
+ }, [showToolTip, hideToolTip, id]);
172
+
173
+ // If the anchor already has focus on mount (e.g. `autoFocus`), show the tooltip.
174
+ // Important for StrictMode double-mount.
175
+ (0, _react.useEffect)(function () {
176
+ var _anchorRef$current;
177
+ if ((_anchorRef$current = anchorRef.current) !== null && _anchorRef$current !== void 0 && _anchorRef$current.contains(document.activeElement) && document.activeElement != null && isFocusVisible(document.activeElement)) {
178
+ setHasFocus(true);
179
+ showToolTip();
180
+ }
181
+ }, [showToolTip]);
182
+ (0, _react.useEffect)(function () {
183
+ return function () {
184
+ _tool_tip_manager.toolTipManager.deregisterToolTip(hideToolTip);
185
+ };
186
+ }, [hideToolTip]);
187
+
188
+ // When the tooltip is visible, this checks if the anchor is still part of document.
189
+ // This fixes when the react root is removed from the DOM without unmounting
190
+ // See: https://github.com/elastic/eui/issues/1105
191
+ (0, _react.useEffect)(function () {
192
+ if (!visible) return;
193
+ var rafId;
194
+ var testAnchor = function testAnchor() {
195
+ if (document.body.contains(anchorRef.current) === false) {
87
196
  // the anchor is no longer part of `document`
88
- _this.hideToolTip();
197
+ hideToolTip();
89
198
  } else {
90
- if (_this.state.visible) {
91
- // if still visible, keep checking
92
- requestAnimationFrame(_this.testAnchor);
93
- }
94
- }
95
- });
96
- _defineProperty(_this, "setAnchorRef", function (ref) {
97
- return _this.anchor = ref;
98
- });
99
- _defineProperty(_this, "setPopoverRef", function (ref) {
100
- return _this.popover = ref;
101
- });
102
- _defineProperty(_this, "showToolTip", function () {
103
- if (!_this.timeoutId) {
104
- _this.timeoutId = setTimeout(function () {
105
- (0, _react2.enqueueStateChange)(function () {
106
- _this.setState({
107
- visible: true
108
- });
109
- _tool_tip_manager.toolTipManager.registerTooltip(_this.hideToolTip);
110
- });
111
- }, delayToMsMap[_this.props.delay]);
112
- }
113
- });
114
- _defineProperty(_this, "positionToolTip", function () {
115
- var _this$props$offset;
116
- var requestedPosition = _this.props.position;
117
- var offset = (_this$props$offset = _this.props.offset) !== null && _this$props$offset !== void 0 ? _this$props$offset : DEFAULT_TOOLTIP_OFFSET;
118
- if (!_this.anchor || !_this.popover) {
119
- return;
199
+ rafId = requestAnimationFrame(testAnchor);
120
200
  }
121
- var _findPopoverPosition = (0, _services.findPopoverPosition)({
122
- anchor: _this.anchor,
123
- popover: _this.popover,
124
- position: requestedPosition,
125
- offset: offset,
126
- arrowConfig: {
127
- arrowWidth: 12,
128
- arrowBuffer: 4
129
- }
130
- }),
131
- position = _findPopoverPosition.position,
132
- left = _findPopoverPosition.left,
133
- top = _findPopoverPosition.top,
134
- arrow = _findPopoverPosition.arrow;
201
+ };
202
+ rafId = requestAnimationFrame(testAnchor);
203
+ return function () {
204
+ cancelAnimationFrame(rafId);
205
+ };
206
+ }, [visible, hideToolTip]);
135
207
 
136
- // If encroaching the right edge of the window:
137
- // When `props.content` changes and is longer than `prevProps.content`, the tooltip width remains and
138
- // the resizeObserver callback will fire twice (once for vertical resize caused by text line wrapping,
139
- // once for a subsequent position correction) and cause a flash rerender and reposition.
140
- // To prevent this, we can orient from the right so that text line wrapping does not occur, negating
141
- // the second resizeObserver callback call.
142
- var windowWidth = document.documentElement.clientWidth || window.innerWidth;
143
- var useRightValue = windowWidth / 2 < left;
144
- var toolTipStyles = {
145
- top: top,
146
- left: useRightValue ? 'auto' : left,
147
- right: useRightValue ? windowWidth - left - _this.popover.offsetWidth : 'auto'
148
- };
149
- _this.setState({
150
- visible: true,
151
- calculatedPosition: position,
152
- toolTipStyles: toolTipStyles,
153
- arrowStyles: arrow
154
- });
155
- });
156
- _defineProperty(_this, "hideToolTip", function () {
157
- _this.clearAnimationTimeout();
158
- (0, _react2.enqueueStateChange)(function () {
159
- if (_this._isMounted) {
160
- _this.setState({
161
- visible: false,
162
- toolTipStyles: DEFAULT_TOOLTIP_STYLES,
163
- arrowStyles: undefined
164
- });
165
- _tool_tip_manager.toolTipManager.deregisterToolTip(_this.hideToolTip);
166
- }
167
- });
168
- });
169
- _defineProperty(_this, "onFocus", function () {
170
- _this.setState({
171
- hasFocus: true
172
- });
173
- _this.showToolTip();
174
- });
175
- _defineProperty(_this, "onBlur", function () {
176
- _this.setState({
177
- hasFocus: false
178
- });
179
- _this.hideToolTip();
180
- });
181
- _defineProperty(_this, "onEscapeKey", function (event) {
182
- if (event.key === _services.keys.ESCAPE) {
183
- // when the tooltip is only visual, we don't want it to add an additional key stop
184
- if (!_this.props.disableScreenReaderOutput) {
185
- if (_this.state.visible) event.stopPropagation();
186
- }
187
- _this.setState({
188
- hasFocus: false
189
- }); // Allows mousing over back into the tooltip to work correctly
190
- _this.hideToolTip();
191
- }
208
+ // update scroll listener
209
+ (0, _react.useEffect)(function () {
210
+ var shouldReposition = (0, _reposition_on_scroll.getRepositionOnScroll)({
211
+ repositionOnScroll: repositionOnScroll,
212
+ repositionFn: positionToolTip,
213
+ componentDefaults: componentDefaultsContext.EuiToolTip
192
214
  });
193
- _defineProperty(_this, "onMouseOut", function (event) {
194
- // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has
195
- // left the anchor for a non-child.
196
- if (_this.anchor === event.relatedTarget || _this.anchor != null && !_this.anchor.contains(event.relatedTarget)) {
197
- if (!_this.state.hasFocus) {
198
- _this.hideToolTip();
199
- }
200
- }
201
- if (_this.props.onMouseOut) {
202
- _this.props.onMouseOut(event);
203
- }
204
- });
205
- _this.state = {
206
- visible: false,
207
- hasFocus: false,
208
- calculatedPosition: _this.props.position,
209
- toolTipStyles: DEFAULT_TOOLTIP_STYLES,
210
- arrowStyles: undefined,
211
- id: _this.props.id || (0, _services.htmlIdGenerator)()()
215
+ if (shouldReposition) {
216
+ window.addEventListener('scroll', positionToolTip, true);
217
+ }
218
+ return function () {
219
+ window.removeEventListener('scroll', positionToolTip, true);
212
220
  };
213
- _this.repositionOnScroll = (0, _reposition_on_scroll.createRepositionOnScroll)(function () {
214
- return {
215
- repositionOnScroll: _this.props.repositionOnScroll,
216
- componentDefaults: _this.context.EuiToolTip,
217
- repositionFn: _this.positionToolTip
218
- };
219
- });
220
- return _this;
221
- }
222
- _inherits(EuiToolTip, _Component);
223
- return _createClass(EuiToolTip, [{
224
- key: "componentDidMount",
225
- value: function componentDidMount() {
226
- this._isMounted = true;
227
- this.repositionOnScroll.subscribe();
221
+ }, [repositionOnScroll, positionToolTip, componentDefaultsContext.EuiToolTip]);
222
+ var onFocus = (0, _react.useCallback)(function (e) {
223
+ if (isFocusVisible(e.target)) {
224
+ setHasFocus(true);
225
+ showToolTip();
228
226
  }
229
- }, {
230
- key: "componentWillUnmount",
231
- value: function componentWillUnmount() {
232
- this.clearAnimationTimeout();
233
- this._isMounted = false;
234
- this.repositionOnScroll.cleanup();
227
+ }, [showToolTip]);
228
+ var onBlur = (0, _react.useCallback)(function () {
229
+ setHasFocus(false);
230
+ hideToolTip();
231
+ }, [hideToolTip]);
232
+ var onEscapeKey = (0, _react.useCallback)(function (event) {
233
+ if (event.key === _services.keys.ESCAPE) {
234
+ // when the tooltip is only visual, we don't want it to add an additional key stop
235
+ if (!disableScreenReaderOutput) {
236
+ if (visible) event.stopPropagation();
237
+ }
238
+ setHasFocus(false); // Allows mousing over back into the tooltip to work correctly
239
+ hideToolTip();
235
240
  }
236
- }, {
237
- key: "componentDidUpdate",
238
- value: function componentDidUpdate(prevProps, prevState) {
239
- if (prevState.visible === false && this.state.visible === true) {
240
- requestAnimationFrame(this.testAnchor);
241
+ }, [disableScreenReaderOutput, visible, hideToolTip]);
242
+ var onMouseOut = (0, _react.useCallback)(function (event) {
243
+ // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has
244
+ // left the anchor for a non-child.
245
+ if (anchorRef.current === event.relatedTarget || anchorRef.current != null && !anchorRef.current.contains(event.relatedTarget)) {
246
+ if (!hasFocus) {
247
+ hideToolTip();
241
248
  }
242
-
243
- // update scroll listener
244
- this.repositionOnScroll.update();
245
249
  }
246
- }, {
247
- key: "render",
248
- value: function render() {
249
- var _this$props = this.props,
250
- children = _this$props.children,
251
- className = _this$props.className,
252
- anchorClassName = _this$props.anchorClassName,
253
- anchorProps = _this$props.anchorProps,
254
- content = _this$props.content,
255
- title = _this$props.title,
256
- delay = _this$props.delay,
257
- display = _this$props.display,
258
- repositionOnScroll = _this$props.repositionOnScroll,
259
- _this$props$disableSc = _this$props.disableScreenReaderOutput,
260
- disableScreenReaderOutput = _this$props$disableSc === void 0 ? false : _this$props$disableSc,
261
- rest = _objectWithoutProperties(_this$props, _excluded);
262
- var _this$state = this.state,
263
- arrowStyles = _this$state.arrowStyles,
264
- id = _this$state.id,
265
- toolTipStyles = _this$state.toolTipStyles,
266
- visible = _this$state.visible,
267
- calculatedPosition = _this$state.calculatedPosition;
268
- var classes = (0, _classnames.default)('euiToolTip', className);
269
- var anchorClasses = (0, _classnames.default)(anchorClassName, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.className);
270
- return (0, _react3.jsx)(_react.default.Fragment, null, (0, _react3.jsx)(_tool_tip_anchor.EuiToolTipAnchor, _extends({}, anchorProps, {
271
- ref: this.setAnchorRef,
272
- onBlur: this.onBlur,
273
- onFocus: this.onFocus,
274
- onKeyDown: this.onEscapeKey,
275
- onMouseOver: this.showToolTip,
276
- onMouseOut: this.onMouseOut
277
- // `id` defines if the trigger and tooltip are automatically linked via `aria-describedby`.
278
- ,
279
- id: !disableScreenReaderOutput ? id : undefined,
280
- className: anchorClasses,
281
- display: display,
282
- isVisible: visible
283
- }), children), visible && (content || title) && (0, _react3.jsx)(_portal.EuiPortal, null, (0, _react3.jsx)(_tool_tip_popover.EuiToolTipPopover, _extends({
284
- className: classes,
285
- style: toolTipStyles,
286
- positionToolTip: this.positionToolTip,
287
- popoverRef: this.setPopoverRef,
288
- title: title,
289
- id: id,
290
- role: "tooltip",
291
- calculatedPosition: calculatedPosition
292
- }, rest), (0, _react3.jsx)(_tool_tip_arrow.EuiToolTipArrow, {
293
- style: arrowStyles,
294
- className: "euiToolTip__arrow",
295
- position: calculatedPosition
296
- }), (0, _react3.jsx)(_resize_observer.EuiResizeObserver, {
297
- onResize: this.positionToolTip
298
- }, function (resizeRef) {
299
- return (0, _react3.jsx)("div", {
300
- ref: resizeRef
301
- }, content);
302
- }))));
250
+ if (onMouseOutProp) {
251
+ onMouseOutProp(event);
303
252
  }
304
- }]);
305
- }(_react.Component);
306
- _defineProperty(EuiToolTip, "contextType", _component_defaults.EuiComponentDefaultsContext);
307
- _defineProperty(EuiToolTip, "defaultProps", {
308
- position: 'top',
309
- delay: 'regular',
310
- display: 'inlineBlock',
311
- disableScreenReaderOutput: false
253
+ }, [hasFocus, hideToolTip, onMouseOutProp]);
254
+ var classes = (0, _classnames.default)('euiToolTip', className);
255
+ var anchorClasses = (0, _classnames.default)(anchorClassName, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.className);
256
+ return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_tool_tip_anchor.EuiToolTipAnchor, _extends({}, anchorProps, {
257
+ ref: setAnchorRef,
258
+ onBlur: onBlur,
259
+ onFocus: onFocus,
260
+ onKeyDown: onEscapeKey,
261
+ onMouseOver: showToolTip,
262
+ onMouseOut: onMouseOut
263
+ // `id` defines if the trigger and tooltip are automatically linked via `aria-describedby`.
264
+ ,
265
+ id: !disableScreenReaderOutput ? id : undefined,
266
+ className: anchorClasses,
267
+ display: display,
268
+ isVisible: visible
269
+ }), children), visible && (content || title) && (0, _react2.jsx)(_portal.EuiPortal, null, (0, _react2.jsx)(_tool_tip_popover.EuiToolTipPopover, _extends({
270
+ className: classes,
271
+ style: toolTipStyles,
272
+ positionToolTip: positionToolTip,
273
+ popoverRef: setPopoverRef,
274
+ title: title,
275
+ id: id,
276
+ role: "tooltip",
277
+ calculatedPosition: calculatedPosition
278
+ }, rest), (0, _react2.jsx)(_tool_tip_arrow.EuiToolTipArrow, {
279
+ style: arrowStyles,
280
+ className: "euiToolTip__arrow",
281
+ position: calculatedPosition
282
+ }), (0, _react2.jsx)(_resize_observer.EuiResizeObserver, {
283
+ onResize: positionToolTip
284
+ }, function (resizeRef) {
285
+ return (0, _react2.jsx)("div", {
286
+ ref: resizeRef
287
+ }, content);
288
+ }))));
312
289
  });
313
290
  EuiToolTip.propTypes = {
314
291
  /**
@@ -340,10 +317,6 @@ EuiToolTip.propTypes = {
340
317
  * Common display alternatives for the anchor wrapper
341
318
  */
342
319
  display: _propTypes.default.any,
343
- /**
344
- * Delay before showing tooltip. Good for repeatable items.
345
- */
346
- delay: _propTypes.default.oneOf(["regular", "long"]).isRequired,
347
320
  /**
348
321
  * An optional title for your tooltip.
349
322
  */
@@ -355,7 +328,7 @@ EuiToolTip.propTypes = {
355
328
  /**
356
329
  * Suggested position. If there is not enough room for it this will be changed.
357
330
  */
358
- position: _propTypes.default.oneOf(["top", "right", "bottom", "left"]).isRequired,
331
+ position: _propTypes.default.oneOf(["top", "right", "bottom", "left"]),
359
332
  /**
360
333
  * When `true`, the tooltip's position is re-calculated when the user
361
334
  * scrolls. This supports having fixed-position tooltip anchors.
@@ -384,4 +357,5 @@ EuiToolTip.propTypes = {
384
357
  "aria-label": _propTypes.default.string,
385
358
  "data-test-subj": _propTypes.default.string,
386
359
  css: _propTypes.default.any
387
- };
360
+ };
361
+ EuiToolTip.displayName = 'EuiToolTip';
@@ -9,7 +9,7 @@ var _euiThemeCommon = require("@elastic/eui-theme-common");
9
9
  var _global_styling = require("../../global_styling");
10
10
  var _popover = require("../../services/popover");
11
11
  var _panel = require("../panel/panel.styles");
12
- var _templateObject, _templateObject2;
12
+ var _templateObject;
13
13
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
14
14
  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)."; } /*
15
15
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -24,29 +24,21 @@ var euiToolTipBackgroundColor = exports.euiToolTipBackgroundColor = function eui
24
24
  var euiToolTipBorderColor = exports.euiToolTipBorderColor = function euiToolTipBorderColor(euiTheme) {
25
25
  return euiTheme.components.tooltipBorder;
26
26
  };
27
- var euiToolTipAnimationVertical = function euiToolTipAnimationVertical(size) {
28
- return (0, _react.keyframes)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0% {\n opacity: 0;\n transform: translateY(", ");\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n"])), size);
29
- };
30
- var euiToolTipAnimationHorizontal = function euiToolTipAnimationHorizontal(size) {
31
- return (0, _react.keyframes)(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n 0% {\n opacity: 0;\n transform: translateX(", ");\n }\n\n 100% {\n opacity: 1;\n transform: translateX(0);\n }\n"])), size);
32
- };
27
+ var euiToolTipAnimation = (0, _react.keyframes)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n from { opacity: 0; }\n to { opacity: 1; }\n"])));
33
28
  var euiToolTipStyles = exports.euiToolTipStyles = function euiToolTipStyles(euiThemeContext) {
34
29
  var euiTheme = euiThemeContext.euiTheme,
35
30
  highContrastMode = euiThemeContext.highContrastMode;
36
31
  var hasShadow = !highContrastMode;
37
- var animationTiming = "".concat(euiTheme.animation.slow, " ease-out 0s forwards");
38
32
  var arrowSize = euiTheme.size.m;
39
33
  var arrowStyles = (0, _popover._popoverArrowStyles)(euiThemeContext, arrowSize);
40
34
  return {
41
35
  // Base
42
- euiToolTip: /*#__PURE__*/(0, _react.css)(hasShadow ? (0, _euiThemeCommon.euiShadow)(euiThemeContext) : '', " border-radius:", euiTheme.border.radius.medium, ";background-color:", euiToolTipBackgroundColor(euiTheme), ";color:", euiTheme.colors.textGhost, ";z-index:", euiTheme.levels.toast, ";", (0, _global_styling.logicalCSS)('max-width', '256px'), " overflow-wrap:break-word;padding:", euiTheme.size.s, ";", (0, _global_styling.euiFontSize)(euiThemeContext, 's'), " position:absolute;", (0, _panel.euiPanelBorderStyles)(euiThemeContext), " [class*='euiHorizontalRule']{background-color:", euiToolTipBorderColor(euiTheme), ";};label:euiToolTip;"),
43
- // Sizes
44
- s: /*#__PURE__*/(0, _react.css)((0, _global_styling.euiFontSize)(euiThemeContext, 'xs'), ";;label:s;"),
45
- // Positions
46
- top: /*#__PURE__*/(0, _react.css)(_global_styling.euiCanAnimate, "{animation:", euiToolTipAnimationVertical("-".concat(euiTheme.size.base)), " ", animationTiming, ";};label:top;"),
47
- bottom: /*#__PURE__*/(0, _react.css)(_global_styling.euiCanAnimate, "{animation:", euiToolTipAnimationVertical(euiTheme.size.base), " ", animationTiming, ";};label:bottom;"),
48
- left: /*#__PURE__*/(0, _react.css)(_global_styling.euiCanAnimate, "{animation:", euiToolTipAnimationHorizontal("-".concat(euiTheme.size.base)), " ", animationTiming, ";};label:left;"),
49
- right: /*#__PURE__*/(0, _react.css)(_global_styling.euiCanAnimate, "{animation:", euiToolTipAnimationHorizontal(euiTheme.size.base), " ", animationTiming, ";};label:right;"),
36
+ euiToolTip: /*#__PURE__*/(0, _react.css)(hasShadow ? (0, _euiThemeCommon.euiShadow)(euiThemeContext) : '', " border-radius:", euiTheme.border.radius.medium, ";background-color:", euiToolTipBackgroundColor(euiTheme), ";color:", euiTheme.colors.textGhost, ";z-index:", euiTheme.levels.toast, ";", (0, _global_styling.logicalCSS)('max-width', '256px'), " overflow-wrap:break-word;padding:", euiTheme.size.s, ";", (0, _global_styling.euiFontSize)(euiThemeContext, 'xs'), " position:absolute;pointer-events:none;", (0, _panel.euiPanelBorderStyles)(euiThemeContext), " [class*='euiHorizontalRule']{background-color:", euiToolTipBorderColor(euiTheme), ";}", _euiThemeCommon.euiCanAnimate, "{animation:", euiToolTipAnimation, " ", euiTheme.animation.extraFast, " ease-out ", euiTheme.animation.fast, " both;};label:euiToolTip;"),
37
+ // Positions - kept for component compatibility. Animation is in the base style.
38
+ top: /*#__PURE__*/(0, _react.css)(";label:top;"),
39
+ bottom: /*#__PURE__*/(0, _react.css)(";label:bottom;"),
40
+ left: /*#__PURE__*/(0, _react.css)(";label:left;"),
41
+ right: /*#__PURE__*/(0, _react.css)(";label:right;"),
50
42
  // Arrow
51
43
  euiToolTip__arrow: /*#__PURE__*/(0, _react.css)(arrowStyles._arrowStyles, " background-color:inherit;;label:euiToolTip__arrow;"),
52
44
  arrowPositions: arrowStyles.positions,
@@ -36,7 +36,7 @@ var EuiToolTipAnchor = exports.EuiToolTipAnchor = /*#__PURE__*/(0, _react.forwar
36
36
  display = _ref.display,
37
37
  isVisible = _ref.isVisible,
38
38
  rest = _objectWithoutProperties(_ref, _excluded);
39
- var anchorCss = (0, _tool_tip.euiToolTipAnchorStyles)();
39
+ var anchorCss = (0, _services.useEuiMemoizedStyles)(_tool_tip.euiToolTipAnchorStyles);
40
40
  var cssStyles = [anchorCss.euiToolTipAnchor, anchorCss[display]];
41
41
  var classes = (0, _classnames.default)('euiToolTipAnchor', className);
42
42
  var anchorId = (0, _services.useGeneratedHtmlId)({
@@ -57,7 +57,7 @@ var EuiToolTipAnchor = exports.EuiToolTipAnchor = /*#__PURE__*/(0, _react.forwar
57
57
  onMouseOut: onMouseOut
58
58
  }), /*#__PURE__*/(0, _react.cloneElement)(children, {
59
59
  onFocus: function onFocus(e) {
60
- _onFocus();
60
+ _onFocus(e);
61
61
  children.props.onFocus && children.props.onFocus(e);
62
62
  },
63
63
  onBlur: function onBlur(e) {
@@ -32,6 +32,7 @@ var ToolTipManager = /*#__PURE__*/_createClass(function ToolTipManager() {
32
32
  // multiple tooltips are registered via async shenanigans
33
33
  _defineProperty(this, "toolTipsToHide", new Set());
34
34
  _defineProperty(this, "registerTooltip", function (hideCallback) {
35
+ if (_this.toolTipsToHide.has(hideCallback)) return;
35
36
  _this.toolTipsToHide.forEach(function (hide) {
36
37
  return hide();
37
38
  });