@elastic/eui 114.3.0 → 116.0.0

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 (387) hide show
  1. package/es/components/basic_table/basic_table.js +3 -6
  2. package/es/components/basic_table/collapsed_item_actions.js +1 -3
  3. package/es/components/basic_table/default_item_action.js +0 -1
  4. package/es/components/basic_table/in_memory_table.js +3 -6
  5. package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +14 -11
  6. package/es/components/color_picker/color_palette_picker/color_palette_picker.js +0 -1
  7. package/es/components/color_picker/color_picker_swatch.js +1 -2
  8. package/es/components/combo_box/combo_box.a11y.js +5 -5
  9. package/es/components/combo_box/combo_box.js +61 -53
  10. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +147 -84
  11. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.styles.js +8 -7
  12. package/es/components/context_menu/context_menu.js +19 -21
  13. package/es/components/context_menu/context_menu.styles.js +5 -2
  14. package/es/components/context_menu/context_menu_item.js +69 -58
  15. package/es/components/context_menu/context_menu_item.styles.js +14 -28
  16. package/es/components/context_menu/context_menu_panel.js +37 -21
  17. package/es/components/context_menu/context_menu_panel.styles.js +7 -2
  18. package/es/components/context_menu/context_menu_panel_title.js +124 -0
  19. package/es/components/context_menu/context_menu_panel_title.styles.js +20 -0
  20. package/es/components/context_menu/index.js +2 -1
  21. package/es/components/datagrid/body/cell/data_grid_cell.js +35 -29
  22. package/es/components/datagrid/body/data_grid_body.js +23 -17
  23. package/es/components/datagrid/body/data_grid_body_custom.js +23 -17
  24. package/es/components/datagrid/body/data_grid_body_virtualized.js +23 -17
  25. package/es/components/datagrid/body/header/column_actions.js +1 -2
  26. package/es/components/datagrid/body/header/data_grid_header_cell.js +23 -17
  27. package/es/components/datagrid/controls/column_sorting.js +23 -17
  28. package/es/components/datagrid/controls/display_selector.js +1 -2
  29. package/es/components/datagrid/controls/fullscreen_selector.js +1 -2
  30. package/es/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  31. package/es/components/datagrid/utils/in_memory.js +23 -17
  32. package/es/components/filter_group/filter_group.a11y.js +8 -2
  33. package/es/components/filter_group/filter_select_item.js +36 -17
  34. package/es/components/flyout/flyout_menu.js +1 -4
  35. package/es/components/form/checkbox/checkbox.js +6 -6
  36. package/es/components/form/checkbox/checkbox.styles.js +1 -22
  37. package/es/components/form/checkbox/checkbox_control.js +78 -0
  38. package/es/components/form/checkbox/checkbox_control.styles.js +40 -0
  39. package/es/components/form/checkbox/index.js +1 -0
  40. package/es/components/form/form.styles.js +2 -1
  41. package/es/components/form/radio/radio.styles.js +1 -1
  42. package/es/components/form/super_select/super_select.js +118 -99
  43. package/es/components/form/super_select/super_select.styles.js +4 -8
  44. package/es/components/form/super_select/super_select_item.js +10 -18
  45. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -2
  46. package/es/components/link/external_link_icon.js +4 -2
  47. package/es/components/list_group/list_group.js +20 -34
  48. package/es/components/list_group/list_group.styles.js +2 -16
  49. package/es/components/list_group/list_group_item.js +75 -87
  50. package/es/components/list_group/list_group_item.styles.js +17 -61
  51. package/es/components/list_group/list_group_item_extra_action.styles.js +6 -6
  52. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +16 -28
  53. package/es/components/list_item_layout/_list_item_layout.js +692 -0
  54. package/es/components/list_item_layout/_list_item_layout.styles.js +93 -0
  55. package/es/components/list_item_layout/index.js +9 -0
  56. package/es/components/markdown_editor/markdown_editor.js +1 -1
  57. package/es/components/markdown_editor/markdown_editor_drop_zone.js +6 -3
  58. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  59. package/es/components/markdown_editor/markdown_editor_toolbar.js +14 -10
  60. package/es/components/portal/portal.js +72 -117
  61. package/es/components/search_bar/filters/field_value_selection_filter.js +2 -1
  62. package/es/components/search_bar/filters/field_value_toggle_group_filter.js +42 -91
  63. package/es/components/selectable/selectable.js +1 -0
  64. package/es/components/selectable/selectable_list/selectable_list.js +52 -36
  65. package/es/components/selectable/selectable_list/selectable_list.styles.js +19 -4
  66. package/es/components/selectable/selectable_list/selectable_list_item.js +45 -152
  67. package/es/components/selectable/selectable_list/utils/get_list_item_size.js +17 -0
  68. package/es/components/selectable/selectable_search/selectable_search.js +4 -1
  69. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  70. package/es/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +2 -12
  71. package/es/components/selectable/selectable_templates/selectable_template_sitewide_option.js +1 -1
  72. package/es/components/selectable/selectable_templates/selectable_template_sitewide_popover.js +1 -1
  73. package/es/components/table/table_header_cell.js +1 -2
  74. package/es/components/tool_tip/icon_tip.js +4 -8
  75. package/es/components/tool_tip/tool_tip.js +233 -261
  76. package/es/components/tool_tip/tool_tip.styles.js +10 -18
  77. package/es/components/tool_tip/tool_tip_anchor.js +3 -3
  78. package/es/components/tool_tip/tool_tip_manager.js +1 -0
  79. package/es/components/tool_tip/tool_tip_popover.js +7 -7
  80. package/es/global_styling/mixins/_helpers.js +32 -11
  81. package/es/test/rtl/component_helpers.d.ts +0 -3
  82. package/es/test/rtl/component_helpers.js +40 -62
  83. package/eui.d.ts +10463 -8188
  84. package/i18ntokens.json +2607 -2589
  85. package/lib/components/basic_table/basic_table.js +3 -6
  86. package/lib/components/basic_table/collapsed_item_actions.js +1 -3
  87. package/lib/components/basic_table/default_item_action.js +0 -1
  88. package/lib/components/basic_table/in_memory_table.js +3 -6
  89. package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +14 -11
  90. package/lib/components/color_picker/color_palette_picker/color_palette_picker.js +0 -1
  91. package/lib/components/color_picker/color_picker_swatch.js +1 -2
  92. package/lib/components/combo_box/combo_box.a11y.js +5 -5
  93. package/lib/components/combo_box/combo_box.js +61 -53
  94. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +145 -82
  95. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.styles.js +7 -6
  96. package/lib/components/context_menu/context_menu.js +20 -22
  97. package/lib/components/context_menu/context_menu.styles.js +4 -1
  98. package/lib/components/context_menu/context_menu_item.js +70 -59
  99. package/lib/components/context_menu/context_menu_item.styles.js +13 -27
  100. package/lib/components/context_menu/context_menu_panel.js +37 -21
  101. package/lib/components/context_menu/context_menu_panel.styles.js +7 -2
  102. package/lib/components/context_menu/context_menu_panel_title.js +130 -0
  103. package/lib/components/context_menu/context_menu_panel_title.styles.js +26 -0
  104. package/lib/components/context_menu/index.js +8 -1
  105. package/lib/components/datagrid/body/cell/data_grid_cell.js +35 -29
  106. package/lib/components/datagrid/body/data_grid_body.js +23 -17
  107. package/lib/components/datagrid/body/data_grid_body_custom.js +23 -17
  108. package/lib/components/datagrid/body/data_grid_body_virtualized.js +23 -17
  109. package/lib/components/datagrid/body/header/column_actions.js +1 -2
  110. package/lib/components/datagrid/body/header/data_grid_header_cell.js +23 -17
  111. package/lib/components/datagrid/controls/column_sorting.js +23 -17
  112. package/lib/components/datagrid/controls/display_selector.js +1 -2
  113. package/lib/components/datagrid/controls/fullscreen_selector.js +1 -2
  114. package/lib/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  115. package/lib/components/datagrid/utils/in_memory.js +23 -17
  116. package/lib/components/filter_group/filter_group.a11y.js +8 -2
  117. package/lib/components/filter_group/filter_select_item.js +35 -16
  118. package/lib/components/flyout/flyout_menu.js +1 -4
  119. package/lib/components/form/checkbox/checkbox.js +6 -6
  120. package/lib/components/form/checkbox/checkbox.styles.js +1 -22
  121. package/lib/components/form/checkbox/checkbox_control.js +84 -0
  122. package/lib/components/form/checkbox/checkbox_control.styles.js +44 -0
  123. package/lib/components/form/checkbox/index.js +7 -0
  124. package/lib/components/form/form.styles.js +2 -1
  125. package/lib/components/form/radio/radio.styles.js +1 -1
  126. package/lib/components/form/super_select/super_select.js +116 -97
  127. package/lib/components/form/super_select/super_select.styles.js +4 -8
  128. package/lib/components/form/super_select/super_select_item.js +13 -18
  129. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -2
  130. package/lib/components/link/external_link_icon.js +4 -2
  131. package/lib/components/list_group/list_group.js +21 -35
  132. package/lib/components/list_group/list_group.styles.js +2 -16
  133. package/lib/components/list_group/list_group_item.js +75 -87
  134. package/lib/components/list_group/list_group_item.styles.js +17 -61
  135. package/lib/components/list_group/list_group_item_extra_action.styles.js +5 -5
  136. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +16 -28
  137. package/lib/components/list_item_layout/_list_item_layout.js +699 -0
  138. package/lib/components/list_item_layout/_list_item_layout.styles.js +97 -0
  139. package/lib/components/list_item_layout/index.js +12 -0
  140. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  141. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +6 -3
  142. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  143. package/lib/components/markdown_editor/markdown_editor_toolbar.js +12 -10
  144. package/lib/components/portal/portal.js +73 -118
  145. package/lib/components/search_bar/filters/field_value_selection_filter.js +2 -1
  146. package/lib/components/search_bar/filters/field_value_toggle_group_filter.js +44 -93
  147. package/lib/components/selectable/selectable.js +1 -0
  148. package/lib/components/selectable/selectable_list/selectable_list.js +50 -34
  149. package/lib/components/selectable/selectable_list/selectable_list.styles.js +20 -5
  150. package/lib/components/selectable/selectable_list/selectable_list_item.js +44 -152
  151. package/lib/components/selectable/selectable_list/utils/get_list_item_size.js +23 -0
  152. package/lib/components/selectable/selectable_search/selectable_search.js +4 -1
  153. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  154. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +2 -12
  155. package/lib/components/selectable/selectable_templates/selectable_template_sitewide_option.js +1 -1
  156. package/lib/components/selectable/selectable_templates/selectable_template_sitewide_popover.js +1 -1
  157. package/lib/components/table/table_header_cell.js +1 -2
  158. package/lib/components/tool_tip/icon_tip.js +4 -8
  159. package/lib/components/tool_tip/tool_tip.js +240 -266
  160. package/lib/components/tool_tip/tool_tip.styles.js +8 -16
  161. package/lib/components/tool_tip/tool_tip_anchor.js +2 -2
  162. package/lib/components/tool_tip/tool_tip_manager.js +1 -0
  163. package/lib/components/tool_tip/tool_tip_popover.js +6 -6
  164. package/lib/global_styling/mixins/_helpers.js +33 -12
  165. package/lib/test/rtl/component_helpers.d.ts +0 -3
  166. package/lib/test/rtl/component_helpers.js +41 -63
  167. package/optimize/es/components/basic_table/collapsed_item_actions.js +1 -3
  168. package/optimize/es/components/basic_table/default_item_action.js +0 -1
  169. package/optimize/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -4
  170. package/optimize/es/components/color_picker/color_palette_picker/color_palette_picker.js +0 -1
  171. package/optimize/es/components/combo_box/combo_box.a11y.js +5 -5
  172. package/optimize/es/components/combo_box/combo_box.js +60 -52
  173. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +145 -83
  174. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.styles.js +8 -7
  175. package/optimize/es/components/context_menu/context_menu.js +18 -13
  176. package/optimize/es/components/context_menu/context_menu.styles.js +5 -2
  177. package/optimize/es/components/context_menu/context_menu_item.js +55 -53
  178. package/optimize/es/components/context_menu/context_menu_item.styles.js +14 -28
  179. package/optimize/es/components/context_menu/context_menu_panel.js +36 -17
  180. package/optimize/es/components/context_menu/context_menu_panel.styles.js +7 -2
  181. package/optimize/es/components/context_menu/context_menu_panel_title.js +53 -0
  182. package/optimize/es/components/context_menu/context_menu_panel_title.styles.js +20 -0
  183. package/optimize/es/components/context_menu/index.js +2 -1
  184. package/optimize/es/components/datagrid/body/header/column_actions.js +1 -2
  185. package/optimize/es/components/datagrid/controls/display_selector.js +1 -2
  186. package/optimize/es/components/datagrid/controls/fullscreen_selector.js +1 -2
  187. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  188. package/optimize/es/components/filter_group/filter_group.a11y.js +8 -2
  189. package/optimize/es/components/filter_group/filter_select_item.js +36 -17
  190. package/optimize/es/components/flyout/flyout_menu.js +1 -4
  191. package/optimize/es/components/form/checkbox/checkbox.js +6 -6
  192. package/optimize/es/components/form/checkbox/checkbox.styles.js +1 -22
  193. package/optimize/es/components/form/checkbox/checkbox_control.js +48 -0
  194. package/optimize/es/components/form/checkbox/checkbox_control.styles.js +40 -0
  195. package/optimize/es/components/form/checkbox/index.js +1 -0
  196. package/optimize/es/components/form/form.styles.js +2 -1
  197. package/optimize/es/components/form/radio/radio.styles.js +1 -1
  198. package/optimize/es/components/form/super_select/super_select.js +118 -90
  199. package/optimize/es/components/form/super_select/super_select.styles.js +4 -8
  200. package/optimize/es/components/form/super_select/super_select_item.js +10 -14
  201. package/optimize/es/components/key_pad_menu/key_pad_menu_item.js +1 -2
  202. package/optimize/es/components/link/external_link_icon.js +4 -2
  203. package/optimize/es/components/list_group/list_group.js +7 -14
  204. package/optimize/es/components/list_group/list_group.styles.js +2 -16
  205. package/optimize/es/components/list_group/list_group_item.js +62 -80
  206. package/optimize/es/components/list_group/list_group_item.styles.js +17 -61
  207. package/optimize/es/components/list_group/list_group_item_extra_action.styles.js +6 -6
  208. package/optimize/es/components/list_item_layout/_list_item_layout.js +353 -0
  209. package/optimize/es/components/list_item_layout/_list_item_layout.styles.js +93 -0
  210. package/optimize/es/components/list_item_layout/index.js +9 -0
  211. package/optimize/es/components/markdown_editor/markdown_editor_drop_zone.js +5 -2
  212. package/optimize/es/components/markdown_editor/markdown_editor_toolbar.js +13 -9
  213. package/optimize/es/components/portal/portal.js +65 -91
  214. package/optimize/es/components/search_bar/filters/field_value_selection_filter.js +2 -1
  215. package/optimize/es/components/search_bar/filters/field_value_toggle_group_filter.js +43 -66
  216. package/optimize/es/components/selectable/selectable_list/selectable_list.js +48 -33
  217. package/optimize/es/components/selectable/selectable_list/selectable_list.styles.js +19 -4
  218. package/optimize/es/components/selectable/selectable_list/selectable_list_item.js +41 -143
  219. package/optimize/es/components/selectable/selectable_list/utils/get_list_item_size.js +17 -0
  220. package/optimize/es/components/selectable/selectable_search/selectable_search.js +4 -1
  221. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  222. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +2 -12
  223. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide_option.js +1 -1
  224. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide_popover.js +1 -1
  225. package/optimize/es/components/tool_tip/icon_tip.js +3 -5
  226. package/optimize/es/components/tool_tip/tool_tip.js +227 -250
  227. package/optimize/es/components/tool_tip/tool_tip.styles.js +10 -18
  228. package/optimize/es/components/tool_tip/tool_tip_anchor.js +3 -3
  229. package/optimize/es/components/tool_tip/tool_tip_manager.js +1 -0
  230. package/optimize/es/components/tool_tip/tool_tip_popover.js +7 -7
  231. package/optimize/es/global_styling/mixins/_helpers.js +32 -11
  232. package/optimize/es/test/rtl/component_helpers.d.ts +0 -3
  233. package/optimize/es/test/rtl/component_helpers.js +40 -62
  234. package/optimize/lib/components/basic_table/collapsed_item_actions.js +1 -3
  235. package/optimize/lib/components/basic_table/default_item_action.js +0 -1
  236. package/optimize/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -4
  237. package/optimize/lib/components/color_picker/color_palette_picker/color_palette_picker.js +0 -1
  238. package/optimize/lib/components/combo_box/combo_box.a11y.js +5 -5
  239. package/optimize/lib/components/combo_box/combo_box.js +60 -52
  240. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +143 -81
  241. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.styles.js +7 -6
  242. package/optimize/lib/components/context_menu/context_menu.js +19 -14
  243. package/optimize/lib/components/context_menu/context_menu.styles.js +4 -1
  244. package/optimize/lib/components/context_menu/context_menu_item.js +56 -54
  245. package/optimize/lib/components/context_menu/context_menu_item.styles.js +13 -27
  246. package/optimize/lib/components/context_menu/context_menu_panel.js +36 -17
  247. package/optimize/lib/components/context_menu/context_menu_panel.styles.js +7 -2
  248. package/optimize/lib/components/context_menu/context_menu_panel_title.js +59 -0
  249. package/optimize/lib/components/context_menu/context_menu_panel_title.styles.js +26 -0
  250. package/optimize/lib/components/context_menu/index.js +8 -1
  251. package/optimize/lib/components/datagrid/body/header/column_actions.js +1 -2
  252. package/optimize/lib/components/datagrid/controls/display_selector.js +1 -2
  253. package/optimize/lib/components/datagrid/controls/fullscreen_selector.js +1 -2
  254. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  255. package/optimize/lib/components/filter_group/filter_group.a11y.js +8 -2
  256. package/optimize/lib/components/filter_group/filter_select_item.js +35 -16
  257. package/optimize/lib/components/flyout/flyout_menu.js +1 -4
  258. package/optimize/lib/components/form/checkbox/checkbox.js +6 -6
  259. package/optimize/lib/components/form/checkbox/checkbox.styles.js +1 -22
  260. package/optimize/lib/components/form/checkbox/checkbox_control.js +54 -0
  261. package/optimize/lib/components/form/checkbox/checkbox_control.styles.js +44 -0
  262. package/optimize/lib/components/form/checkbox/index.js +7 -0
  263. package/optimize/lib/components/form/form.styles.js +2 -1
  264. package/optimize/lib/components/form/radio/radio.styles.js +1 -1
  265. package/optimize/lib/components/form/super_select/super_select.js +116 -88
  266. package/optimize/lib/components/form/super_select/super_select.styles.js +4 -8
  267. package/optimize/lib/components/form/super_select/super_select_item.js +13 -14
  268. package/optimize/lib/components/key_pad_menu/key_pad_menu_item.js +1 -2
  269. package/optimize/lib/components/link/external_link_icon.js +4 -2
  270. package/optimize/lib/components/list_group/list_group.js +8 -15
  271. package/optimize/lib/components/list_group/list_group.styles.js +2 -16
  272. package/optimize/lib/components/list_group/list_group_item.js +62 -80
  273. package/optimize/lib/components/list_group/list_group_item.styles.js +17 -61
  274. package/optimize/lib/components/list_group/list_group_item_extra_action.styles.js +5 -5
  275. package/optimize/lib/components/list_item_layout/_list_item_layout.js +361 -0
  276. package/optimize/lib/components/list_item_layout/_list_item_layout.styles.js +97 -0
  277. package/optimize/lib/components/list_item_layout/index.js +12 -0
  278. package/optimize/lib/components/markdown_editor/markdown_editor_drop_zone.js +5 -2
  279. package/optimize/lib/components/markdown_editor/markdown_editor_toolbar.js +13 -9
  280. package/optimize/lib/components/portal/portal.js +68 -93
  281. package/optimize/lib/components/search_bar/filters/field_value_selection_filter.js +2 -1
  282. package/optimize/lib/components/search_bar/filters/field_value_toggle_group_filter.js +45 -69
  283. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +46 -31
  284. package/optimize/lib/components/selectable/selectable_list/selectable_list.styles.js +20 -5
  285. package/optimize/lib/components/selectable/selectable_list/selectable_list_item.js +41 -143
  286. package/optimize/lib/components/selectable/selectable_list/utils/get_list_item_size.js +23 -0
  287. package/optimize/lib/components/selectable/selectable_search/selectable_search.js +4 -1
  288. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  289. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +2 -12
  290. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide_option.js +1 -1
  291. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide_popover.js +1 -1
  292. package/optimize/lib/components/tool_tip/icon_tip.js +3 -5
  293. package/optimize/lib/components/tool_tip/tool_tip.js +229 -251
  294. package/optimize/lib/components/tool_tip/tool_tip.styles.js +8 -16
  295. package/optimize/lib/components/tool_tip/tool_tip_anchor.js +2 -2
  296. package/optimize/lib/components/tool_tip/tool_tip_manager.js +1 -0
  297. package/optimize/lib/components/tool_tip/tool_tip_popover.js +6 -6
  298. package/optimize/lib/global_styling/mixins/_helpers.js +33 -12
  299. package/optimize/lib/test/rtl/component_helpers.d.ts +0 -3
  300. package/optimize/lib/test/rtl/component_helpers.js +41 -63
  301. package/package.json +5 -13
  302. package/test-env/components/basic_table/basic_table.js +3 -6
  303. package/test-env/components/basic_table/collapsed_item_actions.js +1 -3
  304. package/test-env/components/basic_table/default_item_action.js +0 -1
  305. package/test-env/components/basic_table/in_memory_table.js +3 -6
  306. package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +14 -11
  307. package/test-env/components/color_picker/color_palette_picker/color_palette_picker.js +0 -1
  308. package/test-env/components/color_picker/color_picker_swatch.js +1 -2
  309. package/test-env/components/combo_box/combo_box.a11y.js +5 -5
  310. package/test-env/components/combo_box/combo_box.js +61 -53
  311. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +145 -82
  312. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.styles.js +7 -6
  313. package/test-env/components/context_menu/context_menu.js +20 -22
  314. package/test-env/components/context_menu/context_menu.styles.js +4 -1
  315. package/test-env/components/context_menu/context_menu_item.js +67 -59
  316. package/test-env/components/context_menu/context_menu_item.styles.js +13 -27
  317. package/test-env/components/context_menu/context_menu_panel.js +37 -21
  318. package/test-env/components/context_menu/context_menu_panel.styles.js +7 -2
  319. package/test-env/components/context_menu/context_menu_panel_title.js +129 -0
  320. package/test-env/components/context_menu/context_menu_panel_title.styles.js +26 -0
  321. package/test-env/components/context_menu/index.js +8 -1
  322. package/test-env/components/datagrid/body/cell/data_grid_cell.js +35 -29
  323. package/test-env/components/datagrid/body/data_grid_body.js +23 -17
  324. package/test-env/components/datagrid/body/data_grid_body_custom.js +23 -17
  325. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +23 -17
  326. package/test-env/components/datagrid/body/header/column_actions.js +1 -2
  327. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +23 -17
  328. package/test-env/components/datagrid/controls/column_sorting.js +23 -17
  329. package/test-env/components/datagrid/controls/display_selector.js +1 -2
  330. package/test-env/components/datagrid/controls/fullscreen_selector.js +1 -2
  331. package/test-env/components/datagrid/controls/keyboard_shortcuts.js +1 -2
  332. package/test-env/components/datagrid/utils/in_memory.js +23 -17
  333. package/test-env/components/filter_group/filter_group.a11y.js +8 -2
  334. package/test-env/components/filter_group/filter_select_item.js +35 -16
  335. package/test-env/components/flyout/flyout_menu.js +1 -4
  336. package/test-env/components/form/checkbox/checkbox.js +6 -6
  337. package/test-env/components/form/checkbox/checkbox.styles.js +1 -22
  338. package/test-env/components/form/checkbox/checkbox_control.js +83 -0
  339. package/test-env/components/form/checkbox/checkbox_control.styles.js +44 -0
  340. package/test-env/components/form/checkbox/index.js +7 -0
  341. package/test-env/components/form/form.styles.js +2 -1
  342. package/test-env/components/form/radio/radio.styles.js +1 -1
  343. package/test-env/components/form/super_select/super_select.js +116 -97
  344. package/test-env/components/form/super_select/super_select.styles.js +4 -8
  345. package/test-env/components/form/super_select/super_select_item.js +13 -18
  346. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -2
  347. package/test-env/components/link/external_link_icon.js +4 -2
  348. package/test-env/components/list_group/list_group.js +21 -35
  349. package/test-env/components/list_group/list_group.styles.js +2 -16
  350. package/test-env/components/list_group/list_group_item.js +75 -87
  351. package/test-env/components/list_group/list_group_item.styles.js +17 -61
  352. package/test-env/components/list_group/list_group_item_extra_action.styles.js +5 -5
  353. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +16 -28
  354. package/test-env/components/list_item_layout/_list_item_layout.js +691 -0
  355. package/test-env/components/list_item_layout/_list_item_layout.styles.js +97 -0
  356. package/test-env/components/list_item_layout/index.js +12 -0
  357. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  358. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +6 -3
  359. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  360. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +14 -10
  361. package/test-env/components/portal/portal.js +70 -113
  362. package/test-env/components/search_bar/filters/field_value_selection_filter.js +2 -1
  363. package/test-env/components/search_bar/filters/field_value_toggle_group_filter.js +44 -88
  364. package/test-env/components/selectable/selectable.js +1 -0
  365. package/test-env/components/selectable/selectable_list/selectable_list.js +50 -34
  366. package/test-env/components/selectable/selectable_list/selectable_list.styles.js +20 -5
  367. package/test-env/components/selectable/selectable_list/selectable_list_item.js +42 -147
  368. package/test-env/components/selectable/selectable_list/utils/get_list_item_size.js +23 -0
  369. package/test-env/components/selectable/selectable_search/selectable_search.js +4 -1
  370. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  371. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.styles.js +2 -12
  372. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide_option.js +1 -1
  373. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide_popover.js +1 -1
  374. package/test-env/components/table/table_header_cell.js +1 -2
  375. package/test-env/components/tool_tip/icon_tip.js +4 -8
  376. package/test-env/components/tool_tip/tool_tip.js +230 -256
  377. package/test-env/components/tool_tip/tool_tip.styles.js +8 -16
  378. package/test-env/components/tool_tip/tool_tip_anchor.js +2 -2
  379. package/test-env/components/tool_tip/tool_tip_manager.js +1 -0
  380. package/test-env/components/tool_tip/tool_tip_popover.js +6 -6
  381. package/test-env/global_styling/mixins/_helpers.js +33 -12
  382. package/test-env/test/rtl/component_helpers.js +41 -63
  383. package/es/components/selectable/selectable_list/selectable_list_item.styles.js +0 -55
  384. package/lib/components/selectable/selectable_list/selectable_list_item.styles.js +0 -59
  385. package/optimize/es/components/selectable/selectable_list/selectable_list_item.styles.js +0 -55
  386. package/optimize/lib/components/selectable/selectable_list/selectable_list_item.styles.js +0 -59
  387. package/test-env/components/selectable/selectable_list/selectable_list_item.styles.js +0 -59
