@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
@@ -7,15 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.EuiTableSortMobile = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
14
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
12
  var _react = _interopRequireWildcard(require("react"));
18
- var _propTypes = _interopRequireDefault(require("prop-types"));
19
13
  var _classnames = _interopRequireDefault(require("classnames"));
20
14
  var _button_empty = require("../../button/button_empty");
21
15
  var _popover = require("../../popover");
@@ -24,101 +18,70 @@ var _i18n = require("../../i18n");
24
18
  var _table_sort_mobile_item = require("./table_sort_mobile_item");
25
19
  var _react2 = require("@emotion/react");
26
20
  var _excluded = ["className", "anchorPosition", "items"];
27
- 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); }
28
- 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; }
29
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
30
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*
21
+ /*
31
22
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
32
23
  * or more contributor license agreements. Licensed under the Elastic License
33
24
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
34
25
  * in compliance with, at your election, the Elastic License 2.0 or the Server
35
26
  * Side Public License, v 1.
36
27
  */
37
- var EuiTableSortMobile = exports.EuiTableSortMobile = /*#__PURE__*/function (_Component) {
38
- function EuiTableSortMobile() {
39
- var _this;
40
- (0, _classCallCheck2.default)(this, EuiTableSortMobile);
41
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
42
- args[_key] = arguments[_key];
43
- }
44
- _this = _callSuper(this, EuiTableSortMobile, [].concat(args));
45
- (0, _defineProperty2.default)(_this, "state", {
46
- isPopoverOpen: false
47
- });
48
- (0, _defineProperty2.default)(_this, "onButtonClick", function () {
49
- _this.setState({
50
- isPopoverOpen: !_this.state.isPopoverOpen
51
- });
52
- });
53
- (0, _defineProperty2.default)(_this, "closePopover", function () {
54
- _this.setState({
55
- isPopoverOpen: false
56
- });
57
- });
58
- // Aligns the button to the right even when it's the only element present
59
- (0, _defineProperty2.default)(_this, "euiTableSortMobileStyles", {
60
- marginInlineStart: 'auto',
61
- label: 'euiTableSortMobile'
28
+ 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); }
29
+ 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; }
30
+ // Aligns the button to the right even when it's the only element present
31
+ var euiTableSortMobileStyles = {
32
+ marginInlineStart: 'auto',
33
+ label: 'euiTableSortMobile'
34
+ };
35
+ var EuiTableSortMobile = exports.EuiTableSortMobile = function EuiTableSortMobile(_ref) {
36
+ var className = _ref.className,
37
+ anchorPosition = _ref.anchorPosition,
38
+ items = _ref.items,
39
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
40
+ var _useState = (0, _react.useState)(false),
41
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
42
+ isPopoverOpen = _useState2[0],
43
+ setIsPopoverOpen = _useState2[1];
44
+ var classes = (0, _classnames.default)('euiTableSortMobile', className);
45
+ var onButtonClick = function onButtonClick() {
46
+ setIsPopoverOpen(function (isOpen) {
47
+ return !isOpen;
62
48
  });
63
- return _this;
64
- }
65
- (0, _inherits2.default)(EuiTableSortMobile, _Component);
66
- return (0, _createClass2.default)(EuiTableSortMobile, [{
67
- key: "render",
68
- value: function render() {
69
- var _this$props = this.props,
70
- className = _this$props.className,
71
- anchorPosition = _this$props.anchorPosition,
72
- items = _this$props.items,
73
- rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
74
- var classes = (0, _classnames.default)('euiTableSortMobile', className);
75
- var mobileSortButton = (0, _react2.jsx)(_button_empty.EuiButtonEmpty, {
76
- iconType: "chevronSingleDown",
77
- iconSide: "right",
78
- onClick: this.onButtonClick.bind(this),
79
- flush: "right",
80
- size: "xs"
81
- }, (0, _react2.jsx)(_i18n.EuiI18n, {
82
- token: "euiTableSortMobile.sorting",
83
- default: "Sorting"
84
- }));
85
- var mobileSortPopover = (0, _react2.jsx)(_popover.EuiPopover, (0, _extends2.default)({
86
- button: mobileSortButton,
87
- isOpen: this.state.isPopoverOpen,
88
- closePopover: this.closePopover,
89
- anchorPosition: anchorPosition || 'downRight',
90
- panelPaddingSize: "none"
91
- }, rest), (0, _react2.jsx)(_context_menu.EuiContextMenuPanel, {
92
- style: {
93
- minWidth: 200
94
- },
95
- items: items && items.length ? items.map(function (item) {
96
- return (0, _react2.jsx)(_table_sort_mobile_item.EuiTableSortMobileItem, {
97
- key: item.key,
98
- onSort: item.onSort,
99
- isSorted: item.isSorted,
100
- isSortAscending: item.isSortAscending
101
- }, item.name);
102
- }) : undefined
103
- }));
104
- return (0, _react2.jsx)("div", {
105
- className: classes,
106
- css: this.euiTableSortMobileStyles
107
- }, mobileSortPopover);
108
- }
109
- }]);
110
- }(_react.Component);
111
- EuiTableSortMobile.propTypes = {
112
- anchorPosition: _propTypes.default.any,
113
- items: _propTypes.default.arrayOf(_propTypes.default.shape({
114
- name: _propTypes.default.node.isRequired,
115
- key: _propTypes.default.any,
116
- onSort: _propTypes.default.func,
117
- isSorted: _propTypes.default.bool,
118
- isSortAscending: _propTypes.default.bool
119
- }).isRequired),
120
- className: _propTypes.default.string,
121
- "aria-label": _propTypes.default.string,
122
- "data-test-subj": _propTypes.default.string,
123
- css: _propTypes.default.any
124
- };
49
+ };
50
+ var closePopover = function closePopover() {
51
+ setIsPopoverOpen(false);
52
+ };
53
+ var mobileSortButton = (0, _react2.jsx)(_button_empty.EuiButtonEmpty, {
54
+ iconType: "chevronSingleDown",
55
+ iconSide: "right",
56
+ onClick: onButtonClick,
57
+ flush: "right",
58
+ size: "xs"
59
+ }, (0, _react2.jsx)(_i18n.EuiI18n, {
60
+ token: "euiTableSortMobile.sorting",
61
+ default: "Sorting"
62
+ }));
63
+ var mobileSortPopover = (0, _react2.jsx)(_popover.EuiPopover, (0, _extends2.default)({
64
+ button: mobileSortButton,
65
+ isOpen: isPopoverOpen,
66
+ closePopover: closePopover,
67
+ anchorPosition: anchorPosition || 'downRight',
68
+ panelPaddingSize: "none"
69
+ }, rest), (0, _react2.jsx)(_context_menu.EuiContextMenuPanel, {
70
+ style: {
71
+ minWidth: 200
72
+ },
73
+ items: items !== null && items !== void 0 && items.length ? items.map(function (item) {
74
+ return (0, _react2.jsx)(_table_sort_mobile_item.EuiTableSortMobileItem, {
75
+ key: item.key,
76
+ onSort: item.onSort,
77
+ isSorted: item.isSorted,
78
+ isSortAscending: item.isSortAscending
79
+ }, item.name);
80
+ }) : undefined
81
+ }));
82
+ return (0, _react2.jsx)("div", {
83
+ className: classes,
84
+ css: euiTableSortMobileStyles
85
+ }, mobileSortPopover);
86
+ };
87
+ EuiTableSortMobile.displayName = 'EuiTableSortMobile';
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEuiTableStoreUniqueColumnId = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _uuid = require("uuid");
10
+ 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); }
11
+ 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; }
12
+ /*
13
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
+ * or more contributor license agreements. Licensed under the Elastic License
15
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
16
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
17
+ * Side Public License, v 1.
18
+ */
19
+
20
+ var useEuiTableStoreUniqueColumnIdFallback = function useEuiTableStoreUniqueColumnIdFallback() {
21
+ var ref = (0, _react.useRef)((0, _uuid.v4)());
22
+ return ref.current;
23
+ };
24
+
25
+ /**
26
+ * Returns a stable unique column ID to be used when registering columns.
27
+ * It uses `React.useId()` when available and falls back to UUID v4 on React 17.
28
+ *
29
+ * This is needed so that static `uuid` mocks don't break column registration
30
+ * (at least in React 18+; in older versions this function would need
31
+ * to be mocked to return something unique, but stable).
32
+ * @internal
33
+ */
34
+ var useEuiTableStoreUniqueColumnId = exports.useEuiTableStoreUniqueColumnId = 'useId' in _react.default ? _react.useId : useEuiTableStoreUniqueColumnIdFallback;
@@ -13,7 +13,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _services = require("../../services");
16
- var _html_id_generator = require("../../services/accessibility/html_id_generator");
17
16
  var _i18n = require("../i18n");
