@elastic/eui 116.0.0 → 116.1.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 (70) hide show
  1. package/es/components/accordion/accordion.js +95 -134
  2. package/es/components/basic_table/basic_table.js +6 -0
  3. package/es/components/basic_table/in_memory_table.js +6 -0
  4. package/es/components/color_picker/color_picker_swatch.js +4 -0
  5. package/es/components/context_menu/context_menu_panel.js +2 -2
  6. package/es/components/copy/copy.js +36 -13
  7. package/es/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  8. package/es/components/datagrid/data_grid.styles.js +6 -5
  9. package/es/components/focus_trap/focus_trap.js +110 -177
  10. package/es/components/observer/mutation_observer/mutation_observer.js +32 -35
  11. package/es/components/observer/resize_observer/resize_observer.js +46 -60
  12. package/es/components/observer/use_observer.js +62 -0
  13. package/es/components/table/table_header_cell.js +4 -0
  14. package/es/components/tool_tip/icon_tip.js +4 -0
  15. package/es/components/tool_tip/tool_tip.js +8 -2
  16. package/eui.d.ts +26 -69
  17. package/lib/components/accordion/accordion.js +102 -139
  18. package/lib/components/basic_table/basic_table.js +6 -0
  19. package/lib/components/basic_table/in_memory_table.js +6 -0
  20. package/lib/components/color_picker/color_picker_swatch.js +4 -0
  21. package/lib/components/context_menu/context_menu_panel.js +2 -2
  22. package/lib/components/copy/copy.js +35 -12
  23. package/lib/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  24. package/lib/components/datagrid/data_grid.styles.js +6 -5
  25. package/lib/components/focus_trap/focus_trap.js +117 -183
  26. package/lib/components/observer/mutation_observer/mutation_observer.js +32 -34
  27. package/lib/components/observer/resize_observer/resize_observer.js +48 -61
  28. package/lib/components/observer/use_observer.js +68 -0
  29. package/lib/components/table/table_header_cell.js +4 -0
  30. package/lib/components/tool_tip/icon_tip.js +4 -0
  31. package/lib/components/tool_tip/tool_tip.js +8 -2
  32. package/optimize/es/components/accordion/accordion.js +88 -126
  33. package/optimize/es/components/context_menu/context_menu_panel.js +2 -2
  34. package/optimize/es/components/copy/copy.js +36 -13
  35. package/optimize/es/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  36. package/optimize/es/components/datagrid/data_grid.styles.js +6 -5
  37. package/optimize/es/components/focus_trap/focus_trap.js +103 -122
  38. package/optimize/es/components/observer/mutation_observer/mutation_observer.js +23 -32
  39. package/optimize/es/components/observer/resize_observer/resize_observer.js +38 -54
  40. package/optimize/es/components/observer/use_observer.js +62 -0
  41. package/optimize/es/components/tool_tip/tool_tip.js +4 -2
  42. package/optimize/lib/components/accordion/accordion.js +90 -127
  43. package/optimize/lib/components/context_menu/context_menu_panel.js +2 -2
  44. package/optimize/lib/components/copy/copy.js +35 -12
  45. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  46. package/optimize/lib/components/datagrid/data_grid.styles.js +6 -5
  47. package/optimize/lib/components/focus_trap/focus_trap.js +106 -124
  48. package/optimize/lib/components/observer/mutation_observer/mutation_observer.js +23 -32
  49. package/optimize/lib/components/observer/resize_observer/resize_observer.js +40 -54
  50. package/optimize/lib/components/observer/use_observer.js +68 -0
  51. package/optimize/lib/components/tool_tip/tool_tip.js +4 -2
  52. package/package.json +2 -2
  53. package/test-env/components/accordion/accordion.js +92 -129
  54. package/test-env/components/basic_table/basic_table.js +6 -0
  55. package/test-env/components/basic_table/in_memory_table.js +6 -0
  56. package/test-env/components/color_picker/color_picker_swatch.js +4 -0
  57. package/test-env/components/context_menu/context_menu_panel.js +2 -2
  58. package/test-env/components/copy/copy.js +35 -12
  59. package/test-env/components/datagrid/body/cell/data_grid_cell_popover.js +10 -7
  60. package/test-env/components/datagrid/data_grid.styles.js +6 -5
  61. package/test-env/components/observer/mutation_observer/mutation_observer.js +32 -32
  62. package/test-env/components/observer/use_observer.js +68 -0
  63. package/test-env/components/table/table_header_cell.js +4 -0
  64. package/test-env/components/tool_tip/icon_tip.js +4 -0
  65. package/test-env/components/tool_tip/tool_tip.js +8 -2
  66. package/es/components/observer/observer.js +0 -75
  67. package/lib/components/observer/observer.js +0 -79
  68. package/optimize/es/components/observer/observer.js +0 -69
  69. package/optimize/lib/components/observer/observer.js +0 -74
  70. package/test-env/components/observer/observer.js +0 -74
