@elastic/eui 116.1.0 → 116.2.0-snapshot.1780097782326

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 (445) hide show
  1. package/es/components/avatar/avatar.js +15 -6
  2. package/es/components/badge/badge.js +1 -1
  3. package/es/components/badge/beta_badge/beta_badge.js +1 -1
  4. package/es/components/banner/banner.js +202 -0
  5. package/es/components/banner/banner.styles.js +76 -0
  6. package/es/components/banner/index.js +9 -0
  7. package/es/components/basic_table/basic_table.js +28 -14
  8. package/es/components/basic_table/collapsed_item_actions.js +5 -4
  9. package/es/components/basic_table/default_item_action.js +3 -5
  10. package/es/components/basic_table/in_memory_table.js +4 -4
  11. package/es/components/breadcrumbs/_breadcrumb_content.js +29 -19
  12. package/es/components/button/button_display/_button_display_content.js +1 -1
  13. package/es/components/button/button_empty/button_empty.js +1 -1
  14. package/es/components/button/button_icon/button_icon.js +1 -1
  15. package/es/components/call_out/call_out.js +1 -1
  16. package/es/components/card/card.js +1 -1
  17. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  18. package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
  19. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  20. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  21. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  22. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  23. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  24. package/es/components/comment_list/comment.js +2 -2
  25. package/es/components/comment_list/comment_event.js +1 -1
  26. package/es/components/comment_list/comment_list.js +2 -2
  27. package/es/components/comment_list/comment_timeline.js +1 -1
  28. package/es/components/context_menu/context_menu_item.js +1 -1
  29. package/es/components/context_menu/context_menu_panel_title.js +0 -12
  30. package/es/components/datagrid/body/cell/data_grid_cell.js +12 -12
  31. package/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  32. package/es/components/datagrid/body/cell/data_grid_cell_actions.styles.js +2 -2
  33. package/es/components/datagrid/body/data_grid_body.js +7 -7
  34. package/es/components/datagrid/body/data_grid_body_custom.js +7 -7
  35. package/es/components/datagrid/body/data_grid_body_virtualized.js +7 -7
  36. package/es/components/datagrid/body/header/data_grid_header_cell.js +6 -6
  37. package/es/components/datagrid/controls/column_sorting.js +7 -7
  38. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  39. package/es/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  40. package/es/components/datagrid/controls/display_selector.js +2 -1
  41. package/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  42. package/es/components/datagrid/utils/in_memory.js +6 -6
  43. package/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  44. package/es/components/date_picker/date_picker.js +2 -2
  45. package/es/components/date_picker/date_picker_range.js +1 -1
  46. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  47. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  48. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  49. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  50. package/es/components/empty_prompt/empty_prompt.js +1 -1
  51. package/es/components/flyout/flyout_menu.js +2 -2
  52. package/es/components/flyout/manager/flyout_child.js +1 -1
  53. package/es/components/flyout/manager/flyout_managed.js +1 -1
  54. package/es/components/form/field_number/field_number.js +2 -2
  55. package/es/components/form/field_password/field_password.js +6 -3
  56. package/es/components/form/field_text/field_text.js +2 -2
  57. package/es/components/form/form_control_button/form_control_button.js +1 -1
  58. package/es/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  59. package/es/components/form/form_control_layout/form_control_layout.js +2 -2
  60. package/es/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  61. package/es/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  62. package/es/components/form/text_area/text_area.js +2 -2
  63. package/es/components/header/header.a11y.js +1 -1
  64. package/es/components/header/header_links/header_link.js +1 -1
  65. package/es/components/header/header_links/header_links.js +1 -1
  66. package/es/components/header/header_logo/header_logo.js +1 -1
  67. package/es/components/header/header_section/header_section_item_button.js +1 -1
  68. package/es/components/icon/assets/significant_events.js +39 -0
  69. package/es/components/icon/icon.js +1 -1
  70. package/es/components/icon/icon_glyphs.a11y.js +1 -1
  71. package/es/components/icon/icon_map.js +3 -0
  72. package/es/components/index.js +1 -0
  73. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -1
  74. package/es/components/list_group/list_group.js +2 -2
  75. package/es/components/list_group/list_group_item.js +2 -2
  76. package/es/components/list_group/list_group_item_extra_action.js +1 -1
  77. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  78. package/es/components/list_item_layout/_list_item_layout.styles.js +1 -1
  79. package/es/components/loading/loading_logo.js +1 -1
  80. package/es/components/markdown_editor/markdown_editor.js +1 -1
  81. package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  82. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  83. package/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
  84. package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  85. package/es/components/outside_click_detector/outside_click_detector.js +71 -108
  86. package/es/components/page/page_header/page_header_content.js +1 -1
  87. package/es/components/pagination/pagination_button.js +1 -1
  88. package/es/components/pagination/pagination_button_arrow.js +6 -2
  89. package/es/components/search_bar/search_bar.js +20 -16
  90. package/es/components/search_bar/search_box.js +4 -2
  91. package/es/components/selectable/selectable_list/selectable_list.js +2 -2
  92. package/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  93. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  94. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +3 -2
  95. package/es/components/table/sticky_header/context.js +32 -0
  96. package/es/components/table/sticky_header/index.js +10 -0
  97. package/es/components/table/sticky_header/sticky_header.js +151 -0
  98. package/es/components/table/sticky_header/sticky_header.styles.js +43 -0
  99. package/es/components/table/sticky_scrollbar/index.js +9 -0
  100. package/es/components/table/sticky_scrollbar/sticky_scrollbar.js +141 -0
  101. package/es/components/table/sticky_scrollbar/sticky_scrollbar.styles.js +27 -0
  102. package/es/components/table/store/provider.js +37 -0
  103. package/es/components/table/store/store.js +75 -0
  104. package/es/components/table/table.js +43 -6
  105. package/es/components/table/table.styles.js +4 -4
  106. package/es/components/table/table_header_cell.js +117 -49
  107. package/es/components/table/table_header_cell_checkbox.js +59 -25
  108. package/es/components/text_truncate/text_truncate.js +8 -3
  109. package/es/components/timeline/timeline_item_icon.js +1 -1
  110. package/es/components/toast/global_toast_list.js +1 -1
  111. package/es/components/toast/toast.js +1 -1
  112. package/es/components/tool_tip/icon_tip.js +1 -1
  113. package/es/components/tool_tip/tool_tip.js +1 -1
  114. package/es/components/tool_tip/tool_tip.styles.js +14 -5
  115. package/es/utils/publisher.js +53 -0
  116. package/eui.d.ts +1300 -989
  117. package/i18ntokens.json +2390 -2372
  118. package/lib/components/avatar/avatar.js +15 -6
  119. package/lib/components/badge/badge.js +1 -1
  120. package/lib/components/badge/beta_badge/beta_badge.js +1 -1
  121. package/lib/components/banner/banner.js +211 -0
  122. package/lib/components/banner/banner.styles.js +80 -0
  123. package/lib/components/banner/index.js +12 -0
  124. package/lib/components/basic_table/basic_table.js +28 -14
  125. package/lib/components/basic_table/collapsed_item_actions.js +5 -4
  126. package/lib/components/basic_table/default_item_action.js +3 -5
  127. package/lib/components/basic_table/in_memory_table.js +4 -4
  128. package/lib/components/breadcrumbs/_breadcrumb_content.js +29 -19
  129. package/lib/components/button/button_display/_button_display_content.js +1 -1
  130. package/lib/components/button/button_empty/button_empty.js +1 -1
  131. package/lib/components/button/button_icon/button_icon.js +1 -1
  132. package/lib/components/call_out/call_out.js +1 -1
  133. package/lib/components/card/card.js +1 -1
  134. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  135. package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
  136. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  137. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  138. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  139. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  140. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  141. package/lib/components/comment_list/comment.js +2 -2
  142. package/lib/components/comment_list/comment_event.js +1 -1
  143. package/lib/components/comment_list/comment_list.js +2 -2
  144. package/lib/components/comment_list/comment_timeline.js +1 -1
  145. package/lib/components/context_menu/context_menu_item.js +1 -1
  146. package/lib/components/context_menu/context_menu_panel_title.js +0 -12
  147. package/lib/components/datagrid/body/cell/data_grid_cell.js +12 -12
  148. package/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  149. package/lib/components/datagrid/body/cell/data_grid_cell_actions.styles.js +1 -1
  150. package/lib/components/datagrid/body/data_grid_body.js +7 -7
  151. package/lib/components/datagrid/body/data_grid_body_custom.js +7 -7
  152. package/lib/components/datagrid/body/data_grid_body_virtualized.js +7 -7
  153. package/lib/components/datagrid/body/header/data_grid_header_cell.js +6 -6
  154. package/lib/components/datagrid/controls/column_sorting.js +7 -7
  155. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  156. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  157. package/lib/components/datagrid/controls/display_selector.js +2 -1
  158. package/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  159. package/lib/components/datagrid/utils/in_memory.js +6 -6
  160. package/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  161. package/lib/components/date_picker/date_picker.js +2 -2
  162. package/lib/components/date_picker/date_picker_range.js +1 -1
  163. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  164. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  165. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  166. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  167. package/lib/components/empty_prompt/empty_prompt.js +1 -1
  168. package/lib/components/flyout/flyout_menu.js +2 -2
  169. package/lib/components/flyout/manager/flyout_child.js +1 -1
  170. package/lib/components/form/field_number/field_number.js +2 -2
  171. package/lib/components/form/field_password/field_password.js +6 -3
  172. package/lib/components/form/field_text/field_text.js +2 -2
  173. package/lib/components/form/form_control_button/form_control_button.js +1 -1
  174. package/lib/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  175. package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
  176. package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  177. package/lib/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  178. package/lib/components/form/text_area/text_area.js +2 -2
  179. package/lib/components/header/header.a11y.js +1 -1
  180. package/lib/components/header/header_links/header_link.js +1 -1
  181. package/lib/components/header/header_links/header_links.js +1 -1
  182. package/lib/components/header/header_logo/header_logo.js +1 -1
  183. package/lib/components/header/header_section/header_section_item_button.js +1 -1
  184. package/lib/components/icon/assets/significant_events.js +46 -0
  185. package/lib/components/icon/icon.js +1 -1
  186. package/lib/components/icon/icon_glyphs.a11y.js +1 -1
  187. package/lib/components/icon/icon_map.js +5 -0
  188. package/lib/components/icon/svgs/significant_events.svg +11 -0
  189. package/lib/components/index.js +11 -0
  190. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -1
  191. package/lib/components/list_group/list_group.js +2 -2
  192. package/lib/components/list_group/list_group_item.js +2 -2
  193. package/lib/components/list_group/list_group_item_extra_action.js +1 -1
  194. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  195. package/lib/components/list_item_layout/_list_item_layout.styles.js +1 -1
  196. package/lib/components/loading/loading_logo.js +1 -1
  197. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  198. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  199. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  200. package/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
  201. package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  202. package/lib/components/outside_click_detector/outside_click_detector.js +69 -106
  203. package/lib/components/page/page_header/page_header_content.js +1 -1
  204. package/lib/components/pagination/pagination_button.js +1 -1
  205. package/lib/components/pagination/pagination_button_arrow.js +6 -2
  206. package/lib/components/search_bar/search_bar.js +20 -16
  207. package/lib/components/search_bar/search_box.js +4 -2
  208. package/lib/components/selectable/selectable_list/selectable_list.js +2 -2
  209. package/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  210. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  211. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +3 -2
  212. package/lib/components/table/sticky_header/context.js +41 -0
  213. package/lib/components/table/sticky_header/index.js +19 -0
  214. package/lib/components/table/sticky_header/sticky_header.js +156 -0
  215. package/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
  216. package/lib/components/table/sticky_scrollbar/index.js +12 -0
  217. package/lib/components/table/sticky_scrollbar/sticky_scrollbar.js +148 -0
  218. package/lib/components/table/sticky_scrollbar/sticky_scrollbar.styles.js +31 -0
  219. package/lib/components/table/store/provider.js +46 -0
  220. package/lib/components/table/store/store.js +80 -0
  221. package/lib/components/table/table.js +46 -6
  222. package/lib/components/table/table.styles.js +4 -4
  223. package/lib/components/table/table_header_cell.js +119 -49
  224. package/lib/components/table/table_header_cell_checkbox.js +62 -25
  225. package/lib/components/text_truncate/text_truncate.js +8 -3
  226. package/lib/components/timeline/timeline_item_icon.js +1 -1
  227. package/lib/components/toast/global_toast_list.js +1 -1
  228. package/lib/components/toast/toast.js +1 -1
  229. package/lib/components/tool_tip/icon_tip.js +1 -1
  230. package/lib/components/tool_tip/tool_tip.js +1 -1
  231. package/lib/components/tool_tip/tool_tip.styles.js +14 -5
  232. package/lib/utils/publisher.js +59 -0
  233. package/optimize/es/components/avatar/avatar.js +12 -4
  234. package/optimize/es/components/banner/banner.js +112 -0
  235. package/optimize/es/components/banner/banner.styles.js +76 -0
  236. package/optimize/es/components/banner/index.js +9 -0
  237. package/optimize/es/components/basic_table/basic_table.js +24 -10
  238. package/optimize/es/components/basic_table/collapsed_item_actions.js +5 -4
  239. package/optimize/es/components/basic_table/default_item_action.js +3 -5
  240. package/optimize/es/components/breadcrumbs/_breadcrumb_content.js +27 -18
  241. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  242. package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  243. package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.styles.js +2 -2
  244. package/optimize/es/components/datagrid/controls/display_selector.js +2 -1
  245. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  246. package/optimize/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  247. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  248. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  249. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  250. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  251. package/optimize/es/components/form/field_password/field_password.js +6 -3
  252. package/optimize/es/components/header/header.a11y.js +1 -1
  253. package/optimize/es/components/icon/assets/significant_events.js +38 -0
  254. package/optimize/es/components/icon/icon_glyphs.a11y.js +1 -1
  255. package/optimize/es/components/icon/icon_map.js +3 -0
  256. package/optimize/es/components/index.js +1 -0
  257. package/optimize/es/components/list_item_layout/_list_item_layout.styles.js +1 -1
  258. package/optimize/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
  259. package/optimize/es/components/outside_click_detector/outside_click_detector.js +70 -104
  260. package/optimize/es/components/pagination/pagination_button_arrow.js +6 -2
  261. package/optimize/es/components/search_bar/search_bar.js +20 -16
  262. package/optimize/es/components/search_bar/search_box.js +4 -2
  263. package/optimize/es/components/selectable/selectable_list/selectable_list.js +1 -1
  264. package/optimize/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  265. package/optimize/es/components/table/sticky_header/context.js +32 -0
  266. package/optimize/es/components/table/sticky_header/index.js +10 -0
  267. package/optimize/es/components/table/sticky_header/sticky_header.js +146 -0
  268. package/optimize/es/components/table/sticky_header/sticky_header.styles.js +43 -0
  269. package/optimize/es/components/table/sticky_scrollbar/index.js +9 -0
  270. package/optimize/es/components/table/sticky_scrollbar/sticky_scrollbar.js +136 -0
  271. package/optimize/es/components/table/sticky_scrollbar/sticky_scrollbar.styles.js +27 -0
  272. package/optimize/es/components/table/store/provider.js +37 -0
  273. package/optimize/es/components/table/store/store.js +75 -0
  274. package/optimize/es/components/table/table.js +25 -6
  275. package/optimize/es/components/table/table.styles.js +4 -4
  276. package/optimize/es/components/table/table_header_cell.js +116 -48
  277. package/optimize/es/components/table/table_header_cell_checkbox.js +59 -25
  278. package/optimize/es/components/text_truncate/text_truncate.js +8 -3
  279. package/optimize/es/components/tool_tip/tool_tip.js +1 -1
  280. package/optimize/es/components/tool_tip/tool_tip.styles.js +14 -5
  281. package/optimize/es/utils/publisher.js +53 -0
  282. package/optimize/lib/components/avatar/avatar.js +12 -4
  283. package/optimize/lib/components/banner/banner.js +121 -0
  284. package/optimize/lib/components/banner/banner.styles.js +80 -0
  285. package/optimize/lib/components/banner/index.js +12 -0
  286. package/optimize/lib/components/basic_table/basic_table.js +24 -10
  287. package/optimize/lib/components/basic_table/collapsed_item_actions.js +5 -4
  288. package/optimize/lib/components/basic_table/default_item_action.js +3 -5
  289. package/optimize/lib/components/breadcrumbs/_breadcrumb_content.js +27 -18
  290. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  291. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  292. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.styles.js +1 -1
  293. package/optimize/lib/components/datagrid/controls/display_selector.js +2 -1
  294. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  295. package/optimize/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  296. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  297. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  298. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  299. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  300. package/optimize/lib/components/form/field_password/field_password.js +6 -3
  301. package/optimize/lib/components/header/header.a11y.js +1 -1
  302. package/optimize/lib/components/icon/assets/significant_events.js +46 -0
  303. package/optimize/lib/components/icon/icon_glyphs.a11y.js +1 -1
  304. package/optimize/lib/components/icon/icon_map.js +5 -0
  305. package/optimize/lib/components/icon/svgs/significant_events.svg +11 -0
  306. package/optimize/lib/components/index.js +11 -0
  307. package/optimize/lib/components/list_item_layout/_list_item_layout.styles.js +1 -1
  308. package/optimize/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
  309. package/optimize/lib/components/outside_click_detector/outside_click_detector.js +69 -103
  310. package/optimize/lib/components/pagination/pagination_button_arrow.js +6 -2
  311. package/optimize/lib/components/search_bar/search_bar.js +20 -16
  312. package/optimize/lib/components/search_bar/search_box.js +4 -2
  313. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  314. package/optimize/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  315. package/optimize/lib/components/table/sticky_header/context.js +41 -0
  316. package/optimize/lib/components/table/sticky_header/index.js +19 -0
  317. package/optimize/lib/components/table/sticky_header/sticky_header.js +156 -0
  318. package/optimize/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
  319. package/optimize/lib/components/table/sticky_scrollbar/index.js +12 -0
  320. package/optimize/lib/components/table/sticky_scrollbar/sticky_scrollbar.js +146 -0
  321. package/optimize/lib/components/table/sticky_scrollbar/sticky_scrollbar.styles.js +31 -0
  322. package/optimize/lib/components/table/store/provider.js +46 -0
  323. package/optimize/lib/components/table/store/store.js +80 -0
  324. package/optimize/lib/components/table/table.js +28 -6
  325. package/optimize/lib/components/table/table.styles.js +4 -4
  326. package/optimize/lib/components/table/table_header_cell.js +119 -48
  327. package/optimize/lib/components/table/table_header_cell_checkbox.js +62 -25
  328. package/optimize/lib/components/text_truncate/text_truncate.js +8 -3
  329. package/optimize/lib/components/tool_tip/tool_tip.js +1 -1
  330. package/optimize/lib/components/tool_tip/tool_tip.styles.js +14 -5
  331. package/optimize/lib/utils/publisher.js +59 -0
  332. package/package.json +4 -4
  333. package/test-env/components/avatar/avatar.js +15 -6
  334. package/test-env/components/badge/badge.js +1 -1
  335. package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
  336. package/test-env/components/banner/banner.js +210 -0
  337. package/test-env/components/banner/banner.styles.js +80 -0
  338. package/test-env/components/banner/index.js +12 -0
  339. package/test-env/components/basic_table/basic_table.js +28 -14
  340. package/test-env/components/basic_table/collapsed_item_actions.js +5 -4
  341. package/test-env/components/basic_table/default_item_action.js +3 -5
  342. package/test-env/components/basic_table/in_memory_table.js +4 -4
  343. package/test-env/components/breadcrumbs/_breadcrumb_content.js +29 -19
  344. package/test-env/components/button/button_display/_button_display_content.js +1 -1
  345. package/test-env/components/button/button_empty/button_empty.js +1 -1
  346. package/test-env/components/button/button_icon/button_icon.js +1 -1
  347. package/test-env/components/call_out/call_out.js +1 -1
  348. package/test-env/components/card/card.js +1 -1
  349. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  350. package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
  351. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  352. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  353. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  354. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  355. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  356. package/test-env/components/comment_list/comment.js +2 -2
  357. package/test-env/components/comment_list/comment_event.js +1 -1
  358. package/test-env/components/comment_list/comment_list.js +2 -2
  359. package/test-env/components/comment_list/comment_timeline.js +1 -1
  360. package/test-env/components/context_menu/context_menu_item.js +1 -1
  361. package/test-env/components/context_menu/context_menu_panel_title.js +0 -12
  362. package/test-env/components/datagrid/body/cell/data_grid_cell.js +12 -12
  363. package/test-env/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  364. package/test-env/components/datagrid/body/cell/data_grid_cell_actions.styles.js +1 -1
  365. package/test-env/components/datagrid/body/data_grid_body.js +7 -7
  366. package/test-env/components/datagrid/body/data_grid_body_custom.js +7 -7
  367. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +7 -7
  368. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +6 -6
  369. package/test-env/components/datagrid/controls/column_sorting.js +7 -7
  370. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  371. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  372. package/test-env/components/datagrid/controls/display_selector.js +2 -1
  373. package/test-env/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  374. package/test-env/components/datagrid/utils/in_memory.js +6 -6
  375. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  376. package/test-env/components/date_picker/date_picker.js +2 -2
  377. package/test-env/components/date_picker/date_picker_range.js +1 -1
  378. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  379. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  380. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  381. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  382. package/test-env/components/empty_prompt/empty_prompt.js +1 -1
  383. package/test-env/components/flyout/flyout_menu.js +2 -2
  384. package/test-env/components/flyout/manager/flyout_child.js +1 -1
  385. package/test-env/components/form/field_number/field_number.js +2 -2
  386. package/test-env/components/form/field_password/field_password.js +6 -3
  387. package/test-env/components/form/field_text/field_text.js +2 -2
  388. package/test-env/components/form/form_control_button/form_control_button.js +1 -1
  389. package/test-env/components/form/form_control_layout/append_prepend/form_append_prepend.js +2 -2
  390. package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
  391. package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  392. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  393. package/test-env/components/form/text_area/text_area.js +2 -2
  394. package/test-env/components/header/header.a11y.js +1 -1
  395. package/test-env/components/header/header_links/header_link.js +1 -1
  396. package/test-env/components/header/header_links/header_links.js +1 -1
  397. package/test-env/components/header/header_logo/header_logo.js +1 -1
  398. package/test-env/components/header/header_section/header_section_item_button.js +1 -1
  399. package/test-env/components/icon/assets/significant_events.js +46 -0
  400. package/test-env/components/icon/icon_glyphs.a11y.js +1 -1
  401. package/test-env/components/icon/icon_map.js +5 -0
  402. package/test-env/components/index.js +11 -0
  403. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -1
  404. package/test-env/components/list_group/list_group.js +2 -2
  405. package/test-env/components/list_group/list_group_item.js +2 -2
  406. package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
  407. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  408. package/test-env/components/list_item_layout/_list_item_layout.styles.js +1 -1
  409. package/test-env/components/loading/loading_logo.js +1 -1
  410. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  411. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  412. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  413. package/test-env/components/markdown_editor/markdown_editor_help_button.js +7 -4
  414. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  415. package/test-env/components/outside_click_detector/outside_click_detector.js +70 -104
  416. package/test-env/components/page/page_header/page_header_content.js +1 -1
  417. package/test-env/components/pagination/pagination_button.js +1 -1
  418. package/test-env/components/pagination/pagination_button_arrow.js +6 -2
  419. package/test-env/components/search_bar/search_bar.js +20 -16
  420. package/test-env/components/search_bar/search_box.js +4 -2
  421. package/test-env/components/selectable/selectable_list/selectable_list.js +2 -2
  422. package/test-env/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  423. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  424. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +3 -2
  425. package/test-env/components/table/sticky_header/context.js +41 -0
  426. package/test-env/components/table/sticky_header/index.js +19 -0
  427. package/test-env/components/table/sticky_header/sticky_header.js +156 -0
  428. package/test-env/components/table/sticky_header/sticky_header.styles.js +47 -0
  429. package/test-env/components/table/sticky_scrollbar/index.js +12 -0
  430. package/test-env/components/table/sticky_scrollbar/sticky_scrollbar.js +146 -0
  431. package/test-env/components/table/sticky_scrollbar/sticky_scrollbar.styles.js +31 -0
  432. package/test-env/components/table/store/provider.js +46 -0
  433. package/test-env/components/table/store/store.js +80 -0
  434. package/test-env/components/table/table.js +46 -6
  435. package/test-env/components/table/table.styles.js +4 -4
  436. package/test-env/components/table/table_header_cell.js +120 -49
  437. package/test-env/components/table/table_header_cell_checkbox.js +62 -25
  438. package/test-env/components/text_truncate/text_truncate.js +8 -3
  439. package/test-env/components/timeline/timeline_item_icon.js +1 -1
  440. package/test-env/components/toast/global_toast_list.js +1 -1
  441. package/test-env/components/toast/toast.js +1 -1
  442. package/test-env/components/tool_tip/icon_tip.js +1 -1
  443. package/test-env/components/tool_tip/tool_tip.js +1 -1
  444. package/test-env/components/tool_tip/tool_tip.styles.js +14 -5
  445. package/test-env/utils/publisher.js +59 -0