18
17
  var _accessibility = require("../accessibility");
19
18
  var _icon = require("../icon");
@@ -25,6 +24,7 @@ var _table_cell_content = require("./_table_cell_content");
25
24
  var _table_cells_shared = require("./table_cells_shared.styles");
26
25
  var _provider = require("./store/provider");
27
26
  var _sticky_header = require("./sticky_header");
27
+ var _use_unique_column_id = require("./store/use_unique_column_id");
28
28
  var _react2 = require("@emotion/react");
29
29
  var _excluded = ["children", "align", "onSort", "isSorted", "isSortAscending", "className", "scope", "mobileOptions", "width", "minWidth", "maxWidth", "style", "readOnly", "tooltipProps", "description", "append", "sticky"];
30
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); }
@@ -113,7 +113,7 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
113
113
  sticky = _ref2.sticky,
114
114
  rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
115
115
  var selfRef = (0, _react.useRef)(null);
116
- var internalCellId = (0, _html_id_generator.useGeneratedHtmlId)();
116
+ var storeCellId = (0, _use_unique_column_id.useEuiTableStoreUniqueColumnId)();
117
117
  var store = (0, _provider.useEuiTableColumnDataStore)();
118
118
  var isWithinStickyHeader = (0, _sticky_header.useEuiTableWithinStickyHeader)();
