@elastic/eui 116.2.0 → 116.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/es/components/avatar/avatar.js +18 -5
  2. package/es/components/avatar/avatar.styles.js +16 -16
  3. package/es/components/banner/banner.js +202 -0
  4. package/es/components/banner/banner.styles.js +76 -0
  5. package/es/components/banner/index.js +9 -0
  6. package/es/components/basic_table/basic_table.js +21 -10
  7. package/es/components/basic_table/collapsed_item_actions.js +5 -4
  8. package/es/components/basic_table/default_item_action.js +3 -5
  9. package/es/components/breadcrumbs/_breadcrumb_content.js +29 -19
  10. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  11. package/es/components/context_menu/context_menu_panel_title.js +0 -12
  12. package/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  13. package/es/components/datagrid/controls/display_selector.js +2 -1
  14. package/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  15. package/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  16. package/es/components/date_picker/react-datepicker/src/index.js +1 -5
  17. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  18. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  19. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  20. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  21. package/es/components/form/field_password/field_password.js +6 -3
  22. package/es/components/header/header.a11y.js +1 -1
  23. package/es/components/index.js +1 -0
  24. package/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
  25. package/es/components/pagination/pagination_button_arrow.js +6 -2
  26. package/es/components/panel/panel.styles.js +4 -4
  27. package/es/components/panel/split_panel/split_panel.styles.js +1 -1
  28. package/es/components/search_bar/search_bar.js +20 -16
  29. package/es/components/search_bar/search_box.js +4 -2
  30. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  31. package/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  32. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
  33. package/es/components/table/sticky_header/context.js +32 -0
  34. package/es/components/table/sticky_header/index.js +10 -0
  35. package/es/components/table/sticky_header/sticky_header.js +151 -0
  36. package/es/components/table/sticky_header/sticky_header.styles.js +43 -0
  37. package/es/components/table/store/provider.js +37 -0
  38. package/es/components/table/store/store.js +82 -0
  39. package/es/components/table/store/use_unique_column_id.js +25 -0
  40. package/es/components/table/table.js +28 -3
  41. package/es/components/table/table.styles.js +4 -4
  42. package/es/components/table/table_header_cell.js +115 -48
  43. package/es/components/table/table_header_cell_checkbox.js +58 -25
  44. package/es/components/text_truncate/text_truncate.js +8 -3
  45. package/es/components/tool_tip/tool_tip.js +1 -1
  46. package/es/components/tool_tip/tool_tip.styles.js +14 -5
  47. package/es/utils/publisher.js +53 -0
  48. package/eui.d.ts +1284 -975
  49. package/i18ntokens.json +2390 -2372
  50. package/lib/components/avatar/avatar.js +18 -5
  51. package/lib/components/avatar/avatar.styles.js +16 -16
  52. package/lib/components/banner/banner.js +211 -0
  53. package/lib/components/banner/banner.styles.js +80 -0
  54. package/lib/components/banner/index.js +12 -0
  55. package/lib/components/basic_table/basic_table.js +21 -10
  56. package/lib/components/basic_table/collapsed_item_actions.js +5 -4
  57. package/lib/components/basic_table/default_item_action.js +3 -5
  58. package/lib/components/breadcrumbs/_breadcrumb_content.js +29 -19
  59. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  60. package/lib/components/context_menu/context_menu_panel_title.js +0 -12
  61. package/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  62. package/lib/components/datagrid/controls/display_selector.js +2 -1
  63. package/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  64. package/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  65. package/lib/components/date_picker/react-datepicker/src/index.js +0 -4
  66. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  67. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  68. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  69. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  70. package/lib/components/form/field_password/field_password.js +6 -3
  71. package/lib/components/header/header.a11y.js +1 -1
  72. package/lib/components/index.js +11 -0
  73. package/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
  74. package/lib/components/pagination/pagination_button_arrow.js +6 -2
  75. package/lib/components/panel/panel.styles.js +4 -4
  76. package/lib/components/panel/split_panel/split_panel.styles.js +1 -1
  77. package/lib/components/search_bar/search_bar.js +20 -16
  78. package/lib/components/search_bar/search_box.js +4 -2
  79. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  80. package/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  81. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
  82. package/lib/components/table/sticky_header/context.js +41 -0
  83. package/lib/components/table/sticky_header/index.js +19 -0
  84. package/lib/components/table/sticky_header/sticky_header.js +156 -0
  85. package/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
  86. package/lib/components/table/store/provider.js +46 -0
  87. package/lib/components/table/store/store.js +87 -0
  88. package/lib/components/table/store/use_unique_column_id.js +34 -0
  89. package/lib/components/table/table.js +28 -3
  90. package/lib/components/table/table.styles.js +4 -4
  91. package/lib/components/table/table_header_cell.js +117 -48
  92. package/lib/components/table/table_header_cell_checkbox.js +61 -25
  93. package/lib/components/text_truncate/text_truncate.js +8 -3
  94. package/lib/components/tool_tip/tool_tip.js +1 -1
  95. package/lib/components/tool_tip/tool_tip.styles.js +14 -5
  96. package/lib/utils/publisher.js +59 -0
  97. package/optimize/es/components/avatar/avatar.js +16 -4
  98. package/optimize/es/components/avatar/avatar.styles.js +16 -16
  99. package/optimize/es/components/banner/banner.js +112 -0
  100. package/optimize/es/components/banner/banner.styles.js +76 -0
  101. package/optimize/es/components/banner/index.js +9 -0
  102. package/optimize/es/components/basic_table/basic_table.js +21 -10
  103. package/optimize/es/components/basic_table/collapsed_item_actions.js +5 -4
  104. package/optimize/es/components/basic_table/default_item_action.js +3 -5
  105. package/optimize/es/components/breadcrumbs/_breadcrumb_content.js +27 -18
  106. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  107. package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  108. package/optimize/es/components/datagrid/controls/display_selector.js +2 -1
  109. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  110. package/optimize/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  111. package/optimize/es/components/date_picker/react-datepicker/src/index.js +1 -5
  112. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  113. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  114. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  115. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  116. package/optimize/es/components/form/field_password/field_password.js +6 -3
  117. package/optimize/es/components/header/header.a11y.js +1 -1
  118. package/optimize/es/components/index.js +1 -0
  119. package/optimize/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
  120. package/optimize/es/components/pagination/pagination_button_arrow.js +6 -2
  121. package/optimize/es/components/panel/panel.styles.js +4 -4
  122. package/optimize/es/components/panel/split_panel/split_panel.styles.js +1 -1
  123. package/optimize/es/components/search_bar/search_bar.js +20 -16
  124. package/optimize/es/components/search_bar/search_box.js +4 -2
  125. package/optimize/es/components/selectable/selectable_list/selectable_list.js +1 -1
  126. package/optimize/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  127. package/optimize/es/components/table/sticky_header/context.js +32 -0
  128. package/optimize/es/components/table/sticky_header/index.js +10 -0
  129. package/optimize/es/components/table/sticky_header/sticky_header.js +146 -0
  130. package/optimize/es/components/table/sticky_header/sticky_header.styles.js +43 -0
  131. package/optimize/es/components/table/store/provider.js +37 -0
  132. package/optimize/es/components/table/store/store.js +82 -0
  133. package/optimize/es/components/table/store/use_unique_column_id.js +25 -0
  134. package/optimize/es/components/table/table.js +15 -3
  135. package/optimize/es/components/table/table.styles.js +4 -4
  136. package/optimize/es/components/table/table_header_cell.js +115 -48
  137. package/optimize/es/components/table/table_header_cell_checkbox.js +58 -25
  138. package/optimize/es/components/text_truncate/text_truncate.js +8 -3
  139. package/optimize/es/components/tool_tip/tool_tip.js +1 -1
  140. package/optimize/es/components/tool_tip/tool_tip.styles.js +14 -5
  141. package/optimize/es/utils/publisher.js +53 -0
  142. package/optimize/lib/components/avatar/avatar.js +16 -4
  143. package/optimize/lib/components/avatar/avatar.styles.js +16 -16
  144. package/optimize/lib/components/banner/banner.js +121 -0
  145. package/optimize/lib/components/banner/banner.styles.js +80 -0
  146. package/optimize/lib/components/banner/index.js +12 -0
  147. package/optimize/lib/components/basic_table/basic_table.js +21 -10
  148. package/optimize/lib/components/basic_table/collapsed_item_actions.js +5 -4
  149. package/optimize/lib/components/basic_table/default_item_action.js +3 -5
  150. package/optimize/lib/components/breadcrumbs/_breadcrumb_content.js +27 -18
  151. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  152. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  153. package/optimize/lib/components/datagrid/controls/display_selector.js +2 -1
  154. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  155. package/optimize/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  156. package/optimize/lib/components/date_picker/react-datepicker/src/index.js +0 -4
  157. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  158. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  159. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  160. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  161. package/optimize/lib/components/form/field_password/field_password.js +6 -3
  162. package/optimize/lib/components/header/header.a11y.js +1 -1
  163. package/optimize/lib/components/index.js +11 -0
  164. package/optimize/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
  165. package/optimize/lib/components/pagination/pagination_button_arrow.js +6 -2
  166. package/optimize/lib/components/panel/panel.styles.js +4 -4
  167. package/optimize/lib/components/panel/split_panel/split_panel.styles.js +1 -1
  168. package/optimize/lib/components/search_bar/search_bar.js +20 -16
  169. package/optimize/lib/components/search_bar/search_box.js +4 -2
  170. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  171. package/optimize/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  172. package/optimize/lib/components/table/sticky_header/context.js +41 -0
  173. package/optimize/lib/components/table/sticky_header/index.js +19 -0
  174. package/optimize/lib/components/table/sticky_header/sticky_header.js +156 -0
  175. package/optimize/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
  176. package/optimize/lib/components/table/store/provider.js +46 -0
  177. package/optimize/lib/components/table/store/store.js +87 -0
  178. package/optimize/lib/components/table/store/use_unique_column_id.js +34 -0
  179. package/optimize/lib/components/table/table.js +15 -3
  180. package/optimize/lib/components/table/table.styles.js +4 -4
  181. package/optimize/lib/components/table/table_header_cell.js +118 -48
  182. package/optimize/lib/components/table/table_header_cell_checkbox.js +61 -25
  183. package/optimize/lib/components/text_truncate/text_truncate.js +8 -3
  184. package/optimize/lib/components/tool_tip/tool_tip.js +1 -1
  185. package/optimize/lib/components/tool_tip/tool_tip.styles.js +14 -5
  186. package/optimize/lib/utils/publisher.js +59 -0
  187. package/package.json +2 -2
  188. package/test-env/components/avatar/avatar.js +18 -5
  189. package/test-env/components/avatar/avatar.styles.js +16 -16
  190. package/test-env/components/banner/banner.js +210 -0
  191. package/test-env/components/banner/banner.styles.js +80 -0
  192. package/test-env/components/banner/index.js +12 -0
  193. package/test-env/components/basic_table/basic_table.js +21 -10
  194. package/test-env/components/basic_table/collapsed_item_actions.js +5 -4
  195. package/test-env/components/basic_table/default_item_action.js +3 -5
  196. package/test-env/components/breadcrumbs/_breadcrumb_content.js +29 -19
  197. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  198. package/test-env/components/context_menu/context_menu_panel_title.js +0 -12
  199. package/test-env/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  200. package/test-env/components/datagrid/controls/display_selector.js +2 -1
  201. package/test-env/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  202. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  203. package/test-env/components/date_picker/react-datepicker/src/index.js +0 -4
  204. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  205. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  206. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  207. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  208. package/test-env/components/form/field_password/field_password.js +6 -3
  209. package/test-env/components/header/header.a11y.js +1 -1
  210. package/test-env/components/index.js +11 -0
  211. package/test-env/components/markdown_editor/markdown_editor_help_button.js +7 -4
  212. package/test-env/components/pagination/pagination_button_arrow.js +6 -2
  213. package/test-env/components/panel/panel.styles.js +4 -4
  214. package/test-env/components/panel/split_panel/split_panel.styles.js +1 -1
  215. package/test-env/components/search_bar/search_bar.js +20 -16
  216. package/test-env/components/search_bar/search_box.js +4 -2
  217. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  218. package/test-env/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  219. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
  220. package/test-env/components/table/sticky_header/context.js +41 -0
  221. package/test-env/components/table/sticky_header/index.js +19 -0
  222. package/test-env/components/table/sticky_header/sticky_header.js +156 -0
  223. package/test-env/components/table/sticky_header/sticky_header.styles.js +47 -0
  224. package/test-env/components/table/store/provider.js +46 -0
  225. package/test-env/components/table/store/store.js +87 -0
  226. package/test-env/components/table/store/use_unique_column_id.js +34 -0
  227. package/test-env/components/table/table.js +28 -3
  228. package/test-env/components/table/table.styles.js +4 -4
  229. package/test-env/components/table/table_header_cell.js +118 -48
  230. package/test-env/components/table/table_header_cell_checkbox.js +61 -25
  231. package/test-env/components/text_truncate/text_truncate.js +8 -3
  232. package/test-env/components/tool_tip/tool_tip.js +1 -1
  233. package/test-env/components/tool_tip/tool_tip.styles.js +14 -5
  234. package/test-env/utils/publisher.js +59 -0