@@ -0,0 +1,151 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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; } }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ /*
8
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
9
+ * or more contributor license agreements. Licensed under the Elastic License
10
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
11
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
12
+ * Side Public License, v 1.
13
+ */
14
+
15
+ import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
16
+ import { useEuiTableColumnDataStore } from '../store/provider';
17
+ import { EuiTableHeader } from '../table_header';
18
+ import { EuiTableWithinStickyHeaderProvider } from './context';
19
+ import { useEuiMemoizedStyles } from '../../../services';
20
+ import { euiTableStyles } from '../table.styles';
21
+ import { euiTableStickyHeaderStyles } from './sticky_header.styles';
22
+ import { euiContainerCSS } from '../../../global_styling';
23
+ import { EUI_TABLE_CSS_CONTAINER_NAME } from '../const';
24
+
25
+ /**
26
+ * @internal
27
+ */
28
+ import { jsx as ___EmotionJSX } from "@emotion/react";
29
+ export var EuiTableStickyHeader = function EuiTableStickyHeader(_ref) {
30
+ var tableRef = _ref.tableRef,
31
+ tableWrapperRef = _ref.tableWrapperRef,
32
+ compressed = _ref.compressed,
33
+ scrollableInline = _ref.scrollableInline,
34
+ isResponsive = _ref.isResponsive;
35
+ var store = useEuiTableColumnDataStore();
36
+ var columnElements = useRef(new Map());
37
+ var stickyTableWrapperRef = useRef(null);
38
+ var stickyTableRef = useRef(null);
39
+ var _useState = useState(function () {
40
+ return Array.from(store.getColumns().entries());
41
+ }),
42
+ _useState2 = _slicedToArray(_useState, 2),
43
+ columns = _useState2[0],
44
+ setColumns = _useState2[1];
45
+ var originalStyles = useEuiMemoizedStyles(euiTableStyles);
46
+ var styles = useEuiMemoizedStyles(euiTableStickyHeaderStyles);
47
+
48
+ /**
49
+ * Get a callback ref to handle the column element ref
50
+ */
51
+ var getColumnRef = useCallback(function (id) {
52
+ return function (element) {
53
+ if (element) {
54
+ columnElements.current.set(id, element);
55
+ } else {
56
+ columnElements.current.delete(id);
57
+ }
58
+ };
59
+ }, []);
60
+ useEffect(function () {
61
+ var unsubscribe = store.subscribe(function (columns) {
62
+ setColumns(Array.from(columns.entries()));
63
+ });
64
+ var unsubscribeColumnWidths = store.subscribeToColumnWidths(function (columns) {
65
+ columns.forEach(function (width, name) {
66
+ var element = columnElements.current.get(name);
67
+ if (element) {
68
+ element.style.width = "".concat(width, "px");
69
+ }
70
+ });
71
+ });
72
+ return function () {
73
+ unsubscribe();
74
+ unsubscribeColumnWidths();
75
+ };
76
+ }, [store]);
77
+
78
+ // When columns change, apply column widths after render
79
+ useLayoutEffect(function () {
80
+ store.getColumnWidths().forEach(function (width, name) {
81
+ var element = columnElements.current.get(name);
82
+ if (element) {
83
+ element.style.width = "".concat(width, "px");
84
+ }
85
+ });
86
+ }, [store, columns]);
87
+ useEffect(function () {
88
+ if (!scrollableInline || !tableWrapperRef.current || !stickyTableRef.current || !tableRef.current) {
89
+ return;
90
+ }
91
+ var tableWrapper = tableWrapperRef.current;
92
+ var handleScroll = function handleScroll() {
93
+ if (stickyTableWrapperRef.current) {
94
+ stickyTableWrapperRef.current.scrollLeft = tableWrapper.scrollLeft;
95
+ }
96
+ };
97
+ var handleResize = function handleResize(entries) {
98
+ var element = entries[0].target;
99
+ if (!element) {
100
+ return;
101
+ }
102
+ if (stickyTableRef.current) {
103
+ stickyTableRef.current.style.minWidth = "".concat(element.clientWidth, "px");
104
+ }
105
+ };
106
+
107
+ // Initial width sync
108
+ stickyTableRef.current.style.minWidth = "".concat(tableRef.current.getBoundingClientRect().width, "px");
109
+
110
+ // Use ResizeObserver to keep table width in sync
111
+ var resizeObserver = new ResizeObserver(handleResize);
112
+ resizeObserver.observe(tableRef.current);
113
+ tableWrapper.addEventListener('scroll', handleScroll, {
114
+ passive: true
115
+ });
116
+ return function () {
117
+ tableWrapper.removeEventListener('scroll', handleScroll);
118
+ resizeObserver.disconnect();
119
+ };
120
+ }, [scrollableInline, tableRef, tableWrapperRef]);
121
+ var tableStyles = [originalStyles.euiTable, scrollableInline && originalStyles.euiTableScrollableInline, (!compressed || isResponsive) && originalStyles.uncompressed, compressed && !isResponsive && originalStyles.compressed,
122
+ // Forced fixed layout since all column widths come synced from the main table
123
+ originalStyles.layout.fixed, originalStyles.hasBackground, styles.table];
124
+ if (isResponsive) {
125
+ return null;
126
+ }
127
+ return ___EmotionJSX(EuiTableWithinStickyHeaderProvider, null, ___EmotionJSX("div", {
128
+ css: styles.wrapper,
129
+ "aria-hidden": "true"
130
+ }, ___EmotionJSX("div", {
131
+ css: [
132
+ // This CSS container is needed to feed `<EuiTableHeaderCell>`
133
+ // with `sticky` prop set the necessary scroll state
134
+ euiContainerCSS('normal', EUI_TABLE_CSS_CONTAINER_NAME, true), styles.innerWrapper, ";label:EuiTableStickyHeader;"],
135
+ ref: stickyTableWrapperRef
136
+ }, ___EmotionJSX("table", {
137
+ css: tableStyles,
138
+ ref: stickyTableRef
139
+ }, ___EmotionJSX(EuiTableHeader, {
140
+ css: styles.header
141
+ }, columns.map(function (_ref2, index) {
142
+ var _data$renderHeaderCel, _data$renderHeaderCel2;
143
+ var _ref3 = _slicedToArray(_ref2, 2),
144
+ name = _ref3[0],
145
+ data = _ref3[1];
146
+ return (_data$renderHeaderCel = (_data$renderHeaderCel2 = data.renderHeaderCellRef).current) === null || _data$renderHeaderCel === void 0 ? void 0 : _data$renderHeaderCel.call(_data$renderHeaderCel2, {
147
+ ref: getColumnRef(name),
148
+ key: "".concat(name, "-").concat(index)
149
+ });
150
+ }))))));
151
+ };
@@ -0,0 +1,43 @@
1
+ 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)."; }
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
6
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
7
+ * Side Public License, v 1.
8
+ */
9
+
10
+ import { css } from '@emotion/react';
11
+ var _ref = process.env.NODE_ENV === "production" ? {
12
+ name: "1uk19xy-table",
13
+ styles: "pointer-events:auto;label:table;"
14
+ } : {
15
+ name: "1uk19xy-table",
16
+ styles: "pointer-events:auto;label:table;",
17
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
18
+ };
19
+ var _ref2 = process.env.NODE_ENV === "production" ? {
20
+ name: "15dchac-innerWrapper",
21
+ styles: "overflow-inline:hidden;label:innerWrapper;"
22
+ } : {
23
+ name: "15dchac-innerWrapper",
24
+ styles: "overflow-inline:hidden;label:innerWrapper;",
25
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
26
+ };
27
+ var _ref3 = process.env.NODE_ENV === "production" ? {
28
+ name: "4w3rcu-wrapper",
29
+ styles: "position:sticky;inset-block-start:var(--euiTableStickyHeaderOffsetTop, 0);z-index:var(--euiTableStickyHeaderZIndex, 1);block-size:0;overflow-block:visible;label:wrapper;"
30
+ } : {
31
+ name: "4w3rcu-wrapper",
32
+ styles: "position:sticky;inset-block-start:var(--euiTableStickyHeaderOffsetTop, 0);z-index:var(--euiTableStickyHeaderZIndex, 1);block-size:0;overflow-block:visible;label:wrapper;",
33
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
34
+ };
35
+ export var euiTableStickyHeaderStyles = function euiTableStickyHeaderStyles(_ref4) {
36
+ var euiTheme = _ref4.euiTheme;
37
+ return {
38
+ wrapper: _ref3,
39
+ innerWrapper: _ref2,
40
+ table: _ref,
41
+ header: /*#__PURE__*/css("th::after{content:'';display:block;inline-size:100%;block-size:", euiTheme.border.width.thin, ";background-color:", euiTheme.border.color, ";};label:header;")
42
+ };
43
+ };
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ export { EuiTableStickyScrollbar } from './sticky_scrollbar';
@@ -0,0 +1,141 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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; } }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ /*
8
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
9
+ * or more contributor license agreements. Licensed under the Elastic License
10
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
11
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
12
+ * Side Public License, v 1.
13
+ */
14
+
15
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
16
+ import { useEuiMemoizedStyles } from '../../../services';
17
+ import { euiTableStickyScrollbarStyles } from './sticky_scrollbar.styles';
18
+ import { jsx as ___EmotionJSX } from "@emotion/react";
19
+ export var EuiTableStickyScrollbar = function EuiTableStickyScrollbar(_ref) {
20
+ var tableWrapperRef = _ref.tableWrapperRef;
21
+ var styles = useEuiMemoizedStyles(euiTableStickyScrollbarStyles);
22
+ var trackElementRef = useRef(null);
23
+ var dragStartRef = useRef(null);
24
+ var requestAnimationFramePendingRef = useRef(false);
25
+ var _useState = useState(false),
26
+ _useState2 = _slicedToArray(_useState, 2),
27
+ isActive = _useState2[0],
28
+ setIsActive = _useState2[1];
29
+ var _useState3 = useState(false),
30
+ _useState4 = _slicedToArray(_useState3, 2),
31
+ isHidden = _useState4[0],
32
+ setIsHidden = _useState4[1];
33
+ var updateTrack = useCallback(function (element) {
34
+ var clientWidth = element.clientWidth,
35
+ scrollWidth = element.scrollWidth,
36
+ scrollLeft = element.scrollLeft;
37
+ if (!requestAnimationFramePendingRef.current) {
38
+ requestAnimationFramePendingRef.current = true;
39
+ requestAnimationFrame(function () {
40
+ var el = trackElementRef.current;
41
+ if (el) {
42
+ el.style.inlineSize = "".concat(clientWidth / scrollWidth * 100, "%");
43
+ el.style.marginInlineStart = "".concat(scrollLeft / scrollWidth * 100, "%");
44
+ }
45
+ requestAnimationFramePendingRef.current = false;
46
+ });
47
+ }
48
+ }, []);
49
+ var handleScroll = useCallback(function (event) {
50
+ if (event.target) {
51
+ updateTrack(event.target);
52
+ }
53
+ }, [updateTrack]);
54
+ var handleResize = useCallback(function (entries) {
55
+ var element = entries[0].target;
56
+ if (!element) {
57
+ return;
58
+ }
59
+ updateTrack(element);
60
+ setIsActive(element.clientWidth < element.scrollWidth);
61
+ }, [updateTrack]);
62
+ var handleBottomCornerIntersection = useCallback(function (entries) {
63
+ var entry = entries[0];
64
+ var element = entry.target;
65
+ if (!element) {
66
+ return;
67
+ }
68
+ setIsHidden(!entry.isIntersecting);
69
+ }, []);
70
+ var handlePointerDown = useCallback(function (event) {
71
+ var _el$scrollLeft;
72
+ var el = tableWrapperRef.current;
73
+ dragStartRef.current = {
74
+ x: event.clientX,
75
+ scrollLeft: (_el$scrollLeft = el === null || el === void 0 ? void 0 : el.scrollLeft) !== null && _el$scrollLeft !== void 0 ? _el$scrollLeft : 0
76
+ };
77
+ event.currentTarget.setPointerCapture(event.pointerId);
78
+ }, [tableWrapperRef]);
79
+ var handlePointerUp = useCallback(function () {
80
+ dragStartRef.current = null;
81
+ }, [dragStartRef]);
82
+ var handlePointerMove = useCallback(function (event) {
83
+ var el = tableWrapperRef.current;
84
+ if (!dragStartRef.current || !el) {
85
+ return;
86
+ }
87
+ var diff = event.clientX - dragStartRef.current.x;
88
+ var ratio = el.scrollWidth / el.clientWidth;
89
+ el.scrollLeft = dragStartRef.current.scrollLeft + diff * ratio;
90
+ }, [tableWrapperRef]);
91
+ useEffect(function () {
92
+ var element = tableWrapperRef.current;
93
+ if (!element) {
94
+ return;
95
+ }
96
+ updateTrack(element);
97
+ element.addEventListener('scroll', handleScroll, {
98
+ passive: true
99
+ });
100
+
101
+ // ResizeObserver is available in all supported browsers,
102
+ // but jsdom and jest don't provide a polyfill for it.
103
+ var resizeObserver;
104
+ if (typeof window.ResizeObserver !== 'undefined') {
105
+ resizeObserver = new ResizeObserver(handleResize);
106
+ resizeObserver.observe(element);
107
+ }
108
+
109
+ // IntersectionOserver is available in all supported browsers,
110
+ // but jsdom and jest don't provide a polyfill for it.
111
+ var intersectionObserver;
112
+ if (typeof window.IntersectionObserver !== 'undefined') {
113
+ intersectionObserver = new IntersectionObserver(handleBottomCornerIntersection, {
114
+ threshold: 0,
115
+ rootMargin: '-100% 0px 0px 0px'
116
+ });
117
+ intersectionObserver.observe(element);
118
+ }
119
+ return function () {
120
+ var _resizeObserver, _intersectionObserver;
121
+ element.removeEventListener('scroll', handleScroll);
122
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect();
123
+ (_intersectionObserver = intersectionObserver) === null || _intersectionObserver === void 0 || _intersectionObserver.disconnect();
124
+ };
125
+ }, [tableWrapperRef, updateTrack, handleResize, handleScroll, handleBottomCornerIntersection]);
126
+ if (!isActive) {
127
+ return null;
128
+ }
129
+ return ___EmotionJSX("div", {
130
+ css: [styles.wrapper, isHidden && styles.wrapperHidden, ";label:EuiTableStickyScrollbar;"],
131
+ "data-test-subj": "euiTableStickyScrollbar",
132
+ "aria-hidden": true
133
+ }, ___EmotionJSX("div", {
134
+ css: styles.track,
135
+ ref: trackElementRef,
136
+ onPointerDown: handlePointerDown,
137
+ onPointerMove: handlePointerMove,
138
+ onPointerUp: handlePointerUp,
139
+ "data-test-subj": "euiTableStickyScrollbarTrack"
140
+ }));
141
+ };
@@ -0,0 +1,27 @@
1
+ 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)."; }
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
6
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
7
+ * Side Public License, v 1.
8
+ */
9
+
10
+ import { css } from '@emotion/react';
11
+ import { transparentize } from '../../../services';
12
+ var _ref = process.env.NODE_ENV === "production" ? {
13
+ name: "j6fg69-wrapperHidden",
14
+ styles: "display:none;label:wrapperHidden;"
15
+ } : {
16
+ name: "j6fg69-wrapperHidden",
17
+ styles: "display:none;label:wrapperHidden;",
18
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
19
+ };
20
+ export var euiTableStickyScrollbarStyles = function euiTableStickyScrollbarStyles(_ref2) {
21
+ var euiTheme = _ref2.euiTheme;
22
+ return {
23
+ wrapper: /*#__PURE__*/css("block-size:", euiTheme.size.base, ";padding:", euiTheme.size.xs, ";position:sticky;background:", euiTheme.components.scrollbarTrackColor, ";inset-block-end:var(--euiTableStickyScrollbarOffsetBottom, 0);z-index:var(--euiTableStickyScrollbarZIndex, 0);;label:wrapper;"),
24
+ wrapperHidden: _ref,
25
+ track: /*#__PURE__*/css("block-size:100%;background:", transparentize(euiTheme.colors.darkShade, 0.5), ";border-radius:", euiTheme.border.radius.small, ";;label:track;")
26
+ };
27
+ };
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import React, { createContext, useRef, useContext } from 'react';
10
+ import { createEuiTableStore } from './store';
11
+ import { jsx as ___EmotionJSX } from "@emotion/react";
12
+ var EuiTableStoreContext = /*#__PURE__*/createContext(null);
13
+
14
+ /**
15
+ * @internal
16
+ */
17
+ export var EuiTableStoreProvider = function EuiTableStoreProvider(_ref) {
18
+ var children = _ref.children;
19
+ var store = useRef(null);
20
+ if (!store.current) {
21
+ store.current = createEuiTableStore();
22
+ }
23
+ return ___EmotionJSX(EuiTableStoreContext.Provider, {
24
+ value: store.current
25
+ }, children);
26
+ };
27
+
28
+ /**
29
+ * @internal
30
+ */
31
+ export var useEuiTableColumnDataStore = function useEuiTableColumnDataStore() {
32
+ var store = useContext(EuiTableStoreContext);
33
+ if (!store) {
34
+ throw new Error('[useEuiTableColumnDataStore] Store context not found. This hook must be used within EuiTable!');
35
+ }
36
+ return store;
37
+ };
@@ -0,0 +1,75 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { createPublisher } from '../../../utils/publisher';
10
+
11
+ /**
12
+ * @internal
13
+ */
14
+
15
+ /**
16
+ * @internal
17
+ */
18
+
19
+ /**
20
+ * @internal
21
+ */
22
+
23
+ export var createEuiTableStore = function createEuiTableStore() {
24
+ var columns = new Map();
25
+ var columnsPublisher = createPublisher();
26
+ var columnWidths = new Map();
27
+ var columnWidthsPublisher = createPublisher();
28
+ var registerColumn = function registerColumn(id, data) {
29
+ var _data$currentWidth;
30
+ if (columns.has(id)) {
31
+ throw new Error("[EuiTableStore] Column '".concat(id, "' already registered"));
32
+ }
33
+ columns.set(id, data);
34
+ // Initialize column in the columnWidths map to keep both maps in sync
35
+ columnWidths.set(id, (_data$currentWidth = data.currentWidth) !== null && _data$currentWidth !== void 0 ? _data$currentWidth : 0);
36
+ columnsPublisher.notify(columns);
37
+ return function () {
38
+ columns.delete(id);
39
+ columnWidths.delete(id);
40
+ columnsPublisher.notify(columns);
41
+ };
42
+ };
43
+ var updateColumn = function updateColumn(id, data) {
44
+ var currentData = columns.get(id);
45
+ if (!currentData) {
46
+ throw new Error("[EuiTableStore] Column '".concat(id, "' not found"));
47
+ }
48
+ columns.set(id, data);
49
+ columnsPublisher.notify(columns);
50
+ };
51
+ var updateColumnWidth = function updateColumnWidth(id, width) {
52
+ var currentWidth = columnWidths.get(id);
53
+ if (currentWidth === undefined) {
54
+ throw new Error("[EuiTableStore] No width stored for column '".concat(id, "'"));
55
+ }
56
+ if (currentWidth === width) {
57
+ return;
58
+ }
59
+ columnWidths.set(id, width);
60
+ columnWidthsPublisher.notify(columnWidths);
61
+ };
62
+ return {
63
+ registerColumn: registerColumn,
64
+ updateColumn: updateColumn,
65
+ updateColumnWidth: updateColumnWidth,
66
+ subscribe: columnsPublisher.subscribe,
67
+ subscribeToColumnWidths: columnWidthsPublisher.subscribe,
68
+ getColumns: function getColumns() {
69
+ return columns;
70
+ },
71
+ getColumnWidths: function getColumnWidths() {
72
+ return columnWidths;
73
+ }
74
+ };
75
+ };
@@ -1,4 +1,4 @@
1
- var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline"];
1
+ var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar", "stickyHeader"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
3
  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; }
