@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
@@ -1,4 +1,4 @@
1
- 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"];
1
+ 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"];
2
2
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
3
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
4
4
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
@@ -101,6 +101,9 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
101
101
  _this.listRefInstance = ref;
102
102
  });
103
103
  _defineProperty(_this, "setListOptionRefs", function (node, index) {
104
+ var current = _this.state.listOptionRefs[index];
105
+ // Skip updating if the ref is null (on cleanup) or didn't change
106
+ if (node === null || node === current) return;
104
107
  _this.setState(function (_ref) {
105
108
  var listOptionRefs = _ref.listOptionRefs;
106
109
  var _listOptionRefs = listOptionRefs;
@@ -121,41 +124,32 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
121
124
  isListOpen: false
122
125
  });
123
126
  });
124
- _defineProperty(_this, "incrementActiveOptionIndex", function (amount) {
125
- // If there are no options available, do nothing.
126
- if (!_this.state.matchingOptions.length) {
127
- return;
127
+ _defineProperty(_this, "findNextSelectableOptionIndex", function (options, startIndex) {
128
+ var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
129
+ if (!options.length) return -1;
130
+ var index = startIndex;
131
+ for (var count = 0; count < options.length; count++) {
132
+ var option = options[index];
133
+ if (!option.isGroupLabelOption && !option.disabled) {
134
+ return index;
135
+ }
136
+ index = (index + direction + options.length) % options.length;
128
137
  }
138
+ return -1; // the remaining options can't be selected (group labels or disabled)
139
+ });
140
+ _defineProperty(_this, "incrementActiveOptionIndex", function (amount) {
141
+ if (!_this.state.matchingOptions.length) return;
129
142
  _this.setState(function (_ref2) {
130
143
  var activeOptionIndex = _ref2.activeOptionIndex,
131
144
  matchingOptions = _ref2.matchingOptions;
132
- var nextActiveOptionIndex;
133
- if (activeOptionIndex < 0) {
134
- // If this is the beginning of the user's keyboard navigation of the menu, then we'll focus
135
- // either the first or last item.
136
- nextActiveOptionIndex = amount < 0 ? matchingOptions.length - 1 : 0;
137
- } else {
138
- nextActiveOptionIndex = activeOptionIndex + amount;
139
- if (nextActiveOptionIndex < 0) {
140
- nextActiveOptionIndex = matchingOptions.length - 1;
141
- } else if (nextActiveOptionIndex === matchingOptions.length) {
142
- nextActiveOptionIndex = 0;
143
- }
144
- }
145
-
146
- // Group titles are included in option list but are not selectable
147
- // Skip group title options
148
145
  var direction = amount > 0 ? 1 : -1;
149
- while (matchingOptions[nextActiveOptionIndex].isGroupLabelOption) {
150
- nextActiveOptionIndex = nextActiveOptionIndex + direction;
151
- if (nextActiveOptionIndex < 0) {
152
- nextActiveOptionIndex = matchingOptions.length - 1;
153
- } else if (nextActiveOptionIndex === matchingOptions.length) {
154
- nextActiveOptionIndex = 0;
155
- }
156
- }
146
+ var startIndex = activeOptionIndex < 0 ?
147
+ // Inintial interaction: jump to first or last item
148
+ amount < 0 ? matchingOptions.length - 1 : 0 :
149
+ // Advance by amount, wrapping around
150
+ (activeOptionIndex + amount + matchingOptions.length) % matchingOptions.length;
157
151
  return {
158
- activeOptionIndex: nextActiveOptionIndex
152
+ activeOptionIndex: _this.findNextSelectableOptionIndex(matchingOptions, startIndex, direction)
159
153
  };
160
154
  });
161
155
  });
@@ -373,27 +367,36 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
373
367
  onChange = _this$props7.onChange,
374
368
  selectedOptions = _this$props7.selectedOptions,
375
369
  singleSelectionProp = _this$props7.singleSelection;
370
+ var _this$state2 = _this.state,
371
+ matchingOptions = _this$state2.matchingOptions,
372
+ listOptionRefs = _this$state2.listOptionRefs;
376
373
  var singleSelection = Boolean(singleSelectionProp);
377
374
  var changeOptions = singleSelection ? [addedOption] : selectedOptions.concat(addedOption);
378
375
  onChange === null || onChange === void 0 || onChange(changeOptions);
379
376
  _this.clearSearchValue();
380
- _this.clearActiveOption();
381
- if (!isContainerBlur) {
382
- var _this$searchInputRefI2;
383
- (_this$searchInputRefI2 = _this.searchInputRefInstance) === null || _this$searchInputRefI2 === void 0 || _this$searchInputRefI2.focus();
384
- }
385
377
  if (singleSelection) {
378
+ // List closes after single selection; return focus to the input
379
+ _this.clearActiveOption();
380
+ if (!isContainerBlur) {
381
+ var _this$searchInputRefI2;
382
+ (_this$searchInputRefI2 = _this.searchInputRefInstance) === null || _this$searchInputRefI2 === void 0 || _this$searchInputRefI2.focus();
383
+ }
386
384
  requestAnimationFrame(function () {
387
385
  return _this.closeList();
388
386
  });
387
+ } else if (isContainerBlur) {
388
+ // User tabbed away. `onContainerBlur` will close the list. We're only cleaning up state
389
+ _this.clearActiveOption();
389
390
  } else {
390
- _this.setState(function (_ref4) {
391
- var listOptionRefs = _ref4.listOptionRefs,
392
- matchingOptions = _ref4.matchingOptions;
393
- return {
394
- listOptionRefs: listOptionRefs.slice(0, matchingOptions.length - 1),
395
- activeOptionIndex: matchingOptions.indexOf(addedOption)
396
- };
391
+ var currentIndex = matchingOptions.indexOf(addedOption);
392
+ var nextOptions = matchingOptions.filter(function (option) {
393
+ return option !== addedOption;
394
+ });
395
+ _this.setState({
396
+ listOptionRefs: listOptionRefs.slice(0, matchingOptions.length - 1),
397
+ activeOptionIndex: _this.findNextSelectableOptionIndex(nextOptions, Math.min(currentIndex, nextOptions.length - 1)
398
+ // direction defaults to 1 (forward)
399
+ )
397
400
  });
398
401
  }
399
402
  });
@@ -501,6 +504,7 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
501
504
  delimiter = _this$props11.delimiter,
502
505
  append = _this$props11.append,
503
506
  autoFocus = _this$props11.autoFocus,
507
+ onFocusBadge = _this$props11.onFocusBadge,
504
508
  truncationProps = _this$props11.truncationProps,
505
509
  inputPopoverProps = _this$props11.inputPopoverProps,
506
510
  optionMatcher = _this$props11.optionMatcher,
@@ -508,12 +512,12 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
508
512
  ariaLabelledby = _this$props11['aria-labelledby'],
509
513
  ariaDescribedby = _this$props11['aria-describedby'],
510
514
  rest = _objectWithoutProperties(_this$props11, _excluded);
511
- var _this$state2 = this.state,
512
- activeOptionIndex = _this$state2.activeOptionIndex,
513
- hasFocus = _this$state2.hasFocus,
514
- isListOpen = _this$state2.isListOpen,
515
- searchValue = _this$state2.searchValue,
516
- matchingOptions = _this$state2.matchingOptions;
515
+ var _this$state3 = this.state,
516
+ activeOptionIndex = _this$state3.activeOptionIndex,
517
+ hasFocus = _this$state3.hasFocus,
518
+ isListOpen = _this$state3.isListOpen,
519
+ searchValue = _this$state3.searchValue,
520
+ matchingOptions = _this$state3.matchingOptions;
517
521
 
518
522
  // Make sure we have a valid ID if users don't pass one as a prop
519
523
  var inputId = id !== null && id !== void 0 ? id : this.rootId('_eui-combobox-id');
@@ -564,7 +568,8 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
564
568
  delimiter: delimiter,
565
569
  getSelectedOptionForSearchValue: getSelectedOptionForSearchValue,
566
570
  listboxAriaLabel: listboxAriaLabel,
567
- truncationProps: truncationProps
571
+ truncationProps: truncationProps,
572
+ onFocusBadge: onFocusBadge
568
573
  });
569
574
  });