@@ -6,6 +6,7 @@
6
6
  * Side Public License, v 1.
7
7
  */
8
8
 
9
+ import { euiCanAnimate, euiCantAnimate } from '@elastic/eui-theme-common';
9
10
  import { useEuiTheme } from '../../services/theme';
10
11
  import { transparentize } from '../../services/color';
11
12
  import { logicalCSS, logicalCSSWithFallback } from '../functions';
@@ -47,11 +48,15 @@ export var useEuiScrollBar = function useEuiScrollBar(options) {
47
48
  * Overflow shadow masks for use in YScroll and XScroll helpers
48
49
  */
49
50
 
50
- var euiOverflowShadowStyles = function euiOverflowShadowStyles(_ref3) {
51
- var size = _ref3.euiTheme.size;
51
+ export var euiOverflowShadowStyles = function euiOverflowShadowStyles(_ref3) {
52
+ var _ref3$euiTheme = _ref3.euiTheme,
53
+ size = _ref3$euiTheme.size,
54
+ colors = _ref3$euiTheme.colors;
52
55
  var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
53
56
  _direction = _ref4.direction,
54
- _side = _ref4.side;
57
+ _side = _ref4.side,
58
+ _ref4$hasAnimatedOver = _ref4.hasAnimatedOverflowShadow,
59
+ hasAnimatedOverflowShadow = _ref4$hasAnimatedOver === void 0 ? false : _ref4$hasAnimatedOver;
55
60
  var direction = _direction || 'y';
56
61
  var side = _side || 'both';
57
62
  var hideHeight = size.s;
@@ -75,11 +80,20 @@ var euiOverflowShadowStyles = function euiOverflowShadowStyles(_ref3) {
75
80
  // - https://github.com/elastic/kibana/issues/180828
76
81
  // - https://github.com/elastic/eui/pull/6343#issuecomment-1302732021
77
82
  var chromiumMaskWorkaround = 'transform: translateZ(0);';
78
- if (direction === 'y') {
79
- return "mask-image: linear-gradient(to bottom, ".concat(gradient, "); ").concat(chromiumMaskWorkaround);
80
- } else {
81
- return "mask-image: linear-gradient(to right, ".concat(gradient, "); ").concat(chromiumMaskWorkaround);
83
+ var overflowShadowStatic = direction === 'y' ? "mask-image: linear-gradient(to bottom, ".concat(gradient, "); ").concat(chromiumMaskWorkaround) : "mask-image: linear-gradient(to right, ".concat(gradient, "); ").concat(chromiumMaskWorkaround);
84
+
85
+ // If supported, use the scroll timeline API to animate the gradient to show/hide it on the scroll edges.
86
+ // We only support vertical scrolling as horizontal scrolling has increased complexity on element dimensions.
87
+ if (hasAnimatedOverflowShadow && direction === 'y') {
88
+ var featureFlag = 'animation-timeline: scroll()';
89
+ var gradientStartColor = "var(--euiOverflowShadowColor, ".concat(colors.backgroundBasePlain, ")");
90
+ var gradientEndColor = 'transparent';
91
+ var gradientSize = size.base;
92
+ var gradientScrollRange = size.m;
93
+ var commonPseudoElementStyles = "\n content: '';\n display: block;\n position: sticky;\n z-index: 1;\n block-size: ".concat(gradientSize, ";\n pointer-events: none;\n ");
94
+ return "\n @supports not (".concat(featureFlag, ") {\n ").concat(overflowShadowStatic, "\n }\n\n ").concat(euiCantAnimate, " {\n ").concat(overflowShadowStatic, "\n }\n\n ").concat(euiCanAnimate, " {\n @supports (").concat(featureFlag, ") {\n @keyframes show { \n from { opacity: 0 } \n to { opacity: 1 }\n }\n @keyframes hide { \n from { opacity: 1 }\n to { opacity: 0 }\n }\n\n position: relative;\n\n /* Gradient on start edge */\n &::before {\n ").concat(commonPseudoElementStyles, "\n inset-block-start: 0;\n /* prevent pushing down the content */\n ").concat(logicalCSS('margin-bottom', "-".concat(gradientSize)), " \n /* uses CSS custom property to support customization depending on layout wrapper background color */\n background: linear-gradient(to bottom, ").concat(gradientStartColor, ", ").concat(gradientEndColor, ");\n \n opacity: 0;\n animation: show linear both;\n animation-timeline: scroll(y);\n animation-range: 0px ").concat(gradientScrollRange, ";\n }\n\n /* Gradient on end edge */\n &::after {\n ").concat(commonPseudoElementStyles, "\n inset-block-end: 0;\n /* prevent adding extra space */\n ").concat(logicalCSS('margin-top', "-".concat(gradientSize)), " \n background: linear-gradient(to top, ").concat(gradientStartColor, ", ").concat(gradientEndColor, ");\n\n \n /* NOTE: To ensure the bottom gradient is not visible when the container has no overflow,\n we need to use opacity: 0 as default. Using two animations with 'animation-fill-mode: forwards'\n ensures the show/hide animation works both with and without overflow. */\n /* scroll animation */\n opacity: 0;\n animation-name: show, hide;\n animation-timing-function: step-start, linear;\n animation-fill-mode: forwards;\n animation-timeline: scroll(y);\n animation-range: 0% 100%, calc(100% - ").concat(gradientScrollRange, ") 100%;\n }\n }\n }\n ");
82
95
  }
96
+ return overflowShadowStatic;
83
97
  };
84
98
 
85
99
  /**
@@ -105,20 +119,27 @@ export var euiYScrollWithShadows = function euiYScrollWithShadows(euiTheme) {
105
119
  var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
106
120
  height = _ref7.height,
107
121
  _ref7$side = _ref7.side,
108
- side = _ref7$side === void 0 ? 'both' : _ref7$side;
122
+ side = _ref7$side === void 0 ? 'both' : _ref7$side,
123
+ _ref7$hasAnimatedOver = _ref7.hasAnimatedOverflowShadow,
124
+ hasAnimatedOverflowShadow = _ref7$hasAnimatedOver === void 0 ? false : _ref7$hasAnimatedOver;
109
125
  return "\n ".concat(euiYScroll(euiTheme, {
110
126
  height: height
111
127
  }), "\n ").concat(euiOverflowShadowStyles(euiTheme, {
112
128
  direction: 'y',
113
- side: side
129
+ side: side,
130
+ hasAnimatedOverflowShadow: hasAnimatedOverflowShadow
114
131
  }), "\n");
115
132
  };
116
133
  export var useEuiYScrollWithShadows = function useEuiYScrollWithShadows() {
117
134
  var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
118
- height = _ref8.height;
135
+ height = _ref8.height,
136
+ side = _ref8.side,
137
+ hasAnimatedOverflowShadow = _ref8.hasAnimatedOverflowShadow;
119
138
  var euiTheme = useEuiTheme();
120
139
  return euiYScrollWithShadows(euiTheme, {
121
- height: height
140
+ height: height,
141
+ side: side,
142
+ hasAnimatedOverflowShadow: hasAnimatedOverflowShadow
122
143
  });
123
144
  };
124
145
  export var euiXScroll = function euiXScroll(euiTheme) {
@@ -6,9 +6,6 @@
6
6
  export declare const waitForEuiPopoverOpen: () => Promise<void>;
7
7
  export declare const waitForEuiPopoverClose: () => Promise<void>;
8
8
 
9
- export declare const waitForEuiToolTipVisible: () => Promise<void>;
10
- export declare const waitForEuiToolTipHidden: () => Promise<void>;
11
-
12
9
  export declare const showEuiComboBoxOptions: () => Promise<void>;
13
10
 
14
11
  export declare const waitForEuiContextMenuPanelTransition: () => Promise<void>;
@@ -63,81 +63,59 @@ export var waitForEuiPopoverClose = /*#__PURE__*/function () {
63
63
  }();
64
64
 
65
65
  /**
66
- * Ensure the EuiToolTip being tested is open and visible before continuing
66
+ * jsdom does not track keyboard vs. mouse input modality, so `:focus-visible`
67
+ * always returns false. Call this before `fireEvent.focus()` on an element that
68
+ * should be treated as keyboard-focused.
69
+ *
70
+ * Returns a cleanup function, call it after test assertions to restore the spy.
67
71
  */
68
- export var waitForEuiToolTipVisible = /*#__PURE__*/function () {
69
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
70
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
71
- while (1) switch (_context3.prev = _context3.next) {
72
- case 0:
73
- _context3.next = 2;
74
- return waitFor(function () {
75
- var tooltip = document.querySelector('.euiToolTipPopover');
76
- expect(tooltip).toBeVisible();
77
- }, {
78
- timeout: 3000
79
- } // Account for long delay on tooltips
80
- );
81
- case 2:
82
- return _context3.abrupt("return", _context3.sent);
83
- case 3:
84
- case "end":
85
- return _context3.stop();
86
- }
87
- }, _callee3);
88
- }));
89
- return function waitForEuiToolTipVisible() {
90
- return _ref3.apply(this, arguments);
72
+ export var simulateFocusVisible = function simulateFocusVisible(element) {
73
+ var originalMatches = Element.prototype.matches.bind(element);
74
+ var spy = jest.spyOn(element, 'matches').mockImplementation(function (selector) {
75
+ return selector === ':focus-visible' ? true : originalMatches(selector);
76
+ });
77
+ return function () {
78
+ return spy.mockRestore();
91
79
  };
92
- }();
93
- export var waitForEuiToolTipHidden = /*#__PURE__*/function () {
94
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
95
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
96
- while (1) switch (_context4.prev = _context4.next) {
97
- case 0:
98
- _context4.next = 2;
99
- return waitFor(function () {
100
- var tooltip = document.querySelector('.euiToolTipPopover');
101
- expect(tooltip).toBeNull();
102
- });
103
- case 2:
104
- return _context4.abrupt("return", _context4.sent);
105
- case 3:
106
- case "end":
107
- return _context4.stop();
108
- }
109
- }, _callee4);
110
- }));
111
- return function waitForEuiToolTipHidden() {
112
- return _ref4.apply(this, arguments);
113
- };
114
- }();
80
+ };
81
+
82
+ /**
83
+ * Prefer this over `fireEvent.focus()` in tooltip tests. Plain `fireEvent.focus`
84
+ * does not set `:focus-visible` in jsdom and will not trigger the tooltip.
85
+ *
86
+ * Returns a cleanup function to restore the mock after assertions.
87
+ */
88
+ export var focusEuiToolTipTrigger = function focusEuiToolTipTrigger(element) {
89
+ var cleanup = simulateFocusVisible(element);
90
+ fireEvent.focus(element);
91
+ return cleanup;
92
+ };
115
93
 