4
4
  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; }
@@ -10,7 +10,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
10
10
  * Side Public License, v 1.
11
11
  */
12
12
 
13
- import React from 'react';
13
+ import React, { useRef } from 'react';
14
14
  import PropTypes from "prop-types";
15
15
  import classNames from 'classnames';
16
16
  import { useEuiMemoizedStyles } from '../../services';
@@ -20,6 +20,9 @@ import { euiTableStyles } from './table.styles';
20
20
  import { usePropsWithComponentDefaults } from '../provider/component_defaults';
21
21
  import { euiContainerCSS } from '../../global_styling';
22
22
  import { EUI_TABLE_CSS_CONTAINER_NAME } from './const';
23
+ import { EuiTableStickyScrollbar } from './sticky_scrollbar';
24
+ import { EuiTableStickyHeader } from './sticky_header/sticky_header';
25
+ import { EuiTableStoreProvider } from './store/provider';
23
26
  import { jsx as ___EmotionJSX } from "@emotion/react";
24
27
  /**
25
28
  * EuiTable is a low-level building block component used to render tabular data
@@ -43,25 +46,41 @@ export var EuiTable = function EuiTable(originalProps) {
43
46
  responsiveBreakpoint = _usePropsWithComponen.responsiveBreakpoint,
44
47
  _usePropsWithComponen4 = _usePropsWithComponen.scrollableInline,
45
48
  scrollableInline = _usePropsWithComponen4 === void 0 ? false : _usePropsWithComponen4,
49
+ _usePropsWithComponen5 = _usePropsWithComponen.stickyScrollbar,
50
+ stickyScrollbar = _usePropsWithComponen5 === void 0 ? false : _usePropsWithComponen5,
51
+ _usePropsWithComponen6 = _usePropsWithComponen.stickyHeader,
52
+ stickyHeader = _usePropsWithComponen6 === void 0 ? false : _usePropsWithComponen6,
46
53
  rest = _objectWithoutProperties(_usePropsWithComponen, _excluded);
54
+ var tableWrapperRef = useRef(null);
55
+ var tableRef = useRef(null);
47
56
  var isResponsive = useIsEuiTableResponsive(responsiveBreakpoint);
48
57
  var classes = classNames('euiTable', className);
49
58
  var styles = useEuiMemoizedStyles(euiTableStyles);
50
59
  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];
51
60
  var cssStyles = [euiContainerCSS('normal', EUI_TABLE_CSS_CONTAINER_NAME, true), scrollableInline && styles.scrollableWrapper];
52
- return ___EmotionJSX("div", {
53
- css: cssStyles
61
+ return ___EmotionJSX(EuiTableStoreProvider, null, stickyHeader && ___EmotionJSX(EuiTableStickyHeader, {
62
+ scrollableInline: scrollableInline,
63
+ tableRef: tableRef,
64
+ tableWrapperRef: tableWrapperRef,
65
+ compressed: compressed,
66
+ isResponsive: isResponsive
67
+ }), ___EmotionJSX("div", {
68
+ css: cssStyles,
69
+ ref: tableWrapperRef
54
70
  }, ___EmotionJSX("table", _extends({
55
71
  tabIndex: -1,
56
72
  css: tableStyles,
57
- className: classes
73
+ className: classes,
74
+ ref: tableRef
58
75
  }, rest), ___EmotionJSX(EuiTableIsResponsiveContext.Provider, {
59
76
  value: isResponsive
60
77
  }, ___EmotionJSX(EuiTableVariantContext.Provider, {
61
78
  value: {
62
79
  hasBackground: hasBackground
63
80
  }
64
- }, children))));
81
+ }, children)))), scrollableInline && stickyScrollbar && ___EmotionJSX(EuiTableStickyScrollbar, {
82
+ tableWrapperRef: tableWrapperRef
83
+ }));
65
84
  };
66
85
  EuiTable.propTypes = {
67
86
  compressed: PropTypes.bool,
@@ -95,6 +114,24 @@ EuiTable.propTypes = {
95
114
  * @default false
96
115
  */
