@elastic/eui 116.2.0 → 116.3.1-snapshot.1782148316870

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 (385) 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 +201 -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 +54 -13
  7. package/es/components/basic_table/basic_table.styles.js +19 -1
  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 +17 -0
  11. package/es/components/basic_table/index.js +2 -1
  12. package/es/components/basic_table/pagination_bar.js +19 -4
  13. package/es/components/basic_table/pagination_bar.styles.js +21 -0
  14. package/es/components/basic_table/panel.styles.js +14 -0
  15. package/es/components/basic_table/use_panel_props.js +28 -0
  16. package/es/components/breadcrumbs/_breadcrumb_content.js +29 -19
  17. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  18. package/es/components/context_menu/context_menu_panel_title.js +0 -12
  19. package/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  20. package/es/components/datagrid/controls/display_selector.js +2 -1
  21. package/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  22. package/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  23. package/es/components/date_picker/auto_refresh/refresh_interval.js +176 -229
  24. package/es/components/date_picker/date_picker.js +1 -1
  25. package/es/components/date_picker/react-datepicker/src/index.js +1 -5
  26. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  27. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  28. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  29. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  30. package/es/components/flyout/flyout.component.js +10 -6
  31. package/es/components/flyout/flyout_menu.js +122 -19
  32. package/es/components/flyout/flyout_menu.styles.js +2 -1
  33. package/es/components/flyout/manager/actions.js +20 -0
  34. package/es/components/flyout/manager/flyout_child.js +23 -1
  35. package/es/components/flyout/manager/flyout_managed.js +65 -19
  36. package/es/components/flyout/manager/hooks.js +1 -1
  37. package/es/components/flyout/manager/index.js +2 -2
  38. package/es/components/flyout/manager/reducer.js +32 -8
  39. package/es/components/flyout/manager/selectors.js +8 -2
  40. package/es/components/flyout/manager/store.js +35 -2
  41. package/es/components/flyout/use_flyout_menu.js +2 -2
  42. package/es/components/form/field_password/field_password.js +6 -3
  43. package/es/components/form/field_password/field_password.styles.js +1 -1
  44. package/es/components/form/field_search/field_search.styles.js +1 -1
  45. package/es/components/form/form.styles.js +1 -1
  46. package/es/components/form/form_control_layout/form_control_layout_icons.js +95 -143
  47. package/es/components/form/select/select.styles.js +1 -1
  48. package/es/components/form/text_area/text_area.styles.js +1 -1
  49. package/es/components/form/validatable_control/validatable_control.js +8 -55
  50. package/es/components/header/header.a11y.js +1 -1
  51. package/es/components/index.js +1 -0
  52. package/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
  53. package/es/components/pagination/pagination_button_arrow.js +6 -2
  54. package/es/components/panel/panel.styles.js +4 -4
  55. package/es/components/panel/split_panel/split_panel.styles.js +1 -1
  56. package/es/components/search_bar/search_bar.js +20 -16
  57. package/es/components/search_bar/search_box.js +4 -2
  58. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  59. package/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  60. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
  61. package/es/components/table/mobile/table_sort_mobile.js +64 -103
  62. package/es/components/table/sticky_header/context.js +32 -0
  63. package/es/components/table/sticky_header/index.js +10 -0
  64. package/es/components/table/sticky_header/sticky_header.js +151 -0
  65. package/es/components/table/sticky_header/sticky_header.styles.js +43 -0
  66. package/es/components/table/store/provider.js +37 -0
  67. package/es/components/table/store/store.js +82 -0
  68. package/es/components/table/store/use_unique_column_id.js +25 -0
  69. package/es/components/table/table.js +28 -3
  70. package/es/components/table/table.styles.js +4 -4
  71. package/es/components/table/table_header_cell.js +115 -48
  72. package/es/components/table/table_header_cell_checkbox.js +58 -25
  73. package/es/components/text_truncate/text_truncate.js +8 -3
  74. package/es/components/tool_tip/tool_tip.js +62 -31
  75. package/es/components/tool_tip/tool_tip.styles.js +14 -5
  76. package/es/components/tool_tip/tool_tip_anchor.js +5 -5
  77. package/es/components/tool_tip/tool_tip_manager.js +27 -2
  78. package/es/utils/publisher.js +53 -0
  79. package/eui.d.ts +2314 -1874
  80. package/i18ntokens.json +2580 -2490
  81. package/lib/components/avatar/avatar.js +18 -5
  82. package/lib/components/avatar/avatar.styles.js +16 -16
  83. package/lib/components/banner/banner.js +210 -0
  84. package/lib/components/banner/banner.styles.js +80 -0
  85. package/lib/components/banner/index.js +12 -0
  86. package/lib/components/basic_table/basic_table.js +53 -12
  87. package/lib/components/basic_table/basic_table.styles.js +19 -1
  88. package/lib/components/basic_table/collapsed_item_actions.js +5 -4
  89. package/lib/components/basic_table/default_item_action.js +3 -5
  90. package/lib/components/basic_table/in_memory_table.js +17 -0
  91. package/lib/components/basic_table/index.js +8 -1
  92. package/lib/components/basic_table/pagination_bar.js +19 -4
  93. package/lib/components/basic_table/pagination_bar.styles.js +26 -0
  94. package/lib/components/basic_table/panel.styles.js +20 -0
  95. package/lib/components/basic_table/use_panel_props.js +33 -0
  96. package/lib/components/breadcrumbs/_breadcrumb_content.js +29 -19
  97. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  98. package/lib/components/context_menu/context_menu_panel_title.js +0 -12
  99. package/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  100. package/lib/components/datagrid/controls/display_selector.js +2 -1
  101. package/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  102. package/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  103. package/lib/components/date_picker/auto_refresh/refresh_interval.js +175 -229
  104. package/lib/components/date_picker/date_picker.js +1 -1
  105. package/lib/components/date_picker/react-datepicker/src/index.js +0 -4
  106. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  107. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  108. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  109. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  110. package/lib/components/flyout/flyout.component.js +10 -6
  111. package/lib/components/flyout/flyout_menu.js +120 -19
  112. package/lib/components/flyout/flyout_menu.styles.js +2 -1
  113. package/lib/components/flyout/manager/actions.js +21 -1
  114. package/lib/components/flyout/manager/flyout_child.js +23 -1
  115. package/lib/components/flyout/manager/flyout_managed.js +41 -17
  116. package/lib/components/flyout/manager/hooks.js +6 -0
  117. package/lib/components/flyout/manager/index.js +12 -0
  118. package/lib/components/flyout/manager/reducer.js +31 -7
  119. package/lib/components/flyout/manager/selectors.js +9 -3
  120. package/lib/components/flyout/manager/store.js +34 -1
  121. package/lib/components/flyout/use_flyout_menu.js +2 -2
  122. package/lib/components/form/field_password/field_password.js +6 -3
  123. package/lib/components/form/field_password/field_password.styles.js +1 -1
  124. package/lib/components/form/field_search/field_search.styles.js +1 -1
  125. package/lib/components/form/form.styles.js +1 -1
  126. package/lib/components/form/form_control_layout/form_control_layout_icons.js +95 -145
  127. package/lib/components/form/select/select.styles.js +1 -1
  128. package/lib/components/form/text_area/text_area.styles.js +1 -1
  129. package/lib/components/form/validatable_control/validatable_control.js +7 -52
  130. package/lib/components/header/header.a11y.js +1 -1
  131. package/lib/components/index.js +11 -0
  132. package/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
  133. package/lib/components/pagination/pagination_button_arrow.js +6 -2
  134. package/lib/components/panel/panel.styles.js +4 -4
  135. package/lib/components/panel/split_panel/split_panel.styles.js +1 -1
  136. package/lib/components/search_bar/search_bar.js +20 -16
  137. package/lib/components/search_bar/search_box.js +4 -2
  138. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  139. package/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  140. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
  141. package/lib/components/table/mobile/table_sort_mobile.js +71 -108
  142. package/lib/components/table/sticky_header/context.js +41 -0
  143. package/lib/components/table/sticky_header/index.js +19 -0
  144. package/lib/components/table/sticky_header/sticky_header.js +156 -0
  145. package/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
  146. package/lib/components/table/store/provider.js +46 -0
  147. package/lib/components/table/store/store.js +87 -0
  148. package/lib/components/table/store/use_unique_column_id.js +34 -0
  149. package/lib/components/table/table.js +28 -3
  150. package/lib/components/table/table.styles.js +4 -4
  151. package/lib/components/table/table_header_cell.js +117 -48
  152. package/lib/components/table/table_header_cell_checkbox.js +61 -25
  153. package/lib/components/text_truncate/text_truncate.js +8 -3
  154. package/lib/components/tool_tip/tool_tip.js +60 -30
  155. package/lib/components/tool_tip/tool_tip.styles.js +14 -5
  156. package/lib/components/tool_tip/tool_tip_anchor.js +5 -5
  157. package/lib/components/tool_tip/tool_tip_manager.js +27 -2
  158. package/lib/utils/publisher.js +59 -0
  159. package/optimize/es/components/avatar/avatar.js +16 -4
  160. package/optimize/es/components/avatar/avatar.styles.js +16 -16
  161. package/optimize/es/components/banner/banner.js +111 -0
  162. package/optimize/es/components/banner/banner.styles.js +76 -0
  163. package/optimize/es/components/banner/index.js +9 -0
  164. package/optimize/es/components/basic_table/basic_table.js +37 -13
  165. package/optimize/es/components/basic_table/basic_table.styles.js +19 -1
  166. package/optimize/es/components/basic_table/collapsed_item_actions.js +5 -4
  167. package/optimize/es/components/basic_table/default_item_action.js +3 -5
  168. package/optimize/es/components/basic_table/index.js +2 -1
  169. package/optimize/es/components/basic_table/pagination_bar.js +19 -4
  170. package/optimize/es/components/basic_table/pagination_bar.styles.js +21 -0
  171. package/optimize/es/components/basic_table/panel.styles.js +14 -0
  172. package/optimize/es/components/basic_table/use_panel_props.js +28 -0
  173. package/optimize/es/components/breadcrumbs/_breadcrumb_content.js +27 -18
  174. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  175. package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  176. package/optimize/es/components/datagrid/controls/display_selector.js +2 -1
  177. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  178. package/optimize/es/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  179. package/optimize/es/components/date_picker/auto_refresh/refresh_interval.js +172 -196
  180. package/optimize/es/components/date_picker/date_picker.js +1 -1
  181. package/optimize/es/components/date_picker/react-datepicker/src/index.js +1 -5
  182. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  183. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  184. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  185. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  186. package/optimize/es/components/flyout/flyout.component.js +10 -6
  187. package/optimize/es/components/flyout/flyout_menu.js +99 -18
  188. package/optimize/es/components/flyout/flyout_menu.styles.js +2 -1
  189. package/optimize/es/components/flyout/manager/actions.js +20 -0
  190. package/optimize/es/components/flyout/manager/flyout_managed.js +42 -18
  191. package/optimize/es/components/flyout/manager/hooks.js +1 -1
  192. package/optimize/es/components/flyout/manager/index.js +2 -2
  193. package/optimize/es/components/flyout/manager/reducer.js +32 -8
  194. package/optimize/es/components/flyout/manager/selectors.js +8 -2
  195. package/optimize/es/components/flyout/manager/store.js +35 -2
  196. package/optimize/es/components/flyout/use_flyout_menu.js +2 -2
  197. package/optimize/es/components/form/field_password/field_password.js +6 -3
  198. package/optimize/es/components/form/field_password/field_password.styles.js +1 -1
  199. package/optimize/es/components/form/field_search/field_search.styles.js +1 -1
  200. package/optimize/es/components/form/form.styles.js +1 -1
  201. package/optimize/es/components/form/form_control_layout/form_control_layout_icons.js +96 -115
  202. package/optimize/es/components/form/select/select.styles.js +1 -1
  203. package/optimize/es/components/form/text_area/text_area.styles.js +1 -1
  204. package/optimize/es/components/form/validatable_control/validatable_control.js +7 -48
  205. package/optimize/es/components/header/header.a11y.js +1 -1
  206. package/optimize/es/components/index.js +1 -0
  207. package/optimize/es/components/markdown_editor/markdown_editor_help_button.js +7 -4
  208. package/optimize/es/components/pagination/pagination_button_arrow.js +6 -2
  209. package/optimize/es/components/panel/panel.styles.js +4 -4
  210. package/optimize/es/components/panel/split_panel/split_panel.styles.js +1 -1
  211. package/optimize/es/components/search_bar/search_bar.js +20 -16
  212. package/optimize/es/components/search_bar/search_box.js +4 -2
  213. package/optimize/es/components/selectable/selectable_list/selectable_list.js +1 -1
  214. package/optimize/es/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  215. package/optimize/es/components/table/mobile/table_sort_mobile.js +59 -82
  216. package/optimize/es/components/table/sticky_header/context.js +32 -0
  217. package/optimize/es/components/table/sticky_header/index.js +10 -0
  218. package/optimize/es/components/table/sticky_header/sticky_header.js +146 -0
  219. package/optimize/es/components/table/sticky_header/sticky_header.styles.js +43 -0
  220. package/optimize/es/components/table/store/provider.js +37 -0
  221. package/optimize/es/components/table/store/store.js +82 -0
  222. package/optimize/es/components/table/store/use_unique_column_id.js +25 -0
  223. package/optimize/es/components/table/table.js +15 -3
  224. package/optimize/es/components/table/table.styles.js +4 -4
  225. package/optimize/es/components/table/table_header_cell.js +115 -48
  226. package/optimize/es/components/table/table_header_cell_checkbox.js +58 -25
  227. package/optimize/es/components/text_truncate/text_truncate.js +8 -3
  228. package/optimize/es/components/tool_tip/tool_tip.js +59 -31
  229. package/optimize/es/components/tool_tip/tool_tip.styles.js +14 -5
  230. package/optimize/es/components/tool_tip/tool_tip_anchor.js +5 -5
  231. package/optimize/es/components/tool_tip/tool_tip_manager.js +27 -2
  232. package/optimize/es/utils/publisher.js +53 -0
  233. package/optimize/lib/components/avatar/avatar.js +16 -4
  234. package/optimize/lib/components/avatar/avatar.styles.js +16 -16
  235. package/optimize/lib/components/banner/banner.js +120 -0
  236. package/optimize/lib/components/banner/banner.styles.js +80 -0
  237. package/optimize/lib/components/banner/index.js +12 -0
  238. package/optimize/lib/components/basic_table/basic_table.js +36 -12
  239. package/optimize/lib/components/basic_table/basic_table.styles.js +19 -1
  240. package/optimize/lib/components/basic_table/collapsed_item_actions.js +5 -4
  241. package/optimize/lib/components/basic_table/default_item_action.js +3 -5
  242. package/optimize/lib/components/basic_table/index.js +8 -1
  243. package/optimize/lib/components/basic_table/pagination_bar.js +19 -4
  244. package/optimize/lib/components/basic_table/pagination_bar.styles.js +26 -0
  245. package/optimize/lib/components/basic_table/panel.styles.js +20 -0
  246. package/optimize/lib/components/basic_table/use_panel_props.js +33 -0
  247. package/optimize/lib/components/breadcrumbs/_breadcrumb_content.js +27 -18
  248. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  249. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  250. package/optimize/lib/components/datagrid/controls/display_selector.js +2 -1
  251. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  252. package/optimize/lib/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  253. package/optimize/lib/components/date_picker/auto_refresh/refresh_interval.js +170 -194
  254. package/optimize/lib/components/date_picker/date_picker.js +1 -1
  255. package/optimize/lib/components/date_picker/react-datepicker/src/index.js +0 -4
  256. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  257. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  258. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  259. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  260. package/optimize/lib/components/flyout/flyout.component.js +10 -6
  261. package/optimize/lib/components/flyout/flyout_menu.js +98 -18
  262. package/optimize/lib/components/flyout/flyout_menu.styles.js +2 -1
  263. package/optimize/lib/components/flyout/manager/actions.js +21 -1
  264. package/optimize/lib/components/flyout/manager/flyout_managed.js +41 -17
  265. package/optimize/lib/components/flyout/manager/hooks.js +6 -0
  266. package/optimize/lib/components/flyout/manager/index.js +12 -0
  267. package/optimize/lib/components/flyout/manager/reducer.js +31 -7
  268. package/optimize/lib/components/flyout/manager/selectors.js +9 -3
  269. package/optimize/lib/components/flyout/manager/store.js +34 -1
  270. package/optimize/lib/components/flyout/use_flyout_menu.js +2 -2
  271. package/optimize/lib/components/form/field_password/field_password.js +6 -3
  272. package/optimize/lib/components/form/field_password/field_password.styles.js +1 -1
  273. package/optimize/lib/components/form/field_search/field_search.styles.js +1 -1
  274. package/optimize/lib/components/form/form.styles.js +1 -1
  275. package/optimize/lib/components/form/form_control_layout/form_control_layout_icons.js +96 -117
  276. package/optimize/lib/components/form/select/select.styles.js +1 -1
  277. package/optimize/lib/components/form/text_area/text_area.styles.js +1 -1
  278. package/optimize/lib/components/form/validatable_control/validatable_control.js +6 -49
  279. package/optimize/lib/components/header/header.a11y.js +1 -1
  280. package/optimize/lib/components/index.js +11 -0
  281. package/optimize/lib/components/markdown_editor/markdown_editor_help_button.js +7 -4
  282. package/optimize/lib/components/pagination/pagination_button_arrow.js +6 -2
  283. package/optimize/lib/components/panel/panel.styles.js +4 -4
  284. package/optimize/lib/components/panel/split_panel/split_panel.styles.js +1 -1
  285. package/optimize/lib/components/search_bar/search_bar.js +20 -16
  286. package/optimize/lib/components/search_bar/search_box.js +4 -2
  287. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  288. package/optimize/lib/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  289. package/optimize/lib/components/table/mobile/table_sort_mobile.js +61 -83
  290. package/optimize/lib/components/table/sticky_header/context.js +41 -0
  291. package/optimize/lib/components/table/sticky_header/index.js +19 -0
  292. package/optimize/lib/components/table/sticky_header/sticky_header.js +156 -0
  293. package/optimize/lib/components/table/sticky_header/sticky_header.styles.js +47 -0
  294. package/optimize/lib/components/table/store/provider.js +46 -0
  295. package/optimize/lib/components/table/store/store.js +87 -0
  296. package/optimize/lib/components/table/store/use_unique_column_id.js +34 -0
  297. package/optimize/lib/components/table/table.js +15 -3
  298. package/optimize/lib/components/table/table.styles.js +4 -4
  299. package/optimize/lib/components/table/table_header_cell.js +118 -48
  300. package/optimize/lib/components/table/table_header_cell_checkbox.js +61 -25
  301. package/optimize/lib/components/text_truncate/text_truncate.js +8 -3
  302. package/optimize/lib/components/tool_tip/tool_tip.js +58 -30
  303. package/optimize/lib/components/tool_tip/tool_tip.styles.js +14 -5
  304. package/optimize/lib/components/tool_tip/tool_tip_anchor.js +5 -5
  305. package/optimize/lib/components/tool_tip/tool_tip_manager.js +27 -2
  306. package/optimize/lib/utils/publisher.js +59 -0
  307. package/package.json +9 -6
  308. package/test-env/components/avatar/avatar.js +18 -5
  309. package/test-env/components/avatar/avatar.styles.js +16 -16
  310. package/test-env/components/banner/banner.js +209 -0
  311. package/test-env/components/banner/banner.styles.js +80 -0
  312. package/test-env/components/banner/index.js +12 -0
  313. package/test-env/components/basic_table/basic_table.js +53 -12
  314. package/test-env/components/basic_table/basic_table.styles.js +19 -1
  315. package/test-env/components/basic_table/collapsed_item_actions.js +5 -4
  316. package/test-env/components/basic_table/default_item_action.js +3 -5
  317. package/test-env/components/basic_table/in_memory_table.js +17 -0
  318. package/test-env/components/basic_table/index.js +8 -1
  319. package/test-env/components/basic_table/pagination_bar.js +19 -4
  320. package/test-env/components/basic_table/pagination_bar.styles.js +26 -0
  321. package/test-env/components/basic_table/panel.styles.js +20 -0
  322. package/test-env/components/basic_table/use_panel_props.js +33 -0
  323. package/test-env/components/breadcrumbs/_breadcrumb_content.js +29 -19
  324. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +2 -1
  325. package/test-env/components/context_menu/context_menu_panel_title.js +0 -12
  326. package/test-env/components/datagrid/body/cell/data_grid_cell_actions.js +11 -7
  327. package/test-env/components/datagrid/controls/display_selector.js +2 -1
  328. package/test-env/components/datagrid/controls/keyboard_shortcuts.js +2 -1
  329. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +7 -4
  330. package/test-env/components/date_picker/auto_refresh/refresh_interval.js +170 -220
  331. package/test-env/components/date_picker/date_picker.js +1 -1
  332. package/test-env/components/date_picker/react-datepicker/src/index.js +0 -4
  333. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +6 -3
  334. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +10 -2
  335. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.styles.js +2 -1
  336. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +8 -5
  337. package/test-env/components/flyout/flyout.component.js +10 -6
  338. package/test-env/components/flyout/flyout_menu.js +121 -19
  339. package/test-env/components/flyout/flyout_menu.styles.js +2 -1
  340. package/test-env/components/flyout/manager/actions.js +21 -1
  341. package/test-env/components/flyout/manager/flyout_child.js +23 -1
  342. package/test-env/components/flyout/manager/flyout_managed.js +41 -17
  343. package/test-env/components/flyout/manager/hooks.js +6 -0
  344. package/test-env/components/flyout/manager/index.js +12 -0
  345. package/test-env/components/flyout/manager/reducer.js +31 -7
  346. package/test-env/components/flyout/manager/selectors.js +9 -3
  347. package/test-env/components/flyout/manager/store.js +34 -1
  348. package/test-env/components/flyout/use_flyout_menu.js +2 -2
  349. package/test-env/components/form/field_password/field_password.js +6 -3
  350. package/test-env/components/form/field_password/field_password.styles.js +1 -1
  351. package/test-env/components/form/field_search/field_search.styles.js +1 -1
  352. package/test-env/components/form/form.styles.js +1 -1
  353. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +95 -139
  354. package/test-env/components/form/select/select.styles.js +1 -1
  355. package/test-env/components/form/text_area/text_area.styles.js +1 -1
  356. package/test-env/components/form/validatable_control/validatable_control.js +6 -48
  357. package/test-env/components/header/header.a11y.js +1 -1
  358. package/test-env/components/index.js +11 -0
  359. package/test-env/components/markdown_editor/markdown_editor_help_button.js +7 -4
  360. package/test-env/components/pagination/pagination_button_arrow.js +6 -2
  361. package/test-env/components/panel/panel.styles.js +4 -4
  362. package/test-env/components/panel/split_panel/split_panel.styles.js +1 -1
  363. package/test-env/components/search_bar/search_bar.js +20 -16
  364. package/test-env/components/search_bar/search_box.js +4 -2
  365. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  366. package/test-env/components/selectable/selectable_list/selectable_list.styles.js +1 -1
  367. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +2 -1
  368. package/test-env/components/table/mobile/table_sort_mobile.js +61 -98
  369. package/test-env/components/table/sticky_header/context.js +41 -0
  370. package/test-env/components/table/sticky_header/index.js +19 -0
  371. package/test-env/components/table/sticky_header/sticky_header.js +156 -0
  372. package/test-env/components/table/sticky_header/sticky_header.styles.js +47 -0
  373. package/test-env/components/table/store/provider.js +46 -0
  374. package/test-env/components/table/store/store.js +87 -0
  375. package/test-env/components/table/store/use_unique_column_id.js +34 -0
  376. package/test-env/components/table/table.js +28 -3
  377. package/test-env/components/table/table.styles.js +4 -4
  378. package/test-env/components/table/table_header_cell.js +118 -48
  379. package/test-env/components/table/table_header_cell_checkbox.js +61 -25
  380. package/test-env/components/text_truncate/text_truncate.js +8 -3
  381. package/test-env/components/tool_tip/tool_tip.js +58 -30
  382. package/test-env/components/tool_tip/tool_tip.styles.js +14 -5
  383. package/test-env/components/tool_tip/tool_tip_anchor.js +5 -5
  384. package/test-env/components/tool_tip/tool_tip_manager.js +27 -2
  385. package/test-env/utils/publisher.js +59 -0
