@elastic/eui 92.0.0 → 92.1.1

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 (156) hide show
  1. package/dist/eui_theme_dark.css +3 -18
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +3 -18
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/aspect_ratio/aspect_ratio.js +1 -1
  6. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
  7. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
  8. package/es/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +111 -244
  9. package/es/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
  10. package/es/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
  11. package/es/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
  12. package/es/components/datagrid/body/cell/focus_utils.js +166 -0
  13. package/es/components/datagrid/body/cell/index.js +11 -0
  14. package/es/components/datagrid/body/data_grid_body.js +0 -2
  15. package/es/components/datagrid/body/data_grid_body_custom.js +1 -7
  16. package/es/components/datagrid/body/data_grid_body_virtualized.js +1 -7
  17. package/es/components/datagrid/body/footer/data_grid_footer_row.js +1 -2
  18. package/es/components/datagrid/body/header/data_grid_control_header_cell.js +3 -6
  19. package/es/components/datagrid/body/header/data_grid_header_cell.js +27 -12
  20. package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +45 -116
  21. package/es/components/datagrid/body/header/data_grid_header_row.js +5 -10
  22. package/es/components/datagrid/body/header/use_data_grid_header.js +3 -14
  23. package/es/components/datagrid/data_grid.js +2 -12
  24. package/es/components/datagrid/utils/focus.js +25 -54
  25. package/es/components/datagrid/utils/scrolling.js +1 -1
  26. package/es/components/flyout/flyout_resizable.js +10 -10
  27. package/es/components/flyout/flyout_resizable.styles.js +12 -6
  28. package/es/components/resizable_container/helpers.js +5 -6
  29. package/es/components/resizable_container/resizable_button.js +13 -4
  30. package/es/components/resizable_container/resizable_button.styles.js +18 -8
  31. package/es/components/resizable_container/resizable_container.js +28 -22
  32. package/es/components/steps/step_number.styles.js +6 -7
  33. package/es/components/tree_view/tree_view.js +9 -2
  34. package/eui.d.ts +130 -90
  35. package/i18ntokens.json +108 -72
  36. package/lib/components/aspect_ratio/aspect_ratio.js +1 -1
  37. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
  38. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
  39. package/lib/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +111 -244
  40. package/lib/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
  41. package/lib/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
  42. package/lib/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
  43. package/lib/components/datagrid/body/cell/focus_utils.js +174 -0
  44. package/lib/components/datagrid/body/cell/index.js +32 -0
  45. package/lib/components/datagrid/body/data_grid_body.js +0 -2
  46. package/lib/components/datagrid/body/data_grid_body_custom.js +2 -8
  47. package/lib/components/datagrid/body/data_grid_body_virtualized.js +2 -8
  48. package/lib/components/datagrid/body/footer/data_grid_footer_row.js +5 -6
  49. package/lib/components/datagrid/body/header/data_grid_control_header_cell.js +3 -6
  50. package/lib/components/datagrid/body/header/data_grid_header_cell.js +35 -20
  51. package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +47 -119
  52. package/lib/components/datagrid/body/header/data_grid_header_row.js +5 -10
  53. package/lib/components/datagrid/body/header/use_data_grid_header.js +10 -24
  54. package/lib/components/datagrid/data_grid.js +4 -14
  55. package/lib/components/datagrid/utils/focus.js +26 -56
  56. package/lib/components/datagrid/utils/scrolling.js +2 -2
  57. package/lib/components/flyout/flyout_resizable.js +10 -10
  58. package/lib/components/flyout/flyout_resizable.styles.js +12 -6
  59. package/lib/components/resizable_container/helpers.js +7 -7
  60. package/lib/components/resizable_container/resizable_button.js +13 -4
  61. package/lib/components/resizable_container/resizable_button.styles.js +18 -8
  62. package/lib/components/resizable_container/resizable_container.js +28 -22
  63. package/lib/components/steps/step_number.styles.js +6 -7
  64. package/lib/components/tree_view/tree_view.js +9 -2
  65. package/optimize/es/components/aspect_ratio/aspect_ratio.js +1 -1
  66. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
  67. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
  68. package/optimize/es/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +111 -244
  69. package/optimize/es/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
  70. package/optimize/es/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
  71. package/optimize/es/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
  72. package/optimize/es/components/datagrid/body/cell/focus_utils.js +153 -0
  73. package/optimize/es/components/datagrid/body/cell/index.js +11 -0
  74. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +1 -5
  75. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +1 -5
  76. package/optimize/es/components/datagrid/body/footer/data_grid_footer_row.js +1 -2
  77. package/optimize/es/components/datagrid/body/header/data_grid_control_header_cell.js +2 -4
  78. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +25 -10
  79. package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +41 -115
  80. package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +4 -8
  81. package/optimize/es/components/datagrid/body/header/use_data_grid_header.js +3 -13
  82. package/optimize/es/components/datagrid/data_grid.js +2 -12
  83. package/optimize/es/components/datagrid/utils/focus.js +25 -54
  84. package/optimize/es/components/datagrid/utils/scrolling.js +1 -1
  85. package/optimize/es/components/flyout/flyout_resizable.js +10 -10
  86. package/optimize/es/components/flyout/flyout_resizable.styles.js +12 -6
  87. package/optimize/es/components/resizable_container/helpers.js +5 -6
  88. package/optimize/es/components/resizable_container/resizable_button.js +5 -2
  89. package/optimize/es/components/resizable_container/resizable_button.styles.js +18 -8
  90. package/optimize/es/components/resizable_container/resizable_container.js +28 -22
  91. package/optimize/es/components/steps/step_number.styles.js +6 -7
  92. package/optimize/es/components/tree_view/tree_view.js +9 -2
  93. package/optimize/lib/components/aspect_ratio/aspect_ratio.js +1 -1
  94. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
  95. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
  96. package/optimize/lib/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +111 -244
  97. package/optimize/lib/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
  98. package/optimize/lib/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
  99. package/optimize/lib/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
  100. package/optimize/lib/components/datagrid/body/cell/focus_utils.js +163 -0
  101. package/optimize/lib/components/datagrid/body/cell/index.js +32 -0
  102. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +2 -6
  103. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +2 -6
  104. package/optimize/lib/components/datagrid/body/footer/data_grid_footer_row.js +5 -6
  105. package/optimize/lib/components/datagrid/body/header/data_grid_control_header_cell.js +2 -4
  106. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +25 -10
  107. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +41 -115
  108. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +4 -8
  109. package/optimize/lib/components/datagrid/body/header/use_data_grid_header.js +4 -14
  110. package/optimize/lib/components/datagrid/data_grid.js +4 -14
  111. package/optimize/lib/components/datagrid/utils/focus.js +26 -56
  112. package/optimize/lib/components/datagrid/utils/scrolling.js +2 -2
  113. package/optimize/lib/components/flyout/flyout_resizable.js +10 -10
  114. package/optimize/lib/components/flyout/flyout_resizable.styles.js +12 -6
  115. package/optimize/lib/components/resizable_container/helpers.js +7 -7
  116. package/optimize/lib/components/resizable_container/resizable_button.js +5 -2
  117. package/optimize/lib/components/resizable_container/resizable_button.styles.js +18 -8
  118. package/optimize/lib/components/resizable_container/resizable_container.js +28 -22
  119. package/optimize/lib/components/steps/step_number.styles.js +6 -7
  120. package/optimize/lib/components/tree_view/tree_view.js +9 -2
  121. package/package.json +1 -1
  122. package/src/components/datagrid/body/header/_data_grid_header_row.scss +8 -7
  123. package/test-env/components/aspect_ratio/aspect_ratio.js +1 -1
  124. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
  125. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
  126. package/test-env/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +111 -244
  127. package/test-env/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
  128. package/test-env/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
  129. package/test-env/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
  130. package/test-env/components/datagrid/body/cell/focus_utils.js +172 -0
  131. package/test-env/components/datagrid/body/cell/index.js +32 -0
  132. package/test-env/components/datagrid/body/data_grid_body.js +0 -2
  133. package/test-env/components/datagrid/body/data_grid_body_custom.js +2 -8
  134. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +2 -8
  135. package/test-env/components/datagrid/body/footer/data_grid_footer_row.js +5 -6
  136. package/test-env/components/datagrid/body/header/data_grid_control_header_cell.js +3 -6
  137. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +25 -10
  138. package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.js +44 -116
  139. package/test-env/components/datagrid/body/header/data_grid_header_row.js +5 -10
  140. package/test-env/components/datagrid/body/header/use_data_grid_header.js +4 -14
  141. package/test-env/components/datagrid/data_grid.js +4 -14
  142. package/test-env/components/datagrid/utils/focus.js +26 -56
  143. package/test-env/components/datagrid/utils/scrolling.js +2 -2
  144. package/test-env/components/flyout/flyout_resizable.js +10 -10
  145. package/test-env/components/flyout/flyout_resizable.styles.js +12 -6
  146. package/test-env/components/resizable_container/helpers.js +7 -7
  147. package/test-env/components/resizable_container/resizable_button.js +13 -4
  148. package/test-env/components/resizable_container/resizable_button.styles.js +18 -8
  149. package/test-env/components/resizable_container/resizable_container.js +28 -22
  150. package/test-env/components/steps/step_number.styles.js +6 -7
  151. package/test-env/components/tree_view/tree_view.js +9 -2
  152. package/es/components/datagrid/body/header/header_is_interactive.js +0 -58
  153. package/lib/components/datagrid/body/header/header_is_interactive.js +0 -63
  154. package/optimize/es/components/datagrid/body/header/header_is_interactive.js +0 -53
  155. package/optimize/lib/components/datagrid/body/header/header_is_interactive.js +0 -61
  156. package/test-env/components/datagrid/body/header/header_is_interactive.js +0 -61
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.HandleInteractiveChildren = exports.FocusTrappedChildren = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _tabbable = require("tabbable");
11
+ var _services = require("../../../../services");
12
+ var _focus_trap = require("../../../focus_trap");
13
+ var _accessibility = require("../../../accessibility");
14
+ var _i18n = require("../../../i18n");
15
+ var _react2 = require("@emotion/react");
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
20
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
23
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
24
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /*
25
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
26
+ * or more contributor license agreements. Licensed under the Elastic License
27
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
28
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
29
+ * Side Public License, v 1.
30
+ */ /**
31
+ * This internal utility component is used by all cells, both header and body/footer cells.
32
+ * It always handles:
33
+ * 1. Removing any interactive children from keyboard tab order on cell mount
34
+ * 2. Listening for focus on any interactive children and updating the cell focus context
35
+ *
36
+ * It should *only* render focus traps for:
37
+ * 1. Header cells that are `actions: false` but still have interactive children
38
+ * 2. Body cells that are `isExpandable: false` but still have interactive children
39
+ */
40
+ var HandleInteractiveChildren = function HandleInteractiveChildren(_ref) {
41
+ var cellEl = _ref.cellEl,
42
+ children = _ref.children,
43
+ updateCellFocusContext = _ref.updateCellFocusContext,
44
+ renderFocusTrap = _ref.renderFocusTrap;
45
+ var _useState = (0, _react.useState)(false),
46
+ _useState2 = _slicedToArray(_useState, 2),
47
+ hasInteractiveChildren = _useState2[0],
48
+ setHasInteractiveChildren = _useState2[1];
49
+
50
+ // On mount, disable all interactive children
51
+ (0, _react.useEffect)(function () {
52
+ if (cellEl) {
53
+ var interactiveChildren = disableInteractives(cellEl);
54
+ if (renderFocusTrap) {
55
+ setHasInteractiveChildren(interactiveChildren.length > 0);
56
+ }
57
+ }
58
+ }, [cellEl, renderFocusTrap]);
59
+
60
+ // Ensure that any interactive children that are clicked update the latest cell focus context
61
+ (0, _react.useEffect)(function () {
62
+ if (cellEl) {
63
+ var onFocus = function onFocus() {
64
+ return updateCellFocusContext();
65
+ };
66
+ cellEl.addEventListener('focus', onFocus, true); // useCapture listens for focus on children
67
+ return function () {
68
+ cellEl.removeEventListener('focus', onFocus, true);
69
+ };
70
+ }
71
+ }, [cellEl, updateCellFocusContext]);
72
+ var _children = (0, _react.useMemo)(function () {
73
+ return (0, _react2.jsx)(_react.default.Fragment, null, children);
74
+ }, [children]);
75
+ if (!cellEl) return _children; // Do nothing if cell has yet to mount or is unmounting
76
+ if (!renderFocusTrap) return _children; // Cells with default actions / expansion popovers do not need to trap
77
+ if (!hasInteractiveChildren) return _children; // No need to focus trap if no children are interactive
78
+
79
+ return (0, _react2.jsx)(FocusTrappedChildren, {
80
+ cellEl: cellEl
81
+ }, children);
82
+ };
83
+
84
+ /**
85
+ * Cells with interactive children but no cell popover expansion should render a
86
+ * focus trap that can be entered with the Enter key, which cycles keyboard tabs
87
+ * through the cell contents only, and exited with the Escape key
88
+ */
89
+ exports.HandleInteractiveChildren = HandleInteractiveChildren;
90
+ HandleInteractiveChildren.propTypes = {
91
+ cellEl: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([null])]),
92
+ updateCellFocusContext: _propTypes.default.func.isRequired,
93
+ renderFocusTrap: _propTypes.default.bool
94
+ };
95
+ var FocusTrappedChildren = function FocusTrappedChildren(_ref2) {
96
+ var cellEl = _ref2.cellEl,
97
+ children = _ref2.children;
98
+ var _useState3 = (0, _react.useState)(false),
99
+ _useState4 = _slicedToArray(_useState3, 2),
100
+ isCellEntered = _useState4[0],
101
+ setIsCellEntered = _useState4[1];
102
+ (0, _react.useEffect)(function () {
103
+ if (isCellEntered) {
104
+ enableAndFocusInteractives(cellEl);
105
+ } else {
106
+ disableInteractives(cellEl);
107
+ }
108
+ }, [isCellEntered, cellEl]);
109
+ (0, _react.useEffect)(function () {
110
+ var onKeyUp = function onKeyUp(event) {
111
+ switch (event.key) {
112
+ case _services.keys.ENTER:
113
+ case _services.keys.F2:
114
+ event.preventDefault();
115
+ setIsCellEntered(true);
116
+ break;
117
+ case _services.keys.ESCAPE:
118
+ event.preventDefault();
119
+ setIsCellEntered(function (isCellEntered) {
120
+ if (isCellEntered === true) {
121
+ requestAnimationFrame(function () {
122
+ return cellEl.focus();
123
+ }); // move focus to cell
124
+ return false;
125
+ }
126
+ return isCellEntered;
127
+ });
128
+ break;
129
+ }
130
+ };
131
+ cellEl.addEventListener('keyup', onKeyUp);
132
+ return function () {
133
+ cellEl.removeEventListener('keyup', onKeyUp);
134
+ };
135
+ }, [cellEl]);
136
+ return (0, _react2.jsx)(_focus_trap.EuiFocusTrap, {
137
+ disabled: !isCellEntered,
138
+ onDeactivation: function onDeactivation() {
139
+ return setIsCellEntered(false);
140
+ },
141
+ clickOutsideDisables: true
142
+ }, children, (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("p", null, ' - ', (0, _react2.jsx)(_i18n.EuiI18n
143
+ // eslint-disable-next-line local/i18n
144
+ , {
145
+ token: "euiDataGridCell.focusTrapEnterPrompt",
146
+ default: "Press the Enter key to interact with this cell's contents."
147
+ }))));
148
+ };
149
+
150
+ /**
151
+ * Utility fns for managing child interactive tabIndex state
152
+ */
153
+ exports.FocusTrappedChildren = FocusTrappedChildren;
154
+ FocusTrappedChildren.propTypes = {
155
+ cellEl: _propTypes.default.any.isRequired
156
+ };
157
+ var disableInteractives = function disableInteractives(cell) {
158
+ var interactives = (0, _tabbable.tabbable)(cell);
159
+ interactives.forEach(function (element) {
160
+ element.setAttribute('data-euigrid-tab-managed', 'true');
161
+ element.setAttribute('tabIndex', '-1');
162
+ });
163
+ return interactives;
164
+ };
165
+ var enableAndFocusInteractives = function enableAndFocusInteractives(cell) {
166
+ var interactives = cell.querySelectorAll('[data-euigrid-tab-managed]');
167
+ interactives.forEach(function (element, i) {
168
+ element.setAttribute('tabIndex', '0');
169
+ if (i === 0) {
170
+ element.focus();
171
+ }
172
+ });
173
+ return interactives;
174
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Cell", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _data_grid_cell_wrapper.Cell;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "DataGridCellPopoverContext", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _data_grid_cell_popover.DataGridCellPopoverContext;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "EuiDataGridCell", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _data_grid_cell.EuiDataGridCell;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "useCellPopover", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _data_grid_cell_popover.useCellPopover;
28
+ }
29
+ });
30
+ var _data_grid_cell = require("./data_grid_cell");
31
+ var _data_grid_cell_wrapper = require("./data_grid_cell_wrapper");
32
+ var _data_grid_cell_popover = require("./data_grid_cell_popover");
@@ -574,8 +574,6 @@ EuiDataGridBody.propTypes = {
574
574
  renderCustomGridBody: _propTypes.default.func,
575
575
  interactiveCellId: _propTypes.default.string.isRequired,
576
576
  pagination: _propTypes.default.any,
577
- headerIsInteractive: _propTypes.default.bool.isRequired,
578
- handleHeaderMutation: _propTypes.default.any.isRequired,
579
577
  setVisibleColumns: _propTypes.default.func.isRequired,
580
578
  switchColumnPos: _propTypes.default.func.isRequired,
581
579
  onColumnResize: _propTypes.default.func,
@@ -12,7 +12,7 @@ var _col_widths = require("../utils/col_widths");
12
12
  var _row_heights = require("../utils/row_heights");
13
13
  var _header = require("./header");
14
14
  var _footer = require("./footer");
15
- var _data_grid_cell_wrapper = require("./data_grid_cell_wrapper");
15
+ var _cell = require("./cell");
16
16
  var _react2 = require("@emotion/react");
17
17
  var _excluded = ["colIndex", "visibleRowIndex"];
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -55,8 +55,6 @@ var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
55
55
  renderCellPopover = _ref.renderCellPopover,
56
56
  renderFooterCellValue = _ref.renderFooterCellValue,
57
57
  interactiveCellId = _ref.interactiveCellId,
58
- headerIsInteractive = _ref.headerIsInteractive,
59
- handleHeaderMutation = _ref.handleHeaderMutation,
60
58
  setVisibleColumns = _ref.setVisibleColumns,
61
59
  switchColumnPos = _ref.switchColumnPos,
62
60
  onColumnResize = _ref.onColumnResize,
@@ -102,8 +100,6 @@ var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
102
100
  * Header & footer
103
101
  */
104
102
  var _useDataGridHeader = (0, _header.useDataGridHeader)({
105
- headerIsInteractive: headerIsInteractive,
106
- handleHeaderMutation: handleHeaderMutation,
107
103
  switchColumnPos: switchColumnPos,
108
104
  setVisibleColumns: setVisibleColumns,
109
105
  leadingControlColumns: leadingControlColumns,
@@ -163,7 +159,7 @@ var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
163
159
  visibleRowIndex: visibleRowIndex,
164
160
  style: style
165
161
  }, cellProps);
166
- return (0, _react2.jsx)(_data_grid_cell_wrapper.Cell, _extends({}, props, rest));
162
+ return (0, _react2.jsx)(_cell.Cell, _extends({}, props, rest));
167
163
  }, [].concat(_toConsumableArray(Object.values(cellProps)), [getRowHeight]) // eslint-disable-line react-hooks/exhaustive-deps