@@ -14,7 +14,7 @@ var _i18n = require("../i18n");
14
14
  var _form = require("../form");
15
15
  var _popover = require("../popover");
16
16
  var _react2 = require("@emotion/react");
17
- var _excluded = ["query", "placeholder", "incremental", "hint"];
17
+ var _excluded = ["query", "placeholder", "incremental", "hint", "onFocus"];
18
18
  /*
19
19
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
20
20
  * or more contributor license agreements. Licensed under the Elastic License
@@ -29,6 +29,7 @@ var EuiSearchBox = exports.EuiSearchBox = function EuiSearchBox(_ref) {
29
29
  placeholder = _ref.placeholder,
30
30
  incremental = _ref.incremental,
31
31
  hint = _ref.hint,
32
+ _onFocus = _ref.onFocus,
32
33
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
33
34
  var _inputRef = (0, _react.useRef)(null);
34
35
  (0, _react.useLayoutEffect)(function () {
@@ -49,8 +50,9 @@ var EuiSearchBox = exports.EuiSearchBox = function EuiSearchBox(_ref) {
49
50
  incremental: incremental,
50
51
  "aria-label": incremental ? ariaLabelIncremental : ariaLabelEnter,
51
52
  placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : defaultPlaceholder,
52
- onFocus: function onFocus() {
53
+ onFocus: function onFocus(e) {
53
54
  hint === null || hint === void 0 || hint.setIsVisible(true);
55
+ _onFocus === null || _onFocus === void 0 || _onFocus(e);
54
56
  }
55
57
  }, rest));
56
58
  if (hint) {
@@ -194,7 +194,7 @@ var EuiSelectableList = exports.EuiSelectableList = /*#__PURE__*/function (_Comp
194
194
  _this.onAddOrRemoveOption(option, event);
195
195
  },