@@ -0,0 +1,82 @@
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
+ * EuiTable store that helps with column and width synchronization between
21
+ * the original table and the "virtual" sticky header table.
22
+ *
23
+ * This store is currently only used for these synchronization purposes, but
24
+ * that may extend as we implement resizable columns.
25
+ * If that's not implemented by the time per-axis `position: sticky`
26
+ * is supported in all browsers natively, this can be removed.
27
+ * @internal
28
+ */
29
+
30
+ export var createEuiTableStore = function createEuiTableStore() {
31
+ var columns = new Map();
32
+ var columnsPublisher = createPublisher();
33
+ var columnWidths = new Map();
34
+ var columnWidthsPublisher = createPublisher();
35
+ var registerColumn = function registerColumn(id, data) {
36
+ var _data$currentWidth;
37
+ if (columns.has(id)) {
38
+ throw new Error("[EuiTableStore] Column '".concat(id, "' already registered"));
39
+ }
40
+ columns.set(id, data);
41
+ // Initialize column in the columnWidths map to keep both maps in sync
42
+ columnWidths.set(id, (_data$currentWidth = data.currentWidth) !== null && _data$currentWidth !== void 0 ? _data$currentWidth : 0);
43
+ columnsPublisher.notify(columns);
44
+ return function () {
45
+ columns.delete(id);
46
+ columnWidths.delete(id);
47
+ columnsPublisher.notify(columns);
48
+ };
49
+ };
50
+ var updateColumn = function updateColumn(id, data) {
51
+ var currentData = columns.get(id);
52
+ if (!currentData) {
53
+ throw new Error("[EuiTableStore] Column '".concat(id, "' not found"));
54
+ }
55
+ columns.set(id, data);
56
+ columnsPublisher.notify(columns);
57
+ };
58
+ var updateColumnWidth = function updateColumnWidth(id, width) {
59
+ var currentWidth = columnWidths.get(id);
60
+ if (currentWidth === undefined) {
61
+ throw new Error("[EuiTableStore] No width stored for column '".concat(id, "'"));
62
+ }
63
+ if (currentWidth === width) {
64
+ return;
65
+ }
66
+ columnWidths.set(id, width);
67
+ columnWidthsPublisher.notify(columnWidths);
68
+ };
69
+ return {
70
+ registerColumn: registerColumn,
71
+ updateColumn: updateColumn,
72
+ updateColumnWidth: updateColumnWidth,
73
+ subscribe: columnsPublisher.subscribe,
74
+ subscribeToColumnWidths: columnWidthsPublisher.subscribe,
75
+ getColumns: function getColumns() {
76
+ return columns;
77
+ },
78
+ getColumnWidths: function getColumnWidths() {
79
+ return columnWidths;
80
+ }
81
+ };
82
+ };
@@ -0,0 +1,25 @@
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, { useId, useRef } from 'react';
10
+ import { v4 as uuidv4 } from 'uuid';
11
+ var useEuiTableStoreUniqueColumnIdFallback = function useEuiTableStoreUniqueColumnIdFallback() {
12
+ var ref = useRef(uuidv4());
13
+ return ref.current;
14
+ };
15
+
16
+ /**
17
+ * Returns a stable unique column ID to be used when registering columns.
18
+ * It uses `React.useId()` when available and falls back to UUID v4 on React 17.
19
+ *
20
+ * This is needed so that static `uuid` mocks don't break column registration
21
+ * (at least in React 18+; in older versions this function would need
22
+ * to be mocked to return something unique, but stable).
23
+ * @internal
24
+ */
25
+ export var useEuiTableStoreUniqueColumnId = 'useId' in React ? useId : useEuiTableStoreUniqueColumnIdFallback;
@@ -1,4 +1,4 @@
1
- var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar"];
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; }
@@ -21,6 +21,8 @@ import { usePropsWithComponentDefaults } from '../provider/component_defaults';
21
21
  import { euiContainerCSS } from '../../global_styling';