116
94
  /**
117
95
  * EuiComboBox
118
96
  */
119
97
 
120
98
  export var showEuiComboBoxOptions = /*#__PURE__*/function () {
121
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
122
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
123
- while (1) switch (_context5.prev = _context5.next) {
99
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
100
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
101
+ while (1) switch (_context3.prev = _context3.next) {
124
102
  case 0:
125
103
  fireEvent.click(screen.getByTestSubject('comboBoxToggleListButton'));
126
- _context5.next = 3;
104
+ _context3.next = 3;
127
105
  return waitForEuiPopoverOpen();
128
106
  case 3:
129
- _context5.next = 5;
107
+ _context3.next = 5;
130
108
  return waitFor(function () {
131
109
  expect(screen.getByRole('listbox')).toBeInTheDocument();
132
110
  });
133
111
  case 5:
134
112
  case "end":
135
- return _context5.stop();
113
+ return _context3.stop();
136
114
  }
137
- }, _callee5);
115
+ }, _callee3);
138
116
  }));
139
117
  return function showEuiComboBoxOptions() {
140
- return _ref5.apply(this, arguments);
118
+ return _ref3.apply(this, arguments);
141
119
  };
142
120
  }();
143
121
 
@@ -146,16 +124,16 @@ export var showEuiComboBoxOptions = /*#__PURE__*/function () {
146
124
  */
147
125
 
148
126
  export var waitForEuiContextMenuPanelTransition = /*#__PURE__*/function () {
149
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
127
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
150
128
  var getPanels;
151
- return _regeneratorRuntime.wrap(function _callee6$(_context6) {
152
- while (1) switch (_context6.prev = _context6.next) {
129
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
130
+ while (1) switch (_context4.prev = _context4.next) {
153
131
  case 0:
154
132
  // Used document instead of container or screen due to context menus living in portals
155
133
  getPanels = function getPanels() {
156
134
  return document.querySelectorAll('.euiContextMenuPanel');
157
135
  }; // 2 panels will appear for the transition animation
158
- _context6.next = 3;
136
+ _context4.next = 3;
159
137
  return waitFor(function () {
160
138
  expect(getPanels().length).toEqual(2);
161
139
  });
@@ -170,11 +148,11 @@ export var waitForEuiContextMenuPanelTransition = /*#__PURE__*/function () {
170
148
  expect(getPanels().length).toEqual(1);
171
149
  case 6:
172
150
  case "end":
173
- return _context6.stop();
151
+ return _context4.stop();
174
152
  }
175
- }, _callee6);
153
+ }, _callee4);
176
154
  }));
