@elastic/eui 92.0.0 → 92.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 (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} +56 -209
  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 +125 -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} +56 -209
  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} +56 -209
  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} +56 -209
  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} +56 -209
  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
@@ -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
  }
@@ -8,11 +8,10 @@ exports.EuiDataGridHeaderCellWrapper = void 0;
8
8
  var _classnames = _interopRequireDefault(require("classnames"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
- var _tabbable = require("tabbable");
12
- var _services = require("../../../../services");
13
11
  var _focus = require("../../utils/focus");
12
+ var _focus_utils = require("../cell/focus_utils");
14
13
  var _react2 = require("@emotion/react");
15
- var _excluded = ["id", "index", "headerIsInteractive", "width", "className", "children"];
14
+ var _excluded = ["id", "index", "width", "className", "children", "hasActionsPopover", "isActionsButtonFocused", "focusActionsButton"];
16
15
  /*
17
16
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
18
17
  * or more contributor license agreements. Licensed under the Elastic License
@@ -20,6 +19,11 @@ var _excluded = ["id", "index", "headerIsInteractive", "width", "className", "ch
20
19
  * in compliance with, at your election, the Elastic License 2.0 or the Server
21
20
  * Side Public License, v 1.
22
21
  */
22
+ /**
23
+ * This is a wrapper that handles repeated concerns between control &
24
+ * standard header cells. Most of its shared logic is around focus state/UX,
25
+ * but it also DRY's out certain class/data-test-subj/style attributes
26
+ */
23
27
  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); }
24
28
  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; }