22
22
  import { EUI_TABLE_CSS_CONTAINER_NAME } from './const';
23
23
  import { EuiTableStickyScrollbar } from './sticky_scrollbar';
24
+ import { EuiTableStickyHeader } from './sticky_header/sticky_header';
25
+ import { EuiTableStoreProvider } from './store/provider';
24
26
  import { jsx as ___EmotionJSX } from "@emotion/react";
25
27
  /**
26
28
  * EuiTable is a low-level building block component used to render tabular data
@@ -46,20 +48,30 @@ export var EuiTable = function EuiTable(originalProps) {
46
48
  scrollableInline = _usePropsWithComponen4 === void 0 ? false : _usePropsWithComponen4,
47
49
  _usePropsWithComponen5 = _usePropsWithComponen.stickyScrollbar,
48
50
  stickyScrollbar = _usePropsWithComponen5 === void 0 ? false : _usePropsWithComponen5,
51
+ _usePropsWithComponen6 = _usePropsWithComponen.stickyHeader,
52
+ stickyHeader = _usePropsWithComponen6 === void 0 ? false : _usePropsWithComponen6,
49
53
  rest = _objectWithoutProperties(_usePropsWithComponen, _excluded);
50
54
  var tableWrapperRef = useRef(null);
55
+ var tableRef = useRef(null);
51
56
  var isResponsive = useIsEuiTableResponsive(responsiveBreakpoint);
52
57
  var classes = classNames('euiTable', className);
53
58
  var styles = useEuiMemoizedStyles(euiTableStyles);
54
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];
55
60
  var cssStyles = [euiContainerCSS('normal', EUI_TABLE_CSS_CONTAINER_NAME, true), scrollableInline && styles.scrollableWrapper];
56
- return ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", {
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", {
57
68
  css: cssStyles,
58
69
  ref: tableWrapperRef
59
70
  }, ___EmotionJSX("table", _extends({
60
71
  tabIndex: -1,
61
72
  css: tableStyles,
62
- className: classes
73
+ className: classes,
74
+ ref: tableRef
63
75
  }, rest), ___EmotionJSX(EuiTableIsResponsiveContext.Provider, {
64
76
  value: isResponsive
65
77
  }, ___EmotionJSX(EuiTableVariantContext.Provider, {
@@ -112,6 +124,19 @@ EuiTable.propTypes = {
112
124
  * @default false
113
125
  */
