@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,87 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createEuiTableStore = void 0;
7
+ var _publisher = require("../../../utils/publisher");
8
+ /*
9
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
10
+ * or more contributor license agreements. Licensed under the Elastic License
11
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
12
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
13
+ * Side Public License, v 1.
14
+ */
15
+
16
+ /**
17
+ * @internal
18
+ */
19
+
20
+ /**
21
+ * @internal
22
+ */
23
+
24
+ /**
25
+ * EuiTable store that helps with column and width synchronization between
26
+ * the original table and the "virtual" sticky header table.
27
+ *
28
+ * This store is currently only used for these synchronization purposes, but
29
+ * that may extend as we implement resizable columns.
30
+ * If that's not implemented by the time per-axis `position: sticky`
31
+ * is supported in all browsers natively, this can be removed.
32
+ * @internal
33
+ */
34
+
35
+ var createEuiTableStore = exports.createEuiTableStore = function createEuiTableStore() {
36
+ var columns = new Map();
37
+ var columnsPublisher = (0, _publisher.createPublisher)();
38
+ var columnWidths = new Map();
39
+ var columnWidthsPublisher = (0, _publisher.createPublisher)();
40
+ var registerColumn = function registerColumn(id, data) {
41
+ var _data$currentWidth;
42
+ if (columns.has(id)) {
43
+ throw new Error("[EuiTableStore] Column '".concat(id, "' already registered"));
44
+ }
45
+ columns.set(id, data);
46
+ // Initialize column in the columnWidths map to keep both maps in sync
47
+ columnWidths.set(id, (_data$currentWidth = data.currentWidth) !== null && _data$currentWidth !== void 0 ? _data$currentWidth : 0);
48
+ columnsPublisher.notify(columns);
49
+ return function () {
50
+ columns.delete(id);
51
+ columnWidths.delete(id);
52
+ columnsPublisher.notify(columns);
53
+ };
54
+ };
55
+ var updateColumn = function updateColumn(id, data) {
56
+ var currentData = columns.get(id);
57
+ if (!currentData) {
58
+ throw new Error("[EuiTableStore] Column '".concat(id, "' not found"));
59
+ }
60
+ columns.set(id, data);
61
+ columnsPublisher.notify(columns);
62
+ };
63
+ var updateColumnWidth = function updateColumnWidth(id, width) {
64
+ var currentWidth = columnWidths.get(id);
65
+ if (currentWidth === undefined) {
66
+ throw new Error("[EuiTableStore] No width stored for column '".concat(id, "'"));
67
+ }
68
+ if (currentWidth === width) {
69
+ return;
70
+ }
71
+ columnWidths.set(id, width);
72
+ columnWidthsPublisher.notify(columnWidths);
73
+ };
74
+ return {
75
+ registerColumn: registerColumn,
76
+ updateColumn: updateColumn,
77
+ updateColumnWidth: updateColumnWidth,
78
+ subscribe: columnsPublisher.subscribe,
79
+ subscribeToColumnWidths: columnWidthsPublisher.subscribe,
80
+ getColumns: function getColumns() {
81
+ return columns;
82
+ },
83
+ getColumnWidths: function getColumnWidths() {
84
+ return columnWidths;
85
+ }
86
+ };
87
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useEuiTableStoreUniqueColumnId = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _uuid = require("uuid");
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ /*
13
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
+ * or more contributor license agreements. Licensed under the Elastic License
15
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
16
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
17
+ * Side Public License, v 1.
18
+ */
19
+
20
+ var useEuiTableStoreUniqueColumnIdFallback = function useEuiTableStoreUniqueColumnIdFallback() {
21
+ var ref = (0, _react.useRef)((0, _uuid.v4)());
22
+ return ref.current;
23
+ };
24
+
25
+ /**
26
+ * Returns a stable unique column ID to be used when registering columns.
27
+ * It uses `React.useId()` when available and falls back to UUID v4 on React 17.
28
+ *
29
+ * This is needed so that static `uuid` mocks don't break column registration
30
+ * (at least in React 18+; in older versions this function would need
31
+ * to be mocked to return something unique, but stable).
32
+ * @internal
33
+ */
34
+ var useEuiTableStoreUniqueColumnId = exports.useEuiTableStoreUniqueColumnId = 'useId' in _react.default ? _react.useId : useEuiTableStoreUniqueColumnIdFallback;
@@ -19,8 +19,10 @@ var _component_defaults = require("../provider/component_defaults");
19
19
  var _global_styling = require("../../global_styling");
20
20
  var _const = require("./const");
21
21
  var _sticky_scrollbar = require("./sticky_scrollbar");
22
+ var _sticky_header = require("./sticky_header/sticky_header");
23
+ var _provider = require("./store/provider");
22
24
  var _react2 = require("@emotion/react");
23
- var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar"];
25
+ var _excluded = ["children", "className", "compressed", "tableLayout", "hasBackground", "responsiveBreakpoint", "scrollableInline", "stickyScrollbar", "stickyHeader"];
24
26
  /*
25
27
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
26
28
  * or more contributor license agreements. Licensed under the Elastic License
@@ -54,20 +56,30 @@ var EuiTable = exports.EuiTable = function EuiTable(originalProps) {
54
56
  scrollableInline = _usePropsWithComponen4 === void 0 ? false : _usePropsWithComponen4,
55
57
  _usePropsWithComponen5 = _usePropsWithComponen.stickyScrollbar,
56
58
  stickyScrollbar = _usePropsWithComponen5 === void 0 ? false : _usePropsWithComponen5,
59
+ _usePropsWithComponen6 = _usePropsWithComponen.stickyHeader,
60
+ stickyHeader = _usePropsWithComponen6 === void 0 ? false : _usePropsWithComponen6,
57
61
  rest = (0, _objectWithoutProperties2.default)(_usePropsWithComponen, _excluded);
58
62
  var tableWrapperRef = (0, _react.useRef)(null);
63
+ var tableRef = (0, _react.useRef)(null);
59
64
  var isResponsive = (0, _responsive_context.useIsEuiTableResponsive)(responsiveBreakpoint);
60
65
  var classes = (0, _classnames.default)('euiTable', className);
61
66
  var styles = (0, _services.useEuiMemoizedStyles)(_table.euiTableStyles);
62
67
  var tableStyles = [styles.euiTable, scrollableInline && styles.euiTableScrollableInline, styles.layout[tableLayout], (!compressed || isResponsive) && styles.uncompressed, compressed && !isResponsive && styles.compressed, hasBackground && styles.hasBackground, isResponsive ? styles.mobile : styles.desktop];
63
68
  var cssStyles = [(0, _global_styling.euiContainerCSS)('normal', _const.EUI_TABLE_CSS_CONTAINER_NAME, true), scrollableInline && styles.scrollableWrapper];
64
- return (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)("div", {
69
+ return (0, _react2.jsx)(_provider.EuiTableStoreProvider, null, stickyHeader && (0, _react2.jsx)(_sticky_header.EuiTableStickyHeader, {
70
+ scrollableInline: scrollableInline,
71
+ tableRef: tableRef,
72
+ tableWrapperRef: tableWrapperRef,
73
+ compressed: compressed,
74
+ isResponsive: isResponsive
75
+ }), (0, _react2.jsx)("div", {
65
76
  css: cssStyles,
66
77
  ref: tableWrapperRef
67
78
  }, (0, _react2.jsx)("table", (0, _extends2.default)({
68
79
  tabIndex: -1,
69
80
  css: tableStyles,
70
- className: classes
81
+ className: classes,
82
+ ref: tableRef
71
83
  }, rest), (0, _react2.jsx)(_responsive_context.EuiTableIsResponsiveContext.Provider, {
72
84
  value: isResponsive
73
85
  }, (0, _react2.jsx)(_table_context.EuiTableVariantContext.Provider, {
@@ -120,6 +132,19 @@ EuiTable.propTypes = {
120
132
  * @default false
121
133
  */
122
134
  stickyScrollbar: _propTypes.default.bool,
135
+ /**
136
+ * When enabled, the table header will stick to the top of the viewport as users
137
+ * scroll through long tables. This enhances usability by maintaining column
138
+ * context during vertical scrolling and unifies the scrolling experience
139
+ * between EuiTable components and EuiDataGrid.
140
+ *
141
+ * This feature should be used in places where it's possible for the table
142
+ * to grow longer than the viewport.
143
+ *
144
+ * @beta
145
+ * @default false
146
+ */
147
+ stickyHeader: _propTypes.default.bool,
123
148
  className: _propTypes.default.string,
124
149
  "aria-label": _propTypes.default.string,
125
150
  "data-test-subj": _propTypes.default.string,
@@ -42,11 +42,11 @@ var euiTableVariables = exports.euiTableVariables = function euiTableVariables(_
42
42
  };
43
43
  };
