@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 _classnames = _interopRequireDefault(require("classnames"));
19
14
  var _services = require("../../services");
@@ -22,131 +17,99 @@ var _accordion_trigger = require("./accordion_trigger");
22
17
  var _accordion_children = require("./accordion_children");
23
18
  var _accordion = require("./accordion.styles");
24
19
  var _react2 = require("@emotion/react");
25
- var _excluded = ["children", "className", "id", "role", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "theme"];
26
- 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); }
27
- 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; }
28
- 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)); }
29
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*
20
+ var _excluded = ["children", "className", "id", "role", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "onToggle"];
21
+ /*
30
22
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
31
23
  * or more contributor license agreements. Licensed under the Elastic License
32
24
  * 2.0 and the Server Side Public License, v 1; you may not use this file except
33
25
  * in compliance with, at your election, the Elastic License 2.0 or the Server
34
26
  * Side Public License, v 1.
35
27
  */
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; }
36
30
  var PADDING_SIZES = exports.PADDING_SIZES = ['none', 'xs', 's', 'm', 'l', 'xl'];
37
- var EuiAccordionClass = exports.EuiAccordionClass = /*#__PURE__*/function (_Component) {
38
- function EuiAccordionClass() {
39
- var _this;
40
- (0, _classCallCheck2.default)(this, EuiAccordionClass);
41
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
42
- args[_key] = arguments[_key];
31
+ var EuiAccordion = exports.EuiAccordion = function EuiAccordion(_ref) {
32
+ var _buttonProps$id;
33
+ var children = _ref.children,
34
+ className = _ref.className,
35
+ id = _ref.id,
36
+ _ref$role = _ref.role,
37
+ role = _ref$role === void 0 ? 'group' : _ref$role,
38
+ _ref$element = _ref.element,
39
+ Element = _ref$element === void 0 ? 'div' : _ref$element,
40
+ _ref$buttonElement = _ref.buttonElement,
41
+ buttonElement = _ref$buttonElement === void 0 ? 'button' : _ref$buttonElement,
42
+ buttonProps = _ref.buttonProps,
43
+ buttonClassName = _ref.buttonClassName,
44
+ buttonContentClassName = _ref.buttonContentClassName,
45
+ buttonContent = _ref.buttonContent,
46
+ _ref$arrowDisplay = _ref.arrowDisplay,
47
+ arrowDisplay = _ref$arrowDisplay === void 0 ? 'left' : _ref$arrowDisplay,
48
+ arrowProps = _ref.arrowProps,
49
+ extraAction = _ref.extraAction,
50
+ _ref$paddingSize = _ref.paddingSize,
51
+ paddingSize = _ref$paddingSize === void 0 ? 'none' : _ref$paddingSize,
52
+ _ref$borders = _ref.borders,
53
+ borders = _ref$borders === void 0 ? 'none' : _ref$borders,
54
+ _ref$initialIsOpen = _ref.initialIsOpen,
55
+ initialIsOpen = _ref$initialIsOpen === void 0 ? false : _ref$initialIsOpen,
56
+ forceState = _ref.forceState,
57
+ _ref$isLoading = _ref.isLoading,
58
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
59
+ _ref$isLoadingMessage = _ref.isLoadingMessage,
60
+ isLoadingMessage = _ref$isLoadingMessage === void 0 ? false : _ref$isLoadingMessage,
61
+ _ref$isDisabled = _ref.isDisabled,
62
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
63
+ onToggle = _ref.onToggle,
64
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
65
+ var _useState = (0, _react.useState)(forceState ? forceState === 'open' : initialIsOpen),
66
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
67
+ isOpenState = _useState2[0],
68
+ setIsOpenState = _useState2[1];
69
+ var isOpen = forceState ? forceState === 'open' : isOpenState;
70
+ var onAccordionToggle = function onAccordionToggle() {
71
+ if (forceState) {
72
+ onToggle === null || onToggle === void 0 || onToggle(!isOpen);
73
+ } else {
74
+ var nextState = !isOpenState;
75
+ setIsOpenState(nextState);
76
+ onToggle === null || onToggle === void 0 || onToggle(nextState);
43
77
  }
44
- _this = _callSuper(this, EuiAccordionClass, [].concat(args));
45
- (0, _defineProperty2.default)(_this, "state", {
46
- isOpen: _this.props.forceState ? _this.props.forceState === 'open' : _this.props.initialIsOpen
47
- });
48
- (0, _defineProperty2.default)(_this, "onToggle", function () {
49
- var forceState = _this.props.forceState;
50
- if (forceState) {
51
- var _this$props$onToggle, _this$props;
52
- var nextState = !_this.isOpen;
53
- (_this$props$onToggle = (_this$props = _this.props).onToggle) === null || _this$props$onToggle === void 0 || _this$props$onToggle.call(_this$props, nextState);
54
- } else {
55
- _this.setState(function (prevState) {
56
- return {
57
- isOpen: !prevState.isOpen
58
- };
59
- }, function () {
60
- var _this$props$onToggle2, _this$props2;
61
- (_this$props$onToggle2 = (_this$props2 = _this.props).onToggle) === null || _this$props$onToggle2 === void 0 || _this$props$onToggle2.call(_this$props2, _this.state.isOpen);
62
- });
63
- }
64
- });
65
- (0, _defineProperty2.default)(_this, "generatedId", (0, _services.htmlIdGenerator)()());
66
- return _this;
67
- }
68
- (0, _inherits2.default)(EuiAccordionClass, _Component);
69
- return (0, _createClass2.default)(EuiAccordionClass, [{
70
- key: "isOpen",
71
- get: function get() {
72
- return this.props.forceState ? this.props.forceState === 'open' : this.state.isOpen;
73
- }
74
- }, {
75
- key: "render",
76
- value: function render() {
77
- var _buttonProps$id;
78
- var _this$props3 = this.props,
79
- children = _this$props3.children,
80
- className = _this$props3.className,
81
- id = _this$props3.id,
82
- role = _this$props3.role,
83
- _this$props3$element = _this$props3.element,
84
- Element = _this$props3$element === void 0 ? 'div' : _this$props3$element,
85
- buttonElement = _this$props3.buttonElement,
86
- buttonProps = _this$props3.buttonProps,
87
- buttonClassName = _this$props3.buttonClassName,
88
- buttonContentClassName = _this$props3.buttonContentClassName,
89
- buttonContent = _this$props3.buttonContent,
90
- arrowDisplay = _this$props3.arrowDisplay,
91
- arrowProps = _this$props3.arrowProps,
92
- extraAction = _this$props3.extraAction,
93
- paddingSize = _this$props3.paddingSize,
94
- borders = _this$props3.borders,
95
- initialIsOpen = _this$props3.initialIsOpen,
96
- forceState = _this$props3.forceState,
97
- isLoading = _this$props3.isLoading,
98
- isLoadingMessage = _this$props3.isLoadingMessage,
99
- isDisabled = _this$props3.isDisabled,
100
- theme = _this$props3.theme,
101
- rest = (0, _objectWithoutProperties2.default)(_this$props3, _excluded);
102
- var classes = (0, _classnames.default)('euiAccordion', {
103
- 'euiAccordion-isOpen': this.isOpen
104
- }, className);
105
- var styles = (0, _accordion.euiAccordionStyles)(theme);
106
- var cssStyles = [styles.euiAccordion, borders !== 'none' && styles.borders.borders, borders !== 'none' && styles.borders[borders]];
107
- var buttonId = (_buttonProps$id = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.id) !== null && _buttonProps$id !== void 0 ? _buttonProps$id : this.generatedId;
108
- return (0, _react2.jsx)(Element, (0, _extends2.default)({
109
- className: classes,
110
- css: cssStyles
111
- }, rest), (0, _react2.jsx)(_accordion_trigger.EuiAccordionTrigger, {
112
- ariaControlsId: id,
113
- buttonId: buttonId
114
- // Force button element to be a legend if the element is a fieldset
115
- ,
116
- buttonElement: Element === 'fieldset' ? 'legend' : buttonElement,
117
- buttonClassName: buttonClassName,
118
- buttonContent: buttonContent,
119
- buttonContentClassName: buttonContentClassName,
120
- buttonProps: buttonProps,
121
- arrowProps: arrowProps,
122
- arrowDisplay: arrowDisplay,
123
- isDisabled: isDisabled,
124
- isOpen: this.isOpen,
125
- onToggle: this.onToggle,
126
- extraAction: isLoading ? (0, _react2.jsx)(_loading.EuiLoadingSpinner, null) : extraAction
127
- }), (0, _react2.jsx)(_accordion_children.EuiAccordionChildren, {
128
- role: role,
129
- id: id,
130
- "aria-labelledby": buttonId,
131
- paddingSize: paddingSize,
132
- isLoading: isLoading,
133
- isLoadingMessage: isLoadingMessage,
134
- isOpen: this.isOpen,
135
- initialIsOpen: initialIsOpen
136
- }, children));
137
- }
138
- }]);
139
- }(_react.Component);
140
- (0, _defineProperty2.default)(EuiAccordionClass, "defaultProps", {
141
- initialIsOpen: false,
142
- borders: 'none',
143
- paddingSize: 'none',
144
- arrowDisplay: 'left',
145
- isLoading: false,
146
- isDisabled: false,
147
- isLoadingMessage: false,
148
- element: 'div',
149
- buttonElement: 'button',
150
- role: 'group'
151
- });
152
- var EuiAccordion = exports.EuiAccordion = (0, _services.withEuiTheme)(EuiAccordionClass);
78
+ };
79
+ var generatedId = (0, _services.useGeneratedHtmlId)();
80
+ var buttonId = (_buttonProps$id = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.id) !== null && _buttonProps$id !== void 0 ? _buttonProps$id : generatedId;
81
+ var classes = (0, _classnames.default)('euiAccordion', {
82
+ 'euiAccordion-isOpen': isOpen
83
+ }, className);
84
+ var styles = (0, _services.useEuiMemoizedStyles)(_accordion.euiAccordionStyles);
85
+ var cssStyles = [styles.euiAccordion, borders !== 'none' && styles.borders.borders, borders !== 'none' && styles.borders[borders]];
86
+ return (0, _react2.jsx)(Element, (0, _extends2.default)({
87
+ className: classes,
88
+ css: cssStyles
89
+ }, rest), (0, _react2.jsx)(_accordion_trigger.EuiAccordionTrigger, {
90
+ ariaControlsId: id,
91
+ buttonId: buttonId
92
+ // Force button element to be a legend if the element is a fieldset
93
+ ,
94
+ buttonElement: Element === 'fieldset' ? 'legend' : buttonElement,
95
+ buttonClassName: buttonClassName,
96
+ buttonContent: buttonContent,
97
+ buttonContentClassName: buttonContentClassName,
98
+ buttonProps: buttonProps,
99
+ arrowProps: arrowProps,
100
+ arrowDisplay: arrowDisplay,
101
+ isDisabled: isDisabled,
102
+ isOpen: isOpen,
103
+ onToggle: onAccordionToggle,
104
+ extraAction: isLoading ? (0, _react2.jsx)(_loading.EuiLoadingSpinner, null) : extraAction
105
+ }), (0, _react2.jsx)(_accordion_children.EuiAccordionChildren, {
106
+ role: role,
107
+ id: id,
108
+ "aria-labelledby": buttonId,
109
+ paddingSize: paddingSize,
110
+ isLoading: isLoading,
111
+ isLoadingMessage: isLoadingMessage,
112
+ isOpen: isOpen,
113
+ initialIsOpen: initialIsOpen
114
+ }, children));
115
+ };
@@ -269,8 +269,8 @@ var EuiContextMenuPanelClass = exports.EuiContextMenuPanelClass = /*#__PURE__*/f
269
269
  }