196
196
  isFocused: isFocused,
197
- title: searchableLabel || label,
197
+ title: !truncationProps && !option.toolTipContent ? searchableLabel || label : undefined,
198
198
  checked: checked,
199
199
  disabled: disabled,
200
200
  prepend: prepend,
@@ -48,6 +48,6 @@ var euiSelectableListGroupLabelStyles = exports.euiSelectableListGroupLabelStyle
48
48
  return {
49
49
  groupLabel: /*#__PURE__*/(0, _react.css)((0, _title.euiTitle)(euiThemeContext, 'xxxs'), " position:relative;display:flex;align-items:center;gap:", itemVars.spacing.horizontal, ";", (0, _global_styling.logicalCSS)('padding-horizontal', itemVars.textPadding.horizontal), " ", (0, _global_styling.logicalCSS)('padding-vertical', spacingVertical), " &:not(:first-child){", (0, _global_styling.logicalCSS)('padding-top', (0, _euiThemeCommon.mathWithUnits)([spacingVertical], function (a) {
50
50
  return a * 3;
51
- })), " &::before{content:'';position:absolute;inset:0;inset-block-start:", spacingVertical, ";", (0, _global_styling.logicalCSS)('border-top', "".concat(euiTheme.border.width.thin, " solid ").concat(borderColor)), ";}};label:groupLabel;")
51
+ })), " &::before{content:'';position:absolute;z-index:-1;inset:0;inset-block-start:", spacingVertical, ";", (0, _global_styling.logicalCSS)('border-top', "".concat(euiTheme.border.width.thin, " solid ").concat(borderColor)), ";}};label:groupLabel;")
52
52
  };