177
155
  return function waitForEuiContextMenuPanelTransition() {
178
- return _ref6.apply(this, arguments);
156
+ return _ref4.apply(this, arguments);
179
157
  };
180
158
  }();
@@ -89,7 +89,6 @@ var CollapsedItemActions = exports.CollapsedItemActions = function CollapsedItem
89
89
  },
90
90
  toolTipContent: toolTipContent,
91
91
  toolTipProps: {
92
- delay: 'long',
93
92
  // Avoid screen-readers announcing the same text twice
94
93
  disableScreenReaderOutput: typeof buttonContent === 'string' && buttonContent === toolTipContent
95
94
  }
@@ -113,8 +112,7 @@ var CollapsedItemActions = exports.CollapsedItemActions = function CollapsedItem
113
112
  "data-test-subj": "euiCollapsedItemActionsButton"
114
113
  });
115
114
  var withTooltip = !actionsDisabled && (0, _react2.jsx)(_tool_tip.EuiToolTip, {
116
- content: allActionsTooltip,
117
- delay: "long"
115
+ content: allActionsTooltip
118
116
  }, popoverButton);
119
117
  return (0, _react2.jsx)(_popover.EuiPopover, {
120
118
  className: className,
@@ -41,7 +41,6 @@ var DefaultItemAction = exports.DefaultItemAction = function DefaultItemAction(_
41
41
  var tooltipContent = (0, _action_types.callWithItemIfFunction)(item)(action.description);
42
42
  var tooltipProps = {
43
43
  content: tooltipContent,
44
- delay: 'long',
45
44
  // Avoid screen-readers announcing the same text twice
46
45
  disableScreenReaderOutput: typeof actionContent === 'string' && actionContent === tooltipContent
47
46
  };
@@ -65,7 +65,6 @@ var KibanaCollapsibleNavSolution = exports.KibanaCollapsibleNavSolution = functi
65
65
  var solutionSolutionSwitcherAriaLabel = (0, _i18n.useEuiI18n)('euiCollapsibleNavKibanaSolution.switcherAriaLabel', ' - click to switch to another solution');
66
66
  var solutionSolutionGroupLabel = (0, _i18n.useEuiI18n)('euiCollapsibleNavKibanaSolution.groupLabel', 'Navigate to solution');
67
67
  var closeSolutionPopover = (0, _react.useCallback)(function (event) {
68
- var _childItem$firstEleme;
69
68
  // Allow child items to stop the popover from being closed
70
69
  if (event.isPropagationStopped()) return;
71
70
  // Only listen for clicks on child items - currentTarget is the parent <ul>
@@ -74,7 +73,7 @@ var KibanaCollapsibleNavSolution = exports.KibanaCollapsibleNavSolution = functi
74
73
  // Only close the popover if the item is a clickable link or button
75
74
  var target = event.target;
76
75
  var childItem = target.closest('.euiListGroupItem');
77
- if (['A', 'BUTTON'].includes((childItem === null || childItem === void 0 || (_childItem$firstEleme = childItem.firstElementChild) === null || _childItem$firstEleme === void 0 ? void 0 : _childItem$firstEleme.tagName) || '')) {
76
+ if (['A', 'BUTTON'].includes((childItem === null || childItem === void 0 ? void 0 : childItem.tagName) || '')) {
78
77
  setIsSolutionSwitcherOpen(false);
79
78
  }
80
79
  }, []);
@@ -87,12 +86,10 @@ var KibanaCollapsibleNavSolution = exports.KibanaCollapsibleNavSolution = functi
87
86
  "data-test-subj": "kibanaSolutionSwitcherList",
88
87
  "aria-label": solutionSolutionGroupLabel,
89
88
  listItems: primaryItems,
90
- size: "s",
91
89
  bordered: true,
92
90
  onClick: closeSolutionPopover
93
91
  }), secondaryItems.length > 0 && (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_list_group.EuiListGroup, {
94
92
  listItems: secondaryItems,
95
- size: "s",
96
93
  css: styles.euiCollapsibleNavKibanaSolution__secondaryItems,
97
94
  onClick: closeSolutionPopover
98
95
  })));