25
29
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -32,118 +36,59 @@ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefine
32
36
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
37
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
34
38
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
35
- /**
36
- * This is a wrapper that handles repeated concerns between control &
37
- * standard header cells. Most of its shared logic is around focus state/UX,
38
- * but it also DRY's out certain class/data-test-subj/style attributes
39
- */
40
39
  var EuiDataGridHeaderCellWrapper = function EuiDataGridHeaderCellWrapper(_ref) {
41
40
  var id = _ref.id,
42
41
  index = _ref.index,
43
- headerIsInteractive = _ref.headerIsInteractive,
44
42
  width = _ref.width,
45
43
  className = _ref.className,
46
44
  children = _ref.children,
45
+ hasActionsPopover = _ref.hasActionsPopover,
46
+ isActionsButtonFocused = _ref.isActionsButtonFocused,
47
+ focusActionsButton = _ref.focusActionsButton,
47
48
  rest = _objectWithoutProperties(_ref, _excluded);
48
49
  var classes = (0, _classnames.default)('euiDataGridHeaderCell', className);
50
+
51
+ // Must be a state and not a ref to trigger a HandleInteractiveChildren rerender
52
+ var _useState = (0, _react.useState)(null),
53
+ _useState2 = _slicedToArray(_useState, 2),
54
+ headerEl = _useState2[0],
55
+ setHeaderEl = _useState2[1];
49
56
  var _useContext = (0, _react.useContext)(_focus.DataGridFocusContext),
50
57
  setFocusedCell = _useContext.setFocusedCell,
51
58
  onFocusUpdate = _useContext.onFocusUpdate;
52
- var _useState = (0, _react.useState)(false),
53
- _useState2 = _slicedToArray(_useState, 2),
54
- isFocused = _useState2[0],
55
- setIsFocused = _useState2[1];
59
+ var updateCellFocusContext = (0, _react.useCallback)(function () {
60
+ setFocusedCell([index, -1]);
61
+ }, [index, setFocusedCell]);
62
+ var _useState3 = (0, _react.useState)(false),
63
+ _useState4 = _slicedToArray(_useState3, 2),
64
+ isFocused = _useState4[0],
65
+ setIsFocused = _useState4[1];
56
66
  (0, _react.useEffect)(function () {
57
67
  onFocusUpdate([index, -1], function (isFocused) {
58
68
  setIsFocused(isFocused);
59
69
  });
60
70
  }, [index, onFocusUpdate]);
61
- var headerRef = (0, _react.useRef)(null);
62
- var _useState3 = (0, _react.useState)(false),
63
- _useState4 = _slicedToArray(_useState3, 2),
64
- isCellEntered = _useState4[0],
65
- setIsCellEntered = _useState4[1];
66
- (0, _react.useEffect)(function () {
67
- var headerNode = headerRef.current;
68
- if (isCellEntered) {
69
- enableAndFocusInteractives(headerNode);
70
- } else {
71
- disableInteractives(headerNode);
72
- }
73
- }, [isCellEntered]);
74
71
  (0, _react.useEffect)(function () {
75
- var headerNode = headerRef.current;
76
- if (isFocused) {
77
- var interactives = headerNode.querySelectorAll('[data-euigrid-tab-managed]');
78
- if (interactives.length === 1) {
79
- setIsCellEntered(true);
80
- } else {
81
- headerNode.focus();
72
+ if (isFocused && headerEl) {
73
+ // Only focus the cell if not already focused on something in the cell
74
+ if (!headerEl.contains(document.activeElement)) {
75
+ headerEl.focus();
82
76
  }
83
- } else {
84
- setIsCellEntered(false);
85
77
  }
78
+ }, [isFocused, headerEl]);
86
79
 
87
- // focusin bubbles while focus does not, and this needs to react to children gaining focus
88
- var onFocusIn = function onFocusIn(e) {
89
- if (!headerIsInteractive) {
90
- // header is not interactive, avoid focusing
91
- requestAnimationFrame(function () {
92
- return headerNode.blur();
93
- });
94
- e.preventDefault();
95
- return false;
96
- } else {
97
- // take the focus
98
- if (isFocused === false) {
99
- setFocusedCell([index, -1]);
100
- } else {
101
- // this cell already had the grid's focus, so re-enable and focus interactives
102
- setIsCellEntered(true);
103
- }
104
- }
105
- };
106
-
107
- // focusout bubbles while blur does not, and this needs to react to the children losing focus
108
- var onFocusOut = function onFocusOut() {
109
- // wait for the next element to receive focus, then update interactives' state
110
- requestAnimationFrame(function () {
111
- if (!headerNode.contains(document.activeElement)) {
112
- setIsCellEntered(false);
113
- }
114
- });
115
- };
116
- var onKeyUp = function onKeyUp(event) {
117
- switch (event.key) {
118
- case _services.keys.ENTER:
119
- {
120
- event.preventDefault();
121
- setIsCellEntered(true);
122
- break;
123
- }
124
- case _services.keys.ESCAPE:
125
- {
126
- event.preventDefault();
127
- // move focus to cell
128
- setIsCellEntered(false);
129
- headerNode.focus();
130
- break;
131
- }
132
- }
133
- };
134
- headerNode.addEventListener('focusin', onFocusIn);
135
- headerNode.addEventListener('focusout', onFocusOut);
136
- headerNode.addEventListener('keyup', onKeyUp);
137
- return function () {
138
- headerNode.removeEventListener('focusin', onFocusIn);
139
- headerNode.removeEventListener('focusout', onFocusOut);
140
- headerNode.removeEventListener('keyup', onKeyUp);
141
- };
142
- }, [headerIsInteractive, isFocused, index, setFocusedCell]);
80
+ // For cell headers with actions, auto-focus into the button instead of the cell wrapper div
81
+ // The button text is significantly more useful to screen readers (e.g. contains sort order & hints)
82
+ var onFocus = (0, _react.useCallback)(function (e) {
83
+ if (hasActionsPopover && e.target === headerEl) {
84
+ focusActionsButton === null || focusActionsButton === void 0 ? void 0 : focusActionsButton();
85
+ }
86
+ }, [hasActionsPopover, focusActionsButton, headerEl]);
143
87
  return (0, _react2.jsx)("div", _extends({
144
88
  role: "columnheader",
145
- ref: headerRef,
146
- tabIndex: isFocused && !isCellEntered ? 0 : -1,
89
+ ref: setHeaderEl,
90
+ tabIndex: isFocused && !isActionsButtonFocused ? 0 : -1,
91
+ onFocus: onFocus,
147
92
  className: classes,
148
93
  "data-test-subj": "dataGridHeaderCell-".concat(id),
149
94
  "data-gridcell-column-id": id,
@@ -153,36 +98,19 @@ var EuiDataGridHeaderCellWrapper = function EuiDataGridHeaderCellWrapper(_ref) {
153
98
  style: width != null ? {
154
99
  width: "".concat(width, "px")
155
100
  } : {}
156
- }, rest), children);
101
+ }, rest), (0, _react2.jsx)(_focus_utils.HandleInteractiveChildren, {
102
+ cellEl: headerEl,
103
+ updateCellFocusContext: updateCellFocusContext,
104
+ renderFocusTrap: !hasActionsPopover
105
+ }, children));
157
106
  };
158
-
159
- /**
160
- * Utility fns for managing child interactive tabIndex state
161
- */
162
107
  exports.EuiDataGridHeaderCellWrapper = EuiDataGridHeaderCellWrapper;