44
44
  var _ref = process.env.NODE_ENV === "production" ? {
45
- name: "mqw298-scrollableWrapper",
46
- styles: "overflow-inline:auto;label:scrollableWrapper;"
45
+ name: "l8gzfy-scrollableWrapper",
46
+ styles: "overflow-inline:auto;overscroll-behavior-inline:none;label:scrollableWrapper;"
47
47
  } : {
48
- name: "mqw298-scrollableWrapper",
49
- styles: "overflow-inline:auto;label:scrollableWrapper;",
48
+ name: "l8gzfy-scrollableWrapper",
49
+ styles: "overflow-inline:auto;overscroll-behavior-inline:none;label:scrollableWrapper;",
50
50
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
51
51
  };
52
52
  var _ref2 = process.env.NODE_ENV === "production" ? {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -9,7 +10,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
- var _react = _interopRequireDefault(require("react"));
13
+ var _react = _interopRequireWildcard(require("react"));
13
14
  var _classnames = _interopRequireDefault(require("classnames"));
14
15
  var _services = require("../../services");
15
16
  var _i18n = require("../i18n");
@@ -21,8 +22,13 @@ var _utils = require("./utils");
21
22
  var _responsive_context = require("./mobile/responsive_context");
22
23
  var _table_cell_content = require("./_table_cell_content");
23
24
  var _table_cells_shared = require("./table_cells_shared.styles");
25
+ var _provider = require("./store/provider");
26
+ var _sticky_header = require("./sticky_header");
27
+ var _use_unique_column_id = require("./store/use_unique_column_id");
24
28
  var _react2 = require("@emotion/react");
25
29
  var _excluded = ["children", "align", "onSort", "isSorted", "isSortAscending", "className", "scope", "mobileOptions", "width", "minWidth", "maxWidth", "style", "readOnly", "tooltipProps", "description", "append", "sticky"];
30
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
31
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
32
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
33
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /*
28
34
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -106,60 +112,124 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
106
112
  append = _ref2.append,
107
113
  sticky = _ref2.sticky,
108
114
  rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
115
+ var selfRef = (0, _react.useRef)(null);
116
+ var storeCellId = (0, _use_unique_column_id.useEuiTableStoreUniqueColumnId)();
117
+ var store = (0, _provider.useEuiTableColumnDataStore)();
118
+ var isWithinStickyHeader = (0, _sticky_header.useEuiTableWithinStickyHeader)();
109
119
  var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableHeaderFooterCellStyles);
110
120
  var stickyStyles = (0, _table_cells_shared._useEuiTableStickyCellStyles)(sticky);
111
121
  var isResponsive = (0, _responsive_context.useEuiTableIsResponsive)();
112
122
  var hideForDesktop = !isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.only);
113
123
  var hideForMobile = isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.show) === false;
114
- if (hideForDesktop || hideForMobile) return null;
115
- var classes = (0, _classnames.default)('euiTableHeaderCell', className);
116
- var cssStyles = [styles.euiTableHeaderCell, !isResponsive && stickyStyles];
117
- var inlineWidthStyles = (0, _utils.resolveWidthPropsAsStyle)(_style, {
118
- width: width,
119
- minWidth: minWidth,
120
- maxWidth: maxWidth
121
- });
122
- var CellComponent = children ? 'th' : 'td';
123
- var cellScope = CellComponent === 'th' ? scope !== null && scope !== void 0 ? scope : 'col' : undefined; // `scope` is only valid on `th` elements
124
+ var renderHeaderCellRef = (0, _react.useRef)();
125
+ renderHeaderCellRef.current = function (extraProps) {
126
+ if (hideForDesktop || hideForMobile) return null;
127
+ var classes = (0, _classnames.default)('euiTableHeaderCell', className);
128
+ var cssStyles = [styles.euiTableHeaderCell, !isResponsive && stickyStyles];
129
+ var inlineWidthStyles = (0, _utils.resolveWidthPropsAsStyle)(_style, {
130
+ width: width,
131
+ minWidth: minWidth,
132
+ maxWidth: maxWidth
133
+ });
134
+ var CellComponent = children ? 'th' : 'td';
135
+ var cellScope = CellComponent === 'th' ? scope !== null && scope !== void 0 ? scope : 'col' : undefined; // `scope` is only valid on `th` elements
124
136
 
125
- var canSort = !!(onSort && !readOnly);
126
- var ariaSortValue;
127
- if (isSorted) {
128
- ariaSortValue = isSortAscending ? 'ascending' : 'descending';
129
- } else if (canSort) {
130
- ariaSortValue = 'none';
131
- }
132
- var cellContentsProps = {
133
- css: styles.euiTableHeaderCell__content,
134
- align: align,
135
- tooltipProps: tooltipProps,
136
- description: description,
137
- canSort: canSort,
138
- isSorted: isSorted,
139
- isSortAscending: isSortAscending,
140
- children: children
137
+ var canSort = !!(onSort && !readOnly);
138
+ var ariaSortValue;
139
+ if (isSorted) {
140
+ ariaSortValue = isSortAscending ? 'ascending' : 'descending';
141
+ } else if (canSort) {
142
+ ariaSortValue = 'none';
143
+ }
144
+ var cellContentsProps = {
145
+ css: styles.euiTableHeaderCell__content,
146
+ align: align,
147
+ tooltipProps: tooltipProps,
148
+ description: description,
149
+ canSort: canSort,
150
+ isSorted: isSorted,
151
+ isSortAscending: isSortAscending,
152
+ children: children
153
+ };
154
+ return (0, _react2.jsx)(CellComponent, (0, _extends2.default)({
155
+ css: cssStyles,
156
+ className: classes,
157
+ scope: cellScope,
158
+ role: "columnheader",
159
+ "aria-sort": ariaSortValue,
160
+ "data-sticky": !isResponsive && (sticky === null || sticky === void 0 ? void 0 : sticky.side) || undefined,
161
+ style: _objectSpread(_objectSpread({}, _style), inlineWidthStyles)
162
+ }, rest, extraProps), canSort ? (0, _react2.jsx)(_tool_tip.EuiToolTip, (0, _extends2.default)({
163
+ content: tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.content
164
+ }, tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.tooltipProps, {
165
+ display: "block"
166
+ }), (0, _react2.jsx)("button", {
167
+ type: "button",
168
+ css: styles.euiTableHeaderCell__button,
169
+ className: (0, _classnames.default)('euiTableHeaderButton', {
170
+ 'euiTableHeaderButton-isSorted': isSorted
171
+ }),
172
+ onClick: onSort,
173
+ "data-test-subj": "tableHeaderSortButton"
174
+ }, (0, _react2.jsx)(CellContents, cellContentsProps))) : (0, _react2.jsx)(CellContents, cellContentsProps), append);
141
175
  };
142
- return (0, _react2.jsx)(CellComponent, (0, _extends2.default)({
143
- css: cssStyles,
144
- className: classes,
145
- scope: cellScope,
146
- role: "columnheader",
147
- "aria-sort": ariaSortValue,
148
- "data-sticky": !isResponsive && (sticky === null || sticky === void 0 ? void 0 : sticky.side) || undefined,
149
- style: _objectSpread(_objectSpread({}, _style), inlineWidthStyles)
150
- }, rest), canSort ? (0, _react2.jsx)(_tool_tip.EuiToolTip, (0, _extends2.default)({
151
- content: tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.content
152
- }, tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.tooltipProps, {
153
- display: "block"
154
- }), (0, _react2.jsx)("button", {
155
- type: "button",
156
- css: styles.euiTableHeaderCell__button,
157
- className: (0, _classnames.default)('euiTableHeaderButton', {
158
- 'euiTableHeaderButton-isSorted': isSorted
159
- }),
160
- onClick: onSort,
161
- "data-test-subj": "tableHeaderSortButton"
162
- }, (0, _react2.jsx)(CellContents, cellContentsProps))) : (0, _react2.jsx)(CellContents, cellContentsProps), append);
176
+ var handleResize = (0, _react.useCallback)(function (entries) {
177
+ var entry = entries[0];
178
+ if (!entry) {
179
+ return;
180
+ }
181
+ store.updateColumnWidth(storeCellId, entry.contentRect.width);
182
+ }, [store, storeCellId]);
183
+ (0, _react.useEffect)(function () {
184
+ // Don't register the column inside the sticky header as the original
185
+ // column is already registered. This would cause an infinite loop.
186
+ if (isWithinStickyHeader || !selfRef.current || !renderHeaderCellRef.current) {
187
+ return;
188
+ }
189
+ var unregisterColumn = store.registerColumn(storeCellId, {
190
+ renderHeaderCellRef: renderHeaderCellRef,
191
+ // getBoundingClientRect is not the cheapest, but we call it only once
192
+ currentWidth: selfRef.current.getBoundingClientRect().width
193
+ });
194
+
195
+ // ResizeObserver is available in all supported browsers,
196
+ // but jsdom and jest don't provide a polyfill for it.
197
+ var resizeObserver;
198
+ if (typeof window.ResizeObserver !== 'undefined') {
199
+ resizeObserver = new ResizeObserver(handleResize);
200
+
201
+ // Note: This _could_ be optimized by using a single ResizeObserver
202
+ // for the whole EuiTable, but it would need to be changed back to this
203
+ // if/when we implement resizable columns
204
+ resizeObserver.observe(selfRef.current);
205
+ }
206
+ return function () {
207
+ var _resizeObserver;
208
+ unregisterColumn();
209
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect();
210
+ };
211
+ }, [store, isWithinStickyHeader, handleResize, storeCellId]);
212
+
213
+ // Notify the store on every render so the sticky header stays in sync.
214
+ // React's reconciliation will efficiently handle any duplicate renders.
215
+ (0, _react.useEffect)(function () {
216
+ // Don't update the store if the component is rendered within EuiTableStickyHeader
217
+ if (isWithinStickyHeader) {
218
+ return;
219
+ }
220
+
221
+ // Don't update the store if the element doesn't exist. The render function
222
+ // in `renderHeaderCellRef` sometimes renders null - e.g., in mobile layout
223
+ if (!selfRef.current) {
224
+ return;
225
+ }
226
+ store.updateColumn(storeCellId, {
227
+ renderHeaderCellRef: renderHeaderCellRef
228
+ });
229
+ });
230
+ return renderHeaderCellRef.current({
231
+ ref: selfRef
232
+ });
163
233
  };
164
234
  EuiTableHeaderCell.propTypes = {
165
235
  className: _propTypes.default.string,
@@ -1,18 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.EuiTableHeaderCellCheckbox = void 0;
8
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
- var _react = _interopRequireDefault(require("react"));
11
+ var _react = _interopRequireWildcard(require("react"));
11
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
13
  var _classnames = _interopRequireDefault(require("classnames"));
13
14
  var _services = require("../../services");
14
15
  var _utils = require("./utils");
15
16
  var _table_cells_shared = require("./table_cells_shared.styles");
17
+ var _provider = require("./store/provider");
18
+ var _sticky_header = require("./sticky_header");
19
+ var _use_unique_column_id = require("./store/use_unique_column_id");
16
20
  var _react2 = require("@emotion/react");
17
21
  var _excluded = ["children", "className", "scope", "style", "width", "minWidth", "maxWidth", "append"];
18
22
  /*
@@ -22,32 +26,64 @@ var _excluded = ["children", "className", "scope", "style", "width", "minWidth",
22
26
  * in compliance with, at your election, the Elastic License 2.0 or the Server
23
27
  * Side Public License, v 1.
24
28
  */
25
- var EuiTableHeaderCellCheckbox = exports.EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(_ref) {
26
- var children = _ref.children,
27
- className = _ref.className,
28
- _ref$scope = _ref.scope,
29
- scope = _ref$scope === void 0 ? 'col' : _ref$scope,
30
- _style = _ref.style,
31
- width = _ref.width,
32
- minWidth = _ref.minWidth,
33
- maxWidth = _ref.maxWidth,
34
- append = _ref.append,
35
- rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
36
- var classes = (0, _classnames.default)('euiTableHeaderCellCheckbox', className);
29
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
30
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
31
+ var EuiTableHeaderCellCheckbox = exports.EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(props) {
32
+ var children = props.children,
33
+ className = props.className,
34
+ _props$scope = props.scope,
35
+ scope = _props$scope === void 0 ? 'col' : _props$scope,
36
+ _style = props.style,
37
+ width = props.width,
38
+ minWidth = props.minWidth,
39
+ maxWidth = props.maxWidth,
40
+ append = props.append,
41
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded);
42
+ var storeCellId = (0, _use_unique_column_id.useEuiTableStoreUniqueColumnId)();
43
+ var store = (0, _provider.useEuiTableColumnDataStore)();
44
+ var isWithinStickyHeader = (0, _sticky_header.useEuiTableWithinStickyHeader)();
37
45
  var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableCellCheckboxStyles);
38
- var style = (0, _utils.resolveWidthPropsAsStyle)(_style, {
39
- width: width,
40
- minWidth: minWidth,
41
- maxWidth: maxWidth
46
+ var renderHeaderCellRef = (0, _react.useRef)();
47
+ renderHeaderCellRef.current = function (extraProps) {
48
+ var classes = (0, _classnames.default)('euiTableHeaderCellCheckbox', className);
49
+ var style = (0, _utils.resolveWidthPropsAsStyle)(_style, {
50
+ width: width,
51
+ minWidth: minWidth,
52
+ maxWidth: maxWidth
53
+ });
54
+ return (0, _react2.jsx)("th", (0, _extends2.default)({
55
+ css: styles.euiTableHeaderCellCheckbox,
56
+ className: classes,
57
+ scope: scope,
58
+ style: style
59
+ }, rest, extraProps), (0, _react2.jsx)("div", {
60
+ className: "euiTableCellContent"
61
+ }, children), append);
62
+ };
63
+ (0, _react.useEffect)(function () {
64
+ // Don't register the column inside the sticky header as the original
65
+ // column is already registered. This would cause an infinite loop.
66
+ if (isWithinStickyHeader) {
67
+ return;
68
+ }
69
+ var unregisterColumn = store.registerColumn(storeCellId, {
70
+ renderHeaderCellRef: renderHeaderCellRef
71
+ });
72
+ return function () {
73
+ unregisterColumn();
74
+ };
75
+ }, [store, isWithinStickyHeader, storeCellId]);
76
+ (0, _react.useEffect)(function () {
77
+ // Notify the store on every render so the sticky header stays in sync.
78
+ // React's reconciliation will efficiently handle any duplicate renders.
79
+ if (isWithinStickyHeader) {
80
+ return;
81
+ }
82
+ store.updateColumn(storeCellId, {
83
+ renderHeaderCellRef: renderHeaderCellRef
84
+ });
42
85
  });
43
- return (0, _react2.jsx)("th", (0, _extends2.default)({
44
- css: styles.euiTableHeaderCellCheckbox,
45
- className: classes,
46
- scope: scope,
47
- style: style
48
- }, rest), (0, _react2.jsx)("div", {
49
- className: "euiTableCellContent"
50
- }, children), append);
86
+ return renderHeaderCellRef.current({});
51
87
  };
52
88
  EuiTableHeaderCellCheckbox.propTypes = {
53
89
  className: _propTypes.default.string,
@@ -14,6 +14,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
14
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _services = require("../../services");
16
16
  var _resize_observer = require("../observer/resize_observer");
17
+ var _tool_tip = require("../tool_tip");
17
18
  var _utils = require("./utils");
18
19
  var _text_truncate = require("./text_truncate.styles");
19
20
  var _react2 = require("@emotion/react");
@@ -207,11 +208,10 @@ var EuiTextTruncateWithWidth = function EuiTextTruncateWithWidth(_ref2) {
207
208
  }, [ready, width, text, truncation, truncationOffset, truncationPosition, ellipsis, containerEl]);
208
209
  var isTruncating = truncatedText !== text;
209
210
  var styles = (0, _services.useEuiMemoizedStyles)(_text_truncate.euiTextTruncateStyles);
210
- return (0, _react2.jsx)("div", (0, _extends2.default)({
211
+ var content = (0, _react2.jsx)("div", (0, _extends2.default)({
211
212
  className: (0, _classnames.default)('euiTextTruncate', className),
212
213
  css: styles.euiTextTruncate,
213
- ref: refs,
214
- title: isTruncating ? text : undefined
214
+ ref: refs
215
215
  }, rest), isTruncating ? (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)("span", {
216
216
  className: "euiTextTruncate__truncatedText",
217
217
  css: styles.euiTextTruncate__truncatedText,
@@ -225,6 +225,11 @@ var EuiTextTruncateWithWidth = function EuiTextTruncateWithWidth(_ref2) {
225
225
  className: "euiTextTruncate__fullText",
226
226
  "data-test-subj": "fullText"
227
227
  }, children ? children(text) : text));
228
+ return isTruncating ? (0, _react2.jsx)(_tool_tip.EuiToolTip, {
229
+ content: text,
230
+ disableScreenReaderOutput: true,
231
+ display: "block"
232
+ }, content) : content;
228
233
  };
229
234
  EuiTextTruncateWithWidth.propTypes = {
230
235
  width: _propTypes.default.number.isRequired,