@elastic/eui 116.2.0 → 116.3.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/es/components/avatar/avatar.js +14 -5
- package/es/components/banner/banner.js +202 -0
- package/es/components/banner/banner.styles.js +76 -0
- package/es/components/banner/index.js +9 -0
- package/es/components/basic_table/basic_table.js +21 -10
- package/es/components/basic_table/collapsed_item_actions.js +5 -4
- package/es/components/basic_table/default_item_action.js +3 -5
- package/es/components/breadcrumbs/_breadcrumb_content.js +29 -19
- package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
- package/es/components/context_menu/context_menu_panel_title.js +0 -12
- package/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
- package/es/components/datagrid/controls/display_selector.js +2 -1
- package/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
- package/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
- package/es/components/date_picker/react-datepicker/src/index.js +1 -5
- package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
- package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
- package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
- package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
- package/es/components/form/field_password/field_password.js +6 -3
- package/es/components/header/header.a11y.js +1 -1
- package/es/components/index.js +1 -0
- package/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
- package/es/components/pagination/pagination_button_arrow.js +6 -2
- package/es/components/panel/panel.styles.js +4 -4
- package/es/components/panel/split_panel/split_panel.styles.js +1 -1
- package/es/components/search_bar/search_bar.js +20 -16
- package/es/components/search_bar/search_box.js +4 -2
- package/es/components/selectable/selectable_list/selectable_list.js +1 -1
- package/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
- package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
- package/es/components/table/sticky_header/context.js +32 -0
- package/es/components/table/sticky_header/index.js +10 -0
- package/es/components/table/sticky_header/sticky_header.js +151 -0
- package/es/components/table/sticky_header/sticky_header.styles.js +43 -0
- package/es/components/table/store/provider.js +37 -0
- package/es/components/table/store/store.js +82 -0
- package/es/components/table/table.js +28 -3
- package/es/components/table/table.styles.js +4 -4
- package/es/components/table/table_header_cell.js +116 -48
- package/es/components/table/table_header_cell_checkbox.js +59 -25
- package/es/components/text_truncate/text_truncate.js +8 -3
- package/es/components/tool_tip/tool_tip.js +1 -1
- package/es/components/tool_tip/tool_tip.styles.js +14 -5
- package/es/utils/publisher.js +53 -0
- package/eui.d.ts +1266 -975
- package/i18ntokens.json +2390 -2372
- package/lib/components/avatar/avatar.js +14 -5
- package/lib/components/banner/banner.js +211 -0
- package/lib/components/banner/banner.styles.js +80 -0
- package/lib/components/banner/index.js +12 -0
- package/lib/components/basic_table/basic_table.js +21 -10
- package/lib/components/basic_table/collapsed_item_actions.js +5 -4
- package/lib/components/basic_table/default_item_action.js +3 -5
- package/lib/components/breadcrumbs/_breadcrumb_content.js +29 -19
- package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
- package/lib/components/context_menu/context_menu_panel_title.js +0 -12
- package/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
- package/lib/components/datagrid/controls/display_selector.js +2 -1
- package/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
- package/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
- package/lib/components/date_picker/react-datepicker/src/index.js +0 -4
- package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
- package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
- package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
- package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
- package/lib/components/form/field_password/field_password.js +6 -3
- package/lib/components/header/header.a11y.js +1 -1
- package/lib/components/index.js +11 -0
- package/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
- package/lib/components/pagination/pagination_button_arrow.js +6 -2
- package/lib/components/panel/panel.styles.js +4 -4
- package/lib/components/panel/split_panel/split_panel.styles.js +1 -1
- package/lib/components/search_bar/search_bar.js +20 -16
- package/lib/components/search_bar/search_box.js +4 -2
- package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
- package/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
- package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
- package/lib/components/table/sticky_header/context.js +41 -0
- package/lib/components/table/sticky_header/index.js +19 -0
- package/lib/components/table/sticky_header/sticky_header.js +156 -0
- package/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
- package/lib/components/table/store/provider.js +46 -0
- package/lib/components/table/store/store.js +87 -0
- package/lib/components/table/table.js +28 -3
- package/lib/components/table/table.styles.js +4 -4
- package/lib/components/table/table_header_cell.js +118 -48
- package/lib/components/table/table_header_cell_checkbox.js +62 -25
- package/lib/components/text_truncate/text_truncate.js +8 -3
- package/lib/components/tool_tip/tool_tip.js +1 -1
- package/lib/components/tool_tip/tool_tip.styles.js +14 -5
- package/lib/utils/publisher.js +59 -0
- package/optimize/es/components/avatar/avatar.js +12 -4
- package/optimize/es/components/banner/banner.js +112 -0
- package/optimize/es/components/banner/banner.styles.js +76 -0
- package/optimize/es/components/banner/index.js +9 -0
- package/optimize/es/components/basic_table/basic_table.js +21 -10
- package/optimize/es/components/basic_table/collapsed_item_actions.js +5 -4
- package/optimize/es/components/basic_table/default_item_action.js +3 -5
- package/optimize/es/components/breadcrumbs/_breadcrumb_content.js +27 -18
- package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
- package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
- package/optimize/es/components/datagrid/controls/display_selector.js +2 -1
- package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
- package/optimize/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
- package/optimize/es/components/date_picker/react-datepicker/src/index.js +1 -5
- package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
- package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
- package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
- package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
- package/optimize/es/components/form/field_password/field_password.js +6 -3
- package/optimize/es/components/header/header.a11y.js +1 -1
- package/optimize/es/components/index.js +1 -0
- package/optimize/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
- package/optimize/es/components/pagination/pagination_button_arrow.js +6 -2
- package/optimize/es/components/panel/panel.styles.js +4 -4
- package/optimize/es/components/panel/split_panel/split_panel.styles.js +1 -1
- package/optimize/es/components/search_bar/search_bar.js +20 -16
- package/optimize/es/components/search_bar/search_box.js +4 -2
- package/optimize/es/components/selectable/selectable_list/selectable_list.js +1 -1
- package/optimize/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
- package/optimize/es/components/table/sticky_header/context.js +32 -0
- package/optimize/es/components/table/sticky_header/index.js +10 -0
- package/optimize/es/components/table/sticky_header/sticky_header.js +146 -0
- package/optimize/es/components/table/sticky_header/sticky_header.styles.js +43 -0
- package/optimize/es/components/table/store/provider.js +37 -0
- package/optimize/es/components/table/store/store.js +82 -0
- package/optimize/es/components/table/table.js +15 -3
- package/optimize/es/components/table/table.styles.js +4 -4
- package/optimize/es/components/table/table_header_cell.js +116 -48
- package/optimize/es/components/table/table_header_cell_checkbox.js +59 -25
- package/optimize/es/components/text_truncate/text_truncate.js +8 -3
- package/optimize/es/components/tool_tip/tool_tip.js +1 -1
- package/optimize/es/components/tool_tip/tool_tip.styles.js +14 -5
- package/optimize/es/utils/publisher.js +53 -0
- package/optimize/lib/components/avatar/avatar.js +12 -4
- package/optimize/lib/components/banner/banner.js +121 -0
- package/optimize/lib/components/banner/banner.styles.js +80 -0
- package/optimize/lib/components/banner/index.js +12 -0
- package/optimize/lib/components/basic_table/basic_table.js +21 -10
- package/optimize/lib/components/basic_table/collapsed_item_actions.js +5 -4
- package/optimize/lib/components/basic_table/default_item_action.js +3 -5
- package/optimize/lib/components/breadcrumbs/_breadcrumb_content.js +27 -18
- package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
- package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
- package/optimize/lib/components/datagrid/controls/display_selector.js +2 -1
- package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
- package/optimize/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
- package/optimize/lib/components/date_picker/react-datepicker/src/index.js +0 -4
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
- package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
- package/optimize/lib/components/form/field_password/field_password.js +6 -3
- package/optimize/lib/components/header/header.a11y.js +1 -1
- package/optimize/lib/components/index.js +11 -0
- package/optimize/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
- package/optimize/lib/components/pagination/pagination_button_arrow.js +6 -2
- package/optimize/lib/components/panel/panel.styles.js +4 -4
- package/optimize/lib/components/panel/split_panel/split_panel.styles.js +1 -1
- package/optimize/lib/components/search_bar/search_bar.js +20 -16
- package/optimize/lib/components/search_bar/search_box.js +4 -2
- package/optimize/lib/components/selectable/selectable_list/selectable_list.js +1 -1
- package/optimize/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
- package/optimize/lib/components/table/sticky_header/context.js +41 -0
- package/optimize/lib/components/table/sticky_header/index.js +19 -0
- package/optimize/lib/components/table/sticky_header/sticky_header.js +156 -0
- package/optimize/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
- package/optimize/lib/components/table/store/provider.js +46 -0
- package/optimize/lib/components/table/store/store.js +87 -0
- package/optimize/lib/components/table/table.js +15 -3
- package/optimize/lib/components/table/table.styles.js +4 -4
- package/optimize/lib/components/table/table_header_cell.js +119 -48
- package/optimize/lib/components/table/table_header_cell_checkbox.js +62 -25
- package/optimize/lib/components/text_truncate/text_truncate.js +8 -3
- package/optimize/lib/components/tool_tip/tool_tip.js +1 -1
- package/optimize/lib/components/tool_tip/tool_tip.styles.js +14 -5
- package/optimize/lib/utils/publisher.js +59 -0
- package/package.json +2 -2
- package/test-env/components/avatar/avatar.js +14 -5
- package/test-env/components/banner/banner.js +210 -0
- package/test-env/components/banner/banner.styles.js +80 -0
- package/test-env/components/banner/index.js +12 -0
- package/test-env/components/basic_table/basic_table.js +21 -10
- package/test-env/components/basic_table/collapsed_item_actions.js +5 -4
- package/test-env/components/basic_table/default_item_action.js +3 -5
- package/test-env/components/breadcrumbs/_breadcrumb_content.js +29 -19
- package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
- package/test-env/components/context_menu/context_menu_panel_title.js +0 -12
- package/test-env/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
- package/test-env/components/datagrid/controls/display_selector.js +2 -1
- package/test-env/components/datagrid/controls/keyboard_shortcuts.js +2 -1
- package/test-env/components/date_picker/auto_refresh/auto_refresh.js +7 -4
- package/test-env/components/date_picker/react-datepicker/src/index.js +0 -4
- package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
- package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
- package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
- package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
- package/test-env/components/form/field_password/field_password.js +6 -3
- package/test-env/components/header/header.a11y.js +1 -1
- package/test-env/components/index.js +11 -0
- package/test-env/components/markdown_editor/markdown_editor_help_button.js +7 -4
- package/test-env/components/pagination/pagination_button_arrow.js +6 -2
- package/test-env/components/panel/panel.styles.js +4 -4
- package/test-env/components/panel/split_panel/split_panel.styles.js +1 -1
- package/test-env/components/search_bar/search_bar.js +20 -16
- package/test-env/components/search_bar/search_box.js +4 -2
- package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
- package/test-env/components/selectable/selectable_list/selectable_list.styles.js +1 -1
- package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
- package/test-env/components/table/sticky_header/context.js +41 -0
- package/test-env/components/table/sticky_header/index.js +19 -0
- package/test-env/components/table/sticky_header/sticky_header.js +156 -0
- package/test-env/components/table/sticky_header/sticky_header.styles.js +47 -0
- package/test-env/components/table/store/provider.js +46 -0
- package/test-env/components/table/store/store.js +87 -0
- package/test-env/components/table/table.js +28 -3
- package/test-env/components/table/table.styles.js +4 -4
- package/test-env/components/table/table_header_cell.js +119 -48
- package/test-env/components/table/table_header_cell_checkbox.js +62 -25
- package/test-env/components/text_truncate/text_truncate.js +8 -3
- package/test-env/components/tool_tip/tool_tip.js +1 -1
- package/test-env/components/tool_tip/tool_tip.styles.js +14 -5
- package/test-env/utils/publisher.js +59 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.EuiTableStickyHeader = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _provider = require("../store/provider");
|
|
10
|
+
var _table_header = require("../table_header");
|
|
11
|
+
var _context = require("./context");
|
|
12
|
+
var _services = require("../../../services");
|
|
13
|
+
var _table = require("../table.styles");
|
|
14
|
+
var _sticky_header = require("./sticky_header.styles");
|
|
15
|
+
var _global_styling = require("../../../global_styling");
|
|
16
|
+
var _const = require("../const");
|
|
17
|
+
var _react2 = require("@emotion/react");
|
|
18
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
19
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
20
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
21
|
+
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."); }
|
|
22
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
23
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
24
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
25
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /*
|
|
26
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
27
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
28
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
29
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
30
|
+
* Side Public License, v 1.
|
|
31
|
+
*/ /**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
var EuiTableStickyHeader = exports.EuiTableStickyHeader = function EuiTableStickyHeader(_ref) {
|
|
35
|
+
var tableRef = _ref.tableRef,
|
|
36
|
+
tableWrapperRef = _ref.tableWrapperRef,
|
|
37
|
+
compressed = _ref.compressed,
|
|
38
|
+
scrollableInline = _ref.scrollableInline,
|
|
39
|
+
isResponsive = _ref.isResponsive;
|
|
40
|
+
var store = (0, _provider.useEuiTableColumnDataStore)();
|
|
41
|
+
var columnElements = (0, _react.useRef)(new Map());
|
|
42
|
+
var stickyTableWrapperRef = (0, _react.useRef)(null);
|
|
43
|
+
var stickyTableRef = (0, _react.useRef)(null);
|
|
44
|
+
var _useState = (0, _react.useState)(function () {
|
|
45
|
+
return Array.from(store.getColumns().entries());
|
|
46
|
+
}),
|
|
47
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
48
|
+
columns = _useState2[0],
|
|
49
|
+
setColumns = _useState2[1];
|
|
50
|
+
var originalStyles = (0, _services.useEuiMemoizedStyles)(_table.euiTableStyles);
|
|
51
|
+
var styles = (0, _services.useEuiMemoizedStyles)(_sticky_header.euiTableStickyHeaderStyles);
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Get a callback ref to handle the column element ref
|
|
55
|
+
*/
|
|
56
|
+
var getColumnRef = (0, _react.useCallback)(function (id) {
|
|
57
|
+
return function (element) {
|
|
58
|
+
if (element) {
|
|
59
|
+
columnElements.current.set(id, element);
|
|
60
|
+
} else {
|
|
61
|
+
columnElements.current.delete(id);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}, []);
|
|
65
|
+
(0, _react.useEffect)(function () {
|
|
66
|
+
var unsubscribe = store.subscribe(function (columns) {
|
|
67
|
+
setColumns(Array.from(columns.entries()));
|
|
68
|
+
});
|
|
69
|
+
var unsubscribeColumnWidths = store.subscribeToColumnWidths(function (columns) {
|
|
70
|
+
columns.forEach(function (width, name) {
|
|
71
|
+
var element = columnElements.current.get(name);
|
|
72
|
+
if (element) {
|
|
73
|
+
element.style.width = "".concat(width, "px");
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
return function () {
|
|
78
|
+
unsubscribe();
|
|
79
|
+
unsubscribeColumnWidths();
|
|
80
|
+
};
|
|
81
|
+
}, [store]);
|
|
82
|
+
|
|
83
|
+
// When columns change, apply column widths after render
|
|
84
|
+
(0, _react.useLayoutEffect)(function () {
|
|
85
|
+
store.getColumnWidths().forEach(function (width, name) {
|
|
86
|
+
var element = columnElements.current.get(name);
|
|
87
|
+
if (element) {
|
|
88
|
+
element.style.width = "".concat(width, "px");
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}, [store, columns]);
|
|
92
|
+
(0, _react.useEffect)(function () {
|
|
93
|
+
if (!scrollableInline || !tableWrapperRef.current || !stickyTableRef.current || !tableRef.current) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
var tableWrapper = tableWrapperRef.current;
|
|
97
|
+
var handleScroll = function handleScroll() {
|
|
98
|
+
if (stickyTableWrapperRef.current) {
|
|
99
|
+
stickyTableWrapperRef.current.scrollLeft = tableWrapper.scrollLeft;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
var handleResize = function handleResize(entries) {
|
|
103
|
+
var element = entries[0].target;
|
|
104
|
+
if (!element) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (stickyTableRef.current) {
|
|
108
|
+
stickyTableRef.current.style.minWidth = "".concat(element.clientWidth, "px");
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
// Initial width sync
|
|
113
|
+
stickyTableRef.current.style.minWidth = "".concat(tableRef.current.getBoundingClientRect().width, "px");
|
|
114
|
+
|
|
115
|
+
// Use ResizeObserver to keep table width in sync
|
|
116
|
+
var resizeObserver = new ResizeObserver(handleResize);
|
|
117
|
+
resizeObserver.observe(tableRef.current);
|
|
118
|
+
tableWrapper.addEventListener('scroll', handleScroll, {
|
|
119
|
+
passive: true
|
|
120
|
+
});
|
|
121
|
+
return function () {
|
|
122
|
+
tableWrapper.removeEventListener('scroll', handleScroll);
|
|
123
|
+
resizeObserver.disconnect();
|
|
124
|
+
};
|
|
125
|
+
}, [scrollableInline, tableRef, tableWrapperRef]);
|
|
126
|
+
var tableStyles = [originalStyles.euiTable, scrollableInline && originalStyles.euiTableScrollableInline, (!compressed || isResponsive) && originalStyles.uncompressed, compressed && !isResponsive && originalStyles.compressed,
|
|
127
|
+
// Forced fixed layout since all column widths come synced from the main table
|
|
128
|
+
originalStyles.layout.fixed, originalStyles.hasBackground, styles.table];
|
|
129
|
+
if (isResponsive) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return (0, _react2.jsx)(_context.EuiTableWithinStickyHeaderProvider, null, (0, _react2.jsx)("div", {
|
|
133
|
+
css: styles.wrapper,
|
|
134
|
+
"aria-hidden": "true"
|
|
135
|
+
}, (0, _react2.jsx)("div", {
|
|
136
|
+
css: [
|
|
137
|
+
// This CSS container is needed to feed `<EuiTableHeaderCell>`
|
|
138
|
+
// with `sticky` prop set the necessary scroll state
|
|
139
|
+
(0, _global_styling.euiContainerCSS)('normal', _const.EUI_TABLE_CSS_CONTAINER_NAME, true), styles.innerWrapper, ";label:EuiTableStickyHeader;"],
|
|
140
|
+
ref: stickyTableWrapperRef
|
|
141
|
+
}, (0, _react2.jsx)("table", {
|
|
142
|
+
css: tableStyles,
|
|
143
|
+
ref: stickyTableRef
|
|
144
|
+
}, (0, _react2.jsx)(_table_header.EuiTableHeader, {
|
|
145
|
+
css: styles.header
|
|
146
|
+
}, columns.map(function (_ref2, index) {
|
|
147
|
+
var _data$renderHeaderCel, _data$renderHeaderCel2;
|
|
148
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
149
|
+
name = _ref3[0],
|
|
150
|
+
data = _ref3[1];
|
|
151
|
+
return (_data$renderHeaderCel = (_data$renderHeaderCel2 = data.renderHeaderCellRef).current) === null || _data$renderHeaderCel === void 0 ? void 0 : _data$renderHeaderCel.call(_data$renderHeaderCel2, {
|
|
152
|
+
ref: getColumnRef(name),
|
|
153
|
+
key: "".concat(name, "-").concat(index)
|
|
154
|
+
});
|
|
155
|
+
}))))));
|
|
156
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.euiTableStickyHeaderStyles = void 0;
|
|
7
|
+
var _react = require("@emotion/react");
|
|
8
|
+
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)."; } /*
|
|
9
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
10
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
11
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
12
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
13
|
+
* Side Public License, v 1.
|
|
14
|
+
*/
|
|
15
|
+
var _ref = process.env.NODE_ENV === "production" ? {
|
|
16
|
+
name: "1uk19xy-table",
|
|
17
|
+
styles: "pointer-events:auto;label:table;"
|
|
18
|
+
} : {
|
|
19
|
+
name: "1uk19xy-table",
|
|
20
|
+
styles: "pointer-events:auto;label:table;",
|
|
21
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
22
|
+
};
|
|
23
|
+
var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
24
|
+
name: "15dchac-innerWrapper",
|
|
25
|
+
styles: "overflow-inline:hidden;label:innerWrapper;"
|
|
26
|
+
} : {
|
|
27
|
+
name: "15dchac-innerWrapper",
|
|
28
|
+
styles: "overflow-inline:hidden;label:innerWrapper;",
|
|
29
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
30
|
+
};
|
|
31
|
+
var _ref3 = process.env.NODE_ENV === "production" ? {
|
|
32
|
+
name: "4w3rcu-wrapper",
|
|
33
|
+
styles: "position:sticky;inset-block-start:var(--euiTableStickyHeaderOffsetTop, 0);z-index:var(--euiTableStickyHeaderZIndex, 1);block-size:0;overflow-block:visible;label:wrapper;"
|
|
34
|
+
} : {
|
|
35
|
+
name: "4w3rcu-wrapper",
|
|
36
|
+
styles: "position:sticky;inset-block-start:var(--euiTableStickyHeaderOffsetTop, 0);z-index:var(--euiTableStickyHeaderZIndex, 1);block-size:0;overflow-block:visible;label:wrapper;",
|
|
37
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
38
|
+
};
|
|
39
|
+
var euiTableStickyHeaderStyles = exports.euiTableStickyHeaderStyles = function euiTableStickyHeaderStyles(_ref4) {
|
|
40
|
+
var euiTheme = _ref4.euiTheme;
|
|
41
|
+
return {
|
|
42
|
+
wrapper: _ref3,
|
|
43
|
+
innerWrapper: _ref2,
|
|
44
|
+
table: _ref,
|
|
45
|
+
header: /*#__PURE__*/(0, _react.css)("th::after{content:'';display:block;inline-size:100%;block-size:", euiTheme.border.width.thin, ";background-color:", euiTheme.border.color, ";};label:header;")
|
|
46
|
+
};
|
|
47
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useEuiTableColumnDataStore = exports.EuiTableStoreProvider = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _store = require("./store");
|
|
10
|
+
var _react2 = require("@emotion/react");
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
/*
|
|
14
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
15
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
16
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
17
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
18
|
+
* Side Public License, v 1.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
var EuiTableStoreContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
var EuiTableStoreProvider = exports.EuiTableStoreProvider = function EuiTableStoreProvider(_ref) {
|
|
27
|
+
var children = _ref.children;
|
|
28
|
+
var store = (0, _react.useRef)(null);
|
|
29
|
+
if (!store.current) {
|
|
30
|
+
store.current = (0, _store.createEuiTableStore)();
|
|
31
|
+
}
|
|
32
|
+
return (0, _react2.jsx)(EuiTableStoreContext.Provider, {
|
|
33
|
+
value: store.current
|
|
34
|
+
}, children);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
var useEuiTableColumnDataStore = exports.useEuiTableColumnDataStore = function useEuiTableColumnDataStore() {
|
|
41
|
+
var store = (0, _react.useContext)(EuiTableStoreContext);
|
|
42
|
+
if (!store) {
|
|
43
|
+
throw new Error('[useEuiTableColumnDataStore] Store context not found. This hook must be used within EuiTable!');
|
|
44
|
+
}
|
|
45
|
+
return store;
|
|
46
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createEuiTableStore = void 0;
|
|
7
|
+
var _publisher = require("../../../utils/publisher");
|
|
8
|
+
/*
|
|
9
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
10
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
11
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
12
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
13
|
+
* Side Public License, v 1.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* EuiTable store that helps with column and width synchronization between
|
|
26
|
+
* the original table and the "virtual" sticky header table.
|
|
27
|
+
*
|
|
28
|
+
* This store is currently only used for these synchronization purposes, but
|
|
29
|
+
* that may extend as we implement resizable columns.
|
|
30
|
+
* If that's not implemented by the time per-axis `position: sticky`
|
|
31
|
+
* is supported in all browsers natively, this can be removed.
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
var createEuiTableStore = exports.createEuiTableStore = function createEuiTableStore() {
|
|
36
|
+
var columns = new Map();
|
|
37
|
+
var columnsPublisher = (0, _publisher.createPublisher)();
|
|
38
|
+
var columnWidths = new Map();
|
|
39
|
+
var columnWidthsPublisher = (0, _publisher.createPublisher)();
|
|
40
|
+
var registerColumn = function registerColumn(id, data) {
|
|
41
|
+
var _data$currentWidth;
|
|
42
|
+
if (columns.has(id)) {
|
|
43
|
+
throw new Error("[EuiTableStore] Column '".concat(id, "' already registered"));
|
|
44
|
+
}
|
|
45
|
+
columns.set(id, data);
|
|
46
|
+
// Initialize column in the columnWidths map to keep both maps in sync
|
|
47
|
+
columnWidths.set(id, (_data$currentWidth = data.currentWidth) !== null && _data$currentWidth !== void 0 ? _data$currentWidth : 0);
|
|
48
|
+
columnsPublisher.notify(columns);
|
|
49
|
+
return function () {
|
|
50
|
+
columns.delete(id);
|
|
51
|
+
columnWidths.delete(id);
|
|
52
|
+
columnsPublisher.notify(columns);
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
var updateColumn = function updateColumn(id, data) {
|
|
56
|
+
var currentData = columns.get(id);
|
|
57
|
+
if (!currentData) {
|
|
58
|
+
throw new Error("[EuiTableStore] Column '".concat(id, "' not found"));
|
|
59
|
+
}
|
|
60
|
+
columns.set(id, data);
|
|
61
|
+
columnsPublisher.notify(columns);
|
|
62
|
+
};
|
|
63
|
+
var updateColumnWidth = function updateColumnWidth(id, width) {
|
|
64
|
+
var currentWidth = columnWidths.get(id);
|
|
65
|
+
if (currentWidth === undefined) {
|
|
66
|
+
throw new Error("[EuiTableStore] No width stored for column '".concat(id, "'"));
|
|
67
|
+
}
|
|
68
|
+
if (currentWidth === width) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
columnWidths.set(id, width);
|
|
72
|
+
columnWidthsPublisher.notify(columnWidths);
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
registerColumn: registerColumn,
|
|
76
|
+
updateColumn: updateColumn,
|
|
77
|
+
updateColumnWidth: updateColumnWidth,
|
|
78
|
+
subscribe: columnsPublisher.subscribe,
|
|
79
|
+
subscribeToColumnWidths: columnWidthsPublisher.subscribe,
|
|
80
|
+
getColumns: function getColumns() {
|
|
81
|
+
return columns;
|
|
82
|
+
},
|
|
83
|
+
getColumnWidths: function getColumnWidths() {
|
|
84
|
+
return columnWidths;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
};
|
|
@@ -16,8 +16,10 @@ var _component_defaults = require("../provider/component_defaults");
|
|
|
16
16
|
var _global_styling = require("../../global_styling");
|
|
17
17
|
var _const = require("./const");
|
|
18
18
|
var _sticky_scrollbar = require("./sticky_scrollbar");
|
|
19
|
+
var _sticky_header = require("./sticky_header/sticky_header");
|
|
20
|
+
var _provider = require("./store/provider");
|
|
19
21
|
var _react2 = require("@emotion/react");
|
|
20
|
-
var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar"];
|
|
22
|
+
var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar", "stickyHeader"];
|
|
21
23
|
/*
|
|
22
24
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
23
25
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
@@ -55,20 +57,30 @@ var EuiTable = exports.EuiTable = function EuiTable(originalProps) {
|
|
|
55
57
|
scrollableInline = _usePropsWithComponen4 === void 0 ? false : _usePropsWithComponen4,
|
|
56
58
|
_usePropsWithComponen5 = _usePropsWithComponen.stickyScrollbar,
|
|
57
59
|
stickyScrollbar = _usePropsWithComponen5 === void 0 ? false : _usePropsWithComponen5,
|
|
60
|
+
_usePropsWithComponen6 = _usePropsWithComponen.stickyHeader,
|
|
61
|
+
stickyHeader = _usePropsWithComponen6 === void 0 ? false : _usePropsWithComponen6,
|
|
58
62
|
rest = _objectWithoutProperties(_usePropsWithComponen, _excluded);
|
|
59
63
|
var tableWrapperRef = (0, _react.useRef)(null);
|
|
64
|
+
var tableRef = (0, _react.useRef)(null);
|
|
60
65
|
var isResponsive = (0, _responsive_context.useIsEuiTableResponsive)(responsiveBreakpoint);
|
|
61
66
|
var classes = (0, _classnames.default)('euiTable', className);
|
|
62
67
|
var styles = (0, _services.useEuiMemoizedStyles)(_table.euiTableStyles);
|
|
63
68
|
var tableStyles = [styles.euiTable, scrollableInline && styles.euiTableScrollableInline, styles.layout[tableLayout], (!compressed || isResponsive) && styles.uncompressed, compressed && !isResponsive && styles.compressed, hasBackground && styles.hasBackground, isResponsive ? styles.mobile : styles.desktop];
|
|
64
69
|
var cssStyles = [(0, _global_styling.euiContainerCSS)('normal', _const.EUI_TABLE_CSS_CONTAINER_NAME, true), scrollableInline && styles.scrollableWrapper];
|
|
65
|
-
return (0, _react2.jsx)(
|
|
70
|
+
return (0, _react2.jsx)(_provider.EuiTableStoreProvider, null, stickyHeader && (0, _react2.jsx)(_sticky_header.EuiTableStickyHeader, {
|
|
71
|
+
scrollableInline: scrollableInline,
|
|
72
|
+
tableRef: tableRef,
|
|
73
|
+
tableWrapperRef: tableWrapperRef,
|
|
74
|
+
compressed: compressed,
|
|
75
|
+
isResponsive: isResponsive
|
|
76
|
+
}), (0, _react2.jsx)("div", {
|
|
66
77
|
css: cssStyles,
|
|
67
78
|
ref: tableWrapperRef
|
|
68
79
|
}, (0, _react2.jsx)("table", _extends({
|
|
69
80
|
tabIndex: -1,
|
|
70
81
|
css: tableStyles,
|
|
71
|
-
className: classes
|
|
82
|
+
className: classes,
|
|
83
|
+
ref: tableRef
|
|
72
84
|
}, rest), (0, _react2.jsx)(_responsive_context.EuiTableIsResponsiveContext.Provider, {
|
|
73
85
|
value: isResponsive
|
|
74
86
|
}, (0, _react2.jsx)(_table_context.EuiTableVariantContext.Provider, {
|
|
@@ -121,6 +133,19 @@ EuiTable.propTypes = {
|
|
|
121
133
|
* @default false
|
|
122
134
|
*/
|
|
123
135
|
stickyScrollbar: _propTypes.default.bool,
|
|
136
|
+
/**
|
|
137
|
+
* When enabled, the table header will stick to the top of the viewport as users
|
|
138
|
+
* scroll through long tables. This enhances usability by maintaining column
|
|
139
|
+
* context during vertical scrolling and unifies the scrolling experience
|
|
140
|
+
* between EuiTable components and EuiDataGrid.
|
|
141
|
+
*
|
|
142
|
+
* This feature should be used in places where it's possible for the table
|
|
143
|
+
* to grow longer than the viewport.
|
|
144
|
+
*
|
|
145
|
+
* @beta
|
|
146
|
+
* @default false
|
|
147
|
+
*/
|
|
148
|
+
stickyHeader: _propTypes.default.bool,
|
|
124
149
|
className: _propTypes.default.string,
|
|
125
150
|
"aria-label": _propTypes.default.string,
|
|
126
151
|
"data-test-subj": _propTypes.default.string,
|
|
@@ -42,11 +42,11 @@ var euiTableVariables = exports.euiTableVariables = function euiTableVariables(_
|
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
44
|
var _ref = process.env.NODE_ENV === "production" ? {
|
|
45
|
-
name: "
|
|
46
|
-
styles: "overflow-inline:auto;label:scrollableWrapper;"
|
|
45
|
+
name: "l8gzfy-scrollableWrapper",
|
|
46
|
+
styles: "overflow-inline:auto;overscroll-behavior-inline:none;label:scrollableWrapper;"
|
|
47
47
|
} : {
|
|
48
|
-
name: "
|
|
49
|
-
styles: "overflow-inline:auto;label:scrollableWrapper;",
|
|
48
|
+
name: "l8gzfy-scrollableWrapper",
|
|
49
|
+
styles: "overflow-inline:auto;overscroll-behavior-inline:none;label:scrollableWrapper;",
|
|
50
50
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
51
51
|
};
|
|
52
52
|
var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.EuiTableHeaderCell = void 0;
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
var _react =
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
var _services = require("../../services");
|
|
12
|
+
var _html_id_generator = require("../../services/accessibility/html_id_generator");
|
|
12
13
|
var _i18n = require("../i18n");
|
|
13
14
|
var _accessibility = require("../accessibility");
|
|
14
15
|
var _icon = require("../icon");
|
|
@@ -18,8 +19,12 @@ var _utils = require("./utils");
|
|
|
18
19
|
var _responsive_context = require("./mobile/responsive_context");
|
|
19
20
|
var _table_cell_content = require("./_table_cell_content");
|
|
20
21
|
var _table_cells_shared = require("./table_cells_shared.styles");
|
|
22
|
+
var _provider = require("./store/provider");
|
|
23
|
+
var _sticky_header = require("./sticky_header");
|
|
21
24
|
var _react2 = require("@emotion/react");
|
|
22
25
|
var _excluded = ["children", "align", "onSort", "isSorted", "isSortAscending", "className", "scope", "mobileOptions", "width", "minWidth", "maxWidth", "style", "readOnly", "tooltipProps", "description", "append", "sticky"];
|
|
26
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
27
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
28
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
29
|
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
25
30
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
|
|
@@ -110,60 +115,125 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
|
|
|
110
115
|
append = _ref2.append,
|
|
111
116
|
sticky = _ref2.sticky,
|
|
112
117
|
rest = _objectWithoutProperties(_ref2, _excluded);
|
|
118
|
+
var selfRef = (0, _react.useRef)(null);
|
|
119
|
+
var internalCellId = (0, _html_id_generator.useGeneratedHtmlId)();
|
|
120
|
+
var store = (0, _provider.useEuiTableColumnDataStore)();
|
|
121
|
+
var isWithinStickyHeader = (0, _sticky_header.useEuiTableWithinStickyHeader)();
|
|
113
122
|
var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableHeaderFooterCellStyles);
|
|
114
123
|
var stickyStyles = (0, _table_cells_shared._useEuiTableStickyCellStyles)(sticky);
|
|
115
124
|
var isResponsive = (0, _responsive_context.useEuiTableIsResponsive)();
|
|
116
125
|
var hideForDesktop = !isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.only);
|
|
117
126
|
var hideForMobile = isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.show) === false;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
var renderHeaderCellRef = (0, _react.useRef)();
|
|
128
|
+
renderHeaderCellRef.current = function (extraProps) {
|
|
129
|
+
if (hideForDesktop || hideForMobile) return null;
|
|
130
|
+
var classes = (0, _classnames.default)('euiTableHeaderCell', className);
|
|
131
|
+
var cssStyles = [styles.euiTableHeaderCell, !isResponsive && stickyStyles];
|
|
132
|
+
var inlineWidthStyles = (0, _utils.resolveWidthPropsAsStyle)(_style, {
|
|
133
|
+
width: width,
|
|
134
|
+
minWidth: minWidth,
|
|
135
|
+
maxWidth: maxWidth
|
|
136
|
+
});
|
|
137
|
+
var CellComponent = children ? 'th' : 'td';
|
|
138
|
+
var cellScope = CellComponent === 'th' ? scope !== null && scope !== void 0 ? scope : 'col' : undefined; // `scope` is only valid on `th` elements
|
|
128
139
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
var canSort = !!(onSort && !readOnly);
|
|
141
|
+
var ariaSortValue;
|
|
142
|
+
if (isSorted) {
|
|
143
|
+
ariaSortValue = isSortAscending ? 'ascending' : 'descending';
|
|
144
|
+
} else if (canSort) {
|
|
145
|
+
ariaSortValue = 'none';
|
|
146
|
+
}
|
|
147
|
+
var cellContentsProps = {
|
|
148
|
+
css: styles.euiTableHeaderCell__content,
|
|
149
|
+
align: align,
|
|
150
|
+
tooltipProps: tooltipProps,
|
|
151
|
+
description: description,
|
|
152
|
+
canSort: canSort,
|
|
153
|
+
isSorted: isSorted,
|
|
154
|
+
isSortAscending: isSortAscending,
|
|
155
|
+
children: children
|
|
156
|
+
};
|
|
157
|
+
return (0, _react2.jsx)(CellComponent, _extends({
|
|
158
|
+
css: cssStyles,
|
|
159
|
+
className: classes,
|
|
160
|
+
scope: cellScope,
|
|
161
|
+
role: "columnheader",
|
|
162
|
+
"aria-sort": ariaSortValue,
|
|
163
|
+
"data-sticky": !isResponsive && (sticky === null || sticky === void 0 ? void 0 : sticky.side) || undefined,
|
|
164
|
+
style: _objectSpread(_objectSpread({}, _style), inlineWidthStyles)
|
|
165
|
+
}, rest, extraProps), canSort ? (0, _react2.jsx)(_tool_tip.EuiToolTip, _extends({
|
|
166
|
+
content: tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.content
|
|
167
|
+
}, tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.tooltipProps, {
|
|
168
|
+
display: "block"
|
|
169
|
+
}), (0, _react2.jsx)("button", {
|
|
170
|
+
type: "button",
|
|
171
|
+
css: styles.euiTableHeaderCell__button,
|
|
172
|
+
className: (0, _classnames.default)('euiTableHeaderButton', {
|
|
173
|
+
'euiTableHeaderButton-isSorted': isSorted
|
|
174
|
+
}),
|
|
175
|
+
onClick: onSort,
|
|
176
|
+
"data-test-subj": "tableHeaderSortButton"
|
|
177
|
+
}, (0, _react2.jsx)(CellContents, cellContentsProps))) : (0, _react2.jsx)(CellContents, cellContentsProps), append);
|
|
145
178
|
};
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
})
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
179
|
+
var handleResize = (0, _react.useCallback)(function (entries) {
|
|
180
|
+
var entry = entries[0];
|
|
181
|
+
if (!entry) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
store.updateColumnWidth(internalCellId, entry.contentRect.width);
|
|
185
|
+
}, [store, internalCellId]);
|
|
186
|
+
(0, _react.useEffect)(function () {
|
|
187
|
+
// Don't register the column inside the sticky header as the original
|
|
188
|
+
// column is already registered. This would cause an infinite loop.
|
|
189
|
+
if (isWithinStickyHeader || !selfRef.current || !renderHeaderCellRef.current) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
var unregisterColumn = store.registerColumn(internalCellId, {
|
|
193
|
+
renderHeaderCellRef: renderHeaderCellRef,
|
|
194
|
+
// getBoundingClientRect is not the cheapest, but we call it only once
|
|
195
|
+
currentWidth: selfRef.current.getBoundingClientRect().width
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
// ResizeObserver is available in all supported browsers,
|
|
199
|
+
// but jsdom and jest don't provide a polyfill for it.
|
|
200
|
+
var resizeObserver;
|
|
201
|
+
if (typeof window.ResizeObserver !== 'undefined') {
|
|
202
|
+
resizeObserver = new ResizeObserver(handleResize);
|
|
203
|
+
|
|
204
|
+
// Note: This _could_ be optimized by using a single ResizeObserver
|
|
205
|
+
// for the whole EuiTable, but it would need to be changed back to this
|
|
206
|
+
// if/when we implement resizable columns
|
|
207
|
+
resizeObserver.observe(selfRef.current);
|
|
208
|
+
}
|
|
209
|
+
return function () {
|
|
210
|
+
var _resizeObserver;
|
|
211
|
+
unregisterColumn();
|
|
212
|
+
(_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect();
|
|
213
|
+
};
|
|
214
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
215
|
+
}, [store, internalCellId, isWithinStickyHeader]);
|
|
216
|
+
|
|
217
|
+
// Notify the store on every render so the sticky header stays in sync.
|
|
218
|
+
// React's reconciliation will efficiently handle any duplicate renders.
|
|
219
|
+
(0, _react.useEffect)(function () {
|
|
220
|
+
// Don't update the store if the component is rendered within EuiTableStickyHeader
|
|
221
|
+
if (isWithinStickyHeader) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Don't update the store if the element doesn't exist. The render function
|
|
226
|
+
// in `renderHeaderCellRef` sometimes renders null - e.g., in mobile layout
|
|
227
|
+
if (!selfRef.current) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
store.updateColumn(internalCellId, {
|
|
231
|
+
renderHeaderCellRef: renderHeaderCellRef
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
return renderHeaderCellRef.current({
|
|
235
|
+
ref: selfRef
|
|
236
|
+
});
|
|
167
237
|
};
|
|
168
238
|
EuiTableHeaderCell.propTypes = {
|
|
169
239
|
className: _propTypes.default.string,
|