570
575
  }
@@ -589,11 +594,11 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
589
594
  ref: _this2.comboBoxRefCallback
590
595
  }), ___EmotionJSX(EuiInputPopover, _extends({
591
596
  fullWidth: fullWidth,
592
- panelPaddingSize: "none",
597
+ panelPaddingSize: "s",
593
598
  disableFocusTrap: true,
594
599
  closeOnScroll: true
595
600
  }, inputPopoverProps, {
596
- isOpen: isListOpen,
601
+ isOpen: isListOpen && !noSuggestions,
597
602
  closePopover: _this2.closeList
598
603
  /* we don't want content changes to be announced via aria-live
599
604
  because ComboBox uses a virtualized list that updates itself
@@ -601,7 +606,10 @@ export var EuiComboBox = /*#__PURE__*/function (_Component) {
601
606
  "aria-live": "off",
602
607
  input: ___EmotionJSX(EuiComboBoxInput, {
603
608
  compressed: compressed,
604
- 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,
609
+ 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 :
610
+ // uses the original `options` array to ensure a stable `id`, otherwise `aria-activedescendant`
611
+ // loses focus on selecting an option (due to actively removing it from the list)
612
+ _this2.rootId("_option-".concat(_this2.props.options.indexOf(matchingOptions[activeOptionIndex]))) : undefined,
605
613
  fullWidth: fullWidth,
606
614
  hasSelectedOptions: selectedOptions.length > 0,
607
615
  id: inputId,
@@ -791,7 +799,7 @@ EuiComboBox.propTypes = {
791
799
  "aria-labelledby": PropTypes.string,
792
800
  /**
793
801
  * By default, EuiComboBox will truncate option labels at the end of
794
- * the string. You can use pass in a custom truncation configuration that
802
+ * the string. You can pass in a custom truncation configuration that
795
803
  * accepts any [EuiTextTruncate](/#/utilities/text-truncation) prop,
796
804
  * except for `text` and `children`.
797
805
  *
@@ -1,6 +1,6 @@
1
1
  var _excluded = ["children"],
2
- _excluded2 = ["key", "isGroupLabelOption", "label", "value", "prepend", "append", "truncationProps"],
3
- _excluded3 = ["data-test-subj", "activeOptionIndex", "areAllOptionsSelected", "customOptionText", "fullWidth", "getSelectedOptionForSearchValue", "isCaseSensitive", "isLoading", "listRef", "matchingOptions", "onCloseList", "onCreateOption", "onOptionClick", "onOptionEnterKey", "onScroll", "options", "renderOption", "rootId", "rowHeight", "scrollToIndex", "searchValue", "selectedOptions", "singleSelection", "delimiter", "truncationProps", "listboxAriaLabel", "setListOptionRefs"];
2
+ _excluded2 = ["key", "className", "isGroupLabelOption", "label", "value", "prepend", "append", "truncationProps", "toolTipContent", "toolTipProps"],
3
+ _excluded3 = ["data-test-subj", "activeOptionIndex", "areAllOptionsSelected", "customOptionText", "fullWidth", "getSelectedOptionForSearchValue", "isCaseSensitive", "isLoading", "listRef", "matchingOptions", "onCloseList", "onCreateOption", "onOptionClick", "onOptionEnterKey", "onScroll", "options", "renderOption", "rootId", "rowHeight", "scrollToIndex", "searchValue", "selectedOptions", "singleSelection", "delimiter", "onFocusBadge", "truncationProps", "listboxAriaLabel", "setListOptionRefs"];
4
4
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
5
5
  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; }
6
6
  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; }
@@ -28,10 +28,10 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
28
28
  * Side Public License, v 1.
29
29
  */
30
30
 
31
- import React, { Component } from 'react';
31
+ import React, { Component, createRef } from 'react';
32
32
  import PropTypes from "prop-types";
33
33
  import classNames from 'classnames';
34
- import { FixedSizeList } from 'react-window';
34
+ import { VariableSizeList } from 'react-window';
35
35
  import { RenderWithEuiStylesMemoizer } from '../../../services';
36
36
  import { EuiFlexGroup, EuiFlexItem } from '../../flex';
37
37
  import { EuiHighlight } from '../../highlight';
@@ -39,12 +39,12 @@ import { EuiMark } from '../../mark';
39
39
  import { EuiText } from '../../text';
40
40
  import { EuiLoadingSpinner } from '../../loading';
41
41
  import { EuiI18n } from '../../i18n';
42
- import { EuiFilterSelectItem } from '../../filter_group/filter_select_item';
42
+ import { euiSelectableListGroupLabelStyles } from '../../selectable/selectable_list/selectable_list.styles';
43
+ import { getListItemSize } from '../../selectable/selectable_list/utils/get_list_item_size';
43
44
  import { EuiBadge } from '../../badge';
44
45
  import { EuiTextTruncate } from '../../text_truncate';
45
46
  import { EuiInputPopoverWidthContext } from '../../popover/input_popover';
46
- import { EuiComboBoxOptionAppendPrepend } from '../utils';
47
- import { EuiComboBoxTitle } from './combo_box_title';
47
+ import { EuiListItemLayout } from '../../list_item_layout';
48
48
  import { euiComboBoxOptionListStyles, LIST_MAX_HEIGHT } from './combo_box_options_list.styles';
49
49
  import { jsx as ___EmotionJSX } from "@emotion/react";
50
50
  var hitEnterBadge = ___EmotionJSX(EuiBadge, {
@@ -62,13 +62,20 @@ export var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
62
62
  }
63
63
  _this = _callSuper(this, EuiComboBoxOptionsList, [].concat(args));
64
64
  _defineProperty(_this, "listRef", null);
65
+ _defineProperty(_this, "listBoxRef", /*#__PURE__*/createRef());
66
+ _defineProperty(_this, "optionRefs", {});
65
67
  _defineProperty(_this, "setListRef", function (ref) {
66
68
  _this.listRef = ref;
67
69
  });
70
+ _defineProperty(_this, "setOptionRef", function (ref, index) {
71
+ var _this$props$setListOp, _this$props;
72
+ _this.optionRefs[index] = ref;
73
+ (_this$props$setListOp = (_this$props = _this.props).setListOptionRefs) === null || _this$props$setListOp === void 0 || _this$props$setListOp.call(_this$props, ref, index);
74
+ });
68
75
  _defineProperty(_this, "ListInnerElement", function (_ref) {
69
76
  var children = _ref.children,
70
77
  rest = _objectWithoutProperties(_ref, _excluded);
71
- return ___EmotionJSX("div", _extends({}, rest, _this.getListInnerElementProps()), children);
78
+ return ___EmotionJSX("ul", _extends({}, rest, _this.getListInnerElementProps()), children);
72
79
  });
73
80
  _defineProperty(_this, "ListRow", function (_ref2) {
74
81
  var _option$key;
@@ -77,33 +84,43 @@ export var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
77
84
  style = _ref2.style;
78
85
  var option = data[index];
79
86
  var key = option.key,
87
+ className = option.className,
80
88
  isGroupLabelOption = option.isGroupLabelOption,
81
89
  label = option.label,
82
90
  value = option.value,
83
91
  prepend = option.prepend,
84
92
  append = option.append,
85
93
  _truncationProps = option.truncationProps,
94
+ toolTipContent = option.toolTipContent,
95
+ toolTipProps = option.toolTipProps,
86
96
  rest = _objectWithoutProperties(option, _excluded2);
87
- var _this$props = _this.props,
88
- singleSelection = _this$props.singleSelection,
89
- selectedOptions = _this$props.selectedOptions,
90
- onOptionClick = _this$props.onOptionClick,
91
- activeOptionIndex = _this$props.activeOptionIndex,
92
- renderOption = _this$props.renderOption,
93
- searchValue = _this$props.searchValue,
94
- rootId = _this$props.rootId,
95
- matchingOptions = _this$props.matchingOptions,
96
- setListOptionRefs = _this$props.setListOptionRefs,
97
- rowHeight = _this$props.rowHeight;
97
+ var _this$props2 = _this.props,
98
+ options = _this$props2.options,
99
+ singleSelection = _this$props2.singleSelection,
100
+ selectedOptions = _this$props2.selectedOptions,
101
+ onOptionClick = _this$props2.onOptionClick,
102
+ activeOptionIndex = _this$props2.activeOptionIndex,
103
+ renderOption = _this$props2.renderOption,
104
+ searchValue = _this$props2.searchValue,
105
+ rootId = _this$props2.rootId,
106
+ matchingOptions = _this$props2.matchingOptions,
107
+ onFocusBadge = _this$props2.onFocusBadge,
108
+ rowHeight = _this$props2.rowHeight;
98
109
  var optionIndex = matchingOptions.indexOf(option);
99
110
  var hasTruncationProps = _this.props.truncationProps || _truncationProps;
100
111
  var truncationProps = hasTruncationProps ? // Individual truncation settings should override component prop
101
112
  _objectSpread(_objectSpread({}, _this.props.truncationProps), _truncationProps) : undefined;
102
113
  if (isGroupLabelOption) {
103
- return ___EmotionJSX("div", {
104
- key: key !== null && key !== void 0 ? key : label,
105
- style: style
106
- }, ___EmotionJSX(EuiComboBoxTitle, null, prepend, label, append));
114
+ return ___EmotionJSX(RenderWithEuiStylesMemoizer, null, function (stylesMemoizer) {
115
+ var styles = stylesMemoizer(euiSelectableListGroupLabelStyles);
116
+ return ___EmotionJSX("li", {
117
+ key: key !== null && key !== void 0 ? key : label,
118
+ style: style,
119
+ role: "presentation",
120
+ className: "euiComboBoxTitle",
121
+ css: styles.groupLabel
122
+ }, prepend, label, append);
123
+ });
107
124
  }
108
125
  var checked = undefined;
109
126
  if (singleSelection && selectedOptions.length && selectedOptions[0].label === label && selectedOptions[0].key === key) {
@@ -111,40 +128,54 @@ export var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
111
128
  }
112
129
  var optionIsFocused = activeOptionIndex === index;
113
130
  var optionIsDisabled = option.hasOwnProperty('disabled') && option.disabled === true;
114
- return ___EmotionJSX(EuiFilterSelectItem, _extends({
115
- style: style,
131
+ var hasOnFocusBadge = onFocusBadge && optionIsFocused && !optionIsDisabled;
132
+ return ___EmotionJSX(EuiListItemLayout, _extends({
133
+ element: "li",
134
+ role: "option"
135
+ // uses `aria-selected` over `aria-checked` for multi-selection as the selected options are removed from the list
136
+ ,
137
+ selectionMode: "selected",
138
+ className: classNames('euiComboBoxOption', className),
139
+ ref: function ref(node) {
140
+ return _this.setOptionRef(node, index);
141
+ }
142
+ // uses the original `options` array for the index to ensure a stable `id`, otherwise `aria-activedescendant`
143
+ // loses focus on selecting an option (due to actively removing it from the list)
144
+ ,
145
+ id: rootId("_option-".concat(options.indexOf(option))),
116
146
  key: (_option$key = option.key) !== null && _option$key !== void 0 ? _option$key : option.label,
147
+ title: label,
148
+ prepend: option.prepend,
149
+ append: hasOnFocusBadge ? ___EmotionJSX(React.Fragment, null, option.append, hitEnterBadge) : option.append,
150
+ checked: checked,
151
+ isFocused: optionIsFocused,
152
+ isSelected: !optionIsDisabled && checked !== undefined,
153
+ isDisabled: optionIsDisabled,
154
+ isSingleSelection: !!singleSelection,
155
+ showIndicator: !!singleSelection,
156
+ textWrap: rowHeight !== 'auto' ? 'truncate' : 'wrap',
157
+ tooltipProps: toolTipContent && !optionIsDisabled ? _objectSpread(_objectSpread({}, toolTipProps), {}, {
158
+ content: toolTipContent
159
+ }) : undefined,
160
+ style: style,
161
+ "aria-setsize": matchingOptions.length,
162
+ "aria-posinset": optionIndex + 1,
163
+ contentProps: {
164
+ className: 'euiComboBoxOption__content'
165
+ },
117
166
  onClick: function onClick() {
118
167
  if (onOptionClick) {
119
168
  onOptionClick(option);
120
169
  }
121
- },
122
- isFocused: optionIsFocused,
123
- checked: checked,
124
- showIcons: singleSelection ? true : false,
125
- truncateContent: rowHeight !== 'auto',
126
- id: rootId("_option-".concat(index)),
127
- title: label,
128
- "aria-setsize": matchingOptions.length,
129
- "aria-posinset": optionIndex + 1,
130
- forwardRef: function forwardRef(ref) {
131
- return setListOptionRefs(ref, index);
132
170
  }
133
- }, rest), ___EmotionJSX("span", {
134
- className: "euiComboBoxOption__contentWrapper"
135
- }, ___EmotionJSX(EuiComboBoxOptionAppendPrepend, {
136
- option: option,
137
- classNamePrefix: "euiComboBoxOption",
138
- marginSize: "s"
139
- }, ___EmotionJSX("span", {
140
- className: classNames('euiComboBoxOption__content', rowHeight !== 'auto' && 'eui-textTruncate')
141
- }, renderOption ? renderOption(option, searchValue, 'euiComboBoxOption__renderOption') : rowHeight === 'auto' ? _this.renderVariableHeightOption(label) : _this.renderTruncatedOption(label, truncationProps))), optionIsFocused && !optionIsDisabled ? hitEnterBadge : null));
171
+ }, rest), renderOption ? renderOption(option, searchValue, 'euiComboBoxOption__renderOption') : rowHeight === 'auto' ? _this.renderVariableHeightOption(label) : _this.renderTruncatedOption(label, truncationProps));
142
172
  });
143
173
  _defineProperty(_this, "getListInnerElementProps", function () {
144
174
  return {
145
175
  'aria-label': _this.props.listboxAriaLabel,
146
176
  id: _this.props.rootId('listbox'),
147
177
  role: 'listbox',
178
+ 'aria-multiselectable': _this.props.singleSelection === false ? true : undefined,
148
179
  tabIndex: 0
149
180
  };
150
181
  });
@@ -198,49 +229,66 @@ export var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
198
229
  // just highlight the entire truncated text
199
230
  ___EmotionJSX(EuiMark, null, text));
200
231
  });
232
+ _defineProperty(_this, "getItemSize", function (index) {
233
+ var _ref3 = _this.props,
234
+ rowHeight = _ref3.rowHeight;
235
+ var option = _this.props.matchingOptions[index];
236
+ return getListItemSize(index, rowHeight, !!(option !== null && option !== void 0 && option.isGroupLabelOption));
237
+ });
201
238
  return _this;
202
239
  }
203
240
  _inherits(EuiComboBoxOptionsList, _Component);
204
241
  return _createClass(EuiComboBoxOptionsList, [{
205
242
  key: "componentDidUpdate",
206
243
  value: function componentDidUpdate(prevProps) {
207
- if (this.listRef && typeof this.props.activeOptionIndex !== 'undefined' && this.props.activeOptionIndex !== prevProps.activeOptionIndex && this.props.rowHeight !== 'auto') {
208
- this.listRef.scrollToItem(this.props.activeOptionIndex, 'auto');
244
+ var _this$props3 = this.props,
245
+ activeOptionIndex = _this$props3.activeOptionIndex,
246
+ rowHeight = _this$props3.rowHeight;
247
+ if (this.listRef && typeof activeOptionIndex !== 'undefined' && activeOptionIndex !== prevProps.activeOptionIndex && rowHeight !== 'auto') {
248
+ // NOTE: The 'auto' setting results in the item being scrolled to the top/end edge;
249
+ // We could consider changing it to 'center' to keep items further way from the listbox edges.
250
+ this.listRef.scrollToItem(activeOptionIndex, 'auto');
251
+ } else if (rowHeight === 'auto') {
252
+ var _this$optionRefs, _this$optionRefs$scro;
253
+ (_this$optionRefs = this.optionRefs[activeOptionIndex !== null && activeOptionIndex !== void 0 ? activeOptionIndex : 0]) === null || _this$optionRefs === void 0 || (_this$optionRefs$scro = _this$optionRefs.scrollIntoView) === null || _this$optionRefs$scro === void 0 || _this$optionRefs$scro.call(_this$optionRefs, {
254
+ block: 'nearest'
255
+ });
209
256
  }
210
257
  }
211
258
  }, {
212
259
  key: "render",
213
260
  value: function render() {
214
261
  var _this2 = this;
215
- var _this$props2 = this.props,
216
- dataTestSubj = _this$props2['data-test-subj'],
217
- activeOptionIndex = _this$props2.activeOptionIndex,
218
- areAllOptionsSelected = _this$props2.areAllOptionsSelected,
219
- customOptionText = _this$props2.customOptionText,
220
- fullWidth = _this$props2.fullWidth,
221
- getSelectedOptionForSearchValue = _this$props2.getSelectedOptionForSearchValue,
222
- isCaseSensitive = _this$props2.isCaseSensitive,
223
- isLoading = _this$props2.isLoading,
224
- listRef = _this$props2.listRef,
225
- matchingOptions = _this$props2.matchingOptions,
226
- onCloseList = _this$props2.onCloseList,
227
- onCreateOption = _this$props2.onCreateOption,
228
- onOptionClick = _this$props2.onOptionClick,
229
- onOptionEnterKey = _this$props2.onOptionEnterKey,
230
- onScroll = _this$props2.onScroll,
231
- options = _this$props2.options,
232
- renderOption = _this$props2.renderOption,
233
- rootId = _this$props2.rootId,
234
- rowHeight = _this$props2.rowHeight,
235
- scrollToIndex = _this$props2.scrollToIndex,
236
- searchValue = _this$props2.searchValue,
237
- selectedOptions = _this$props2.selectedOptions,
238
- singleSelection = _this$props2.singleSelection,
239
- delimiter = _this$props2.delimiter,
240
- truncationProps = _this$props2.truncationProps,
241
- listboxAriaLabel = _this$props2.listboxAriaLabel,
242
- setListOptionRefs = _this$props2.setListOptionRefs,
243
- rest = _objectWithoutProperties(_this$props2, _excluded3);
262
+ var _this$props4 = this.props,
263
+ dataTestSubj = _this$props4['data-test-subj'],
264
+ activeOptionIndex = _this$props4.activeOptionIndex,
265
+ areAllOptionsSelected = _this$props4.areAllOptionsSelected,
266
+ customOptionText = _this$props4.customOptionText,
267
+ fullWidth = _this$props4.fullWidth,
268
+ getSelectedOptionForSearchValue = _this$props4.getSelectedOptionForSearchValue,
269
+ isCaseSensitive = _this$props4.isCaseSensitive,
270
+ isLoading = _this$props4.isLoading,
271
+ listRef = _this$props4.listRef,
272
+ matchingOptions = _this$props4.matchingOptions,
273
+ onCloseList = _this$props4.onCloseList,
274
+ onCreateOption = _this$props4.onCreateOption,
275
+ onOptionClick = _this$props4.onOptionClick,
276
+ onOptionEnterKey = _this$props4.onOptionEnterKey,
277
+ onScroll = _this$props4.onScroll,
278
+ options = _this$props4.options,
279
+ renderOption = _this$props4.renderOption,
280
+ rootId = _this$props4.rootId,
281
+ rowHeight = _this$props4.rowHeight,
282
+ scrollToIndex = _this$props4.scrollToIndex,
283
+ searchValue = _this$props4.searchValue,
284
+ selectedOptions = _this$props4.selectedOptions,
285
+ singleSelection = _this$props4.singleSelection,
286
+ delimiter = _this$props4.delimiter,
287
+ onFocusBadge = _this$props4.onFocusBadge,
288
+ truncationProps = _this$props4.truncationProps,
289
+ listboxAriaLabel = _this$props4.listboxAriaLabel,
290
+ setListOptionRefs = _this$props4.setListOptionRefs,
291
+ rest = _objectWithoutProperties(_this$props4, _excluded3);
244
292
  var emptyStateContent;
245
293
  if (isLoading) {
246
294
  emptyStateContent = ___EmotionJSX(EuiFlexGroup, {
@@ -338,6 +386,10 @@ export var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
338
386
  // bounded by max-height of .euiComboBoxOptionsList
339
387
  boundedHeight = height > LIST_MAX_HEIGHT ? LIST_MAX_HEIGHT : height;
340
388
  }
389
+
390
+ /* We need to consider the panel padding (2 * 8px) but should only subtract it if
391
+ the panel width has already been set. */
392
+ var listWidth = this.context && this.context > 0 ? this.context - 16 : this.context;
341
393
  return ___EmotionJSX(RenderWithEuiStylesMemoizer, null, function (stylesMemoizer) {
342
394
  var styles = stylesMemoizer(euiComboBoxOptionListStyles);
343
395
  return ___EmotionJSX("div", _extends({
@@ -345,29 +397,39 @@ export var EuiComboBoxOptionsList = /*#__PURE__*/function (_Component) {
345
397
  className: "euiComboBoxOptionsList",
346
398
  "data-test-subj": classNames('comboBoxOptionsList', dataTestSubj),
347
399
  ref: listRef
348
- }, rest), emptyStateContent ? ___EmotionJSX(EuiText, {
400
+ }, rest, {
401
+ onMouseDown: function onMouseDown(e) {
402
+ // prevent focus shifting; expected behavior to keep focus in the input
403
+ e.preventDefault();
404
+ }
405
+ }), emptyStateContent ? ___EmotionJSX(EuiText, {
349
406
  size: "xs",
350
407
  css: styles.euiComboBoxOptionsList__empty,
351
408
  className: "euiComboBoxOptionsList__empty"
352
- }, emptyStateContent) : rowHeight === 'auto' ? ___EmotionJSX("div", _this2.getListInnerElementProps(), matchingOptions.map(function (_, index) {
409
+ }, emptyStateContent) : rowHeight === 'auto' ? ___EmotionJSX("ul", _extends({
410
+ ref: _this2.listBoxRef
411
+ }, _this2.getListInnerElementProps()), matchingOptions.map(function (_, index) {
353
412
  return ___EmotionJSX(_this2.ListRow, {
354
413
  data: matchingOptions,
355
414
  index: index,
356
- key: index // same as FixedSizeList's default
415
+ key: index // same as VariableSizeList's default
357
416
  ,
358
417
  style: {}
359
418
  });
360
- })) : ___EmotionJSX(FixedSizeList, {
419
+ })) : ___EmotionJSX(VariableSizeList, {
361
420
  css: styles.euiComboBoxOptionList__virtualization,
362
421
  className: "euiComboBoxOptionsList__virtualization",
363
422
  height: boundedHeight,
364
423
  onScroll: onScroll,
365
424
  itemCount: matchingOptions.length,
366
- itemSize: rowHeight,
367
- itemData: matchingOptions,
425
+ itemSize: _this2.getItemSize,
426
+ itemData: matchingOptions
427
+ // Prevents scrollbar jump before VariableSizeList populates the cached size
428
+ ,
429
+ estimatedItemSize: rowHeight,
368
430
  ref: _this2.setListRef,
369
431
  innerElementType: _this2.ListInnerElement,
370
- width: _this2.context
432
+ width: listWidth
371
433
  }, _this2.ListRow));
372
434
  });
373
435
  }
@@ -521,5 +583,6 @@ EuiComboBoxOptionsList.propTypes = {
521
583
  asPlainText: PropTypes.bool
522
584
  }).isRequired]),
523
585
  delimiter: PropTypes.string,
524
- truncationProps: PropTypes.any
586
+ truncationProps: PropTypes.any,
587
+ onFocusBadge: PropTypes.bool
525
588
  };
@@ -7,20 +7,21 @@
7
7
  */
8
8
 
9
9
  import { css } from '@emotion/react';
10
- import { logicalCSS, mathWithUnits, euiScrollBarStyles, euiTextBreakWord } from '../../../global_styling';
11
- import { euiTitle } from '../../title/title.styles';
10
+ import { logicalCSS, euiScrollBarStyles, euiTextBreakWord, euiYScrollWithShadows } from '../../../global_styling';
12
11
  export var LIST_MAX_HEIGHT = 200;
13
12
  export var euiComboBoxOptionListStyles = function euiComboBoxOptionListStyles(euiThemeContext) {
14
13
  var euiTheme = euiThemeContext.euiTheme;
15
14
  return {
16
- euiComboBoxOptionList: /*#__PURE__*/css(logicalCSS('max-height', "".concat(LIST_MAX_HEIGHT, "px")), " overflow:hidden;.euiTextTruncate{pointer-events:none;}.euiComboBoxOption__contentWrapper{display:flex;align-items:center;}.euiComboBoxOption__content{flex:1;text-align:start;overflow-wrap:anywhere;}.euiComboBoxOption__emptyStateText{flex:1;text-align:start;", logicalCSS('margin-bottom', 0), ";}.euiComboBoxOption__enterBadge{", logicalCSS('margin-left', euiTheme.size.xs), ";}.euiComboBoxTitle{display:flex;", logicalCSS('padding-horizontal', euiTheme.size.s), logicalCSS('padding-top', mathWithUnits(euiTheme.size.s, function (x) {
17
- return x + 1;
18
- })), " ", logicalCSS('padding-bottom', euiTheme.size.xs), " ", euiTitle(euiThemeContext, 'xxxs'), ";};label:euiComboBoxOptionList;"),
15
+ euiComboBoxOptionList: /*#__PURE__*/css(logicalCSS('max-height', "".concat(LIST_MAX_HEIGHT, "px")), " overflow:hidden;.euiTextTruncate{pointer-events:none;}.euiComboBoxOption__contentWrapper{display:flex;align-items:center;}.euiComboBoxOption__content{flex:1;text-align:start;overflow-wrap:anywhere;}.euiComboBoxOption__emptyStateText{flex:1;text-align:start;", logicalCSS('margin-bottom', 0), ";}.euiComboBoxOption__enterBadge{", logicalCSS('margin-left', euiTheme.size.xs), ";};label:euiComboBoxOptionList;"),
19
16
  /* eslint-disable local/css-logical-properties */
20
- hasRowHeightAuto: /*#__PURE__*/css("overflow-y:auto;.euiComboBoxOption__contentWrapper{align-items:flex-start;}", euiScrollBarStyles(euiThemeContext), ";;label:hasRowHeightAuto;"),
17
+ hasRowHeightAuto: /*#__PURE__*/css(euiYScrollWithShadows(euiThemeContext, {
18
+ hasAnimatedOverflowShadow: true
19
+ }), " .euiComboBoxOption__contentWrapper{align-items:flex-start;}", euiScrollBarStyles(euiThemeContext), ";;label:hasRowHeightAuto;"),
21
20
  /* eslint-enable local/css-logical-properties */
22
21
 
23
- euiComboBoxOptionList__virtualization: /*#__PURE__*/css(euiScrollBarStyles(euiThemeContext), ";;label:euiComboBoxOptionList__virtualization;"),
22
+ euiComboBoxOptionList__virtualization: /*#__PURE__*/css(euiYScrollWithShadows(euiThemeContext, {
23
+ hasAnimatedOverflowShadow: true
24
+ }), ";;label:euiComboBoxOptionList__virtualization;"),
24
25
  euiComboBoxOptionsList__empty: /*#__PURE__*/css("padding:", euiTheme.size.s, ";text-align:center;", euiTextBreakWord(), ";;label:euiComboBoxOptionsList__empty;")
25
26
  };
26
27
  };