270
270
  }, {
271
271
  key: "componentDidUpdate",
272
- value: function componentDidUpdate(_, prevState) {
273
- if (prevState.menuItems !== this.state.menuItems) {
272
+ value: function componentDidUpdate(prevProps) {
273
+ if (prevProps.items !== this.props.items) {
274
274
  this.findMenuItems();
275
275
  }
276
276
  // Focus isn't always ready to be taken on mount, so we need to call it
@@ -15,6 +15,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
15
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
16
  var _react = _interopRequireWildcard(require("react"));
17
17
  var _services = require("../../services");
18
+ var _accessibility = require("../accessibility");
18
19
  var _tool_tip = require("../tool_tip");
19
20
  var _react2 = require("@emotion/react");
20
21
  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); }
@@ -32,21 +33,31 @@ var EuiCopy = exports.EuiCopy = /*#__PURE__*/function (_Component) {
32
33
  var _this;
33
34
  (0, _classCallCheck2.default)(this, EuiCopy);
34
35
  _this = _callSuper(this, EuiCopy, [props]);
36
+ (0, _defineProperty2.default)(_this, "tooltipRef", /*#__PURE__*/(0, _react.createRef)());
35
37
  (0, _defineProperty2.default)(_this, "copy", function () {
36
38
  var isCopied = (0, _services.copyToClipboard)(_this.props.textToCopy);
37
39
  if (isCopied) {
38
40
  _this.setState({
39
- tooltipText: _this.props.afterMessage
41
+ tooltipText: _this.props.afterMessage,
42
+ isCopied: true
43
+ },
44
+ // `EuiToolTip` suppresses showing when content is empty, so `EuiCopy`
45
+ // imperatively shows the tooltip after the post-copy state update.
46
+ function () {
47
+ var _this$tooltipRef$curr;
48
+ (_this$tooltipRef$curr = _this.tooltipRef.current) === null || _this$tooltipRef$curr === void 0 || _this$tooltipRef$curr.showToolTip();
40
49
  });
41
50
  }
42
51
  });
43
52
  (0, _defineProperty2.default)(_this, "resetTooltipText", function () {
44
53
  _this.setState({
45
- tooltipText: _this.props.beforeMessage
54
+ tooltipText: _this.props.beforeMessage,
55
+ isCopied: false
46
56
  });
47
57
  });
48
58
  _this.state = {
49
- tooltipText: _this.props.beforeMessage
59
+ tooltipText: _this.props.beforeMessage,
60
+ isCopied: false
50
61
  };
51
62
  return _this;
52
63
  }
@@ -54,17 +65,29 @@ var EuiCopy = exports.EuiCopy = /*#__PURE__*/function (_Component) {
54
65
  return (0, _createClass2.default)(EuiCopy, [{
55
66
  key: "render",
56
67
  value: function render() {
68
+ var _this2 = this;
57
69
  var _this$props = this.props,
58
70
  children = _this$props.children,
59
- tooltipProps = _this$props.tooltipProps;
60
- return (
61
- // See `src/components/tool_tip/tool_tip.js` for explanation of below eslint-disable
62
- // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
63
- (0, _react2.jsx)(_tool_tip.EuiToolTip, (0, _extends2.default)({
64
- content: this.state.tooltipText,
65
- onMouseOut: this.resetTooltipText
66
- }, tooltipProps), children(this.copy))
67
- );
71
+ tooltipProps = _this$props.tooltipProps,
72
+ afterMessage = _this$props.afterMessage;
73
+ var _this$state = this.state,
74
+ tooltipText = _this$state.tooltipText,
75
+ isCopied = _this$state.isCopied;
76
+ return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_tool_tip.EuiToolTip, (0, _extends2.default)({
77
+ ref: this.tooltipRef,
78
+ content: tooltipText,
79
+ onMouseOut: this.resetTooltipText
80
+ }, tooltipProps, {
81
+ onBlur: function onBlur() {
82
+ var _tooltipProps$onBlur;
83
+ tooltipProps === null || tooltipProps === void 0 || (_tooltipProps$onBlur = tooltipProps.onBlur) === null || _tooltipProps$onBlur === void 0 || _tooltipProps$onBlur.call(tooltipProps);
84
+ if (isCopied) _this2.resetTooltipText();
85
+ },
86
+ disableScreenReaderOutput: isCopied || !!(tooltipProps !== null && tooltipProps !== void 0 && tooltipProps.disableScreenReaderOutput)
87
+ }), children(this.copy)), (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("div", {
88
+ "aria-live": "assertive",
89
+ "aria-atomic": "true"
90
+ }, isCopied ? afterMessage : '')));
68
91
  }
69
92
  }]);
70
93
  }(_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
  };