@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.
- package/dist/eui_theme_dark.css +3 -18
- package/dist/eui_theme_dark.min.css +1 -1
- package/dist/eui_theme_light.css +3 -18
- package/dist/eui_theme_light.min.css +1 -1
- package/es/components/aspect_ratio/aspect_ratio.js +1 -1
- package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
- package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
- package/es/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +56 -209
- package/es/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
- package/es/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
- package/es/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
- package/es/components/datagrid/body/cell/focus_utils.js +166 -0
- package/es/components/datagrid/body/cell/index.js +11 -0
- package/es/components/datagrid/body/data_grid_body.js +0 -2
- package/es/components/datagrid/body/data_grid_body_custom.js +1 -7
- package/es/components/datagrid/body/data_grid_body_virtualized.js +1 -7
- package/es/components/datagrid/body/footer/data_grid_footer_row.js +1 -2
- package/es/components/datagrid/body/header/data_grid_control_header_cell.js +3 -6
- package/es/components/datagrid/body/header/data_grid_header_cell.js +27 -12
- package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +45 -116
- package/es/components/datagrid/body/header/data_grid_header_row.js +5 -10
- package/es/components/datagrid/body/header/use_data_grid_header.js +3 -14
- package/es/components/datagrid/data_grid.js +2 -12
- package/es/components/datagrid/utils/focus.js +25 -54
- package/es/components/datagrid/utils/scrolling.js +1 -1
- package/es/components/flyout/flyout_resizable.js +10 -10
- package/es/components/flyout/flyout_resizable.styles.js +12 -6
- package/es/components/resizable_container/helpers.js +5 -6
- package/es/components/resizable_container/resizable_button.js +13 -4
- package/es/components/resizable_container/resizable_button.styles.js +18 -8
- package/es/components/resizable_container/resizable_container.js +28 -22
- package/es/components/steps/step_number.styles.js +6 -7
- package/es/components/tree_view/tree_view.js +9 -2
- package/eui.d.ts +125 -90
- package/i18ntokens.json +108 -72
- package/lib/components/aspect_ratio/aspect_ratio.js +1 -1
- package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
- package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
- package/lib/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +56 -209
- package/lib/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
- package/lib/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
- package/lib/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
- package/lib/components/datagrid/body/cell/focus_utils.js +174 -0
- package/lib/components/datagrid/body/cell/index.js +32 -0
- package/lib/components/datagrid/body/data_grid_body.js +0 -2
- package/lib/components/datagrid/body/data_grid_body_custom.js +2 -8
- package/lib/components/datagrid/body/data_grid_body_virtualized.js +2 -8
- package/lib/components/datagrid/body/footer/data_grid_footer_row.js +5 -6
- package/lib/components/datagrid/body/header/data_grid_control_header_cell.js +3 -6
- package/lib/components/datagrid/body/header/data_grid_header_cell.js +35 -20
- package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +47 -119
- package/lib/components/datagrid/body/header/data_grid_header_row.js +5 -10
- package/lib/components/datagrid/body/header/use_data_grid_header.js +10 -24
- package/lib/components/datagrid/data_grid.js +4 -14
- package/lib/components/datagrid/utils/focus.js +26 -56
- package/lib/components/datagrid/utils/scrolling.js +2 -2
- package/lib/components/flyout/flyout_resizable.js +10 -10
- package/lib/components/flyout/flyout_resizable.styles.js +12 -6
- package/lib/components/resizable_container/helpers.js +7 -7
- package/lib/components/resizable_container/resizable_button.js +13 -4
- package/lib/components/resizable_container/resizable_button.styles.js +18 -8
- package/lib/components/resizable_container/resizable_container.js +28 -22
- package/lib/components/steps/step_number.styles.js +6 -7
- package/lib/components/tree_view/tree_view.js +9 -2
- package/optimize/es/components/aspect_ratio/aspect_ratio.js +1 -1
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
- package/optimize/es/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +56 -209
- package/optimize/es/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
- package/optimize/es/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
- package/optimize/es/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
- package/optimize/es/components/datagrid/body/cell/focus_utils.js +153 -0
- package/optimize/es/components/datagrid/body/cell/index.js +11 -0
- package/optimize/es/components/datagrid/body/data_grid_body_custom.js +1 -5
- package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +1 -5
- package/optimize/es/components/datagrid/body/footer/data_grid_footer_row.js +1 -2
- package/optimize/es/components/datagrid/body/header/data_grid_control_header_cell.js +2 -4
- package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +25 -10
- package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +41 -115
- package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +4 -8
- package/optimize/es/components/datagrid/body/header/use_data_grid_header.js +3 -13
- package/optimize/es/components/datagrid/data_grid.js +2 -12
- package/optimize/es/components/datagrid/utils/focus.js +25 -54
- package/optimize/es/components/datagrid/utils/scrolling.js +1 -1
- package/optimize/es/components/flyout/flyout_resizable.js +10 -10
- package/optimize/es/components/flyout/flyout_resizable.styles.js +12 -6
- package/optimize/es/components/resizable_container/helpers.js +5 -6
- package/optimize/es/components/resizable_container/resizable_button.js +5 -2
- package/optimize/es/components/resizable_container/resizable_button.styles.js +18 -8
- package/optimize/es/components/resizable_container/resizable_container.js +28 -22
- package/optimize/es/components/steps/step_number.styles.js +6 -7
- package/optimize/es/components/tree_view/tree_view.js +9 -2
- package/optimize/lib/components/aspect_ratio/aspect_ratio.js +1 -1
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
- package/optimize/lib/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +56 -209
- package/optimize/lib/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
- package/optimize/lib/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
- package/optimize/lib/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
- package/optimize/lib/components/datagrid/body/cell/focus_utils.js +163 -0
- package/optimize/lib/components/datagrid/body/cell/index.js +32 -0
- package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +2 -6
- package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +2 -6
- package/optimize/lib/components/datagrid/body/footer/data_grid_footer_row.js +5 -6
- package/optimize/lib/components/datagrid/body/header/data_grid_control_header_cell.js +2 -4
- package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +25 -10
- package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +41 -115
- package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +4 -8
- package/optimize/lib/components/datagrid/body/header/use_data_grid_header.js +4 -14
- package/optimize/lib/components/datagrid/data_grid.js +4 -14
- package/optimize/lib/components/datagrid/utils/focus.js +26 -56
- package/optimize/lib/components/datagrid/utils/scrolling.js +2 -2
- package/optimize/lib/components/flyout/flyout_resizable.js +10 -10
- package/optimize/lib/components/flyout/flyout_resizable.styles.js +12 -6
- package/optimize/lib/components/resizable_container/helpers.js +7 -7
- package/optimize/lib/components/resizable_container/resizable_button.js +5 -2
- package/optimize/lib/components/resizable_container/resizable_button.styles.js +18 -8
- package/optimize/lib/components/resizable_container/resizable_container.js +28 -22
- package/optimize/lib/components/steps/step_number.styles.js +6 -7
- package/optimize/lib/components/tree_view/tree_view.js +9 -2
- package/package.json +1 -1
- package/src/components/datagrid/body/header/_data_grid_header_row.scss +8 -7
- package/test-env/components/aspect_ratio/aspect_ratio.js +1 -1
- package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.js +7 -3
- package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +4 -4
- package/test-env/components/datagrid/body/{data_grid_cell.js → cell/data_grid_cell.js} +56 -209
- package/test-env/components/datagrid/body/{data_grid_cell_actions.js → cell/data_grid_cell_actions.js} +5 -5
- package/test-env/components/datagrid/body/{data_grid_cell_popover.js → cell/data_grid_cell_popover.js} +4 -4
- package/test-env/components/datagrid/body/{data_grid_cell_wrapper.js → cell/data_grid_cell_wrapper.js} +1 -1
- package/test-env/components/datagrid/body/cell/focus_utils.js +172 -0
- package/test-env/components/datagrid/body/cell/index.js +32 -0
- package/test-env/components/datagrid/body/data_grid_body.js +0 -2
- package/test-env/components/datagrid/body/data_grid_body_custom.js +2 -8
- package/test-env/components/datagrid/body/data_grid_body_virtualized.js +2 -8
- package/test-env/components/datagrid/body/footer/data_grid_footer_row.js +5 -6
- package/test-env/components/datagrid/body/header/data_grid_control_header_cell.js +3 -6
- package/test-env/components/datagrid/body/header/data_grid_header_cell.js +25 -10
- package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.js +44 -116
- package/test-env/components/datagrid/body/header/data_grid_header_row.js +5 -10
- package/test-env/components/datagrid/body/header/use_data_grid_header.js +4 -14
- package/test-env/components/datagrid/data_grid.js +4 -14
- package/test-env/components/datagrid/utils/focus.js +26 -56
- package/test-env/components/datagrid/utils/scrolling.js +2 -2
- package/test-env/components/flyout/flyout_resizable.js +10 -10
- package/test-env/components/flyout/flyout_resizable.styles.js +12 -6
- package/test-env/components/resizable_container/helpers.js +7 -7
- package/test-env/components/resizable_container/resizable_button.js +13 -4
- package/test-env/components/resizable_container/resizable_button.styles.js +18 -8
- package/test-env/components/resizable_container/resizable_container.js +28 -22
- package/test-env/components/steps/step_number.styles.js +6 -7
- package/test-env/components/tree_view/tree_view.js +9 -2
- package/es/components/datagrid/body/header/header_is_interactive.js +0 -58
- package/lib/components/datagrid/body/header/header_is_interactive.js +0 -63
- package/optimize/es/components/datagrid/body/header/header_is_interactive.js +0 -53
- package/optimize/lib/components/datagrid/body/header/header_is_interactive.js +0 -61
- 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
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
122
|
-
|
|
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
|
-
|
|
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$
|
|
149
|
-
if (((_actionsButtonRef$
|
|
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", "
|
|
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
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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:
|
|
146
|
-
tabIndex: isFocused && !
|
|
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),
|
|
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
|
-
|
|
171
|
-
|
|
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", "
|
|
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';
|