168
164
  );
169
165
 
@@ -722,8 +718,6 @@ EuiDataGridBodyCustomRender.propTypes = {
722
718
  renderCustomGridBody: _propTypes.default.func,
723
719
  interactiveCellId: _propTypes.default.string.isRequired,
724
720
  pagination: _propTypes.default.any,
725
- headerIsInteractive: _propTypes.default.bool.isRequired,
726
- handleHeaderMutation: _propTypes.default.any.isRequired,
727
721
  setVisibleColumns: _propTypes.default.func.isRequired,
728
722
  switchColumnPos: _propTypes.default.func.isRequired,
729
723
  onColumnResize: _propTypes.default.func,
@@ -11,7 +11,7 @@ var _reactWindow = require("react-window");
11
11
  var _resize_observer = require("../../observer/resize_observer");
12
12
  var _header = require("./header");
13
13
  var _footer = require("./footer");
14
- var _data_grid_cell_wrapper = require("./data_grid_cell_wrapper");
14
+ var _cell = require("./cell");
15
15
  var _data_grid_row_manager = require("./data_grid_row_manager");
16
16
  var _grid_height_width = require("../utils/grid_height_width");
17
17
  var _col_widths = require("../utils/col_widths");
@@ -45,7 +45,7 @@ var _Cell = function _Cell(_ref) {
45
45
  data = _ref.data;
46
46
  var _useContext = (0, _react.useContext)(DataGridWrapperRowsContext),
47
47
  headerRowHeight = _useContext.headerRowHeight;
48
- return (0, _react2.jsx)(_data_grid_cell_wrapper.Cell, _extends({
48
+ return (0, _react2.jsx)(_cell.Cell, _extends({
49
49
  colIndex: columnIndex,
50
50
  visibleRowIndex: rowIndex,
51
51
  style: _objectSpread(_objectSpread({}, style), {}, {
@@ -101,8 +101,6 @@ var EuiDataGridBodyVirtualized = function EuiDataGridBodyVirtualized(_ref3) {
101
101
  renderFooterCellValue = _ref3.renderFooterCellValue,
102
102
  interactiveCellId = _ref3.interactiveCellId,
103
103
  pagination = _ref3.pagination,
104
- headerIsInteractive = _ref3.headerIsInteractive,
105
- handleHeaderMutation = _ref3.handleHeaderMutation,
106
104
  setVisibleColumns = _ref3.setVisibleColumns,
107
105
  switchColumnPos = _ref3.switchColumnPos,
108
106
  onColumnResize = _ref3.onColumnResize,
@@ -152,8 +150,6 @@ var EuiDataGridBodyVirtualized = function EuiDataGridBodyVirtualized(_ref3) {
152
150
  * Header & footer
153
151
  */
154
152
  var _useDataGridHeader = (0, _header.useDataGridHeader)({
155
- headerIsInteractive: headerIsInteractive,
156
- handleHeaderMutation: handleHeaderMutation,
157
153
  switchColumnPos: switchColumnPos,
158
154
  setVisibleColumns: setVisibleColumns,
159
155
  leadingControlColumns: leadingControlColumns,
@@ -853,8 +849,6 @@ EuiDataGridBodyVirtualized.propTypes = {
853
849
  renderCustomGridBody: _propTypes.default.func,
854
850
  interactiveCellId: _propTypes.default.string.isRequired,
855
851
  pagination: _propTypes.default.any,
856
- headerIsInteractive: _propTypes.default.bool.isRequired,
857
- handleHeaderMutation: _propTypes.default.any.isRequired,
858
852
  setVisibleColumns: _propTypes.default.func.isRequired,
859
853
  switchColumnPos: _propTypes.default.func.isRequired,
860
854
  onColumnResize: _propTypes.default.func,
@@ -7,8 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.EuiDataGridFooterRow = void 0;
8
8
  var _classnames = _interopRequireDefault(require("classnames"));
9
9
  var _react = _interopRequireWildcard(require("react"));
10
- var _data_grid_cell = require("../data_grid_cell");
11
- var _data_grid_cell_popover = require("../data_grid_cell_popover");
10
+ var _cell = require("../cell");
12
11
  var _react2 = require("@emotion/react");
13
12
  var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "schema", "columnWidths", "defaultColumnWidth", "className", "renderCellValue", "renderCellPopover", "rowIndex", "interactiveCellId", "data-test-subj", "visibleRowIndex"];
14
13
  /*
@@ -47,7 +46,7 @@ var EuiDataGridFooterRow = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _reac
47
46
  'euiDataGridRow--striped': visibleRowIndex % 2 !== 0
48
47
  }, 'euiDataGridFooter', className);
49
48
  var dataTestSubj = (0, _classnames.default)('dataGridRow', 'dataGridFooterRow', _dataTestSubj);
50
- var popoverContext = (0, _react.useContext)(_data_grid_cell_popover.DataGridCellPopoverContext);
49
+ var popoverContext = (0, _react.useContext)(_cell.DataGridCellPopoverContext);
51
50
  var sharedCellProps = {
52
51
  rowIndex: rowIndex,
53
52
  visibleRowIndex: visibleRowIndex,
@@ -64,7 +63,7 @@ var EuiDataGridFooterRow = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _reac
64
63
  width = _ref2.width,
65
64
  footerCellRender = _ref2.footerCellRender,
66
65
  footerCellProps = _ref2.footerCellProps;
67
- return (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, footerCellProps, sharedCellProps, {
66
+ return (0, _react2.jsx)(_cell.EuiDataGridCell, _extends({}, footerCellProps, sharedCellProps, {
68
67
  key: "".concat(id, "-").concat(rowIndex),
69
68
  colIndex: i,
70
69
  columnId: id,
@@ -78,7 +77,7 @@ var EuiDataGridFooterRow = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _reac
78
77
  var columnType = schema[id] ? schema[id].columnType : null;
79
78
  var width = columnWidths[id] || defaultColumnWidth;
80
79
  var columnPosition = i + leadingControlColumns.length;
81
- return (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
80
+ return (0, _react2.jsx)(_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
82
81
  key: "".concat(columnPosition, ",").concat(visibleRowIndex) // Note: this key should use cell position to match react-window/data cell behavior. See #5720
83
82
  ,
84
83
  colIndex: columnPosition,
@@ -96,7 +95,7 @@ var EuiDataGridFooterRow = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _reac
96
95
  footerCellRender = _ref4.footerCellRender,
97
96
  footerCellProps = _ref4.footerCellProps;
98
97
  var colIndex = i + columns.length + leadingControlColumns.length;
99
- return (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, footerCellProps, sharedCellProps, {
98
+ return (0, _react2.jsx)(_cell.EuiDataGridCell, _extends({}, footerCellProps, sharedCellProps, {
100
99
  key: "".concat(id, "-").concat(rowIndex),
101
100
  colIndex: colIndex,
102
101
  columnId: id,
@@ -19,8 +19,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
19
19
  */
20
20
  var EuiDataGridControlHeaderCell = function EuiDataGridControlHeaderCell(_ref) {
21
21
  var controlColumn = _ref.controlColumn,
22
- index = _ref.index,
23
- headerIsInteractive = _ref.headerIsInteractive;
22
+ index = _ref.index;
24
23
  var HeaderCellRender = controlColumn.headerCellRender,
25
24
  headerCellProps = controlColumn.headerCellProps,
26
25
  width = controlColumn.width,
@@ -29,8 +28,7 @@ var EuiDataGridControlHeaderCell = function EuiDataGridControlHeaderCell(_ref) {
29
28
  className: (0, _classnames.default)('euiDataGridHeaderCell--controlColumn', headerCellProps === null || headerCellProps === void 0 ? void 0 : headerCellProps.className),
30
29
  id: id,
31
30
  index: index,
32
- width: width,
33
- headerIsInteractive: headerIsInteractive
31
+ width: width
34
32
  }), (0, _react2.jsx)("div", {
35
33
  className: "euiDataGridHeaderCell__content"
36
34
  }, (0, _react2.jsx)(HeaderCellRender, null)));
@@ -67,6 +65,5 @@ EuiDataGridControlHeaderCell.propTypes = {
67
65
  * Optional props to pass to the column footer cell
68
66
  */
69
67
  footerCellProps: _propTypes.default.any
70
- }).isRequired,
71
- headerIsInteractive: _propTypes.default.bool.isRequired
68
+ }).isRequired
72
69
  };
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -24,24 +25,23 @@ var _react2 = require("@emotion/react");
24
25
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
28
28
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
29
29
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
30
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
32
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
30
33
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
31
34
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
32
35
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
33
36
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
34
37
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
35
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
36
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
38
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /*
39
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
40
- * or more contributor license agreements. Licensed under the Elastic License
41
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
42
- * in compliance with, at your election, the Elastic License 2.0 or the Server
43
- * Side Public License, v 1.
44
- */
38
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /*
39
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
40
+ * or more contributor license agreements. Licensed under the Elastic License
41
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
42
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
43
+ * Side Public License, v 1.
44
+ */
45
45
  var _ref2 = process.env.NODE_ENV === "production" ? {
46
46
  name: "mc0thx-EuiDataGridHeaderCell",
47
47
  styles: "margin-inline-start:auto;label:EuiDataGridHeaderCell;"
@@ -51,6 +51,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
51
51
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
52
52
  };
53
53
  var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
54
+ var _classnames;
54
55
  var column = _ref.column,
55
56
  index = _ref.index,
56
57
  columns = _ref.columns,
@@ -60,15 +61,13 @@ var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
60
61
  defaultColumnWidth = _ref.defaultColumnWidth,
61
62
  setColumnWidth = _ref.setColumnWidth,
62
63
  setVisibleColumns = _ref.setVisibleColumns,
63
- switchColumnPos = _ref.switchColumnPos,
64
- headerIsInteractive = _ref.headerIsInteractive;
64
+ switchColumnPos = _ref.switchColumnPos;
65
65
  var id = column.id,
66
66
  display = column.display,
67
67
  displayAsText = column.displayAsText,
68
68
  displayHeaderCellProps = column.displayHeaderCellProps;
69
69
  var width = columnWidths[id] || defaultColumnWidth;
70
70
  var columnType = schema[id] ? schema[id].columnType : null;
71
- var classes = (0, _classnames2.default)(_defineProperty({}, "euiDataGridHeaderCell--".concat(columnType), columnType), displayHeaderCellProps === null || displayHeaderCellProps === void 0 ? void 0 : displayHeaderCellProps.className);
72
71
  var _useContext = (0, _react.useContext)(_focus.DataGridFocusContext),
73
72
  setFocusedCell = _useContext.setFocusedCell,
74
73
  focusFirstVisibleInteractiveCell = _useContext.focusFirstVisibleInteractiveCell;
@@ -93,6 +92,14 @@ var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
93
92
  });
94
93
  var showColumnActions = columnActions && columnActions.length > 0;
95
94
  var actionsButtonRef = (0, _react.useRef)(null);
95
+ var focusActionsButton = (0, _react.useCallback)(function () {
96
+ var _actionsButtonRef$cur;
97
+ (_actionsButtonRef$cur = actionsButtonRef.current) === null || _actionsButtonRef$cur === void 0 ? void 0 : _actionsButtonRef$cur.focus();
98
+ }, []);
99
+ var _useState3 = (0, _react.useState)(false),
100
+ _useState4 = _slicedToArray(_useState3, 2),
101
+ isActionsButtonFocused = _useState4[0],
102
+ setIsActionsButtonFocused = _useState4[1];
96
103
  var _useSortingUtils = useSortingUtils({
97
104
  sorting: sorting,
98
105
  id: id,
@@ -113,13 +120,16 @@ var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
113
120
  title: displayAsText || id,
114
121
  className: "euiDataGridHeaderCell__content"
115
122
  }, display || displayAsText || id), sortingArrow);
123
+ var classes = (0, _classnames2.default)((_classnames = {}, _defineProperty(_classnames, "euiDataGridHeaderCell--".concat(columnType), columnType), _defineProperty(_classnames, 'euiDataGridHeaderCell--hasColumnActions', showColumnActions), _defineProperty(_classnames, 'euiDataGridHeaderCell--isActionsPopoverOpen', isPopoverOpen), _classnames), displayHeaderCellProps === null || displayHeaderCellProps === void 0 ? void 0 : displayHeaderCellProps.className);
116
124
  return (0, _react2.jsx)(_data_grid_header_cell_wrapper.EuiDataGridHeaderCellWrapper, _extends({}, displayHeaderCellProps, {
117
125
  className: classes,
118
126
  id: id,
119
127
  index: index,
120
128
  width: width,
121
- headerIsInteractive: headerIsInteractive,
122
- "aria-sort": ariaSort
129
+ "aria-sort": ariaSort,
130
+ hasActionsPopover: showColumnActions,
131
+ isActionsButtonFocused: isActionsButtonFocused,
132
+ focusActionsButton: focusActionsButton
123
133
  }), column.isResizable !== false && width != null ? (0, _react2.jsx)(_data_grid_column_resizer.EuiDataGridColumnResizer, {
124
134
  columnId: id,
125
135
  columnWidth: width,
@@ -127,11 +137,16 @@ var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
127
137
  }) : null, !showColumnActions ? (0, _react2.jsx)(_react.default.Fragment, null, cellContent, sortingScreenReaderText && (0, _react2.jsx)(_accessibility2.EuiScreenReaderOnly, null, (0, _react2.jsx)("p", null, sortingScreenReaderText))) : (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)("button", {
128
138
  className: "euiDataGridHeaderCell__button",
129
139
  onClick: function onClick() {
130
- setFocusedCell([index, -1]);
131
- setIsPopoverOpen(function (isPopoverOpen) {
140
+ return setIsPopoverOpen(function (isPopoverOpen) {
132
141
  return !isPopoverOpen;
133
142
  });
134
143
  },
144
+ onFocus: function onFocus() {
145
+ return setIsActionsButtonFocused(true);
146
+ },
147
+ onBlur: function onBlur() {
148
+ return setIsActionsButtonFocused(false);
149
+ },
135
150
  "aria-describedby": "".concat(sortingAriaId, " ").concat(actionsAriaId),
136
151
  ref: actionsButtonRef,
137
152
  "data-test-subj": "dataGridHeaderCellActionButton-".concat(id)
@@ -145,8 +160,8 @@ var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
145
160
  focusTrapProps: {
146
161
  // We need to override the default EuiPopover `onClickOutside` since the anchor is separate from the actual button
147
162
  onClickOutside: function onClickOutside(event) {
148
- var _actionsButtonRef$cur;
149
- if (((_actionsButtonRef$cur = actionsButtonRef.current) === null || _actionsButtonRef$cur === void 0 ? void 0 : _actionsButtonRef$cur.contains(event.target)) === false) {
163
+ var _actionsButtonRef$cur2;
164
+ if (((_actionsButtonRef$cur2 = actionsButtonRef.current) === null || _actionsButtonRef$cur2 === void 0 ? void 0 : _actionsButtonRef$cur2.contains(event.target)) === false) {
150
165
  setIsPopoverOpen(false);
151
166
  }
152
167
  }