@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
@@ -12,7 +12,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
12
12
  * Side Public License, v 1.
13
13
  */
14
14
 
15
- import React from 'react';
15
+ import React, { useEffect, useCallback, useRef } from 'react';
16
16
  import classNames from 'classnames';
17
17
  import { useEuiMemoizedStyles, LEFT_ALIGNMENT } from '../../services';
18
18
  import { EuiI18n } from '../i18n';
@@ -24,6 +24,9 @@ import { resolveWidthPropsAsStyle } from './utils';
24
24
  import { useEuiTableIsResponsive } from './mobile/responsive_context';
25
25
  import { EuiTableCellContent } from './_table_cell_content';
26
26
  import { euiTableHeaderFooterCellStyles, _useEuiTableStickyCellStyles } from './table_cells_shared.styles';
27
+ import { useEuiTableColumnDataStore } from './store/provider';
28
+ import { useEuiTableWithinStickyHeader } from './sticky_header';
29
+ import { useEuiTableStoreUniqueColumnId } from './store/use_unique_column_id';
27
30
  import { jsx as ___EmotionJSX } from "@emotion/react";
28
31
  var CellContents = function CellContents(_ref) {
29
32
  var className = _ref.className,
@@ -100,58 +103,122 @@ export var EuiTableHeaderCell = function EuiTableHeaderCell(_ref2) {
100
103
  append = _ref2.append,
101
104
  sticky = _ref2.sticky,
102
105
  rest = _objectWithoutProperties(_ref2, _excluded);
106
+ var selfRef = useRef(null);
107
+ var storeCellId = useEuiTableStoreUniqueColumnId();
108
+ var store = useEuiTableColumnDataStore();
109
+ var isWithinStickyHeader = useEuiTableWithinStickyHeader();
103
110
  var styles = useEuiMemoizedStyles(euiTableHeaderFooterCellStyles);
104
111
  var stickyStyles = _useEuiTableStickyCellStyles(sticky);
105
112
  var isResponsive = useEuiTableIsResponsive();
106
113
  var hideForDesktop = !isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.only);
107
114
  var hideForMobile = isResponsive && (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.show) === false;
108
- if (hideForDesktop || hideForMobile) return null;
109
- var classes = classNames('euiTableHeaderCell', className);
110
- var cssStyles = [styles.euiTableHeaderCell, !isResponsive && stickyStyles];
111
- var inlineWidthStyles = resolveWidthPropsAsStyle(_style, {
112
- width: width,
113
- minWidth: minWidth,
114
- maxWidth: maxWidth
115
- });
116
- var CellComponent = children ? 'th' : 'td';
117
- var cellScope = CellComponent === 'th' ? scope !== null && scope !== void 0 ? scope : 'col' : undefined; // `scope` is only valid on `th` elements
115
+ var renderHeaderCellRef = useRef();
116
+ renderHeaderCellRef.current = function (extraProps) {
117
+ if (hideForDesktop || hideForMobile) return null;
118
+ var classes = classNames('euiTableHeaderCell', className);
119
+ var cssStyles = [styles.euiTableHeaderCell, !isResponsive && stickyStyles];
120
+ var inlineWidthStyles = resolveWidthPropsAsStyle(_style, {
121
+ width: width,
122
+ minWidth: minWidth,
123
+ maxWidth: maxWidth
124
+ });
125
+ var CellComponent = children ? 'th' : 'td';
126
+ var cellScope = CellComponent === 'th' ? scope !== null && scope !== void 0 ? scope : 'col' : undefined; // `scope` is only valid on `th` elements
118
127
 
119
- var canSort = !!(onSort && !readOnly);
120
- var ariaSortValue;
121
- if (isSorted) {
122
- ariaSortValue = isSortAscending ? 'ascending' : 'descending';
123
- } else if (canSort) {
124
- ariaSortValue = 'none';
125
- }
126
- var cellContentsProps = {
127
- css: styles.euiTableHeaderCell__content,
128
- align: align,
129
- tooltipProps: tooltipProps,
130
- description: description,
131
- canSort: canSort,
132
- isSorted: isSorted,
133
- isSortAscending: isSortAscending,
134
- children: children
128
+ var canSort = !!(onSort && !readOnly);
129
+ var ariaSortValue;
130
+ if (isSorted) {
131
+ ariaSortValue = isSortAscending ? 'ascending' : 'descending';
132
+ } else if (canSort) {
133
+ ariaSortValue = 'none';
134
+ }
135
+ var cellContentsProps = {
136
+ css: styles.euiTableHeaderCell__content,
137
+ align: align,
138
+ tooltipProps: tooltipProps,
139
+ description: description,
140
+ canSort: canSort,
141
+ isSorted: isSorted,
142
+ isSortAscending: isSortAscending,
143
+ children: children
144
+ };
145
+ return ___EmotionJSX(CellComponent, _extends({
146
+ css: cssStyles,
147
+ className: classes,
148
+ scope: cellScope,
149
+ role: "columnheader",
150
+ "aria-sort": ariaSortValue,
151
+ "data-sticky": !isResponsive && (sticky === null || sticky === void 0 ? void 0 : sticky.side) || undefined,
152
+ style: _objectSpread(_objectSpread({}, _style), inlineWidthStyles)
153
+ }, rest, extraProps), canSort ? ___EmotionJSX(EuiToolTip, _extends({
154
+ content: tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.content
155
+ }, tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.tooltipProps, {
156
+ display: "block"
157
+ }), ___EmotionJSX("button", {
158
+ type: "button",
159
+ css: styles.euiTableHeaderCell__button,
160
+ className: classNames('euiTableHeaderButton', {
161
+ 'euiTableHeaderButton-isSorted': isSorted
162
+ }),
163
+ onClick: onSort,
164
+ "data-test-subj": "tableHeaderSortButton"
165
+ }, ___EmotionJSX(CellContents, cellContentsProps))) : ___EmotionJSX(CellContents, cellContentsProps), append);
135
166
  };
136
- return ___EmotionJSX(CellComponent, _extends({
137
- css: cssStyles,
138
- className: classes,
139
- scope: cellScope,
140
- role: "columnheader",
141
- "aria-sort": ariaSortValue,
142
- "data-sticky": !isResponsive && (sticky === null || sticky === void 0 ? void 0 : sticky.side) || undefined,
143
- style: _objectSpread(_objectSpread({}, _style), inlineWidthStyles)
144
- }, rest), canSort ? ___EmotionJSX(EuiToolTip, _extends({
145
- content: tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.content
146
- }, tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.tooltipProps, {
147
- display: "block"
148
- }), ___EmotionJSX("button", {
149
- type: "button",
150
- css: styles.euiTableHeaderCell__button,
151
- className: classNames('euiTableHeaderButton', {
152
- 'euiTableHeaderButton-isSorted': isSorted
153
- }),
154
- onClick: onSort,
155
- "data-test-subj": "tableHeaderSortButton"
156
- }, ___EmotionJSX(CellContents, cellContentsProps))) : ___EmotionJSX(CellContents, cellContentsProps), append);
167
+ var handleResize = useCallback(function (entries) {
168
+ var entry = entries[0];
169
+ if (!entry) {
170
+ return;
171
+ }
172
+ store.updateColumnWidth(storeCellId, entry.contentRect.width);
173
+ }, [store, storeCellId]);
174
+ useEffect(function () {
175
+ // Don't register the column inside the sticky header as the original
176
+ // column is already registered. This would cause an infinite loop.
177
+ if (isWithinStickyHeader || !selfRef.current || !renderHeaderCellRef.current) {
178
+ return;
179
+ }
180
+ var unregisterColumn = store.registerColumn(storeCellId, {
181
+ renderHeaderCellRef: renderHeaderCellRef,
182
+ // getBoundingClientRect is not the cheapest, but we call it only once
183
+ currentWidth: selfRef.current.getBoundingClientRect().width
184
+ });
185
+
186
+ // ResizeObserver is available in all supported browsers,
187
+ // but jsdom and jest don't provide a polyfill for it.
188
+ var resizeObserver;
189
+ if (typeof window.ResizeObserver !== 'undefined') {
190
+ resizeObserver = new ResizeObserver(handleResize);
191
+
192
+ // Note: This _could_ be optimized by using a single ResizeObserver
193
+ // for the whole EuiTable, but it would need to be changed back to this
194
+ // if/when we implement resizable columns
195
+ resizeObserver.observe(selfRef.current);
196
+ }
197
+ return function () {
198
+ var _resizeObserver;
199
+ unregisterColumn();
200
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect();
201
+ };
202
+ }, [store, isWithinStickyHeader, handleResize, storeCellId]);
203
+
204
+ // Notify the store on every render so the sticky header stays in sync.
205
+ // React's reconciliation will efficiently handle any duplicate renders.
206
+ useEffect(function () {
207
+ // Don't update the store if the component is rendered within EuiTableStickyHeader
208
+ if (isWithinStickyHeader) {
209
+ return;
210
+ }
211
+
212
+ // Don't update the store if the element doesn't exist. The render function
213
+ // in `renderHeaderCellRef` sometimes renders null - e.g., in mobile layout
214
+ if (!selfRef.current) {
215
+ return;
216
+ }
217
+ store.updateColumn(storeCellId, {
218
+ renderHeaderCellRef: renderHeaderCellRef
219
+ });
220
+ });
221
+ return renderHeaderCellRef.current({
222
+ ref: selfRef
223
+ });
157
224
  };
@@ -9,36 +9,69 @@ var _excluded = ["children", "className", "scope", "style", "width", "minWidth",
9
9
  * Side Public License, v 1.
10
10
  */
11
11
 
12
- import React from 'react';
12
+ import React, { useEffect, useRef } from 'react';
13
13
  import classNames from 'classnames';
14
14
  import { useEuiMemoizedStyles } from '../../services';
15
15
  import { resolveWidthPropsAsStyle } from './utils';
16
16
  import { euiTableCellCheckboxStyles } from './table_cells_shared.styles';
17
+ import { useEuiTableColumnDataStore } from './store/provider';
18
+ import { useEuiTableWithinStickyHeader } from './sticky_header';
19
+ import { useEuiTableStoreUniqueColumnId } from './store/use_unique_column_id';
17
20
  import { jsx as ___EmotionJSX } from "@emotion/react";
18
- export var EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(_ref) {
19
- var children = _ref.children,
20
- className = _ref.className,
21
- _ref$scope = _ref.scope,
22
- scope = _ref$scope === void 0 ? 'col' : _ref$scope,
23
- _style = _ref.style,
24
- width = _ref.width,
25
- minWidth = _ref.minWidth,
26
- maxWidth = _ref.maxWidth,
27
- append = _ref.append,
28
- rest = _objectWithoutProperties(_ref, _excluded);
29
- var classes = classNames('euiTableHeaderCellCheckbox', className);
21
+ export var EuiTableHeaderCellCheckbox = function EuiTableHeaderCellCheckbox(props) {
22
+ var children = props.children,
23
+ className = props.className,
24
+ _props$scope = props.scope,
25
+ scope = _props$scope === void 0 ? 'col' : _props$scope,
26
+ _style = props.style,
27
+ width = props.width,
28
+ minWidth = props.minWidth,
29
+ maxWidth = props.maxWidth,
30
+ append = props.append,
31
+ rest = _objectWithoutProperties(props, _excluded);
32
+ var storeCellId = useEuiTableStoreUniqueColumnId();
33
+ var store = useEuiTableColumnDataStore();
34
+ var isWithinStickyHeader = useEuiTableWithinStickyHeader();
30
35
  var styles = useEuiMemoizedStyles(euiTableCellCheckboxStyles);
31
- var style = resolveWidthPropsAsStyle(_style, {
32
- width: width,
33
- minWidth: minWidth,
34
- maxWidth: maxWidth
36
+ var renderHeaderCellRef = useRef();
37
+ renderHeaderCellRef.current = function (extraProps) {
38
+ var classes = classNames('euiTableHeaderCellCheckbox', className);
39
+ var style = resolveWidthPropsAsStyle(_style, {
40
+ width: width,
41
+ minWidth: minWidth,
42
+ maxWidth: maxWidth
43
+ });
44
+ return ___EmotionJSX("th", _extends({
45
+ css: styles.euiTableHeaderCellCheckbox,
46
+ className: classes,
47
+ scope: scope,
48
+ style: style
49
+ }, rest, extraProps), ___EmotionJSX("div", {
50
+ className: "euiTableCellContent"
51
+ }, children), append);
52
+ };
53
+ useEffect(function () {
54
+ // Don't register the column inside the sticky header as the original
55
+ // column is already registered. This would cause an infinite loop.
56
+ if (isWithinStickyHeader) {
57
+ return;
58
+ }
59
+ var unregisterColumn = store.registerColumn(storeCellId, {
60
+ renderHeaderCellRef: renderHeaderCellRef
61
+ });
62
+ return function () {
63
+ unregisterColumn();
64
+ };
65
+ }, [store, isWithinStickyHeader, storeCellId]);
66
+ useEffect(function () {
67
+ // Notify the store on every render so the sticky header stays in sync.
68
+ // React's reconciliation will efficiently handle any duplicate renders.
69
+ if (isWithinStickyHeader) {
70
+ return;
71
+ }
72
+ store.updateColumn(storeCellId, {
73
+ renderHeaderCellRef: renderHeaderCellRef
74
+ });
35
75
  });
36
- return ___EmotionJSX("th", _extends({
37
- css: styles.euiTableHeaderCellCheckbox,
38
- className: classes,
39
- scope: scope,
40
- style: style
41
- }, rest), ___EmotionJSX("div", {
42
- className: "euiTableCellContent"
43
- }, children), append);
76
+ return renderHeaderCellRef.current({});
44
77
  };
@@ -16,6 +16,7 @@ import React, { useState, useMemo, useCallback, useEffect } from 'react';
16
16
  import classNames from 'classnames';
17
17
  import { useCombinedRefs, useEuiMemoizedStyles } from '../../services';
18
18
  import { EuiResizeObserver } from '../observer/resize_observer';
19
+ import { EuiToolTip } from '../tool_tip';
19
20
  import { TruncationUtils } from './utils';
20
21
  import { euiTextTruncateStyles } from './text_truncate.styles';
21
22
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -128,11 +129,10 @@ var EuiTextTruncateWithWidth = function EuiTextTruncateWithWidth(_ref2) {
128
129
  }, [ready, width, text, truncation, truncationOffset, truncationPosition, ellipsis, containerEl]);
129
130
  var isTruncating = truncatedText !== text;
130
131
  var styles = useEuiMemoizedStyles(euiTextTruncateStyles);
131
- return ___EmotionJSX("div", _extends({
132
+ var content = ___EmotionJSX("div", _extends({
132
133
  className: classNames('euiTextTruncate', className),
133
134
  css: styles.euiTextTruncate,
134
- ref: refs,
135
- title: isTruncating ? text : undefined
135
+ ref: refs
136
136
  }, rest), isTruncating ? ___EmotionJSX(React.Fragment, null, ___EmotionJSX("span", {
137
137
  className: "euiTextTruncate__truncatedText",
138
138
  css: styles.euiTextTruncate__truncatedText,
@@ -146,6 +146,11 @@ var EuiTextTruncateWithWidth = function EuiTextTruncateWithWidth(_ref2) {
146
146
  className: "euiTextTruncate__fullText",
147
147
  "data-test-subj": "fullText"
148
148
  }, children ? children(text) : text));
149
+ return isTruncating ? ___EmotionJSX(EuiToolTip, {
150
+ content: text,
151
+ disableScreenReaderOutput: true,
152
+ display: "block"
153
+ }, content) : content;
149
154
  };
150
155
  var EuiTextTruncateWithResizeObserver = function EuiTextTruncateWithResizeObserver(_ref3) {
151
156
  var _onResize = _ref3.onResize,
@@ -1,7 +1,10 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import _extends from "@babel/runtime/helpers/extends";
2
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
5
  var _excluded = ["children", "className", "anchorClassName", "anchorProps", "content", "title", "display", "repositionOnScroll", "disableScreenReaderOutput", "position", "offset", "id", "onMouseOut", "onBlur"];
6
+ 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; }
7
+ 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) { _defineProperty(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; }
5
8
  /*
6
9
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
7
10
  * or more contributor license agreements. Licensed under the Elastic License
@@ -12,7 +15,7 @@ var _excluded = ["children", "className", "anchorClassName", "anchorProps", "con
12
15
 
13
16
  import React, { forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useRef, useState } from 'react';
14
17
  import classNames from 'classnames';
15
- import { findPopoverPosition, htmlIdGenerator, keys } from '../../services';
18
+ import { findPopoverPosition, useGeneratedHtmlId, keys } from '../../services';
16
19
  import { getRepositionOnScroll } from '../../services/popover/reposition_on_scroll';
17
20
  import { EuiResizeObserver } from '../observer/resize_observer';
18
21
  import { EuiPortal } from '../portal';
@@ -23,7 +26,7 @@ import { EuiToolTipArrow } from './tool_tip_arrow';
23
26
  import { toolTipManager } from './tool_tip_manager';
24
27
  import { jsx as ___EmotionJSX } from "@emotion/react";
25
28
  export var POSITIONS = ['top', 'right', 'bottom', 'left'];
26
- var DISPLAYS = ['inlineBlock', 'block'];
29
+ var DISPLAYS = ['inlineBlock', 'block', 'flex'];
27
30
  export var DEFAULT_TOOLTIP_OFFSET = 16;
28
31
 
29
32
  /**
@@ -75,22 +78,26 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
75
78
  setVisible = _useState2[1];
76
79
  var _useState3 = useState(false),
77
80
  _useState4 = _slicedToArray(_useState3, 2),
78
- hasFocus = _useState4[0],
79
- setHasFocus = _useState4[1];
80
- var _useState5 = useState(positionProp),
81
+ skipAnimation = _useState4[0],
82
+ setSkipAnimation = _useState4[1];
83
+ var _useState5 = useState(false),
81
84
  _useState6 = _slicedToArray(_useState5, 2),
82
- calculatedPosition = _useState6[0],
83
- setCalculatedPosition = _useState6[1];
84
- var _useState7 = useState(DEFAULT_TOOLTIP_STYLES),
85
+ hasFocus = _useState6[0],
86
+ setHasFocus = _useState6[1];
87
+ var _useState7 = useState(positionProp),
85
88
  _useState8 = _slicedToArray(_useState7, 2),
86
- toolTipStyles = _useState8[0],
87
- setToolTipStyles = _useState8[1];
88
- var _useState9 = useState(undefined),
89
+ calculatedPosition = _useState8[0],
90
+ setCalculatedPosition = _useState8[1];
91
+ var _useState9 = useState(DEFAULT_TOOLTIP_STYLES),
89
92
  _useState10 = _slicedToArray(_useState9, 2),
90
- arrowStyles = _useState10[0],
91
- setArrowStyles = _useState10[1];
92
- var generatedId = useRef(htmlIdGenerator()());
93
- var id = idProp !== null && idProp !== void 0 ? idProp : generatedId.current;
93
+ toolTipStyles = _useState10[0],
94
+ setToolTipStyles = _useState10[1];
95
+ var _useState11 = useState(undefined),
96
+ _useState12 = _slicedToArray(_useState11, 2),
97
+ arrowStyles = _useState12[0],
98
+ setArrowStyles = _useState12[1];
99
+ var generatedId = useGeneratedHtmlId();
100
+ var id = idProp !== null && idProp !== void 0 ? idProp : generatedId;
94
101
  var anchorRef = useRef(null);
95
102
  var popoverRef = useRef(null);
96
103
  var positionToolTip = useCallback(function () {
@@ -142,10 +149,19 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
142
149
  setArrowStyles(undefined);
143
150
  toolTipManager.deregisterToolTip(hideToolTip);
144
151
  }, []);
152
+
153
+ /**
154
+ * Show the tooltip.
155
+ *
156
+ * Uses the tooltip manager's `skipAnimation` signal to optionally skip the entry
157
+ * animation when another tooltip is already open or was just closed.
158
+ */
145
159
  var showToolTip = useCallback(function () {
146
160
  if (!content && !title) return;
161
+ var result = toolTipManager.registerTooltip(hideToolTip);
162
+ if (!result) return;
163
+ setSkipAnimation(result.skipAnimation);
147
164
  setVisible(true);
148
- toolTipManager.registerTooltip(hideToolTip);
149
165
  }, [content, title, hideToolTip]);
150
166
  useImperativeHandle(ref, function () {
151
167
  return {
@@ -225,18 +241,24 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
225
241
  hideToolTip();
226
242
  }
227
243
  }, [disableScreenReaderOutput, visible, hideToolTip]);
228
- var onMouseOut = useCallback(function (event) {
229
- // Prevent mousing over children from hiding the tooltip by testing for whether the mouse has
230
- // left the anchor for a non-child.
231
- if (anchorRef.current === event.relatedTarget || anchorRef.current != null && !anchorRef.current.contains(event.relatedTarget)) {
232
- if (!hasFocus) {
233
- hideToolTip();
234
- }
235
- }
236
- if (onMouseOutProp) {
237
- onMouseOutProp(event);
238
- }
239
- }, [hasFocus, hideToolTip, onMouseOutProp]);
244
+
245
+ /**
246
+ * Show the tooltip on enter.
247
+ */
248
+ var onMouseEnter = useCallback(function (event) {
249
+ var _anchorProps$onMouseE;
250
+ showToolTip();
251
+ anchorProps === null || anchorProps === void 0 || (_anchorProps$onMouseE = anchorProps.onMouseEnter) === null || _anchorProps$onMouseE === void 0 || _anchorProps$onMouseE.call(anchorProps, event);
252
+ }, [showToolTip, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.onMouseEnter]);
253
+
254
+ /**
255
+ * Hide the tooltip if the mouse is not over the trigger.
256
+ */
257
+ var onMouseLeave = useCallback(function (event) {
258
+ var _anchorProps$onMouseL;
259
+ if (!hasFocus) hideToolTip();
260
+ anchorProps === null || anchorProps === void 0 || (_anchorProps$onMouseL = anchorProps.onMouseLeave) === null || _anchorProps$onMouseL === void 0 || _anchorProps$onMouseL.call(anchorProps, event);
261
+ }, [hasFocus, hideToolTip, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.onMouseLeave]);
240
262
  var classes = classNames('euiToolTip', className);
241
263
  var anchorClasses = classNames(anchorClassName, anchorProps === null || anchorProps === void 0 ? void 0 : anchorProps.className);
242
264
  return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiToolTipAnchor, _extends({}, anchorProps, {
@@ -244,8 +266,9 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
244
266
  onBlur: onBlur,
245
267
  onFocus: onFocus,
246
268
  onKeyDown: onEscapeKey,
247
- onMouseOver: showToolTip,
248
- onMouseOut: onMouseOut
269
+ onMouseEnter: onMouseEnter,
270
+ onMouseLeave: onMouseLeave,
271
+ onMouseOut: onMouseOutProp
249
272
  // `id` defines if the trigger and tooltip are automatically linked via `aria-describedby`.
250
273
  ,
251
274
  id: !disableScreenReaderOutput ? id : undefined,
@@ -254,7 +277,12 @@ export var EuiToolTip = /*#__PURE__*/forwardRef(function (_ref, ref) {
254
277
  isVisible: visible
255
278
  }), children), visible && (content || title) && ___EmotionJSX(EuiPortal, null, ___EmotionJSX(EuiToolTipPopover, _extends({
256
279
  className: classes,
257
- style: toolTipStyles,
280
+ style: _objectSpread(_objectSpread({}, toolTipStyles), {}, {
281
+ // Inline `animation: none` overrides the keyframes fade-in
282
+ // shorthand on the base `.euiToolTip` class, so a tooltip
283
+ // shown right after another closes appears instantly.
284
+ animation: skipAnimation ? 'none' : undefined
285
+ }),
258
286
  positionToolTip: positionToolTip,
259
287
  popoverRef: setPopoverRef,
260
288
  title: title,
@@ -43,6 +43,14 @@ export var euiToolTipStyles = function euiToolTipStyles(euiThemeContext) {
43
43
  };
44
44
  };
45
45
  var _ref = process.env.NODE_ENV === "production" ? {
46
+ name: "1cjglks-flex",
47
+ styles: "display:flex;label:flex;"
48
+ } : {
49
+ name: "1cjglks-flex",
50
+ styles: "display:flex;label:flex;",
51
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
52
+ };
53
+ var _ref2 = process.env.NODE_ENV === "production" ? {
46
54
  name: "fzilnk-inlineBlock",
47
55
  styles: "display:inline-block;label:inlineBlock;"
48
56
  } : {
@@ -50,7 +58,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
50
58
  styles: "display:inline-block;label:inlineBlock;",
51
59
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
52
60
  };
53
- var _ref2 = process.env.NODE_ENV === "production" ? {
61
+ var _ref3 = process.env.NODE_ENV === "production" ? {
54
62
  name: "14aceuy-block",
55
63
  styles: "display:block;label:block;"
56
64
  } : {
@@ -58,7 +66,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
58
66
  styles: "display:block;label:block;",
59
67
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
60
68
  };
61
- var _ref3 = process.env.NODE_ENV === "production" ? {
69
+ var _ref4 = process.env.NODE_ENV === "production" ? {
62
70
  name: "1s3i3p5-euiToolTipAnchor",
63
71
  styles: "*[disabled]{pointer-events:none;};label:euiToolTipAnchor;"
64
72
  } : {
@@ -69,9 +77,10 @@ var _ref3 = process.env.NODE_ENV === "production" ? {
69
77
  export var euiToolTipAnchorStyles = function euiToolTipAnchorStyles() {
70
78
  return {
71
79
  // Elements
72
- euiToolTipAnchor: _ref3,
80
+ euiToolTipAnchor: _ref4,
73
81
  // Variants
74
- block: _ref2,
75
- inlineBlock: _ref
82
+ block: _ref3,
83
+ inlineBlock: _ref2,
84
+ flex: _ref
76
85
  };
77
86
  };
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["onBlur", "onFocus", "onMouseOver", "onMouseOut", "id", "className", "children", "display", "isVisible"];
3
+ var _excluded = ["onBlur", "onFocus", "onMouseEnter", "onMouseLeave", "id", "className", "children", "display", "isVisible"];
4
4
  /*
5
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -17,8 +17,8 @@ import { jsx as ___EmotionJSX } from "@emotion/react";
17
17
  export var EuiToolTipAnchor = /*#__PURE__*/forwardRef(function (_ref, ref) {
18
18
  var _onBlur = _ref.onBlur,
19
19
  _onFocus = _ref.onFocus,
20
- onMouseOver = _ref.onMouseOver,
21
- onMouseOut = _ref.onMouseOut,
20
+ onMouseEnter = _ref.onMouseEnter,
21
+ onMouseLeave = _ref.onMouseLeave,
22
22
  id = _ref.id,
23
23
  className = _ref.className,
24
24
  children = _ref.children,
@@ -42,8 +42,8 @@ export var EuiToolTipAnchor = /*#__PURE__*/forwardRef(function (_ref, ref) {
42
42
  id: anchorId
43
43
  }, rest, {
44
44
  className: classes,
45
- onMouseOver: onMouseOver,
46
- onMouseOut: onMouseOut
45
+ onMouseEnter: onMouseEnter,
46
+ onMouseLeave: onMouseLeave
47
47
  }), /*#__PURE__*/cloneElement(children, {
48
48
  onFocus: function onFocus(e) {
49
49
  _onFocus(e);
@@ -8,29 +8,54 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
8
  * in compliance with, at your election, the Elastic License 2.0 or the Server
9
9
  * Side Public License, v 1.
10
10
  */
11
+
11
12
  /**
12
13
  * Manager utility that ensures only one tooltip is visible at a time
14
+ * and lets the next tooltip to open skip its entry animation if another was
15
+ * just opened or just closed.
13
16
  *
14
17
  * UX rationale (primarily for mouse-only users):
15
18
  * @see https://github.com/elastic/kibana/issues/144482
16
19
  * @see https://github.com/elastic/eui/issues/5883
17
20
  */
21
+
22
+ /**
23
+ * Time window in ms after a tooltip closes during which the next one to open
24
+ * skips its entry animation.
25
+ */
26
+ var SKIP_ANIMATION_WINDOW = 300;
18
27
  var ToolTipManager = /*#__PURE__*/_createClass(function ToolTipManager() {
19
28
  var _this = this;
20
29
  _classCallCheck(this, ToolTipManager);
21
30
  // We use a set instead of a single var just in case
22
31
  // multiple tooltips are registered via async shenanigans
23
32
  _defineProperty(this, "toolTipsToHide", new Set());
33
+ // Timestamp of the last hide; `null` means no tooltip has closed yet.
34
+ _defineProperty(this, "lastHiddenAt", null);
24
35
  _defineProperty(this, "registerTooltip", function (hideCallback) {
25
- if (_this.toolTipsToHide.has(hideCallback)) return;
36
+ if (_this.toolTipsToHide.has(hideCallback)) return null;
37
+ var hadOpen = _this.toolTipsToHide.size > 0;
38
+ var recentlyClosed = _this.lastHiddenAt !== null && Date.now() - _this.lastHiddenAt < SKIP_ANIMATION_WINDOW;
26
39
  _this.toolTipsToHide.forEach(function (hide) {
27
40
  return hide();
28
41
  });
29
42
  _this.toolTipsToHide.clear();
30
43
  _this.toolTipsToHide.add(hideCallback);
44
+ return {
45
+ skipAnimation: hadOpen || recentlyClosed
46
+ };
31
47
  });
32
48
  _defineProperty(this, "deregisterToolTip", function (hideCallback) {
33
- _this.toolTipsToHide.delete(hideCallback);
49
+ if (_this.toolTipsToHide.delete(hideCallback)) _this.lastHiddenAt = Date.now();
50
+ });
51
+ /**
52
+ * Resets all internal state. Primarily intended for tests, so that a
53
+ * tooltip shown in one test doesn't leak into the next (the manager is a
54
+ * module-level singleton).
55
+ */
56
+ _defineProperty(this, "reset", function () {
57
+ _this.toolTipsToHide.clear();
58
+ _this.lastHiddenAt = null;
34
59
  });
35
60
  });
36
61
  export var toolTipManager = new ToolTipManager();