@@ -5,15 +5,10 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.PADDING_SIZES = exports.EuiAccordionClass = exports.EuiAccordion = void 0;
8
+ exports.PADDING_SIZES = exports.EuiAccordion = 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
13
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
14
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -23,134 +18,103 @@ var _accordion_trigger = require("./accordion_trigger");
23
18
  var _accordion_children = require("./accordion_children");
24
19
  var _accordion = require("./accordion.styles");
25
20
  var _react2 = require("@emotion/react");
26
- var _excluded = ["children", "className", "id", "role", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "theme"];
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
+ var _excluded = ["children", "className", "id", "role", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "onToggle"];
22
+ /*
31
23
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
32
24
  * or more contributor license agreements. Licensed under the Elastic License
33
25
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
34
26
  * in compliance with, at your election, the Elastic License 2.0 or the Server
35
27
  * Side Public License, v 1.
36
28
  */
29
+ 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); }
30
+ 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; }
37
31
  var PADDING_SIZES = exports.PADDING_SIZES = ['none', 'xs', 's', 'm', 'l', 'xl'];
38
- var EuiAccordionClass = exports.EuiAccordionClass = /*#__PURE__*/function (_Component) {
39
- function EuiAccordionClass() {
40
- var _this;
41
- (0, _classCallCheck2.default)(this, EuiAccordionClass);
42
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43
- args[_key] = arguments[_key];
44
- }
45
- _this = _callSuper(this, EuiAccordionClass, [].concat(args));
46
- (0, _defineProperty2.default)(_this, "state", {
47
- isOpen: _this.props.forceState ? _this.props.forceState === 'open' : _this.props.initialIsOpen
48
- });
49
- (0, _defineProperty2.default)(_this, "onToggle", function () {
50
- var forceState = _this.props.forceState;
51
- if (forceState) {
52
- var _this$props$onToggle, _this$props;
53
- var nextState = !_this.isOpen;
54
- (_this$props$onToggle = (_this$props = _this.props).onToggle) === null || _this$props$onToggle === void 0 || _this$props$onToggle.call(_this$props, nextState);
55
- } else {
56
- _this.setState(function (prevState) {
57
- return {
58
- isOpen: !prevState.isOpen
59
- };
60
- }, function () {
61
- var _this$props$onToggle2, _this$props2;
62
- (_this$props$onToggle2 = (_this$props2 = _this.props).onToggle) === null || _this$props$onToggle2 === void 0 || _this$props$onToggle2.call(_this$props2, _this.state.isOpen);
63
- });
64
- }
65
- });
66
- (0, _defineProperty2.default)(_this, "generatedId", (0, _services.htmlIdGenerator)()());
67
- return _this;
68
- }
69
- (0, _inherits2.default)(EuiAccordionClass, _Component);
70
- return (0, _createClass2.default)(EuiAccordionClass, [{
71
- key: "isOpen",
72
- get: function get() {
73
- return this.props.forceState ? this.props.forceState === 'open' : this.state.isOpen;
32
+ var EuiAccordion = exports.EuiAccordion = function EuiAccordion(_ref) {
33
+ var _buttonProps$id;
34
+ var children = _ref.children,
35
+ className = _ref.className,
36
+ id = _ref.id,
37
+ _ref$role = _ref.role,
38
+ role = _ref$role === void 0 ? 'group' : _ref$role,
39
+ _ref$element = _ref.element,
40
+ Element = _ref$element === void 0 ? 'div' : _ref$element,
41
+ _ref$buttonElement = _ref.buttonElement,
42
+ buttonElement = _ref$buttonElement === void 0 ? 'button' : _ref$buttonElement,
43
+ buttonProps = _ref.buttonProps,
44
+ buttonClassName = _ref.buttonClassName,
45
+ buttonContentClassName = _ref.buttonContentClassName,
46
+ buttonContent = _ref.buttonContent,
47
+ _ref$arrowDisplay = _ref.arrowDisplay,
48
+ arrowDisplay = _ref$arrowDisplay === void 0 ? 'left' : _ref$arrowDisplay,
49
+ arrowProps = _ref.arrowProps,
50
+ extraAction = _ref.extraAction,
51
+ _ref$paddingSize = _ref.paddingSize,
52
+ paddingSize = _ref$paddingSize === void 0 ? 'none' : _ref$paddingSize,
53
+ _ref$borders = _ref.borders,
54
+ borders = _ref$borders === void 0 ? 'none' : _ref$borders,
55
+ _ref$initialIsOpen = _ref.initialIsOpen,
56
+ initialIsOpen = _ref$initialIsOpen === void 0 ? false : _ref$initialIsOpen,
57
+ forceState = _ref.forceState,
58
+ _ref$isLoading = _ref.isLoading,
59
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
60
+ _ref$isLoadingMessage = _ref.isLoadingMessage,
61
+ isLoadingMessage = _ref$isLoadingMessage === void 0 ? false : _ref$isLoadingMessage,
62
+ _ref$isDisabled = _ref.isDisabled,
63
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
64
+ onToggle = _ref.onToggle,
65
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
66
+ var _useState = (0, _react.useState)(forceState ? forceState === 'open' : initialIsOpen),
67
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
68
+ isOpenState = _useState2[0],
69
+ setIsOpenState = _useState2[1];
70
+ var isOpen = forceState ? forceState === 'open' : isOpenState;
71
+ var onAccordionToggle = function onAccordionToggle() {
72
+ if (forceState) {
73
+ onToggle === null || onToggle === void 0 || onToggle(!isOpen);
74
+ } else {
75
+ var nextState = !isOpenState;
76
+ setIsOpenState(nextState);
77
+ onToggle === null || onToggle === void 0 || onToggle(nextState);
74
78
  }
75
- }, {
76
- key: "render",
77
- value: function render() {
78
- var _buttonProps$id;
79
- var _this$props3 = this.props,
80
- children = _this$props3.children,
81
- className = _this$props3.className,
82
- id = _this$props3.id,
83
- role = _this$props3.role,
84
- _this$props3$element = _this$props3.element,
85
- Element = _this$props3$element === void 0 ? 'div' : _this$props3$element,
86
- buttonElement = _this$props3.buttonElement,
87
- buttonProps = _this$props3.buttonProps,
88
- buttonClassName = _this$props3.buttonClassName,
89
- buttonContentClassName = _this$props3.buttonContentClassName,
90
- buttonContent = _this$props3.buttonContent,
91
- arrowDisplay = _this$props3.arrowDisplay,
92
- arrowProps = _this$props3.arrowProps,
93
- extraAction = _this$props3.extraAction,
94
- paddingSize = _this$props3.paddingSize,
95
- borders = _this$props3.borders,
96
- initialIsOpen = _this$props3.initialIsOpen,
97
- forceState = _this$props3.forceState,
98
- isLoading = _this$props3.isLoading,
99
- isLoadingMessage = _this$props3.isLoadingMessage,
100
- isDisabled = _this$props3.isDisabled,
101
- theme = _this$props3.theme,
102
- rest = (0, _objectWithoutProperties2.default)(_this$props3, _excluded);
103
- var classes = (0, _classnames.default)('euiAccordion', {
104
- 'euiAccordion-isOpen': this.isOpen
105
- }, className);
106
- var styles = (0, _accordion.euiAccordionStyles)(theme);
107
- var cssStyles = [styles.euiAccordion, borders !== 'none' && styles.borders.borders, borders !== 'none' && styles.borders[borders]];
108
- var buttonId = (_buttonProps$id = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.id) !== null && _buttonProps$id !== void 0 ? _buttonProps$id : this.generatedId;
109
- return (0, _react2.jsx)(Element, (0, _extends2.default)({
110
- className: classes,
111
- css: cssStyles
112
- }, rest), (0, _react2.jsx)(_accordion_trigger.EuiAccordionTrigger, {
113
- ariaControlsId: id,
114
- buttonId: buttonId
115
- // Force button element to be a legend if the element is a fieldset
116
- ,
117
- buttonElement: Element === 'fieldset' ? 'legend' : buttonElement,
118
- buttonClassName: buttonClassName,
119
- buttonContent: buttonContent,
120
- buttonContentClassName: buttonContentClassName,
121
- buttonProps: buttonProps,
122
- arrowProps: arrowProps,
123
- arrowDisplay: arrowDisplay,
124
- isDisabled: isDisabled,
125
- isOpen: this.isOpen,
126
- onToggle: this.onToggle,
127
- extraAction: isLoading ? (0, _react2.jsx)(_loading.EuiLoadingSpinner, null) : extraAction
128
- }), (0, _react2.jsx)(_accordion_children.EuiAccordionChildren, {
129
- role: role,
130
- id: id,
131
- "aria-labelledby": buttonId,
132
- paddingSize: paddingSize,
133
- isLoading: isLoading,
134
- isLoadingMessage: isLoadingMessage,
135
- isOpen: this.isOpen,
136
- initialIsOpen: initialIsOpen
137
- }, children));
138
- }
139
- }]);
140
- }(_react.Component);
141
- (0, _defineProperty2.default)(EuiAccordionClass, "defaultProps", {
142
- initialIsOpen: false,
143
- borders: 'none',
144
- paddingSize: 'none',
145
- arrowDisplay: 'left',
146
- isLoading: false,
147
- isDisabled: false,
148
- isLoadingMessage: false,
149
- element: 'div',
150
- buttonElement: 'button',
151
- role: 'group'
152
- });
153
- EuiAccordionClass.propTypes = {
79
+ };
80
+ var generatedId = (0, _services.useGeneratedHtmlId)();
81
+ var buttonId = (_buttonProps$id = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.id) !== null && _buttonProps$id !== void 0 ? _buttonProps$id : generatedId;
82
+ var classes = (0, _classnames.default)('euiAccordion', {
83
+ 'euiAccordion-isOpen': isOpen
84
+ }, className);
85
+ var styles = (0, _services.useEuiMemoizedStyles)(_accordion.euiAccordionStyles);
86
+ var cssStyles = [styles.euiAccordion, borders !== 'none' && styles.borders.borders, borders !== 'none' && styles.borders[borders]];
87
+ return (0, _react2.jsx)(Element, (0, _extends2.default)({
88
+ className: classes,
89
+ css: cssStyles
90
+ }, rest), (0, _react2.jsx)(_accordion_trigger.EuiAccordionTrigger, {
91
+ ariaControlsId: id,
92
+ buttonId: buttonId
93
+ // Force button element to be a legend if the element is a fieldset
94
+ ,
95
+ buttonElement: Element === 'fieldset' ? 'legend' : buttonElement,
96
+ buttonClassName: buttonClassName,
97
+ buttonContent: buttonContent,
98
+ buttonContentClassName: buttonContentClassName,
99
+ buttonProps: buttonProps,
100
+ arrowProps: arrowProps,
101
+ arrowDisplay: arrowDisplay,
102
+ isDisabled: isDisabled,
103
+ isOpen: isOpen,
104
+ onToggle: onAccordionToggle,
105
+ extraAction: isLoading ? (0, _react2.jsx)(_loading.EuiLoadingSpinner, null) : extraAction
106
+ }), (0, _react2.jsx)(_accordion_children.EuiAccordionChildren, {
107
+ role: role,
108
+ id: id,
109
+ "aria-labelledby": buttonId,
110
+ paddingSize: paddingSize,
111
+ isLoading: isLoading,
112
+ isLoadingMessage: isLoadingMessage,
113
+ isOpen: isOpen,
114
+ initialIsOpen: initialIsOpen
115
+ }, children));
116
+ };
117
+ EuiAccordion.propTypes = {
154
118
  className: _propTypes.default.string,
155
119
  "aria-label": _propTypes.default.string,
156
120
  "data-test-subj": _propTypes.default.string,
@@ -243,5 +207,4 @@ EuiAccordionClass.propTypes = {
243
207
  * Disable the open/close interaction and visually subdues the trigger
244
208
  */
245
209
  isDisabled: _propTypes.default.bool
246
- };
247
- var EuiAccordion = exports.EuiAccordion = (0, _services.withEuiTheme)(EuiAccordionClass);
210
+ };
@@ -1135,6 +1135,10 @@ EuiBasicTable.propTypes = {
1135
1135
  * hidden.
1136
1136
  */
1137
1137
  onMouseOut: _propTypes.default.func,
1138
+ /**
1139
+ * If supplied, called when the trigger loses focus.
1140
+ */
1141
+ onBlur: _propTypes.default.func,
1138
1142
  /**
1139
1143
  * Offset in pixels from the anchor. Defaults to 16.
1140
1144
  */
@@ -1279,6 +1283,7 @@ EuiBasicTable.propTypes = {
1279
1283
  repositionOnScroll: _propTypes.default.bool,
1280
1284
  disableScreenReaderOutput: _propTypes.default.bool,
1281
1285
  onMouseOut: _propTypes.default.func,
1286
+ onBlur: _propTypes.default.func,
1282
1287
  offset: _propTypes.default.number,
1283
1288
  "aria-label": _propTypes.default.string,
1284
1289
  "data-test-subj": _propTypes.default.string,
@@ -1420,6 +1425,7 @@ EuiBasicTable.propTypes = {
1420
1425
  repositionOnScroll: _propTypes.default.bool,
1421
1426
  disableScreenReaderOutput: _propTypes.default.bool,
1422
1427
  onMouseOut: _propTypes.default.func,
1428
+ onBlur: _propTypes.default.func,
1423
1429
  offset: _propTypes.default.number,
1424
1430
  "aria-label": _propTypes.default.string,
1425
1431
  "data-test-subj": _propTypes.default.string,
@@ -669,6 +669,10 @@ EuiInMemoryTable.propTypes = {
669
669
  * hidden.
670
670
  */
671
671
  onMouseOut: _propTypes.default.func,
672
+ /**
673
+ * If supplied, called when the trigger loses focus.
674
+ */
675
+ onBlur: _propTypes.default.func,
672
676
  /**
673
677
  * Offset in pixels from the anchor. Defaults to 16.
674
678
  */
@@ -813,6 +817,7 @@ EuiInMemoryTable.propTypes = {
813
817
  repositionOnScroll: _propTypes.default.bool,
814
818
  disableScreenReaderOutput: _propTypes.default.bool,
815
819
  onMouseOut: _propTypes.default.func,
820
+ onBlur: _propTypes.default.func,
816
821
  offset: _propTypes.default.number,
817
822
  "aria-label": _propTypes.default.string,
818
823
  "data-test-subj": _propTypes.default.string,
@@ -954,6 +959,7 @@ EuiInMemoryTable.propTypes = {
954
959
  repositionOnScroll: _propTypes.default.bool,
955
960
  disableScreenReaderOutput: _propTypes.default.bool,
956
961
  onMouseOut: _propTypes.default.func,
962
+ onBlur: _propTypes.default.func,
957
963
  offset: _propTypes.default.number,
958
964
  "aria-label": _propTypes.default.string,
959
965
  "data-test-subj": _propTypes.default.string,
@@ -138,6 +138,10 @@ EuiColorPickerSwatch.propTypes = {
138
138
  * hidden.
139
139
  */
140
140
  onMouseOut: _propTypes.default.func,
141
+ /**
142
+ * If supplied, called when the trigger loses focus.
143
+ */
144
+ onBlur: _propTypes.default.func,
141
145
  /**
142
146
  * Offset in pixels from the anchor. Defaults to 16.
143
147
  */
@@ -270,8 +270,8 @@ var EuiContextMenuPanelClass = exports.EuiContextMenuPanelClass = /*#__PURE__*/f
270
270
  }
271
271
  }, {
272
272
  key: "componentDidUpdate",
273
- value: function componentDidUpdate(_, prevState) {
274
- if (prevState.menuItems !== this.state.menuItems) {
273
+ value: function componentDidUpdate(prevProps) {
274
+ if (prevProps.items !== this.props.items) {
275
275
  this.findMenuItems();
276
276
  }
277
277
  // Focus isn't always ready to be taken on mount, so we need to call it
@@ -16,6 +16,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
16
16
  var _react = _interopRequireWildcard(require("react"));
17
17
  var _propTypes = _interopRequireDefault(require("prop-types"));
18
18
  var _services = require("../../services");
19
+ var _accessibility = require("../accessibility");
19
20
  var _tool_tip = require("../tool_tip");
20
21
  var _react2 = require("@emotion/react");
21
22
  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); }
@@ -33,21 +34,31 @@ var EuiCopy = exports.EuiCopy = /*#__PURE__*/function (_Component) {
33
34
  var _this;
34
35
  (0, _classCallCheck2.default)(this, EuiCopy);
35
36
  _this = _callSuper(this, EuiCopy, [props]);
37
+ (0, _defineProperty2.default)(_this, "tooltipRef", /*#__PURE__*/(0, _react.createRef)());
36
38
  (0, _defineProperty2.default)(_this, "copy", function () {
37
39
  var isCopied = (0, _services.copyToClipboard)(_this.props.textToCopy);
38
40
  if (isCopied) {
39
41
  _this.setState({
40
- tooltipText: _this.props.afterMessage
42
+ tooltipText: _this.props.afterMessage,
43
+ isCopied: true
44
+ },
45
+ // `EuiToolTip` suppresses showing when content is empty, so `EuiCopy`
46
+ // imperatively shows the tooltip after the post-copy state update.
47
+ function () {
48
+ var _this$tooltipRef$curr;
49
+ (_this$tooltipRef$curr = _this.tooltipRef.current) === null || _this$tooltipRef$curr === void 0 || _this$tooltipRef$curr.showToolTip();
41
50
  });
42
51
  }
43
52
  });
44
53
  (0, _defineProperty2.default)(_this, "resetTooltipText", function () {
45
54
  _this.setState({
46
- tooltipText: _this.props.beforeMessage
55
+ tooltipText: _this.props.beforeMessage,
56
+ isCopied: false
47
57
  });
48
58
  });
49
59
  _this.state = {
50
- tooltipText: _this.props.beforeMessage
60
+ tooltipText: _this.props.beforeMessage,
61
+ isCopied: false
51
62
  };
52
63
  return _this;
53
64
  }
@@ -55,17 +66,29 @@ var EuiCopy = exports.EuiCopy = /*#__PURE__*/function (_Component) {
55
66
  return (0, _createClass2.default)(EuiCopy, [{
56
67
  key: "render",
57
68
  value: function render() {
69
+ var _this2 = this;
58
70
  var _this$props = this.props,
59
71
  children = _this$props.children,
60
- tooltipProps = _this$props.tooltipProps;
61
- return (
62
- // See `src/components/tool_tip/tool_tip.js` for explanation of below eslint-disable
63
- // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
64
- (0, _react2.jsx)(_tool_tip.EuiToolTip, (0, _extends2.default)({
65
- content: this.state.tooltipText,
66
- onMouseOut: this.resetTooltipText
67
- }, tooltipProps), children(this.copy))
68
- );
72
+ tooltipProps = _this$props.tooltipProps,
73
+ afterMessage = _this$props.afterMessage;
74
+ var _this$state = this.state,
75
+ tooltipText = _this$state.tooltipText,
76
+ isCopied = _this$state.isCopied;
77
+ return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_tool_tip.EuiToolTip, (0, _extends2.default)({
78
+ ref: this.tooltipRef,
79
+ content: tooltipText,
80
+ onMouseOut: this.resetTooltipText
81
+ }, tooltipProps, {
82
+ onBlur: function onBlur() {
83
+ var _tooltipProps$onBlur;
84
+ tooltipProps === null || tooltipProps === void 0 || (_tooltipProps$onBlur = tooltipProps.onBlur) === null || _tooltipProps$onBlur === void 0 || _tooltipProps$onBlur.call(tooltipProps);
85
+ if (isCopied) _this2.resetTooltipText();
86
+ },
87
+ disableScreenReaderOutput: isCopied || !!(tooltipProps !== null && tooltipProps !== void 0 && tooltipProps.disableScreenReaderOutput)
88
+ }), children(this.copy)), (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("div", {
89
+ "aria-live": "assertive",
90
+ "aria-atomic": "true"
91
+ }, isCopied ? afterMessage : '')));
69
92
  }
70
93
  }]);
71
94
  }(_react.Component);
@@ -13,7 +13,6 @@ var _react = _interopRequireWildcard(require("react"));
13
13
  var _classnames = _interopRequireDefault(require("classnames"));
14
14
  var _services = require("../../../../services");
15
15
  var _popover = require("../../../popover");
16
- var _data_grid = require("../../data_grid.styles");
17
16
  var _data_grid_cell_popover = require("./data_grid_cell_popover.styles");
18
17
  var _text = require("../../../text");
19
18
  var _code = require("../../../code");
@@ -131,14 +130,19 @@ var useCellPopover = exports.useCellPopover = function useCellPopover() {
131
130
  };
132
131
  }, [popoverIsOpen, closeCellPopover, openCellPopover, cellLocation]);
133
132
  var styles = (0, _services.useEuiMemoizedStyles)(_data_grid_cell_popover.euiDataGridCellPopoverStyles);
134
- var _useEuiMemoizedStyles = (0, _services.useEuiMemoizedStyles)(_data_grid.euiDataGridVariables),
135
- levels = _useEuiMemoizedStyles.levels;
136
133
  var cellPopover = (0, _react.useMemo)(function () {
137
134
  var _cellPopoverProps$pan, _cell$offsetWidth;
138
135
  if (!popoverIsOpen || !popoverAnchor) return null;
139
136
  var cell = popoverAnchor.closest('.euiDataGridRowCell');
140
137
 
141
- // Note that this popover is rendered once at the top grid level, rather than one popover per cell
138
+ // Note that this popover is rendered once at the top grid level, rather than one popover per cell.
139
+ //
140
+ // We intentionally do NOT pass `zIndex` here. Letting `EuiPopover` derive the
141
+ // panel's z-index from the anchor's stacking context (`getElementZIndex(button) + 2000`)
142
+ // keeps cell popovers above their host flyout — including when sibling/nested
143
+ // flyouts push the host's z-index above `levels.header`. See
144
+ // https://github.com/elastic/eui/issues/8801. Consumers that need a fixed
145
+ // value can still override via `setCellPopoverProps({ zIndex })`.
142
146
  return (0, _react2.jsx)(_popover.EuiWrappingPopover, (0, _extends2.default)({
143
147
  isOpen: popoverIsOpen,
144
148
  display: "block",
@@ -147,8 +151,7 @@ var useCellPopover = exports.useCellPopover = function useCellPopover() {
147
151
  ,
148
152
  panelPaddingSize: "s",
149
153
  anchorPosition: popoverAnchorPosition,
150
- repositionToCrossAxis: false,
151
- zIndex: levels.cellPopover
154
+ repositionToCrossAxis: false
152
155
  }, cellPopoverProps, {
153
156
  focusTrapProps: {
154
157
  onClickOutside: onClickOutside,
@@ -168,7 +171,7 @@ var useCellPopover = exports.useCellPopover = function useCellPopover() {
168
171
  button: popoverAnchor,
169
172
  closePopover: closeCellPopover
170
173
  }), popoverContent);
171
- }, [styles, levels.cellPopover, popoverIsOpen, popoverAnchor, popoverContent, cellPopoverProps, closeCellPopover, onClickOutside, onKeyDown, popoverAnchorPosition]);
174
+ }, [styles, popoverIsOpen, popoverAnchor, popoverContent, cellPopoverProps, closeCellPopover, onClickOutside, onKeyDown, popoverAnchorPosition]);
172
175
  return (0, _react.useMemo)(function () {
173
176
  return {
174
177
  cellPopoverContext: cellPopoverContext,
@@ -35,11 +35,12 @@ var euiDataGridVariables = exports.euiDataGridVariables = function euiDataGridVa
35
35
  m: (0, _global_styling.euiFontSize)(euiThemeContext, 's').fontSize
36
36
  },
37
37
  levels: {
38
- cellPopover: Number(euiTheme.levels.header),
39
- // Same z-index as EuiFlyout mask overlays - cell popovers should be under both modal and flyout overlays
40
- get stickyHeader() {
41
- return this.cellPopover - 1; // Needs to sit above the content + cell focus outlines/actions, but below actual popovers
42
- }
38
+ // Sits above content and cell focus outlines/actions, but below cell
39
+ // expansion popovers. Cell popovers no longer use a fixed z-index they
40
+ // derive theirs from their anchor's stacking context (see
41
+ // data_grid_cell_popover.tsx) so this only needs to clear the grid's
42
+ // own internal layers.
43
+ stickyHeader: Number(euiTheme.levels.header) - 1
43
44
  }
44
45
  };
45
46
  };
@@ -5,47 +5,47 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.useMutationObserver = exports.EuiMutationObserver = void 0;
8
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
9
  var _react = require("react");
15
- var _observer = require("../observer");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _use_observer = require("../use_observer");
16
12
  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; }
17
- 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; }
18
- 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)); }
19
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*
13
+ 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; } /*
20
14
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
21
15
  * or more contributor license agreements. Licensed under the Elastic License
22
16
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
23
17
  * in compliance with, at your election, the Elastic License 2.0 or the Server
24
18
  * Side Public License, v 1.
25
19
  */