97
116
  scrollableInline: PropTypes.bool,
117
+ /**
118
+ * Make the horizontal scrollbar visible even if the table is larger
119
+ * than the viewport height. Useful for long tables when the native browser
120
+ * scrollbar is at the bottom of the table and hard to reach.
121
+ *
122
+ * This prop requires [`scrollableInline`](#scrollableInline) to be `true`.
123
+ * @beta
124
+ * @default false
125
+ */
126
+ stickyScrollbar: PropTypes.bool,
127
+ /**
128
+ * Enable sticky table header that remains visible when scrolling.
129
+ * The header row will be duplicated and positioned with `position: sticky`.
130
+ *
131
+ * @beta
132
+ * @default false
133
+ */
134
+ stickyHeader: PropTypes.bool,
98
135
  className: PropTypes.string,
99
136
  "aria-label": PropTypes.string,
100
137
  "data-test-subj": PropTypes.string,
@@ -38,11 +38,11 @@ export var euiTableVariables = function euiTableVariables(_ref6) {
38
38
  };
39
39
  };
40
40
  var _ref = process.env.NODE_ENV === "production" ? {
41
- name: "mqw298-scrollableWrapper",
42
- styles: "overflow-inline:auto;label:scrollableWrapper;"
41
+ name: "l8gzfy-scrollableWrapper",
42
+ styles: "overflow-inline:auto;overscroll-behavior-inline:none;label:scrollableWrapper;"
43
43
  } : {
44
- name: "mqw298-scrollableWrapper",
45
- styles: "overflow-inline:auto;label:scrollableWrapper;",
44
+ name: "l8gzfy-scrollableWrapper",
45
+ styles: "overflow-inline:auto;overscroll-behavior-inline:none;label:scrollableWrapper;",
46
46
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
47
47
  };
48
48
  var _ref2 = process.env.NODE_ENV === "production" ? {