119
119
  var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableHeaderFooterCellStyles);
@@ -178,15 +178,15 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
178
178
  if (!entry) {
179
179
  return;
180
180
  }
181
- store.updateColumnWidth(internalCellId, entry.contentRect.width);
182
- }, [store, internalCellId]);
181
+ store.updateColumnWidth(storeCellId, entry.contentRect.width);
182
+ }, [store, storeCellId]);
183
183
  (0, _react.useEffect)(function () {
184
184
  // Don't register the column inside the sticky header as the original
185
185
  // column is already registered. This would cause an infinite loop.
186
186
  if (isWithinStickyHeader || !selfRef.current || !renderHeaderCellRef.current) {
187
187
  return;
188
188
  }
189
- var unregisterColumn = store.registerColumn(internalCellId, {
189
+ var unregisterColumn = store.registerColumn(storeCellId, {
190
190
  renderHeaderCellRef: renderHeaderCellRef,
191
191
  // getBoundingClientRect is not the cheapest, but we call it only once
192
192
  currentWidth: selfRef.current.getBoundingClientRect().width
@@ -208,8 +208,7 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
208
208
  unregisterColumn();
209
209
  (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect();
210
210
  };
211
- // eslint-disable-next-line react-hooks/exhaustive-deps
212
- }, [store, internalCellId, isWithinStickyHeader]);
211
+ }, [store, isWithinStickyHeader, handleResize, storeCellId]);
213
212
 
214
213
  // Notify the store on every render so the sticky header stays in sync.
215
214
  // React's reconciliation will efficiently handle any duplicate renders.
@@ -224,7 +223,7 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
224
223
  if (!selfRef.current) {
225
224
  return;
226
225
  }
227
- store.updateColumn(internalCellId, {
226
+ store.updateColumn(storeCellId, {
228
227
  renderHeaderCellRef: renderHeaderCellRef
229
228
  });
230
229
  });
@@ -12,11 +12,11 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _classnames = _interopRequireDefault(require("classnames"));
14
14
  var _services = require("../../services");
15
- var _html_id_generator = require("../../services/accessibility/html_id_generator");
16
15
  var _utils = require("./utils");
17
16
  var _table_cells_shared = require("./table_cells_shared.styles");
18
17
  var _provider = require("./store/provider");
19
18
  var _sticky_header = require("./sticky_header");
19
+ var _use_unique_column_id = require("./store/use_unique_column_id");
20
20
  var _react2 = require("@emotion/react");
21
21
  var _excluded = ["children", "className", "scope", "style", "width", "minWidth", "maxWidth", "append"];
22
22
  /*
@@ -39,7 +39,7 @@ var EuiTableHeaderCellCheckbox = exports.EuiTableHeaderCellCheckbox = function E
39
39
  maxWidth = props.maxWidth,
40
40
  append = props.append,
41
41
  rest = (0, _objectWithoutProperties2.default)(props, _excluded);
42
- var internalCellId = (0, _html_id_generator.useGeneratedHtmlId)();
42
+ var storeCellId = (0, _use_unique_column_id.useEuiTableStoreUniqueColumnId)();
43
43
  var store = (0, _provider.useEuiTableColumnDataStore)();
44
44
  var isWithinStickyHeader = (0, _sticky_header.useEuiTableWithinStickyHeader)();
45
45
  var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableCellCheckboxStyles);
@@ -66,21 +66,20 @@ var EuiTableHeaderCellCheckbox = exports.EuiTableHeaderCellCheckbox = function E
66
66
  if (isWithinStickyHeader) {
67
67
  return;
68
68
  }
69
- var unregisterColumn = store.registerColumn(internalCellId, {
69
+ var unregisterColumn = store.registerColumn(storeCellId, {
70
70
  renderHeaderCellRef: renderHeaderCellRef
71
71
  });
72
72
  return function () {
73
73
  unregisterColumn();
74
74
  };
75
- // eslint-disable-next-line react-hooks/exhaustive-deps
76
- }, [store, internalCellId, isWithinStickyHeader]);
75
+ }, [store, isWithinStickyHeader, storeCellId]);
77
76
  (0, _react.useEffect)(function () {
78
77
  // Notify the store on every render so the sticky header stays in sync.
79
78
  // React's reconciliation will efficiently handle any duplicate renders.
80
79
  if (isWithinStickyHeader) {
81
80
  return;
82
81
  }
83
- store.updateColumn(internalCellId, {
82
+ store.updateColumn(storeCellId, {
84
83
  renderHeaderCellRef: renderHeaderCellRef
85
84
  });
86
85
  });
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.POSITIONS = exports.EuiToolTip = exports.DEFAULT_TOOLTIP_OFFSET = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -32,6 +33,8 @@ var _excluded = ["children", "className", "anchorClassName", "anchorProps", "con
32
33
  */
33
34
  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); }