53
53
  };
@@ -322,7 +322,8 @@ EuiSelectableTemplateSitewide.propTypes = {
322
322
  */
323
323
  iconColor: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.any.isRequired]).isRequired, _propTypes.default.oneOf([null])]),
324
324
  /**
325
- * Full name of avatar for title attribute and calculating initial if not provided
325
+ * Full name of the avatar. Used as the accessible label (`aria-label`),
326
+ * tooltip content and used to derive initials when `initials` is not provided.
326
327
  */
327
328
  name: _propTypes.default.string.isRequired,
328
329
  /**
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEuiTableWithinStickyHeader = exports.EuiTableWithinStickyHeaderProvider = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _react2 = require("@emotion/react");
10
+ 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); }
11
+ 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; }
12
+ /*
13
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
+ * or more contributor license agreements. Licensed under the Elastic License
15
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
16
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
17
+ * Side Public License, v 1.
18
+ */
19
+
20
+ var EuiTableWithinStickyHeaderContext = /*#__PURE__*/(0, _react.createContext)(false);
21
+
22
+ /**
23
+ * React context provider to detect whether a component is rendered
24
+ * inside <EuiTableStickyHeader> to prevent duplicated header cell renders.
25
+ * @internal
26
+ */
27
+ var EuiTableWithinStickyHeaderProvider = exports.EuiTableWithinStickyHeaderProvider = function EuiTableWithinStickyHeaderProvider(_ref) {
28
+ var children = _ref.children;
29
+ return (0, _react2.jsx)(EuiTableWithinStickyHeaderContext.Provider, {
30
+ value: true
31
+ }, children);
32
+ };
33
+
34
+ /**
35
+ * Returns true if the component (usually the EuiTableHeaderCell or EuiTableHeaderCellCheckbox)
36
+ * is rendered inside EuiTableStickyHeader.
37
+ * @internal
38
+ */
39
+ var useEuiTableWithinStickyHeader = exports.useEuiTableWithinStickyHeader = function useEuiTableWithinStickyHeader() {
40
+ return (0, _react.useContext)(EuiTableWithinStickyHeaderContext);
41
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "EuiTableStickyHeader", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _sticky_header.EuiTableStickyHeader;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useEuiTableWithinStickyHeader", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _context.useEuiTableWithinStickyHeader;
16
+ }
17
+ });
18
+ var _sticky_header = require("./sticky_header");
19
+ var _context = require("./context");
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.EuiTableStickyHeader = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _provider = require("../store/provider");
12
+ var _table_header = require("../table_header");
13
+ var _context = require("./context");
14
+ var _services = require("../../../services");
15
+ var _table = require("../table.styles");
16
+ var _sticky_header = require("./sticky_header.styles");
17
+ var _global_styling = require("../../../global_styling");
18
+ var _const = require("../const");
19
+ var _react2 = require("@emotion/react");
20
+ 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); }
21
+ 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; }
22
+ /*
23
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
24
+ * or more contributor license agreements. Licensed under the Elastic License
25
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
26
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
27
+ * Side Public License, v 1.
28
+ */
29
+
30
+ /**
31
+ * @internal
32
+ */
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 = (0, _slicedToArray2.default)(_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 = (0, _slicedToArray2.default)(_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
+ var _typeof = require("@babel/runtime/helpers/typeof");
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
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEuiTableStoreUniqueColumnId = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _uuid = require("uuid");
10
+ 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); }
11
+ 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; }
12
+ /*
13
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
+ * or more contributor license agreements. Licensed under the Elastic License
15
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
16
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
17
+ * Side Public License, v 1.
18
+ */
19
+
20
+ var useEuiTableStoreUniqueColumnIdFallback = function useEuiTableStoreUniqueColumnIdFallback() {
21
+ var ref = (0, _react.useRef)((0, _uuid.v4)());
22
+ return ref.current;
23
+ };
24
+
25
+ /**
26
+ * Returns a stable unique column ID to be used when registering columns.
27
+ * It uses `React.useId()` when available and falls back to UUID v4 on React 17.
28
+ *
29
+ * This is needed so that static `uuid` mocks don't break column registration
30
+ * (at least in React 18+; in older versions this function would need
31
+ * to be mocked to return something unique, but stable).
32
+ * @internal
33
+ */
34
+ var useEuiTableStoreUniqueColumnId = exports.useEuiTableStoreUniqueColumnId = 'useId' in _react.default ? _react.useId : useEuiTableStoreUniqueColumnIdFallback;
@@ -19,8 +19,10 @@ var _component_defaults = require("../provider/component_defaults");
19
19
  var _global_styling = require("../../global_styling");