@@ -96,7 +96,6 @@ var EuiColorPalettePicker = exports.EuiColorPalettePicker = function EuiColorPal
96
96
  options: paletteOptions,
97
97
  valueOfSelected: valueOfSelected,
98
98
  onChange: onChange,
99
- hasDividers: true,
100
99
  isInvalid: isInvalid,
101
100
  compressed: compressed,
102
101
  disabled: disabled,
@@ -88,7 +88,7 @@ describe('EuiComboBox', function () {
88
88
  rowHeight: rowHeight
89
89
  }));
90
90
  cy.get('input[data-test-subj="comboBoxSearchInput"]').realClick();
91
- cy.get('button[data-test-subj="titanOption"]').should('exist');
91
+ cy.get('[data-test-subj="titanOption"]').should('exist');
92
92
  cy.checkAxe();
93
93
  });
94
94
  it('has zero violations after keyboard interaction', function () {
@@ -97,7 +97,7 @@ describe('EuiComboBox', function () {
97
97
  }));
98
98
  cy.realPress('Tab');
99
99
  cy.get('input[data-test-subj="comboBoxSearchInput"]').should('have.focus');
100
- cy.get('button[data-test-subj="titanOption"]').should('exist');
100
+ cy.get('[data-test-subj="titanOption"]').should('exist');
101
101
  cy.repeatRealPress('ArrowDown');
102
102
  cy.realPress('Enter');
103
103
  cy.repeatRealPress('ArrowDown');
@@ -123,14 +123,14 @@ describe('EuiComboBox', function () {
123
123
  }));