34
35
  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; }
36
+ 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; }
37
+ 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) { (0, _defineProperty2.default)(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; }
35
38
  var POSITIONS = exports.POSITIONS = ['top', 'right', 'bottom', 'left'];
36
39
  var DISPLAYS = ['inlineBlock', 'block', 'flex'];
37
40
  var DEFAULT_TOOLTIP_OFFSET = exports.DEFAULT_TOOLTIP_OFFSET = 16;
@@ -85,22 +88,26 @@ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(functi
85
88
  setVisible = _useState2[1];
86
89
  var _useState3 = (0, _react.useState)(false),
87
90
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
88
- hasFocus = _useState4[0],
89
- setHasFocus = _useState4[1];
90
- var _useState5 = (0, _react.useState)(positionProp),
91
+ skipAnimation = _useState4[0],
92
+ setSkipAnimation = _useState4[1];
93
+ var _useState5 = (0, _react.useState)(false),
91
94
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
92
- calculatedPosition = _useState6[0],
93
- setCalculatedPosition = _useState6[1];
94
- var _useState7 = (0, _react.useState)(DEFAULT_TOOLTIP_STYLES),
95
+ hasFocus = _useState6[0],
96
+ setHasFocus = _useState6[1];
97
+ var _useState7 = (0, _react.useState)(positionProp),
95
98
  _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
96
- toolTipStyles = _useState8[0],
97
- setToolTipStyles = _useState8[1];
98
- var _useState9 = (0, _react.useState)(undefined),
99
+ calculatedPosition = _useState8[0],
100
+ setCalculatedPosition = _useState8[1];
101
+ var _useState9 = (0, _react.useState)(DEFAULT_TOOLTIP_STYLES),
99
102
  _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
100
- arrowStyles = _useState10[0],
101
- setArrowStyles = _useState10[1];
102
- var generatedId = (0, _react.useRef)((0, _services.htmlIdGenerator)()());
103
- var id = idProp !== null && idProp !== void 0 ? idProp : generatedId.current;
103
+ toolTipStyles = _useState10[0],
104
+ setToolTipStyles = _useState10[1];
105
+ var _useState11 = (0, _react.useState)(undefined),
106
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
107
+ arrowStyles = _useState12[0],
108
+ setArrowStyles = _useState12[1];
109
+ var generatedId = (0, _services.useGeneratedHtmlId)();
110
+ var id = idProp !== null && idProp !== void 0 ? idProp : generatedId;
104
111
  var anchorRef = (0, _react.useRef)(null);
105
112
  var popoverRef = (0, _react.useRef)(null);
106
113
  var positionToolTip = (0, _react.useCallback)(function () {
@@ -152,10 +159,19 @@ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(functi
152
159
  setArrowStyles(undefined);
153
160
  _tool_tip_manager.toolTipManager.deregisterToolTip(hideToolTip);
154
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
+ */
155
169
  var showToolTip = (0, _react.useCallback)(function () {
156
170
  if (!content && !title) return;
171
+ var result = _tool_tip_manager.toolTipManager.registerTooltip(hideToolTip);
172
+ if (!result) return;
173
+ setSkipAnimation(result.skipAnimation);
157
174
  setVisible(true);
158
- _tool_tip_manager.toolTipManager.registerTooltip(hideToolTip);
159
175
  }, [content, title, hideToolTip]);
160
176
  (0, _react.useImperativeHandle)(ref, function () {
161
177
  return {
@@ -235,18 +251,24 @@ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(functi
235
251
  hideToolTip();
236
252
  }
237
253
  }, [disableScreenReaderOutput, visible, hideToolTip]);
238
- var onMouseOut = (0, _react.useCallback)(function (event) {
239
- // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has
240
- // left the anchor for a non-child.
241
- if (anchorRef.current === event.relatedTarget || anchorRef.current != null && !anchorRef.current.contains(event.relatedTarget)) {
242
- if (!hasFocus) {
243
- hideToolTip();
244
- }
245
- }
246
- if (onMouseOutProp) {
247
- onMouseOutProp(event);
248
- }
249
- }, [hasFocus, hideToolTip, onMouseOutProp]);
254
+
255
+ /**
256
+ * Show the tooltip on enter.
257
+ */
258
+ var onMouseEnter = (0, _react.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 = (0, _react.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]);
250
272
  var classes = (0, _classnames.default)('euiToolTip', className);
251
273
  var anchorClasses = (0, _classnames.default)(anchorClassName, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.className);
252
274
  return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_tool_tip_anchor.EuiToolTipAnchor, (0, _extends2.default)({}, anchorProps, {
@@ -254,8 +276,9 @@ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(functi
254
276
  onBlur: onBlur,
255
277
  onFocus: onFocus,
256
278
  onKeyDown: onEscapeKey,
257
- onMouseOver: showToolTip,
258
- onMouseOut: onMouseOut
279
+ onMouseEnter: onMouseEnter,
280
+ onMouseLeave: onMouseLeave,
281
+ onMouseOut: onMouseOutProp
259
282
  // `id` defines if the trigger and tooltip are automatically linked via `aria-describedby`.
260
283
  ,
261
284
  id: !disableScreenReaderOutput ? id : undefined,
@@ -264,7 +287,12 @@ var EuiToolTip = exports.EuiToolTip = /*#__PURE__*/(0, _react.forwardRef)(functi
264
287
  isVisible: visible
265
288
  }), children), visible && (content || title) && (0, _react2.jsx)(_portal.EuiPortal, null, (0, _react2.jsx)(_tool_tip_popover.EuiToolTipPopover, (0, _extends2.default)({
266
289
  className: classes,
267
- 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
+ }),
268
296
  positionToolTip: positionToolTip,
269
297
  popoverRef: setPopoverRef,
270
298
  title: title,
@@ -14,7 +14,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
14
14
  var _services = require("../../services");
15
15
  var _tool_tip = require("./tool_tip.styles");
16
16
  var _react2 = require("@emotion/react");
17
- var _excluded = ["onBlur", "onFocus", "onMouseOver", "onMouseOut", "id", "className", "children", "display", "isVisible"];
17
+ var _excluded = ["onBlur", "onFocus", "onMouseEnter", "onMouseLeave", "id", "className", "children", "display", "isVisible"];
18
18
  /*
19
19
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
20
20
  * or more contributor license agreements. Licensed under the Elastic License
@@ -27,8 +27,8 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
27
27
  var EuiToolTipAnchor = exports.EuiToolTipAnchor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
28
28
  var _onBlur = _ref.onBlur,
29
29
  _onFocus = _ref.onFocus,
30
- onMouseOver = _ref.onMouseOver,
31
- onMouseOut = _ref.onMouseOut,
30
+ onMouseEnter = _ref.onMouseEnter,
31
+ onMouseLeave = _ref.onMouseLeave,
32
32
  id = _ref.id,
33
33
  className = _ref.className,
34
34
  children = _ref.children,
@@ -52,8 +52,8 @@ var EuiToolTipAnchor = exports.EuiToolTipAnchor = /*#__PURE__*/(0, _react.forwar
52
52
  id: anchorId
53
53
  }, rest, {
54
54
  className: classes,
55
- onMouseOver: onMouseOver,
56
- onMouseOut: onMouseOut
55
+ onMouseEnter: onMouseEnter,
56
+ onMouseLeave: onMouseLeave
57
57
  }), /*#__PURE__*/(0, _react.cloneElement)(children, {
58
58
  onFocus: function onFocus(e) {
59
59
  _onFocus(e);
@@ -15,29 +15,54 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
15
15
  * in compliance with, at your election, the Elastic License 2.0 or the Server
16
16
  * Side Public License, v 1.
17
17
  */
18
+
18
19
  /**
19
20
  * Manager utility that ensures only one tooltip is visible at a time
21
+ * and lets the next tooltip to open skip its entry animation if another was
22
+ * just opened or just closed.
20
23
  *
21
24
  * UX rationale (primarily for mouse-only users):
22
25
  * @see https://github.com/elastic/kibana/issues/144482
23
26
  * @see https://github.com/elastic/eui/issues/5883
24
27
  */
28
+
29
+ /**
30
+ * Time window in ms after a tooltip closes during which the next one to open
31
+ * skips its entry animation.
32
+ */
33
+ var SKIP_ANIMATION_WINDOW = 300;
25
34
  var ToolTipManager = /*#__PURE__*/(0, _createClass2.default)(function ToolTipManager() {
26
35
  var _this = this;
27
36
  (0, _classCallCheck2.default)(this, ToolTipManager);
28
37
  // We use a set instead of a single var just in case
29
38
  // multiple tooltips are registered via async shenanigans
30
39
  (0, _defineProperty2.default)(this, "toolTipsToHide", new Set());
40
+ // Timestamp of the last hide; `null` means no tooltip has closed yet.
41
+ (0, _defineProperty2.default)(this, "lastHiddenAt", null);
31
42
  (0, _defineProperty2.default)(this, "registerTooltip", function (hideCallback) {
32
- if (_this.toolTipsToHide.has(hideCallback)) return;
43
+ if (_this.toolTipsToHide.has(hideCallback)) return null;
44
+ var hadOpen = _this.toolTipsToHide.size > 0;
45
+ var recentlyClosed = _this.lastHiddenAt !== null && Date.now() - _this.lastHiddenAt < SKIP_ANIMATION_WINDOW;
33
46
  _this.toolTipsToHide.forEach(function (hide) {
34
47
  return hide();
35
48
  });
36
49
  _this.toolTipsToHide.clear();
37
50
  _this.toolTipsToHide.add(hideCallback);
51
+ return {
52
+ skipAnimation: hadOpen || recentlyClosed
53
+ };
38
54
  });
39
55
  (0, _defineProperty2.default)(this, "deregisterToolTip", function (hideCallback) {
40
- _this.toolTipsToHide.delete(hideCallback);
56
+ if (_this.toolTipsToHide.delete(hideCallback)) _this.lastHiddenAt = Date.now();
57
+ });
58
+ /**
59
+ * Resets all internal state. Primarily intended for tests, so that a
60
+ * tooltip shown in one test doesn't leak into the next (the manager is a
61
+ * module-level singleton).
62
+ */
63
+ (0, _defineProperty2.default)(this, "reset", function () {
64
+ _this.toolTipsToHide.clear();
65
+ _this.lastHiddenAt = null;
41
66
  });
42
67
  });
43
68
  var toolTipManager = exports.toolTipManager = new ToolTipManager();