114
126
  stickyScrollbar: PropTypes.bool,
127
+ /**
128
+ * When enabled, the table header will stick to the top of the viewport as users
129
+ * scroll through long tables. This enhances usability by maintaining column
130
+ * context during vertical scrolling and unifies the scrolling experience
131
+ * between EuiTable components and EuiDataGrid.
132
+ *
133
+ * This feature should be used in places where it's possible for the table
134
+ * to grow longer than the viewport.
135
+ *
136
+ * @beta
137
+ * @default false
138
+ */
139
+ stickyHeader: PropTypes.bool,
115
140
  className: PropTypes.string,
116
141
  "aria-label": PropTypes.string,
117
142
  "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" ? {
@@ -17,7 +17,7 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
17
17
  * Side Public License, v 1.
18
18
  */
19
19
 
20
- import React from 'react';
20
+ import React, { useEffect, useCallback, useRef } from 'react';
21
21
  import classNames from 'classnames';
22
22
  import { useEuiMemoizedStyles, LEFT_ALIGNMENT } from '../../services';
23
23
  import { EuiI18n } from '../i18n';
@@ -29,6 +29,9 @@ import { resolveWidthPropsAsStyle } from './utils';
29
29
  import { useEuiTableIsResponsive } from './mobile/responsive_context';
30
30
  import { EuiTableCellContent } from './_table_cell_content';
31
31
  import { euiTableHeaderFooterCellStyles, _useEuiTableStickyCellStyles } from './table_cells_shared.styles';
32
+ import { useEuiTableColumnDataStore } from './store/provider';
33
+ import { useEuiTableWithinStickyHeader } from './sticky_header';
34
+ import { useEuiTableStoreUniqueColumnId } from './store/use_unique_column_id';
32
35
  import { jsx as ___EmotionJSX } from "@emotion/react";
33
36
  var CellContents = function CellContents(_ref) {
34
37
  var className = _ref.className,
@@ -105,60 +108,124 @@ export var EuiTableHeaderCell = function EuiTableHeaderCell(_ref2) {
105
108
  append = _ref2.append,
106
109
  sticky = _ref2.sticky,
107
110
  rest = _objectWithoutProperties(_ref2, _excluded);
111
+ var selfRef = useRef(null);
112
+ var storeCellId = useEuiTableStoreUniqueColumnId();
113
+ var store = useEuiTableColumnDataStore();
114
+ var isWithinStickyHeader = useEuiTableWithinStickyHeader();
108
115
  var styles = useEuiMemoizedStyles(euiTableHeaderFooterCellStyles);
109
116
  var stickyStyles = _useEuiTableStickyCellStyles(sticky);
110
117
  var isResponsive = useEuiTableIsResponsive();
111
118
  var hideForDesktop = !isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.only);
112
119
  var hideForMobile = isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.show) === false;
113
- if (hideForDesktop || hideForMobile) return null;
114
- var classes = classNames('euiTableHeaderCell', className);
115
- var cssStyles = [styles.euiTableHeaderCell, !isResponsive && stickyStyles];
116
- var inlineWidthStyles = resolveWidthPropsAsStyle(_style, {
117
- width: width,
118
- minWidth: minWidth,
119
- maxWidth: maxWidth
120
- });
121
- var CellComponent = children ? 'th' : 'td';
122
- var cellScope = CellComponent === 'th' ? scope !== null && scope !== void 0 ? scope : 'col' : undefined; // `scope` is only valid on `th` elements
120
+ var renderHeaderCellRef = useRef();
121
+ renderHeaderCellRef.current = function (extraProps) {
122
+ if (hideForDesktop || hideForMobile) return null;
123
+ var classes = classNames('euiTableHeaderCell', className);
124
+ var cssStyles = [styles.euiTableHeaderCell, !isResponsive && stickyStyles];
125
+ var inlineWidthStyles = resolveWidthPropsAsStyle(_style, {
126
+ width: width,
127
+ minWidth: minWidth,
128
+ maxWidth: maxWidth
129
+ });
130
+ var CellComponent = children ? 'th' : 'td';
131
+ var cellScope = CellComponent === 'th' ? scope !== null && scope !== void 0 ? scope : 'col' : undefined; // `scope` is only valid on `th` elements
123
132
 
124
- var canSort = !!(onSort && !readOnly);
125
- var ariaSortValue;
126
- if (isSorted) {
127
- ariaSortValue = isSortAscending ? 'ascending' : 'descending';
128
- } else if (canSort) {
129
- ariaSortValue = 'none';
130
- }
131
- var cellContentsProps = {
132
- css: styles.euiTableHeaderCell__content,
133
- align: align,
134
- tooltipProps: tooltipProps,
135
- description: description,
136
- canSort: canSort,
137
- isSorted: isSorted,
138
- isSortAscending: isSortAscending,
139
- children: children
133
+ var canSort = !!(onSort && !readOnly);
134
+ var ariaSortValue;
135
+ if (isSorted) {
136
+ ariaSortValue = isSortAscending ? 'ascending' : 'descending';
137
+ } else if (canSort) {
138
+ ariaSortValue = 'none';
139
+ }
140
+ var cellContentsProps = {
141
+ css: styles.euiTableHeaderCell__content,
142
+ align: align,
143
+ tooltipProps: tooltipProps,
144
+ description: description,
145
+ canSort: canSort,
146
+ isSorted: isSorted,
147
+ isSortAscending: isSortAscending,
148
+ children: children
149
+ };
150
+ return ___EmotionJSX(CellComponent, _extends({
151
+ css: cssStyles,
152
+ className: classes,
153
+ scope: cellScope,
154
+ role: "columnheader",
155
+ "aria-sort": ariaSortValue,
156
+ "data-sticky": !isResponsive && (sticky === null || sticky === void 0 ? void 0 : sticky.side) || undefined,
157
+ style: _objectSpread(_objectSpread({}, _style), inlineWidthStyles)
158
+ }, rest, extraProps), canSort ? ___EmotionJSX(EuiToolTip, _extends({
159
+ content: tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.content
160
+ }, tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.tooltipProps, {
161
+ display: "block"
162
+ }), ___EmotionJSX("button", {
163
+ type: "button",
164
+ css: styles.euiTableHeaderCell__button,
165
+ className: classNames('euiTableHeaderButton', {
166
+ 'euiTableHeaderButton-isSorted': isSorted
167
+ }),
168
+ onClick: onSort,
169
+ "data-test-subj": "tableHeaderSortButton"
170
+ }, ___EmotionJSX(CellContents, cellContentsProps))) : ___EmotionJSX(CellContents, cellContentsProps), append);
140
171
  };
141
- return ___EmotionJSX(CellComponent, _extends({
142
- css: cssStyles,
143
- className: classes,
144
- scope: cellScope,
145
- role: "columnheader",
146
- "aria-sort": ariaSortValue,
147
- "data-sticky": !isResponsive && (sticky === null || sticky === void 0 ? void 0 : sticky.side) || undefined,
148
- style: _objectSpread(_objectSpread({}, _style), inlineWidthStyles)
149
- }, rest), canSort ? ___EmotionJSX(EuiToolTip, _extends({
150
- content: tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.content
151
- }, tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.tooltipProps, {
152
- display: "block"
153
- }), ___EmotionJSX("button", {
154
- type: "button",
155
- css: styles.euiTableHeaderCell__button,
156
- className: classNames('euiTableHeaderButton', {
157
- 'euiTableHeaderButton-isSorted': isSorted
158
- }),
159
- onClick: onSort,
160
- "data-test-subj": "tableHeaderSortButton"
161
- }, ___EmotionJSX(CellContents, cellContentsProps))) : ___EmotionJSX(CellContents, cellContentsProps), append);
172
+ var handleResize = useCallback(function (entries) {
173
+ var entry = entries[0];
174
+ if (!entry) {
175
+ return;
176
+ }
177
+ store.updateColumnWidth(storeCellId, entry.contentRect.width);
178
+ }, [store, storeCellId]);
179
+ useEffect(function () {
180
+ // Don't register the column inside the sticky header as the original
181
+ // column is already registered. This would cause an infinite loop.
182
+ if (isWithinStickyHeader || !selfRef.current || !renderHeaderCellRef.current) {
183
+ return;
184
+ }
185
+ var unregisterColumn = store.registerColumn(storeCellId, {
186
+ renderHeaderCellRef: renderHeaderCellRef,
187
+ // getBoundingClientRect is not the cheapest, but we call it only once
188
+ currentWidth: selfRef.current.getBoundingClientRect().width
189
+ });
190
+
191
+ // ResizeObserver is available in all supported browsers,
192
+ // but jsdom and jest don't provide a polyfill for it.
193
+ var resizeObserver;
194
+ if (typeof window.ResizeObserver !== 'undefined') {
195
+ resizeObserver = new ResizeObserver(handleResize);
196
+
197
+ // Note: This _could_ be optimized by using a single ResizeObserver
198
+ // for the whole EuiTable, but it would need to be changed back to this
199
+ // if/when we implement resizable columns
200
+ resizeObserver.observe(selfRef.current);
201
+ }
202
+ return function () {
203
+ var _resizeObserver;
204
+ unregisterColumn();
205
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect();
206
+ };
207
+ }, [store, isWithinStickyHeader, handleResize, storeCellId]);
208
+
209
+ // Notify the store on every render so the sticky header stays in sync.
210
+ // React's reconciliation will efficiently handle any duplicate renders.
211
+ useEffect(function () {
212
+ // Don't update the store if the component is rendered within EuiTableStickyHeader
213
+ if (isWithinStickyHeader) {
214
+ return;
215
+ }
216
+
217
+ // Don't update the store if the element doesn't exist. The render function
218
+ // in `renderHeaderCellRef` sometimes renders null - e.g., in mobile layout
219
+ if (!selfRef.current) {
220
+ return;
221
+ }
222
+ store.updateColumn(storeCellId, {
223
+ renderHeaderCellRef: renderHeaderCellRef
224
+ });
225
+ });
226
+ return renderHeaderCellRef.current({
227
+ ref: selfRef
228
+ });
162
229
  };
163
230
  EuiTableHeaderCell.propTypes = {
164
231
  className: PropTypes.string,
@@ -10,39 +10,72 @@ 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, { useEffect, useRef } from 'react';
14
14
  import PropTypes from "prop-types";
15
15
  import classNames from 'classnames';
16
16
  import { useEuiMemoizedStyles } from '../../services';
17
17
  import { resolveWidthPropsAsStyle } from './utils';
18
18
  import { euiTableCellCheckboxStyles } from './table_cells_shared.styles';
19
+ import { useEuiTableColumnDataStore } from './store/provider';
20
+ import { useEuiTableWithinStickyHeader } from './sticky_header';
21
+ import { useEuiTableStoreUniqueColumnId } from './store/use_unique_column_id';
19
22
  import { jsx as ___EmotionJSX } from "@emotion/react";
20
- export var EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(_ref) {
21
- var children = _ref.children,
22
- className = _ref.className,
23
- _ref$scope = _ref.scope,
24
- scope = _ref$scope === void 0 ? 'col' : _ref$scope,
25
- _style = _ref.style,
26
- width = _ref.width,
27
- minWidth = _ref.minWidth,
28
- maxWidth = _ref.maxWidth,
29
- append = _ref.append,
30
- rest = _objectWithoutProperties(_ref, _excluded);
31
- var classes = classNames('euiTableHeaderCellCheckbox', className);
23
+ export var EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(props) {
24
+ var children = props.children,
25
+ className = props.className,
26
+ _props$scope = props.scope,
27
+ scope = _props$scope === void 0 ? 'col' : _props$scope,
28
+ _style = props.style,
29
+ width = props.width,
30
+ minWidth = props.minWidth,
31
+ maxWidth = props.maxWidth,
32
+ append = props.append,
33
+ rest = _objectWithoutProperties(props, _excluded);
34
+ var storeCellId = useEuiTableStoreUniqueColumnId();
35
+ var store = useEuiTableColumnDataStore();
36
+ var isWithinStickyHeader = useEuiTableWithinStickyHeader();
32
37
  var styles = useEuiMemoizedStyles(euiTableCellCheckboxStyles);
33
- var style = resolveWidthPropsAsStyle(_style, {
34
- width: width,
35
- minWidth: minWidth,
36
- maxWidth: maxWidth
38
+ var renderHeaderCellRef = useRef();
39
+ renderHeaderCellRef.current = function (extraProps) {
40
+ var classes = classNames('euiTableHeaderCellCheckbox', className);
41
+ var style = resolveWidthPropsAsStyle(_style, {
42
+ width: width,
43
+ minWidth: minWidth,
44
+ maxWidth: maxWidth
45
+ });
46
+ return ___EmotionJSX("th", _extends({
47
+ css: styles.euiTableHeaderCellCheckbox,
48
+ className: classes,
49
+ scope: scope,
50
+ style: style
51
+ }, rest, extraProps), ___EmotionJSX("div", {
52
+ className: "euiTableCellContent"
53
+ }, children), append);
54
+ };
55
+ useEffect(function () {
56
+ // Don't register the column inside the sticky header as the original
57
+ // column is already registered. This would cause an infinite loop.
58
+ if (isWithinStickyHeader) {
59
+ return;
60
+ }
61
+ var unregisterColumn = store.registerColumn(storeCellId, {
62
+ renderHeaderCellRef: renderHeaderCellRef
63
+ });
64
+ return function () {
65
+ unregisterColumn();
66
+ };
67
+ }, [store, isWithinStickyHeader, storeCellId]);
68
+ useEffect(function () {
69
+ // Notify the store on every render so the sticky header stays in sync.
70
+ // React's reconciliation will efficiently handle any duplicate renders.
71
+ if (isWithinStickyHeader) {
72
+ return;
73
+ }
74
+ store.updateColumn(storeCellId, {
75
+ renderHeaderCellRef: renderHeaderCellRef
76
+ });
37
77
  });
38
- return ___EmotionJSX("th", _extends({
39
- css: styles.euiTableHeaderCellCheckbox,
40
- className: classes,
41
- scope: scope,
42
- style: style
43
- }, rest), ___EmotionJSX("div", {
44
- className: "euiTableCellContent"
45
- }, children), append);
78
+ return renderHeaderCellRef.current({});
46
79
  };
47
80
  EuiTableHeaderCellCheckbox.propTypes = {
48
81
  className: PropTypes.string,
@@ -23,6 +23,7 @@ import PropTypes from "prop-types";
23
23
  import classNames from 'classnames';
24
24
  import { useCombinedRefs, useEuiMemoizedStyles } from '../../services';
25
25
  import { EuiResizeObserver } from '../observer/resize_observer';
26
+ import { EuiToolTip } from '../tool_tip';
26
27
  import { TruncationUtils } from './utils';
27
28
  import { euiTextTruncateStyles } from './text_truncate.styles';
28
29
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -204,11 +205,10 @@ var EuiTextTruncateWithWidth = function EuiTextTruncateWithWidth(_ref2) {
204
205
  }, [ready, width, text, truncation, truncationOffset, truncationPosition, ellipsis, containerEl]);
205
206
  var isTruncating = truncatedText !== text;
206
207
  var styles = useEuiMemoizedStyles(euiTextTruncateStyles);
207
- return ___EmotionJSX("div", _extends({
208
+ var content = ___EmotionJSX("div", _extends({
208
209
  className: classNames('euiTextTruncate', className),
209
210
  css: styles.euiTextTruncate,
210
- ref: refs,
211
- title: isTruncating ? text : undefined
211
+ ref: refs
212
212
  }, rest), isTruncating ? ___EmotionJSX(React.Fragment, null, ___EmotionJSX("span", {
213
213
  className: "euiTextTruncate__truncatedText",
214
214
  css: styles.euiTextTruncate__truncatedText,
@@ -222,6 +222,11 @@ var EuiTextTruncateWithWidth = function EuiTextTruncateWithWidth(_ref2) {
222
222
  className: "euiTextTruncate__fullText",
223
223
  "data-test-subj": "fullText"
224
224
  }, children ? children(text) : text));
225
+ return isTruncating ? ___EmotionJSX(EuiToolTip, {
226
+ content: text,
227
+ disableScreenReaderOutput: true,
228
+ display: "block"
229
+ }, content) : content;
225
230
  };
226
231
  EuiTextTruncateWithWidth.propTypes = {
227
232
  width: PropTypes.number.isRequired,