124
124
  cy.realPress('Tab');
125
125
  cy.get('input[data-test-subj="comboBoxSearchInput"]').should('have.focus');
126
- cy.get('button[data-test-subj="titanOption"]').should('exist');
126
+ cy.get('[data-test-subj="titanOption"]').should('exist');
127
127
  cy.realPress('ArrowDown');
128
128
  cy.realPress('ArrowDown');
129
129
  cy.realPress('ArrowDown');
130
130
  cy.get('input[data-test-subj="comboBoxSearchInput"]').invoke('attr', 'aria-activedescendant').should('include', 'option-2');
131
131
  cy.realPress('Enter');
132
132
  cy.realPress('ArrowDown');
133
- cy.get('input[data-test-subj="comboBoxSearchInput"]').invoke('attr', 'aria-activedescendant').should('include', 'option-3');
133
+ cy.get('input[data-test-subj="comboBoxSearchInput"]').invoke('attr', 'aria-activedescendant').should('include', 'option-4');
134
134
  });
135
135
  it('sets the correct aria-activedescendant id with custom option ids', function () {
136
136
  cy.realMount((0, _react2.jsx)(ComboBox, {
@@ -160,7 +160,7 @@ describe('EuiComboBox', function () {
160
160
  cy.get('input[data-test-subj="comboBoxSearchInput"]').should('exist');
161
161
  cy.realPress('Tab');
162
162
  cy.get('input[data-test-subj="comboBoxSearchInput"]').should('have.focus');
163
- cy.get('button[data-test-subj="titanOption"]').should('exist');
163
+ cy.get('[data-test-subj="titanOption"]').should('exist');
164
164
  cy.realPress('ArrowDown');
165
165
  cy.realPress('ArrowDown');
166
166
  cy.realPress('ArrowDown');
@@ -27,7 +27,7 @@ var _combo_box_input = require("./combo_box_input/combo_box_input");
27
27
  var _combo_box_options_list = require("./combo_box_options_list");
28
28
  var _combo_box = require("./combo_box.styles");
29
29
  var _react2 = require("@emotion/react");
30
- var _excluded = ["data-test-subj", "async", "className", "compressed", "customOptionText", "fullWidth", "id", "inputRef", "isCaseSensitive", "isClearable", "isDisabled", "isInvalid", "isLoading", "noSuggestions", "onBlur", "onChange", "onCreateOption", "onSearchChange", "options", "placeholder", "renderOption", "rowHeight", "selectedOptions", "singleSelection", "prepend", "sortMatchesBy", "delimiter", "append", "autoFocus", "truncationProps", "inputPopoverProps", "optionMatcher", "aria-label", "aria-labelledby", "aria-describedby"];
30
+ var _excluded = ["data-test-subj", "async", "className", "compressed", "customOptionText", "fullWidth", "id", "inputRef", "isCaseSensitive", "isClearable", "isDisabled", "isInvalid", "isLoading", "noSuggestions", "onBlur", "onChange", "onCreateOption", "onSearchChange", "options", "placeholder", "renderOption", "rowHeight", "selectedOptions", "singleSelection", "prepend", "sortMatchesBy", "delimiter", "append", "autoFocus", "onFocusBadge", "truncationProps", "inputPopoverProps", "optionMatcher", "aria-label", "aria-labelledby", "aria-describedby"];
31
31
  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); }
32
32
  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; }
33
33
  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; }
@@ -93,6 +93,9 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
93
93
  _this.listRefInstance = ref;
94
94
  });
95
95
  (0, _defineProperty2.default)(_this, "setListOptionRefs", function (node, index) {
96
+ var current = _this.state.listOptionRefs[index];
97
+ // Skip updating if the ref is null (on cleanup) or didn't change
98
+ if (node === null || node === current) return;
96
99
  _this.setState(function (_ref) {
97
100
  var listOptionRefs = _ref.listOptionRefs;
98
101
  var _listOptionRefs = listOptionRefs;
@@ -113,41 +116,32 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
113
116
  isListOpen: false
114
117
  });
115
118
  });
116
- (0, _defineProperty2.default)(_this, "incrementActiveOptionIndex", function (amount) {
117
- // If there are no options available, do nothing.
118
- if (!_this.state.matchingOptions.length) {
119
- return;
119
+ (0, _defineProperty2.default)(_this, "findNextSelectableOptionIndex", function (options, startIndex) {
120
+ var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
121
+ if (!options.length) return -1;
122
+ var index = startIndex;
123
+ for (var count = 0; count < options.length; count++) {
124
+ var option = options[index];
125
+ if (!option.isGroupLabelOption && !option.disabled) {
126
+ return index;
127
+ }
128
+ index = (index + direction + options.length) % options.length;
120
129
  }
130
+ return -1; // the remaining options can't be selected (group labels or disabled)
131
+ });
132
+ (0, _defineProperty2.default)(_this, "incrementActiveOptionIndex", function (amount) {
133
+ if (!_this.state.matchingOptions.length) return;
121
134
  _this.setState(function (_ref2) {
122
135
  var activeOptionIndex = _ref2.activeOptionIndex,
123
136
  matchingOptions = _ref2.matchingOptions;
124
- var nextActiveOptionIndex;
125
- if (activeOptionIndex < 0) {
126
- // If this is the beginning of the user's keyboard navigation of the menu, then we'll focus
127
- // either the first or last item.
128
- nextActiveOptionIndex = amount < 0 ? matchingOptions.length - 1 : 0;
129
- } else {
130
- nextActiveOptionIndex = activeOptionIndex + amount;
131
- if (nextActiveOptionIndex < 0) {
132
- nextActiveOptionIndex = matchingOptions.length - 1;
133
- } else if (nextActiveOptionIndex === matchingOptions.length) {
134
- nextActiveOptionIndex = 0;
135
- }
136
- }
137
-
138
- // Group titles are included in option list but are not selectable
139
- // Skip group title options
140
137
  var direction = amount > 0 ? 1 : -1;
141
- while (matchingOptions[nextActiveOptionIndex].isGroupLabelOption) {
142
- nextActiveOptionIndex = nextActiveOptionIndex + direction;
143
- if (nextActiveOptionIndex < 0) {
144
- nextActiveOptionIndex = matchingOptions.length - 1;
145
- } else if (nextActiveOptionIndex === matchingOptions.length) {
146
- nextActiveOptionIndex = 0;
147
- }
148
- }
138
+ var startIndex = activeOptionIndex < 0 ?
139
+ // Inintial interaction: jump to first or last item
140
+ amount < 0 ? matchingOptions.length - 1 : 0 :
141
+ // Advance by amount, wrapping around
142
+ (activeOptionIndex + amount + matchingOptions.length) % matchingOptions.length;
149
143
  return {
150
- activeOptionIndex: nextActiveOptionIndex
144
+ activeOptionIndex: _this.findNextSelectableOptionIndex(matchingOptions, startIndex, direction)
151
145
  };
152
146
  });
153
147
  });
@@ -365,27 +359,36 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
365
359
  onChange = _this$props7.onChange,
366
360
  selectedOptions = _this$props7.selectedOptions,
367
361
  singleSelectionProp = _this$props7.singleSelection;
362
+ var _this$state2 = _this.state,
363
+ matchingOptions = _this$state2.matchingOptions,
364
+ listOptionRefs = _this$state2.listOptionRefs;
368
365
  var singleSelection = Boolean(singleSelectionProp);
369
366
  var changeOptions = singleSelection ? [addedOption] : selectedOptions.concat(addedOption);
370
367
  onChange === null || onChange === void 0 || onChange(changeOptions);
371
368
  _this.clearSearchValue();
372
- _this.clearActiveOption();
373
- if (!isContainerBlur) {
374
- var _this$searchInputRefI2;
375
- (_this$searchInputRefI2 = _this.searchInputRefInstance) === null || _this$searchInputRefI2 === void 0 || _this$searchInputRefI2.focus();
376
- }
377
369
  if (singleSelection) {
370
+ // List closes after single selection; return focus to the input
371
+ _this.clearActiveOption();
372
+ if (!isContainerBlur) {
373
+ var _this$searchInputRefI2;
374
+ (_this$searchInputRefI2 = _this.searchInputRefInstance) === null || _this$searchInputRefI2 === void 0 || _this$searchInputRefI2.focus();
375
+ }
378
376
  requestAnimationFrame(function () {
379
377
  return _this.closeList();
380
378
  });
379
+ } else if (isContainerBlur) {
380
+ // User tabbed away. `onContainerBlur` will close the list. We're only cleaning up state
381
+ _this.clearActiveOption();
381
382
  } else {
382
- _this.setState(function (_ref4) {
383
- var listOptionRefs = _ref4.listOptionRefs,
384
- matchingOptions = _ref4.matchingOptions;
385
- return {
386
- listOptionRefs: listOptionRefs.slice(0, matchingOptions.length - 1),
387
- activeOptionIndex: matchingOptions.indexOf(addedOption)
388
- };
383
+ var currentIndex = matchingOptions.indexOf(addedOption);
384
+ var nextOptions = matchingOptions.filter(function (option) {
385
+ return option !== addedOption;
386
+ });
387
+ _this.setState({
388
+ listOptionRefs: listOptionRefs.slice(0, matchingOptions.length - 1),
389
+ activeOptionIndex: _this.findNextSelectableOptionIndex(nextOptions, Math.min(currentIndex, nextOptions.length - 1)
390
+ // direction defaults to 1 (forward)
391
+ )
389
392
  });
390
393
  }
391
394
  });
@@ -493,6 +496,7 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
493
496
  delimiter = _this$props11.delimiter,
494
497
  append = _this$props11.append,
495
498
  autoFocus = _this$props11.autoFocus,
499
+ onFocusBadge = _this$props11.onFocusBadge,
496
500
  truncationProps = _this$props11.truncationProps,
497
501
  inputPopoverProps = _this$props11.inputPopoverProps,
498
502
  optionMatcher = _this$props11.optionMatcher,
@@ -500,12 +504,12 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
500
504
  ariaLabelledby = _this$props11['aria-labelledby'],
501
505
  ariaDescribedby = _this$props11['aria-describedby'],
502
506
  rest = (0, _objectWithoutProperties2.default)(_this$props11, _excluded);
503
- var _this$state2 = this.state,
504
- activeOptionIndex = _this$state2.activeOptionIndex,
505
- hasFocus = _this$state2.hasFocus,
506
- isListOpen = _this$state2.isListOpen,
507
- searchValue = _this$state2.searchValue,
508
- matchingOptions = _this$state2.matchingOptions;
507
+ var _this$state3 = this.state,
508
+ activeOptionIndex = _this$state3.activeOptionIndex,
509
+ hasFocus = _this$state3.hasFocus,
510
+ isListOpen = _this$state3.isListOpen,
511
+ searchValue = _this$state3.searchValue,
512
+ matchingOptions = _this$state3.matchingOptions;
509
513
 
510
514
  // Make sure we have a valid ID if users don't pass one as a prop
511
515
  var inputId = id !== null && id !== void 0 ? id : this.rootId('_eui-combobox-id');
@@ -556,7 +560,8 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
556
560
  delimiter: delimiter,
557
561
  getSelectedOptionForSearchValue: _matching_options.getSelectedOptionForSearchValue,
558
562
  listboxAriaLabel: listboxAriaLabel,
559
- truncationProps: truncationProps
563
+ truncationProps: truncationProps,
564
+ onFocusBadge: onFocusBadge
560
565
  });
561
566
  });