163
108
  EuiDataGridHeaderCellWrapper.propTypes = {
164
109
  id: _propTypes.default.string.isRequired,
165
110
  index: _propTypes.default.number.isRequired,
166
- headerIsInteractive: _propTypes.default.bool.isRequired,
167
111
  width: _propTypes.default.oneOfType([_propTypes.default.number.isRequired, _propTypes.default.oneOf([null])]),
168
- className: _propTypes.default.string
169
- };
170
- var disableInteractives = function disableInteractives(headerNode) {
171
- var tabbables = (0, _tabbable.tabbable)(headerNode);
172
- if (tabbables.length > 1) {
173
- console.warn("EuiDataGridHeaderCell expects at most 1 tabbable element, ".concat(tabbables.length, " found instead"));
174
- }
175
- tabbables.forEach(function (element) {
176
- element.setAttribute('data-euigrid-tab-managed', 'true');
177
- element.setAttribute('tabIndex', '-1');
178
- });
179
- };
180
- var enableAndFocusInteractives = function enableAndFocusInteractives(headerNode) {
181
- var interactiveElements = headerNode.querySelectorAll('[data-euigrid-tab-managed]');
182
- interactiveElements.forEach(function (element, i) {
183
- element.setAttribute('tabIndex', '0');
184
- if (i === 0) {
185
- element.focus();
186
- }
187
- });
112
+ className: _propTypes.default.string,
113
+ hasActionsPopover: _propTypes.default.bool,
114
+ isActionsButtonFocused: _propTypes.default.bool,
115
+ focusActionsButton: _propTypes.default.func
188
116
  };
@@ -12,7 +12,7 @@ var _data_grid_control_header_cell = require("./data_grid_control_header_cell");
12
12
  var _data_grid_header_cell = require("./data_grid_header_cell");
13
13
  var _data_grid_types = require("../../data_grid_types");
14
14
  var _react2 = require("@emotion/react");
15
- var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "schema", "schemaDetectors", "columnWidths", "defaultColumnWidth", "className", "setColumnWidth", "setVisibleColumns", "switchColumnPos", "headerIsInteractive", "data-test-subj"];
15
+ var _excluded = ["leadingControlColumns", "trailingControlColumns", "columns", "schema", "schemaDetectors", "columnWidths", "defaultColumnWidth", "className", "setColumnWidth", "setVisibleColumns", "switchColumnPos", "data-test-subj"];
16
16
  /*
17
17
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
18
18
  * or more contributor license agreements. Licensed under the Elastic License
@@ -40,7 +40,6 @@ var EuiDataGridHeaderRow = /*#__PURE__*/(0, _react.forwardRef)(function (props,
40
40
  setColumnWidth = props.setColumnWidth,
41
41
  setVisibleColumns = props.setVisibleColumns,
42
42
  switchColumnPos = props.switchColumnPos,
43
- headerIsInteractive = props.headerIsInteractive,
44
43
  _dataTestSubj = props['data-test-subj'],
45
44
  rest = _objectWithoutProperties(props, _excluded);
46
45
  var classes = (0, _classnames.default)('euiDataGridHeader', className);
@@ -54,8 +53,7 @@ var EuiDataGridHeaderRow = /*#__PURE__*/(0, _react.forwardRef)(function (props,
54
53
  return (0, _react2.jsx)(_data_grid_control_header_cell.EuiDataGridControlHeaderCell, {
55
54
  key: controlColumn.id,
56
55
  index: index,
57
- controlColumn: controlColumn,
58
- headerIsInteractive: headerIsInteractive
56
+ controlColumn: controlColumn
59
57
  });
60
58
  }), columns.map(function (column, index) {
61
59
  return (0, _react2.jsx)(_data_grid_header_cell.EuiDataGridHeaderCell, {
@@ -69,15 +67,13 @@ var EuiDataGridHeaderRow = /*#__PURE__*/(0, _react.forwardRef)(function (props,
69
67
  setColumnWidth: setColumnWidth,
70
68
  setVisibleColumns: setVisibleColumns,
71
69
  switchColumnPos: switchColumnPos,
72
- defaultColumnWidth: defaultColumnWidth,
73
- headerIsInteractive: headerIsInteractive
70
+ defaultColumnWidth: defaultColumnWidth
74
71
  });
75
72
  }), trailingControlColumns.map(function (controlColumn, index) {
76
73
  return (0, _react2.jsx)(_data_grid_control_header_cell.EuiDataGridControlHeaderCell, {
77
74
  key: controlColumn.id,
78
75
  index: index + leadingControlColumns.length + columns.length,
79
- controlColumn: controlColumn,
80
- headerIsInteractive: headerIsInteractive
76
+ controlColumn: controlColumn
81
77
  });
82
78
  }));
83
79
  });
@@ -617,7 +613,6 @@ EuiDataGridHeaderRow.propTypes = {
617
613
  defaultColumnWidth: _propTypes.default.oneOfType([_propTypes.default.number.isRequired, _propTypes.default.oneOf([null])]),
618
614
  setColumnWidth: _propTypes.default.func.isRequired,
619
615
  setVisibleColumns: _propTypes.default.func.isRequired,
620
- switchColumnPos: _propTypes.default.func.isRequired,
621
- headerIsInteractive: _propTypes.default.bool.isRequired
616
+ switchColumnPos: _propTypes.default.func.isRequired
622
617
  };
623
618
  EuiDataGridHeaderRow.displayName = 'EuiDataGridHeaderRow';