20
20
  var _const = require("./const");
21
21
  var _sticky_scrollbar = require("./sticky_scrollbar");
22
+ var _sticky_header = require("./sticky_header/sticky_header");
23
+ var _provider = require("./store/provider");
22
24
  var _react2 = require("@emotion/react");
23
- var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar"];
25
+ var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar", "stickyHeader"];
24
26
  /*
25
27
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
26
28
  * or more contributor license agreements. Licensed under the Elastic License
@@ -54,20 +56,30 @@ var EuiTable = exports.EuiTable = function EuiTable(originalProps) {
54
56
  scrollableInline = _usePropsWithComponen4 === void 0 ? false : _usePropsWithComponen4,
55
57
  _usePropsWithComponen5 = _usePropsWithComponen.stickyScrollbar,
56
58
  stickyScrollbar = _usePropsWithComponen5 === void 0 ? false : _usePropsWithComponen5,
59
+ _usePropsWithComponen6 = _usePropsWithComponen.stickyHeader,
60
+ stickyHeader = _usePropsWithComponen6 === void 0 ? false : _usePropsWithComponen6,
57
61
  rest = (0, _objectWithoutProperties2.default)(_usePropsWithComponen, _excluded);
58
62
  var tableWrapperRef = (0, _react.useRef)(null);
63
+ var tableRef = (0, _react.useRef)(null);
59
64
  var isResponsive = (0, _responsive_context.useIsEuiTableResponsive)(responsiveBreakpoint);
60
65
  var classes = (0, _classnames.default)('euiTable', className);
61
66
  var styles = (0, _services.useEuiMemoizedStyles)(_table.euiTableStyles);
62
67
  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];
63
68
  var cssStyles = [(0, _global_styling.euiContainerCSS)('normal', _const.EUI_TABLE_CSS_CONTAINER_NAME, true), scrollableInline && styles.scrollableWrapper];
64
- return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)("div", {
69
+ return (0, _react2.jsx)(_provider.EuiTableStoreProvider, null, stickyHeader && (0, _react2.jsx)(_sticky_header.EuiTableStickyHeader, {
70
+ scrollableInline: scrollableInline,
71
+ tableRef: tableRef,
72
+ tableWrapperRef: tableWrapperRef,
73
+ compressed: compressed,
74
+ isResponsive: isResponsive
75
+ }), (0, _react2.jsx)("div", {
65
76
  css: cssStyles,
66
77
  ref: tableWrapperRef
67
78
  }, (0, _react2.jsx)("table", (0, _extends2.default)({
68
79
  tabIndex: -1,
69
80
  css: tableStyles,
70
- className: classes
81
+ className: classes,
82
+ ref: tableRef
71
83
  }, rest), (0, _react2.jsx)(_responsive_context.EuiTableIsResponsiveContext.Provider, {
72
84
  value: isResponsive
73
85
  }, (0, _react2.jsx)(_table_context.EuiTableVariantContext.Provider, {
@@ -120,6 +132,19 @@ EuiTable.propTypes = {
120
132
  * @default false
121
133
  */
122
134
  stickyScrollbar: _propTypes.default.bool,
135
+ /**
136
+ * When enabled, the table header will stick to the top of the viewport as users
137
+ * scroll through long tables. This enhances usability by maintaining column
138
+ * context during vertical scrolling and unifies the scrolling experience
139
+ * between EuiTable components and EuiDataGrid.
140
+ *
141
+ * This feature should be used in places where it's possible for the table
142
+ * to grow longer than the viewport.
143
+ *
144
+ * @beta
145
+ * @default false
146
+ */
147
+ stickyHeader: _propTypes.default.bool,
123
148
  className: _propTypes.default.string,
124
149
  "aria-label": _propTypes.default.string,
125
150
  "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: "mqw298-scrollableWrapper",
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: "mqw298-scrollableWrapper",
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" ? {