562
567
  }
@@ -581,11 +586,11 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
581
586
  ref: _this2.comboBoxRefCallback
582
587
  }), (0, _react2.jsx)(_popover.EuiInputPopover, (0, _extends2.default)({
583
588
  fullWidth: fullWidth,
584
- panelPaddingSize: "none",
589
+ panelPaddingSize: "s",
585
590
  disableFocusTrap: true,
586
591
  closeOnScroll: true
587
592
  }, inputPopoverProps, {
588
- isOpen: isListOpen,
593
+ isOpen: isListOpen && !noSuggestions,
589
594
  closePopover: _this2.closeList
590
595
  /* we don't want content changes to be announced via aria-live
591
596
  because ComboBox uses a virtualized list that updates itself
@@ -593,7 +598,10 @@ var EuiComboBox = exports.EuiComboBox = /*#__PURE__*/function (_Component) {
593
598
  "aria-live": "off",
594
599
  input: (0, _react2.jsx)(_combo_box_input.EuiComboBoxInput, {
595
600
  compressed: compressed,
596
- focusedOptionId: _this2.hasActiveOption() ? (_this2$state$listOpti = (_this2$state$listOpti2 = _this2.state.listOptionRefs[_this2.state.activeOptionIndex]) === null || _this2$state$listOpti2 === void 0 ? void 0 : _this2$state$listOpti2.id) !== null && _this2$state$listOpti !== void 0 ? _this2$state$listOpti : _this2.rootId("_option-".concat(_this2.state.activeOptionIndex)) : undefined,
601
+ focusedOptionId: _this2.hasActiveOption() ? (_this2$state$listOpti = (_this2$state$listOpti2 = _this2.state.listOptionRefs[_this2.state.activeOptionIndex]) === null || _this2$state$listOpti2 === void 0 ? void 0 : _this2$state$listOpti2.id) !== null && _this2$state$listOpti !== void 0 ? _this2$state$listOpti :
602
+ // uses the original `options` array to ensure a stable `id`, otherwise `aria-activedescendant`
603
+ // loses focus on selecting an option (due to actively removing it from the list)
604
+ _this2.rootId("_option-".concat(_this2.props.options.indexOf(matchingOptions[activeOptionIndex]))) : undefined,
597
605
  fullWidth: fullWidth,
598
606
  hasSelectedOptions: selectedOptions.length > 0,
599
607
  id: inputId,