26
- var EuiMutationObserver = exports.EuiMutationObserver = /*#__PURE__*/function (_EuiObserver) {
27
- function EuiMutationObserver() {
28
- var _this;
29
- (0, _classCallCheck2.default)(this, EuiMutationObserver);
30
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
31
- args[_key] = arguments[_key];
32
- }
33
- _this = _callSuper(this, EuiMutationObserver, [].concat(args));
34
- (0, _defineProperty2.default)(_this, "name", 'EuiMutationObserver');
35
- // the `onMutation` prop may change while the observer is bound, abstracting
36
- // it out into a separate function means the current `onMutation` value is used
37
- (0, _defineProperty2.default)(_this, "onMutation", function (records, observer) {
38
- _this.props.onMutation(records, observer);
39
- });
40
- (0, _defineProperty2.default)(_this, "beginObserve", function () {
41
- var childNode = _this.childNode;
42
- _this.observer = makeMutationObserver(childNode, _this.props.observerOptions, _this.onMutation);
43
- });
44
- return _this;
45
- }
46
- (0, _inherits2.default)(EuiMutationObserver, _EuiObserver);
47
- return (0, _createClass2.default)(EuiMutationObserver);
48
- }(_observer.EuiObserver);
20
+ var EuiMutationObserver = exports.EuiMutationObserver = function EuiMutationObserver(_ref) {
21
+ var children = _ref.children,
22
+ onMutation = _ref.onMutation,
23
+ observerOptions = _ref.observerOptions;
24
+ // Store onMutation and observerOptions in refs so the observer callback
25
+ // and setup always use the latest prop values without needing to
26
+ // re-subscribe (which would cause the ref callback to cycle)
27
+ var onMutationRef = (0, _react.useRef)(onMutation);
28
+ onMutationRef.current = onMutation;
29
+ var observerOptionsRef = (0, _react.useRef)(observerOptions);
30
+ observerOptionsRef.current = observerOptions;
31
+ var mutationCallback = (0, _react.useCallback)(function (records, observer) {
32
+ onMutationRef.current(records, observer);
33
+ }, []);
34
+ var beginObserve = (0, _react.useCallback)(function (node) {
35
+ return makeMutationObserver(node, observerOptionsRef.current, mutationCallback);
36
+ }, [mutationCallback]);
37
+ var updateChildNode = (0, _use_observer.useObserver)(beginObserve, 'EuiMutationObserver');
38
+ return children(updateChildNode);
39
+ };
40
+ EuiMutationObserver.propTypes = {
41
+ /**
42
+ * ReactNode to render as this component's content
43
+ */
44
+ children: _propTypes.default.func.isRequired,
45
+ onMutation: _propTypes.default.any.isRequired,
46
+ observerOptions: _propTypes.default.any
47
+ };
48
+ EuiMutationObserver.displayName = 'EuiMutationObserver';
49
49
  var makeMutationObserver = function makeMutationObserver(node, _observerOptions, callback) {
50
50
  // The MutationObserver polyfill used in Kibana (for Jest) implements
51
51
  // an older spec in which specifying `attributeOldValue` or `attributeFilter`
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useObserver = void 0;
7
+ var _react = require("react");
8
+ /*
9
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
10
+ * or more contributor license agreements. Licensed under the Elastic License
11
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
12
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
13
+ * Side Public License, v 1.
14
+ */
15
+
16
+ /**
17
+ * A shared custom hook that provides a pattern for observing DOM nodes
18
+ * via browser observer APIs. Used by `EuiResizeObserver` and `EuiMutationObserver`.
19
+ *
20
+ * @param beginObserve - A callback that receives the target DOM element and should
21
+ * create and return the observer instance (e.g., `ResizeObserver`).
22
+ * @param componentName - Optional name used in error messages when no ref is
23
+ * attached on mount, mirroring the guard previously in `EuiObserver`.
24
+ */
25
+ var useObserver = exports.useObserver = function useObserver(beginObserve) {
26
+ var componentName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'useObserver';
27
+ var childNodeRef = (0, _react.useRef)(null);
28
+ var observerRef = (0, _react.useRef)(null);
29
+
30
+ // Store beginObserve in a ref so the ref callback doesn't cycle
31
+ var beginObserveRef = (0, _react.useRef)(beginObserve);
32
+ beginObserveRef.current = beginObserve;
33
+
34
+ // Store componentName in a ref so the mount-only effect can access the
35
+ // latest value without needing it as a dependency.
36
+ var componentNameRef = (0, _react.useRef)(componentName);
37
+ componentNameRef.current = componentName;
38
+
39
+ // Guard: throw if the ref callback was never called (no element attached),
40
+ // mirroring the check previously in EuiObserver.componentDidMount.
41
+ // Also cleans up the observer on unmount.
42
+ // Empty deps: run only on mount/unmount — componentName is only used for the
43
+ // error message and changing it must not disconnect/re-connect the observer.
44
+ (0, _react.useEffect)(function () {
45
+ if (childNodeRef.current == null) {
46
+ throw new Error("".concat(componentNameRef.current, " did not receive a ref"));
47
+ }
48
+ return function () {
49
+ var _observerRef$current;
50
+ (_observerRef$current = observerRef.current) === null || _observerRef$current === void 0 || _observerRef$current.disconnect();
51
+ };
52
+ }, []);
53
+ var updateChildNode = (0, _react.useCallback)(function (ref) {
54
+ if (childNodeRef.current === ref) return; // node hasn't changed
55
+
56
+ // if there's an existing observer disconnect it
57
+ if (observerRef.current != null) {
58
+ observerRef.current.disconnect();
59
+ observerRef.current = null;
60
+ }
61
+ childNodeRef.current = ref;
62
+ if (childNodeRef.current != null) {
63
+ var _beginObserveRef$curr;
64
+ observerRef.current = (_beginObserveRef$curr = beginObserveRef.current(childNodeRef.current)) !== null && _beginObserveRef$curr !== void 0 ? _beginObserveRef$curr : null;
65
+ }
66
+ }, []);
67
+ return updateChildNode;
68
+ };