@elastic/eui 91.0.0 → 91.1.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 (382) hide show
  1. package/dist/eui_theme_dark.css +191 -124
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +191 -124
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/accordion/accordion.a11y.js +1 -3
  6. package/es/components/basic_table/action_types.js +5 -0
  7. package/es/components/basic_table/basic_table.a11y.js +1 -2
  8. package/es/components/basic_table/basic_table.js +8 -8
  9. package/es/components/basic_table/collapsed_item_actions.js +120 -249
  10. package/es/components/basic_table/custom_item_action.js +9 -95
  11. package/es/components/basic_table/default_item_action.js +23 -14
  12. package/es/components/basic_table/in_memory_table.a11y.js +13 -11
  13. package/es/components/basic_table/in_memory_table.js +8 -8
  14. package/es/components/breadcrumbs/breadcrumb.js +11 -7
  15. package/es/components/breadcrumbs/breadcrumb.styles.js +5 -0
  16. package/es/components/button/button_display/_button_display.js +5 -3
  17. package/es/components/button/button_display/_button_display_content.js +8 -4
  18. package/es/components/button/button_empty/button_empty.js +9 -7
  19. package/es/components/button/button_group/button_group.js +5 -3
  20. package/es/components/button/button_group/button_group_button.js +5 -3
  21. package/es/components/card/card.a11y.js +5 -18
  22. package/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +2 -2
  23. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  24. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +12 -9
  25. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -101
  26. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -58
  27. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +89 -37
  28. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +67 -81
  29. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +1 -19
  30. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -102
  31. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  32. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +7 -90
  33. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +150 -130
  34. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  35. package/es/components/combo_box/combo_box.js +1 -1
  36. package/es/components/context_menu/context_menu_item.js +16 -8
  37. package/es/components/context_menu/context_menu_item.styles.js +1 -1
  38. package/es/components/datagrid/body/data_grid_body.js +16 -6
  39. package/es/components/datagrid/body/data_grid_body_custom.js +16 -6
  40. package/es/components/datagrid/body/data_grid_body_virtualized.js +16 -6
  41. package/es/components/datagrid/body/data_grid_cell.js +67 -44
  42. package/es/components/datagrid/body/data_grid_cell_actions.js +12 -12
  43. package/es/components/datagrid/body/data_grid_cell_popover.js +43 -10
  44. package/es/components/datagrid/body/header/data_grid_header_cell.js +65 -34
  45. package/es/components/datagrid/body/header/data_grid_header_row.js +16 -6
  46. package/es/components/datagrid/controls/column_selector.js +19 -39
  47. package/es/components/datagrid/controls/column_sorting.js +18 -29
  48. package/es/components/datagrid/controls/data_grid_toolbar_control.js +154 -0
  49. package/es/components/datagrid/controls/display_selector.js +0 -1
  50. package/es/components/datagrid/controls/fullscreen_selector.js +2 -6
  51. package/es/components/datagrid/controls/index.js +2 -1
  52. package/es/components/datagrid/index.js +1 -1
  53. package/es/components/datagrid/utils/in_memory.js +16 -6
  54. package/es/components/datagrid/utils/row_heights.js +1 -1
  55. package/es/components/date_picker/auto_refresh/auto_refresh.js +6 -4
  56. package/es/components/date_picker/super_date_picker/super_update_button.js +1 -1
  57. package/es/components/error_boundary/error_boundary.a11y.js +1 -1
  58. package/es/components/expression/expression.a11y.js +2 -4
  59. package/es/components/facet/facet_button.js +5 -3
  60. package/es/components/filter_group/filter_button.js +2 -2
  61. package/es/components/focus_trap/focus_trap.a11y.js +3 -3
  62. package/es/components/form/range/range.a11y.js +5 -10
  63. package/es/components/form/super_select/super_select.js +3 -2
  64. package/es/components/form/super_select/super_select_control.js +13 -20
  65. package/es/components/header/header.a11y.js +1 -1
  66. package/es/components/header/header_links/header_link.js +7 -5
  67. package/es/components/header/header_section/header_section_item_button.js +7 -5
  68. package/es/components/image/image.a11y.js +1 -2
  69. package/es/components/key_pad_menu/key_pad_menu.a11y.js +5 -5
  70. package/es/components/link/external_link_icon.js +51 -0
  71. package/es/components/link/link.js +6 -20
  72. package/es/components/link/link.styles.js +2 -5
  73. package/es/components/list_group/list_group.js +6 -1
  74. package/es/components/list_group/list_group_item.js +14 -4
  75. package/es/components/list_group/list_group_item.styles.js +2 -1
  76. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +12 -2
  77. package/es/components/notification/notification_event.a11y.js +1 -2
  78. package/es/components/notification/notification_event.js +7 -5
  79. package/es/components/pagination/pagination_button.js +7 -5
  80. package/es/components/popover/popover.js +4 -1
  81. package/es/components/resizable_container/resizable_container.a11y.js +4 -8
  82. package/es/components/search_bar/search_bar.a11y.js +3 -6
  83. package/es/components/selectable/selectable.js +16 -1
  84. package/es/components/selectable/selectable_list/selectable_list.js +227 -78
  85. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  86. package/es/components/text/text.styles.js +2 -2
  87. package/es/components/text_truncate/text_truncate.js +33 -10
  88. package/eui.d.ts +466 -136
  89. package/i18ntokens.json +224 -260
  90. package/lib/components/accordion/accordion.a11y.js +1 -3
  91. package/lib/components/basic_table/action_types.js +8 -2
  92. package/lib/components/basic_table/basic_table.a11y.js +1 -2
  93. package/lib/components/basic_table/basic_table.js +8 -8
  94. package/lib/components/basic_table/collapsed_item_actions.js +128 -257
  95. package/lib/components/basic_table/custom_item_action.js +18 -104
  96. package/lib/components/basic_table/default_item_action.js +23 -14
  97. package/lib/components/basic_table/in_memory_table.a11y.js +13 -11
  98. package/lib/components/basic_table/in_memory_table.js +8 -8
  99. package/lib/components/breadcrumbs/breadcrumb.js +11 -7
  100. package/lib/components/breadcrumbs/breadcrumb.styles.js +5 -0
  101. package/lib/components/button/button_display/_button_display.js +5 -3
  102. package/lib/components/button/button_display/_button_display_content.js +8 -4
  103. package/lib/components/button/button_empty/button_empty.js +9 -7
  104. package/lib/components/button/button_group/button_group.js +5 -3
  105. package/lib/components/button/button_group/button_group_button.js +5 -3
  106. package/lib/components/card/card.a11y.js +5 -18
  107. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  108. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  109. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +12 -9
  110. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -101
  111. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -58
  112. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +89 -37
  113. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +66 -80
  114. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  115. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -104
  116. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  117. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +7 -90
  118. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +150 -130
  119. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  120. package/lib/components/combo_box/combo_box.js +1 -1
  121. package/lib/components/context_menu/context_menu_item.js +16 -8
  122. package/lib/components/context_menu/context_menu_item.styles.js +1 -1
  123. package/lib/components/datagrid/body/data_grid_body.js +16 -6
  124. package/lib/components/datagrid/body/data_grid_body_custom.js +16 -6
  125. package/lib/components/datagrid/body/data_grid_body_virtualized.js +16 -6
  126. package/lib/components/datagrid/body/data_grid_cell.js +67 -44
  127. package/lib/components/datagrid/body/data_grid_cell_actions.js +12 -13
  128. package/lib/components/datagrid/body/data_grid_cell_popover.js +43 -10
  129. package/lib/components/datagrid/body/header/data_grid_header_cell.js +65 -34
  130. package/lib/components/datagrid/body/header/data_grid_header_row.js +16 -6
  131. package/lib/components/datagrid/controls/column_selector.js +19 -39
  132. package/lib/components/datagrid/controls/column_sorting.js +18 -30
  133. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +159 -0
  134. package/lib/components/datagrid/controls/display_selector.js +0 -1
  135. package/lib/components/datagrid/controls/fullscreen_selector.js +2 -7
  136. package/lib/components/datagrid/controls/index.js +8 -1
  137. package/lib/components/datagrid/index.js +8 -1
  138. package/lib/components/datagrid/utils/in_memory.js +16 -6
  139. package/lib/components/datagrid/utils/row_heights.js +1 -1
  140. package/lib/components/date_picker/auto_refresh/auto_refresh.js +6 -4
  141. package/lib/components/date_picker/super_date_picker/super_update_button.js +1 -1
  142. package/lib/components/error_boundary/error_boundary.a11y.js +1 -1
  143. package/lib/components/expression/expression.a11y.js +2 -4
  144. package/lib/components/facet/facet_button.js +5 -3
  145. package/lib/components/filter_group/filter_button.js +2 -2
  146. package/lib/components/focus_trap/focus_trap.a11y.js +3 -3
  147. package/lib/components/form/range/range.a11y.js +5 -10
  148. package/lib/components/form/super_select/super_select.js +3 -2
  149. package/lib/components/form/super_select/super_select_control.js +12 -19
  150. package/lib/components/header/header.a11y.js +1 -1
  151. package/lib/components/header/header_links/header_link.js +7 -5
  152. package/lib/components/header/header_section/header_section_item_button.js +7 -5
  153. package/lib/components/image/image.a11y.js +1 -2
  154. package/lib/components/key_pad_menu/key_pad_menu.a11y.js +5 -5
  155. package/lib/components/link/external_link_icon.js +57 -0
  156. package/lib/components/link/link.js +6 -20
  157. package/lib/components/link/link.styles.js +1 -4
  158. package/lib/components/list_group/list_group.js +6 -1
  159. package/lib/components/list_group/list_group_item.js +14 -4
  160. package/lib/components/list_group/list_group_item.styles.js +2 -1
  161. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +12 -2
  162. package/lib/components/notification/notification_event.a11y.js +1 -2
  163. package/lib/components/notification/notification_event.js +7 -5
  164. package/lib/components/popover/popover.js +4 -1
  165. package/lib/components/resizable_container/resizable_container.a11y.js +4 -8
  166. package/lib/components/search_bar/search_bar.a11y.js +3 -6
  167. package/lib/components/selectable/selectable.js +16 -1
  168. package/lib/components/selectable/selectable_list/selectable_list.js +227 -78
  169. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  170. package/lib/components/text/text.styles.js +2 -2
  171. package/lib/components/text_truncate/text_truncate.js +32 -9
  172. package/optimize/es/components/accordion/accordion.a11y.js +1 -3
  173. package/optimize/es/components/basic_table/action_types.js +5 -0
  174. package/optimize/es/components/basic_table/basic_table.a11y.js +1 -2
  175. package/optimize/es/components/basic_table/collapsed_item_actions.js +116 -169
  176. package/optimize/es/components/basic_table/custom_item_action.js +10 -83
  177. package/optimize/es/components/basic_table/default_item_action.js +23 -14
  178. package/optimize/es/components/basic_table/in_memory_table.a11y.js +13 -11
  179. package/optimize/es/components/breadcrumbs/breadcrumb.js +11 -7
  180. package/optimize/es/components/breadcrumbs/breadcrumb.styles.js +5 -0
  181. package/optimize/es/components/button/button_display/_button_display_content.js +3 -1
  182. package/optimize/es/components/button/button_empty/button_empty.js +2 -2
  183. package/optimize/es/components/card/card.a11y.js +5 -18
  184. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +2 -2
  185. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  186. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +12 -9
  187. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -3
  188. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +10 -5
  189. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +8 -36
  190. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +1 -19
  191. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -23
  192. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  193. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -10
  194. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +9 -5
  195. package/optimize/es/components/context_menu/context_menu_item.js +9 -6
  196. package/optimize/es/components/context_menu/context_menu_item.styles.js +1 -1
  197. package/optimize/es/components/datagrid/body/data_grid_cell.js +38 -30
  198. package/optimize/es/components/datagrid/body/data_grid_cell_actions.js +12 -12
  199. package/optimize/es/components/datagrid/body/data_grid_cell_popover.js +43 -10
  200. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +49 -28
  201. package/optimize/es/components/datagrid/controls/column_selector.js +19 -39
  202. package/optimize/es/components/datagrid/controls/column_sorting.js +18 -29
  203. package/optimize/es/components/datagrid/controls/data_grid_toolbar_control.js +70 -0
  204. package/optimize/es/components/datagrid/controls/display_selector.js +0 -1
  205. package/optimize/es/components/datagrid/controls/fullscreen_selector.js +2 -6
  206. package/optimize/es/components/datagrid/controls/index.js +2 -1
  207. package/optimize/es/components/datagrid/index.js +1 -1
  208. package/optimize/es/components/datagrid/utils/row_heights.js +1 -1
  209. package/optimize/es/components/date_picker/super_date_picker/super_update_button.js +1 -1
  210. package/optimize/es/components/error_boundary/error_boundary.a11y.js +1 -1
  211. package/optimize/es/components/expression/expression.a11y.js +2 -4
  212. package/optimize/es/components/filter_group/filter_button.js +2 -2
  213. package/optimize/es/components/focus_trap/focus_trap.a11y.js +3 -3
  214. package/optimize/es/components/form/range/range.a11y.js +5 -10
  215. package/optimize/es/components/form/super_select/super_select.js +3 -2
  216. package/optimize/es/components/form/super_select/super_select_control.js +13 -20
  217. package/optimize/es/components/header/header.a11y.js +1 -1
  218. package/optimize/es/components/image/image.a11y.js +1 -2
  219. package/optimize/es/components/key_pad_menu/key_pad_menu.a11y.js +5 -5
  220. package/optimize/es/components/link/external_link_icon.js +41 -0
  221. package/optimize/es/components/link/link.js +6 -20
  222. package/optimize/es/components/link/link.styles.js +2 -5
  223. package/optimize/es/components/list_group/list_group_item.js +8 -3
  224. package/optimize/es/components/list_group/list_group_item.styles.js +2 -1
  225. package/optimize/es/components/notification/notification_event.a11y.js +1 -2
  226. package/optimize/es/components/popover/popover.js +4 -1
  227. package/optimize/es/components/resizable_container/resizable_container.a11y.js +4 -8
  228. package/optimize/es/components/search_bar/search_bar.a11y.js +3 -6
  229. package/optimize/es/components/selectable/selectable_list/selectable_list.js +199 -76
  230. package/optimize/es/components/text/text.styles.js +2 -2
  231. package/optimize/es/components/text_truncate/text_truncate.js +26 -9
  232. package/optimize/lib/components/accordion/accordion.a11y.js +1 -3
  233. package/optimize/lib/components/basic_table/action_types.js +8 -2
  234. package/optimize/lib/components/basic_table/basic_table.a11y.js +1 -2
  235. package/optimize/lib/components/basic_table/collapsed_item_actions.js +123 -174
  236. package/optimize/lib/components/basic_table/custom_item_action.js +17 -91
  237. package/optimize/lib/components/basic_table/default_item_action.js +23 -14
  238. package/optimize/lib/components/basic_table/in_memory_table.a11y.js +13 -11
  239. package/optimize/lib/components/breadcrumbs/breadcrumb.js +11 -7
  240. package/optimize/lib/components/breadcrumbs/breadcrumb.styles.js +5 -0
  241. package/optimize/lib/components/button/button_display/_button_display_content.js +3 -1
  242. package/optimize/lib/components/button/button_empty/button_empty.js +2 -2
  243. package/optimize/lib/components/card/card.a11y.js +5 -18
  244. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  245. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  246. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +12 -9
  247. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -3
  248. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +10 -5
  249. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +8 -36
  250. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  251. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -26
  252. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  253. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +6 -10
  254. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +9 -5
  255. package/optimize/lib/components/context_menu/context_menu_item.js +9 -6
  256. package/optimize/lib/components/context_menu/context_menu_item.styles.js +1 -1
  257. package/optimize/lib/components/datagrid/body/data_grid_cell.js +38 -30
  258. package/optimize/lib/components/datagrid/body/data_grid_cell_actions.js +12 -12
  259. package/optimize/lib/components/datagrid/body/data_grid_cell_popover.js +43 -10
  260. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +55 -36
  261. package/optimize/lib/components/datagrid/controls/column_selector.js +19 -39
  262. package/optimize/lib/components/datagrid/controls/column_sorting.js +18 -29
  263. package/optimize/lib/components/datagrid/controls/data_grid_toolbar_control.js +75 -0
  264. package/optimize/lib/components/datagrid/controls/display_selector.js +0 -1
  265. package/optimize/lib/components/datagrid/controls/fullscreen_selector.js +2 -6
  266. package/optimize/lib/components/datagrid/controls/index.js +8 -1
  267. package/optimize/lib/components/datagrid/index.js +8 -1
  268. package/optimize/lib/components/datagrid/utils/row_heights.js +1 -1
  269. package/optimize/lib/components/date_picker/super_date_picker/super_update_button.js +1 -1
  270. package/optimize/lib/components/error_boundary/error_boundary.a11y.js +1 -1
  271. package/optimize/lib/components/expression/expression.a11y.js +2 -4
  272. package/optimize/lib/components/filter_group/filter_button.js +2 -2
  273. package/optimize/lib/components/focus_trap/focus_trap.a11y.js +3 -3
  274. package/optimize/lib/components/form/range/range.a11y.js +5 -10
  275. package/optimize/lib/components/form/super_select/super_select.js +3 -2
  276. package/optimize/lib/components/form/super_select/super_select_control.js +12 -19
  277. package/optimize/lib/components/header/header.a11y.js +1 -1
  278. package/optimize/lib/components/image/image.a11y.js +1 -2
  279. package/optimize/lib/components/key_pad_menu/key_pad_menu.a11y.js +5 -5
  280. package/optimize/lib/components/link/external_link_icon.js +47 -0
  281. package/optimize/lib/components/link/link.js +6 -20
  282. package/optimize/lib/components/link/link.styles.js +1 -4
  283. package/optimize/lib/components/list_group/list_group_item.js +8 -3
  284. package/optimize/lib/components/list_group/list_group_item.styles.js +2 -1
  285. package/optimize/lib/components/notification/notification_event.a11y.js +1 -2
  286. package/optimize/lib/components/popover/popover.js +4 -1
  287. package/optimize/lib/components/resizable_container/resizable_container.a11y.js +4 -8
  288. package/optimize/lib/components/search_bar/search_bar.a11y.js +3 -6
  289. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +199 -76
  290. package/optimize/lib/components/text/text.styles.js +2 -2
  291. package/optimize/lib/components/text_truncate/text_truncate.js +25 -8
  292. package/package.json +4 -4
  293. package/src/components/datagrid/_data_grid_data_row.scss +139 -100
  294. package/src/components/datagrid/_mixins.scss +2 -2
  295. package/src/components/datagrid/body/header/_data_grid_header_row.scss +36 -28
  296. package/src/components/datagrid/controls/_data_grid_toolbar.scss +0 -5
  297. package/src/components/form/form_row/_form_row.scss +1 -1
  298. package/src/components/table/_responsive.scss +19 -0
  299. package/src/components/table/_table.scss +4 -9
  300. package/test-env/components/accordion/accordion.a11y.js +1 -3
  301. package/test-env/components/auto_sizer/auto_sizer.js +10 -3
  302. package/test-env/components/basic_table/action_types.js +8 -2
  303. package/test-env/components/basic_table/basic_table.a11y.js +1 -2
  304. package/test-env/components/basic_table/basic_table.js +8 -8
  305. package/test-env/components/basic_table/collapsed_item_actions.js +124 -251
  306. package/test-env/components/basic_table/custom_item_action.js +18 -100
  307. package/test-env/components/basic_table/default_item_action.js +23 -14
  308. package/test-env/components/basic_table/in_memory_table.a11y.js +13 -11
  309. package/test-env/components/basic_table/in_memory_table.js +8 -8
  310. package/test-env/components/breadcrumbs/breadcrumb.js +11 -7
  311. package/test-env/components/breadcrumbs/breadcrumb.styles.js +5 -0
  312. package/test-env/components/button/button_display/_button_display.js +5 -3
  313. package/test-env/components/button/button_display/_button_display_content.js +8 -4
  314. package/test-env/components/button/button_empty/button_empty.js +9 -7
  315. package/test-env/components/button/button_group/button_group.js +5 -3
  316. package/test-env/components/button/button_group/button_group_button.js +5 -3
  317. package/test-env/components/card/card.a11y.js +5 -18
  318. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  319. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  320. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +12 -9
  321. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -101
  322. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -58
  323. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +89 -37
  324. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +66 -80
  325. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  326. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -105
  327. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  328. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +7 -90
  329. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +150 -130
  330. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  331. package/test-env/components/combo_box/combo_box.js +1 -1
  332. package/test-env/components/context_menu/context_menu_item.js +16 -8
  333. package/test-env/components/context_menu/context_menu_item.styles.js +1 -1
  334. package/test-env/components/datagrid/body/data_grid_body.js +16 -6
  335. package/test-env/components/datagrid/body/data_grid_body_custom.js +16 -6
  336. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +16 -6
  337. package/test-env/components/datagrid/body/data_grid_cell.js +67 -44
  338. package/test-env/components/datagrid/body/data_grid_cell_actions.js +12 -12
  339. package/test-env/components/datagrid/body/data_grid_cell_popover.js +43 -10
  340. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +71 -42
  341. package/test-env/components/datagrid/body/header/data_grid_header_row.js +16 -6
  342. package/test-env/components/datagrid/controls/column_selector.js +19 -39
  343. package/test-env/components/datagrid/controls/column_sorting.js +18 -29
  344. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +158 -0
  345. package/test-env/components/datagrid/controls/display_selector.js +0 -1
  346. package/test-env/components/datagrid/controls/fullscreen_selector.js +2 -6
  347. package/test-env/components/datagrid/controls/index.js +8 -1
  348. package/test-env/components/datagrid/index.js +8 -1
  349. package/test-env/components/datagrid/utils/in_memory.js +16 -6
  350. package/test-env/components/datagrid/utils/row_heights.js +1 -1
  351. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +6 -4
  352. package/test-env/components/date_picker/super_date_picker/super_update_button.js +1 -1
  353. package/test-env/components/error_boundary/error_boundary.a11y.js +1 -1
  354. package/test-env/components/expression/expression.a11y.js +2 -4
  355. package/test-env/components/facet/facet_button.js +5 -3
  356. package/test-env/components/filter_group/filter_button.js +2 -2
  357. package/test-env/components/focus_trap/focus_trap.a11y.js +3 -3
  358. package/test-env/components/form/range/range.a11y.js +5 -10
  359. package/test-env/components/form/super_select/super_select.js +3 -2
  360. package/test-env/components/form/super_select/super_select_control.js +12 -19
  361. package/test-env/components/header/header.a11y.js +1 -1
  362. package/test-env/components/header/header_links/header_link.js +7 -5
  363. package/test-env/components/header/header_section/header_section_item_button.js +7 -5
  364. package/test-env/components/image/image.a11y.js +1 -2
  365. package/test-env/components/key_pad_menu/key_pad_menu.a11y.js +5 -5
  366. package/test-env/components/link/external_link_icon.js +56 -0
  367. package/test-env/components/link/link.js +6 -20
  368. package/test-env/components/link/link.styles.js +1 -4
  369. package/test-env/components/list_group/list_group.js +6 -1
  370. package/test-env/components/list_group/list_group_item.js +14 -4
  371. package/test-env/components/list_group/list_group_item.styles.js +2 -1
  372. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +12 -2
  373. package/test-env/components/notification/notification_event.a11y.js +1 -2
  374. package/test-env/components/notification/notification_event.js +7 -5
  375. package/test-env/components/popover/popover.js +4 -1
  376. package/test-env/components/resizable_container/resizable_container.a11y.js +4 -8
  377. package/test-env/components/search_bar/search_bar.a11y.js +3 -6
  378. package/test-env/components/selectable/selectable.js +16 -1
  379. package/test-env/components/selectable/selectable_list/selectable_list.js +227 -78
  380. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  381. package/test-env/components/text/text.styles.js +2 -2
  382. package/test-env/components/text_truncate/text_truncate.js +32 -9
@@ -11,6 +11,7 @@ var _button = require("../button");
11
11
  var _tool_tip = require("../tool_tip");
12
12
  var _accessibility = require("../../services/accessibility");
13
13
  var _accessibility2 = require("../accessibility");
14
+ var _action_types = require("./action_types");
14
15
  var _react2 = require("@emotion/react");
15
16
  /*
16
17
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -20,9 +21,6 @@ var _react2 = require("@emotion/react");
20
21
  * Side Public License, v 1.
21
22
  */
22
23
 
23
- // In order to use generics with an arrow function inside a .tsx file, it's necessary to use
24
- // this `extends` hack and declare the types as shown, instead of declaring the const as a
25
- // FunctionComponent
26
24
  var DefaultItemAction = function DefaultItemAction(_ref) {
27
25
  var action = _ref.action,
28
26
  enabled = _ref.enabled,
@@ -45,25 +43,36 @@ var DefaultItemAction = function DefaultItemAction(_ref) {
45
43
  icon = (0, _predicate.isString)(buttonIcon) ? buttonIcon : buttonIcon(item);
46
44
  }
47
45
  var button;
48
- var actionContent = typeof action.name === 'function' ? action.name(item) : action.name;
46
+ var actionContent = (0, _action_types.callWithItemIfFunction)(item)(action.name);
47
+ var tooltipContent = (0, _action_types.callWithItemIfFunction)(item)(action.description);
48
+ var href = (0, _action_types.callWithItemIfFunction)(item)(action.href);
49
+ var dataTestSubj = (0, _action_types.callWithItemIfFunction)(item)(action['data-test-subj']);
49
50
  var ariaLabelId = (0, _accessibility.useGeneratedHtmlId)();
51
+ var ariaLabelledBy;
50
52
  if (action.type === 'icon') {
51
53
  if (!icon) {
52
54
  throw new Error("Cannot render item action [".concat(action.name, "]. It is configured to render as an icon but no\n icon is provided. Make sure to set the 'icon' property of the action"));
53
55
  }
54
- button = (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_button.EuiButtonIcon, {
56
+ button = (0, _react2.jsx)(_button.EuiButtonIcon, {
55
57
  className: className,
56
58
  "aria-labelledby": ariaLabelId,
57
59
  isDisabled: !enabled,
58
60
  color: color,
59
61
  iconType: icon,
60
62
  onClick: onClick,
61
- href: action.href,
63
+ href: href,
62
64
  target: action.target,
63
- "data-test-subj": action['data-test-subj']
64
- }), (0, _react2.jsx)(_accessibility2.EuiScreenReaderOnly, null, (0, _react2.jsx)("span", {
65
+ "data-test-subj": dataTestSubj
66
+ // If action is disabled, the normal tooltip can't show - attempt to
67
+ // provide some amount of affordance with a browser title tooltip
68
+ ,
69
+ title: !enabled ? tooltipContent : undefined
70
+ });
71
+ // actionContent (action.name) is a ReactNode and must be rendered
72
+ // to an element and referenced by ID for screen readers
73
+ ariaLabelledBy = (0, _react2.jsx)(_accessibility2.EuiScreenReaderOnly, null, (0, _react2.jsx)("span", {
65
74
  id: ariaLabelId
66
- }, actionContent)));
75
+ }, actionContent));
67
76
  } else {
68
77
  button = (0, _react2.jsx)(_button.EuiButtonEmpty, {
69
78
  className: className,
@@ -72,15 +81,15 @@ var DefaultItemAction = function DefaultItemAction(_ref) {
72
81
  color: color,
73
82
  iconType: icon,
74
83
  onClick: onClick,
75
- href: action.href,
84
+ href: href,
76
85
  target: action.target,
77
- "data-test-subj": action['data-test-subj'],
86
+ "data-test-subj": dataTestSubj,
78
87
  flush: "right"
79
88
  }, actionContent);
80
89
  }
81
- return enabled && action.description ? (0, _react2.jsx)(_tool_tip.EuiToolTip, {
82
- content: action.description,
90
+ return enabled ? (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_tool_tip.EuiToolTip, {
91
+ content: tooltipContent,
83
92
  delay: "long"
84
- }, button) : button;
93
+ }, button), ariaLabelledBy) : (0, _react2.jsx)(_react.default.Fragment, null, button, ariaLabelledBy);
85
94
  };
86
95
  exports.DefaultItemAction = DefaultItemAction;
@@ -136,24 +136,26 @@ describe('EuiInMemoryTable', function () {
136
136
  cy.checkAxe();
137
137
  });
138
138
  it('has zero violations after sorting on a column', function () {
139
- cy.realPress('Tab');
140
- cy.get('button[data-test-subj="tableHeaderSortButton"]').first().should('have.focus');
141
- cy.realPress('Enter');
139
+ cy.get('button[data-test-subj="tableHeaderSortButton"]').first().focus();
140
+ cy.realPress('{enter}');
142
141
  cy.checkAxe();
143
142
  });
144
143
  it('has zero violations when number of rows is increased by keyboard', function () {
145
- cy.repeatRealPress('Tab', 14);
146
- cy.get('button[data-test-subj="tablePaginationPopoverButton"]').should('have.focus').realPress('Space');
147
- cy.get('div[data-popover-open="true"]').should('exist');
148
- cy.get('div[data-popover-open="true"]').should('have.focus');
144
+ cy.get('button[data-test-subj="tablePaginationPopoverButton"]').focus().realPress('{enter}');
145
+ cy.get('div[data-popover-open="true"]', {
146
+ timeout: 1000
147
+ }).should('exist');
149
148
  cy.repeatRealPress('Tab'); // Switched to Tab from ArrowDown because of flaky test runs
150
- cy.get('button[data-test-subj="tablePagination-25-rows"]').realPress('Space');
151
- cy.get('table.euiTable').find('tr.euiTableRow').should('have.length', 20);
149
+ cy.get('button[data-test-subj="tablePagination-25-rows"]', {
150
+ timeout: 1000
151
+ }).realPress('{enter}');
152
+ cy.get('table.euiTable', {
153
+ timeout: 1000
154
+ }).find('tr.euiTableRow').should('have.length', 20);
152
155
  cy.checkAxe();
153
156
  });
154
157
  it('has zero violations when pagination is pressed', function () {
155
- cy.repeatRealPress('Tab', 15);
156
- cy.get('a[data-test-subj="pagination-button-1"]').should('have.focus').realPress('Enter');
158
+ cy.get('a[data-test-subj="pagination-button-1"]').focus().realPress('{enter}');
157
159
  cy.get('button[data-test-subj="pagination-button-1"]').should('be.disabled');
158
160
  cy.checkAxe();
159
161
  });
@@ -687,19 +687,19 @@ EuiInMemoryTable.propTypes = {
687
687
  */
688
688
  color: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.func.isRequired]),
689
689
  /**
690
- * The display name of the action (will be the button caption)
690
+ * The display name of the action (will render as visible text if rendered within a collapsed menu)
691
691
  */
692
692
  /**
693
- * The display name of the action (will be the button caption)
693
+ * The display name of the action (will render as visible text if rendered within a collapsed menu)
694
694
  */
695
695
  name: _propTypes.default.oneOfType([_propTypes.default.node.isRequired, _propTypes.default.func.isRequired]).isRequired,
696
696
  /**
697
- * Describes the action (will be the button title)
697
+ * Describes the action (will render as tooltip content)
698
698
  */
699
699
  /**
700
- * Describes the action (will be the button title)
700
+ * Describes the action (will render as tooltip content)
701
701
  */
702
- description: _propTypes.default.string.isRequired,
702
+ description: _propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.func.isRequired]).isRequired,
703
703
  /**
704
704
  * A handler function to execute the action
705
705
  */
@@ -707,7 +707,7 @@ EuiInMemoryTable.propTypes = {
707
707
  * A handler function to execute the action
708
708
  */
709
709
  onClick: _propTypes.default.func,
710
- href: _propTypes.default.string,
710
+ href: _propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.func.isRequired]),
711
711
  target: _propTypes.default.string,
712
712
  /**
713
713
  * A callback function that determines whether the action is available
@@ -724,14 +724,14 @@ EuiInMemoryTable.propTypes = {
724
724
  */
725
725
  enabled: _propTypes.default.func,
726
726
  isPrimary: _propTypes.default.bool,
727
- "data-test-subj": _propTypes.default.string,
727
+ "data-test-subj": _propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.func.isRequired]),
728
728
  /**
729
729
  * Associates an icon with the button
730
730
  */
731
731
  icon: _propTypes.default.oneOfType([_propTypes.default.oneOf(["accessibility", "addDataApp", "advancedSettingsApp", "agentApp", "aggregate", "analyzeEvent", "annotation", "apmApp", "apmTrace", "appSearchApp", "apps", "arrowDown", "arrowLeft", "arrowRight", "arrowUp", "arrowStart", "arrowEnd", "article", "asterisk", "at", "auditbeatApp", "beaker", "bell", "bellSlash", "beta", "bolt", "boxesHorizontal", "boxesVertical", "branch", "branchUser", "broom", "brush", "bug", "bullseye", "calendar", "canvasApp", "casesApp", "check", "checkInCircleFilled", "cheer", "classificationJob", "clock", "cloudDrizzle", "cloudStormy", "cloudSunny", "cluster", "codeApp", "color", "compute", "console", "consoleApp", "container", "continuityAbove", "continuityAboveBelow", "continuityBelow", "continuityWithin", "controlsHorizontal", "controlsVertical", "copy", "copyClipboard", "createAdvancedJob", "createMultiMetricJob", "createPopulationJob", "createSingleMetricJob", "cross", "crossClusterReplicationApp", "crosshairs", "currency", "cut", "dashboardApp", "dataVisualizer", "database", "desktop", "devToolsApp", "discoverApp", "discuss", "document", "documentEdit", "documentation", "documents", "dot", "dotInCircle", "doubleArrowLeft", "doubleArrowRight", "download", "editorAlignCenter", "editorAlignLeft", "editorAlignRight", "editorBold", "editorChecklist", "editorCodeBlock", "editorComment", "editorDistributeHorizontal", "editorDistributeVertical", "editorHeading", "editorItalic", "editorItemAlignBottom", "editorItemAlignCenter", "editorItemAlignLeft", "editorItemAlignMiddle", "editorItemAlignRight", "editorItemAlignTop", "editorLink", "editorOrderedList", "editorPositionBottomLeft", "editorPositionBottomRight", "editorPositionTopLeft", "editorPositionTopRight", "editorRedo", "editorStrike", "editorTable", "editorUnderline", "editorUndo", "editorUnorderedList", "email", "empty", "emsApp", "eql", "eraser", "error", "exit", "expand", "expandMini", "exportAction", "eye", "eyeClosed", "faceHappy", "faceNeutral", "faceSad", "filebeatApp", "filter", "filterExclude", "filterIgnore", "filterInclude", "filterInCircle", "flag", "fleetApp", "fold", "folderCheck", "folderClosed", "folderExclamation", "folderOpen", "frameNext", "framePrevious", "fullScreen", "fullScreenExit", "function", "gear", "gisApp", "glasses", "globe", "grab", "grabHorizontal", "grabOmnidirectional", "gradient", "graphApp", "grid", "grokApp", "heart", "heartbeatApp", "heatmap", "help", "home", "iInCircle", "image", "importAction", "indexClose", "indexEdit", "indexFlush", "indexManagementApp", "indexMapping", "indexOpen", "indexPatternApp", "indexRollupApp", "indexRuntime", "indexSettings", "indexTemporary", "infinity", "inputOutput", "inspect", "invert", "ip", "key", "keyboard", "kqlField", "kqlFunction", "kqlOperand", "kqlSelector", "kqlValue", "kubernetesNode", "kubernetesPod", "launch", "layers", "lensApp", "lettering", "lineDashed", "lineDotted", "lineSolid", "link", "list", "listAdd", "lock", "lockOpen", "logoAWS", "logoAWSMono", "logoAerospike", "logoApache", "logoAppSearch", "logoAzure", "logoAzureMono", "logoBeats", "logoBusinessAnalytics", "logoCeph", "logoCloud", "logoCloudEnterprise", "logoCode", "logoCodesandbox", "logoCouchbase", "logoDocker", "logoDropwizard", "logoElastic", "logoElasticStack", "logoElasticsearch", "logoEnterpriseSearch", "logoEtcd", "logoGCP", "logoGCPMono", "logoGithub", "logoGmail", "logoGolang", "logoGoogleG", "logoHAproxy", "logoIBM", "logoIBMMono", "logoKafka", "logoKibana", "logoKubernetes", "logoLogging", "logoLogstash", "logoMaps", "logoMemcached", "logoMetrics", "logoMongodb", "logoMySQL", "logoNginx", "logoObservability", "logoOsquery", "logoPhp", "logoPostgres", "logoPrometheus", "logoRabbitmq", "logoRedis", "logoSecurity", "logoSiteSearch", "logoSketch", "logoSlack", "logoUptime", "logoVulnerabilityManagement", "logoWebhook", "logoWindows", "logoWorkplaceSearch", "logsApp", "logstashFilter", "logstashIf", "logstashInput", "logstashOutput", "logstashQueue", "machineLearningApp", "magnet", "magnifyWithExclamation", "magnifyWithMinus", "magnifyWithPlus", "managementApp", "mapMarker", "memory", "menu", "menuDown", "menuLeft", "menuRight", "menuUp", "merge", "metricbeatApp", "metricsApp", "minimize", "minus", "minusInCircle", "minusInCircleFilled", "mobile", "monitoringApp", "moon", "namespace", "nested", "node", "notebookApp", "number", "offline", "online", "outlierDetectionJob", "package", "packetbeatApp", "pageSelect", "pagesSelect", "palette", "paperClip", "partial", "pause", "payment", "pencil", "percent", "pin", "pinFilled", "pipelineApp", "pivot", "play", "playFilled", "plus", "plusInCircle", "plusInCircleFilled", "popout", "push", "questionInCircle", "quote", "recentlyViewedApp", "refresh", "regressionJob", "reporter", "reportingApp", "returnKey", "save", "savedObjectsApp", "scale", "search", "searchProfilerApp", "securityAnalyticsApp", "securityApp", "securitySignal", "securitySignalDetected", "securitySignalResolved", "sessionViewer", "shard", "share", "snowflake", "sortAscending", "sortDescending", "sortDown", "sortLeft", "sortRight", "sortUp", "sortable", "spaces", "spacesApp", "sparkles", "sqlApp", "starEmpty", "starEmptySpace", "starFilled", "starFilledSpace", "starMinusEmpty", "starMinusFilled", "starPlusEmpty", "starPlusFilled", "stats", "stop", "stopFilled", "stopSlash", "storage", "string", "submodule", "sun", "swatchInput", "symlink", "tableDensityCompact", "tableDensityExpanded", "tableDensityNormal", "tableOfContents", "tag", "tear", "temperature", "timeline", "timelineWithArrow", "timelionApp", "timeRefresh", "timeslider", "training", "transitionLeftIn", "transitionLeftOut", "transitionTopIn", "transitionTopOut", "trash", "unfold", "unlink", "upgradeAssistantApp", "uptimeApp", "user", "userAvatar", "users", "usersRolesApp", "vector", "videoPlayer", "visArea", "visAreaStacked", "visBarHorizontal", "visBarHorizontalStacked", "visBarVertical", "visBarVerticalStacked", "visGauge", "visGoal", "visLine", "visMapCoordinate", "visMapRegion", "visMetric", "visPie", "visTable", "visTagCloud", "visText", "visTimelion", "visVega", "visVisualBuilder", "visualizeApp", "vulnerabilityManagementApp", "warning", "alert", "watchesApp", "wordWrap", "wordWrapDisabled", "workplaceSearchApp", "wrench", "tokenAlias", "tokenAnnotation", "tokenArray", "tokenBinary", "tokenBoolean", "tokenClass", "tokenCompletionSuggester", "tokenConstant", "tokenDate", "tokenElement", "tokenEnum", "tokenEnumMember", "tokenEvent", "tokenException", "tokenField", "tokenFile", "tokenFlattened", "tokenFunction", "tokenGeo", "tokenHistogram", "tokenInterface", "tokenIP", "tokenJoin", "tokenKey", "tokenKeyword", "tokenMethod", "tokenMetricCounter", "tokenMetricGauge", "tokenModule", "tokenNamespace", "tokenNested", "tokenNull", "tokenNumber", "tokenObject", "tokenOperator", "tokenPackage", "tokenParameter", "tokenPercolator", "tokenProperty", "tokenRange", "tokenRankFeature", "tokenRankFeatures", "tokenRepo", "tokenSearchType", "tokenShape", "tokenString", "tokenStruct", "tokenSymbol", "tokenTag", "tokenText", "tokenTokenCount", "tokenVariable", "tokenVectorDense", "tokenDenseVector", "tokenVectorSparse"]).isRequired, _propTypes.default.func.isRequired])
732
732
  }).isRequired, _propTypes.default.shape({
733
733
  /**
734
- * The function that renders the action. Note that the returned node is expected to have `onFocus` and `onBlur` functions
734
+ * Allows rendering a totally custom action
735
735
  */
736
736
  render: _propTypes.default.func.isRequired,
737
737
  /**
@@ -100,10 +100,12 @@ var EuiBreadcrumbContent = function EuiBreadcrumbContent(_ref2) {
100
100
  var popoverAriaLabel = (0, _i18n.useEuiI18n)('euiBreadcrumb.popoverAriaLabel', 'Clicking this button will toggle a popover dialog.');
101
101
  return (0, _react2.jsx)(_inner_text.EuiInnerText, null, function (ref, innerText) {
102
102
  var title = innerText === '' ? undefined : innerText;
103
- var sharedProps = {
103
+ var baseProps = {
104
104
  ref: ref,
105
105
  title: title,
106
- 'aria-current': ariaCurrent,
106
+ 'aria-current': ariaCurrent
107
+ };
108
+ var styleProps = {
107
109
  className: classes,
108
110
  css: cssStyles
109
111
  };
@@ -113,8 +115,10 @@ var EuiBreadcrumbContent = function EuiBreadcrumbContent(_ref2) {
113
115
  closePopover: function closePopover() {
114
116
  return setIsPopoverOpen(false);
115
117
  },
116
- button: (0, _react2.jsx)(_link.EuiLink, (0, _extends2.default)({}, sharedProps, {
117
- color: linkColor
118
+ css: !isLastBreadcrumb && styles.euiBreadcrumb__popoverWrapper,
119
+ button: (0, _react2.jsx)(_link.EuiLink, (0, _extends2.default)({}, baseProps, {
120
+ color: linkColor,
121
+ css: styles.euiBreadcrumb__popoverButton
118
122
  // Avoid passing href and onClick - should only toggle the popover
119
123
  ,
120
124
  onClick: function onClick() {
@@ -122,14 +126,14 @@ var EuiBreadcrumbContent = function EuiBreadcrumbContent(_ref2) {
122
126
  return !isOpen;
123
127
  });
124
128
  }
125
- }, rest), text, ' ', (0, _react2.jsx)(_icon.EuiIcon, {
129
+ }, rest), (0, _react2.jsx)("span", styleProps, text), (0, _react2.jsx)(_icon.EuiIcon, {
126
130
  type: "arrowDown",
127
131
  size: "s",
128
132
  "aria-label": " - ".concat(popoverAriaLabel)
129
133
  }))
130
134
  }), popoverContent);
131
135
  } else if (isInteractiveBreadcrumb) {
132
- return (0, _react2.jsx)(_link.EuiLink, (0, _extends2.default)({}, sharedProps, {
136
+ return (0, _react2.jsx)(_link.EuiLink, (0, _extends2.default)({}, baseProps, styleProps, {
133
137
  color: linkColor,
134
138
  onClick: onClick,
135
139
  href: href,
@@ -139,7 +143,7 @@ var EuiBreadcrumbContent = function EuiBreadcrumbContent(_ref2) {
139
143
  return (0, _react2.jsx)(_text.EuiTextColor, {
140
144
  color: plainTextColor,
141
145
  cloneElement: true
142
- }, (0, _react2.jsx)("span", (0, _extends2.default)({}, sharedProps, rest), text));
146
+ }, (0, _react2.jsx)("span", (0, _extends2.default)({}, baseProps, styleProps, rest), text));
143
147
  }
144
148
  });
145
149
  };
@@ -54,6 +54,11 @@ var euiBreadcrumbContentStyles = function euiBreadcrumbContentStyles(euiThemeCon
54
54
  return x * 10;
55
55
  })), ";;label:isTruncated;"),
56
56
  isTruncatedLast: /*#__PURE__*/(0, _react.css)((0, _global_styling.euiTextTruncate)('none'), ";;label:isTruncatedLast;"),
57
+ // Popover styles
58
+ euiBreadcrumb__popoverButton: /*#__PURE__*/(0, _react.css)("max-inline-size:100%;display:inline-flex;align-items:center;gap:", euiTheme.size.xs, ";;label:euiBreadcrumb__popoverButton;"),
59
+ euiBreadcrumb__popoverWrapper: /*#__PURE__*/(0, _react.css)("max-inline-size:calc(\n 100% - ", (0, _global_styling.mathWithUnits)(euiTheme.size.base, function (x) {
60
+ return x + 1;
61
+ }), "\n );;label:euiBreadcrumb__popoverWrapper;"),
57
62
  // Types
58
63
  page: /*#__PURE__*/(0, _react.css)("&:is(a):focus{", (0, _global_styling.euiFocusRing)(euiThemeContext, 'inset'), ";}&:is(button):focus{", (0, _global_styling.euiFocusRing)(euiThemeContext, 'center'), ";};label:page;"),
59
64
  application: /*#__PURE__*/(0, _react.css)((0, _global_styling.euiFontSize)(euiThemeContext, 'xs'), " background-color:", (0, _color.transparentize)(euiTheme.colors.darkestShade, 0.2), ";clip-path:polygon(\n 0 0,\n calc(100% - ", euiTheme.size.s, ") 0,\n 100% 50%,\n calc(100% - ", euiTheme.size.s, ") 100%,\n 0 100%,\n ", euiTheme.size.s, " 50%\n );color:", euiTheme.colors.darkestShade, ";line-height:", euiTheme.size.base, ";", (0, _global_styling.logicalCSS)('padding-vertical', euiTheme.size.xs), " ", (0, _global_styling.logicalCSS)('padding-horizontal', euiTheme.size.base), " &:is(a),&:is(button){background-color:", (0, _color.transparentize)(euiTheme.colors.primary, 0.2), ";color:", euiTheme.colors.link, ";:focus{", (0, _global_styling.euiFocusRing)(euiThemeContext, 'inset'), " :focus-visible{border-radius:", euiTheme.border.radius.medium, ";clip-path:none;}}};label:application;"),
@@ -178,16 +178,18 @@ EuiButtonDisplay.propTypes = {
178
178
  */
179
179
  iconSide: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([undefined])]),
180
180
  /**
181
- * Object of props passed to the <span/> wrapping the content's text/children only (not icon)
181
+ * Object of props passed to the `<span>` wrapping the content's text/children only (not icon)
182
+ *
183
+ * This span wrapper can be removed by passing `textProps={false}`.
182
184
  */
183
- textProps: _propTypes.default.shape({
185
+ textProps: _propTypes.default.oneOfType([_propTypes.default.shape({
184
186
  className: _propTypes.default.string,
185
187
  "aria-label": _propTypes.default.string,
186
188
  "data-test-subj": _propTypes.default.string,
187
189
  css: _propTypes.default.any,
188
190
  ref: _propTypes.default.any,
189
191
  "data-text": _propTypes.default.string
190
- }),
192
+ }).isRequired, _propTypes.default.oneOf([false])]),
191
193
  iconSize: _propTypes.default.any,
192
194
  isDisabled: _propTypes.default.bool,
193
195
  className: _propTypes.default.string,
@@ -74,9 +74,11 @@ var EuiButtonDisplayContent = function EuiButtonDisplayContent(_ref) {
74
74
  }
75
75
 
76
76
  var isText = typeof children === 'string';
77
+ var doNotRenderTextWrapper = textProps === false;
78
+ var renderTextWrapper = (isText || textProps) && !doNotRenderTextWrapper;
77
79
  return (0, _react2.jsx)("span", (0, _extends2.default)({
78
80
  css: cssStyles
79
- }, contentProps), iconSide === 'left' && icon, isText || textProps ? (0, _react2.jsx)("span", (0, _extends2.default)({}, textProps, {
81
+ }, contentProps), iconSide === 'left' && icon, renderTextWrapper ? (0, _react2.jsx)("span", (0, _extends2.default)({}, textProps, {
80
82
  className: (0, _classnames.default)('eui-textTruncate', textProps === null || textProps === void 0 ? void 0 : textProps.className)
81
83
  }), children) : children, iconSide === 'right' && icon);
82
84
  };
@@ -92,16 +94,18 @@ EuiButtonDisplayContent.propTypes = {
92
94
  iconSide: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([undefined])]),
93
95
  isLoading: _propTypes.default.bool,
94
96
  /**
95
- * Object of props passed to the <span/> wrapping the content's text/children only (not icon)
97
+ * Object of props passed to the `<span>` wrapping the content's text/children only (not icon)
98
+ *
99
+ * This span wrapper can be removed by passing `textProps={false}`.
96
100
  */
97
- textProps: _propTypes.default.shape({
101
+ textProps: _propTypes.default.oneOfType([_propTypes.default.shape({
98
102
  className: _propTypes.default.string,
99
103
  "aria-label": _propTypes.default.string,
100
104
  "data-test-subj": _propTypes.default.string,
101
105
  css: _propTypes.default.any,
102
106
  ref: _propTypes.default.any,
103
107
  "data-text": _propTypes.default.string
104
- }),
108
+ }).isRequired, _propTypes.default.oneOf([false])]),
105
109
  iconSize: _propTypes.default.any,
106
110
  isDisabled: _propTypes.default.bool,
107
111
  className: _propTypes.default.string,
@@ -75,14 +75,14 @@ var EuiButtonEmpty = function EuiButtonEmpty(_ref) {
75
75
  var cssStyles = [styles.euiButtonEmpty, styles[size], buttonColorStyles[isDisabled ? 'disabled' : color], flush && styles.flush, flush && styles[flush], isDisabled && styles.isDisabled];
76
76
  var classes = (0, _classnames.default)('euiButtonEmpty', className);
77
77
  var contentClassNames = (0, _classnames.default)('euiButtonEmpty__content', contentProps === null || contentProps === void 0 ? void 0 : contentProps.className);
78
- var textClassNames = (0, _classnames.default)('euiButtonEmpty__text', textProps === null || textProps === void 0 ? void 0 : textProps.className);
78
+ var textClassNames = (0, _classnames.default)('euiButtonEmpty__text', textProps && textProps.className);
79
79
  var innerNode = (0, _react2.jsx)(_button_display_content.EuiButtonDisplayContent, (0, _extends2.default)({
80
80
  isDisabled: isDisabled,
81
81
  isLoading: isLoading,
82
82
  iconType: iconType,
83
83
  iconSide: iconSide,
84
84
  iconSize: size === 'xs' ? 's' : iconSize,
85
- textProps: _objectSpread(_objectSpread({}, textProps), {}, {
85
+ textProps: textProps === false ? false : _objectSpread(_objectSpread({}, textProps), {}, {
86
86
  className: textClassNames
87
87
  })
88
88
  }, _objectSpread(_objectSpread({}, contentProps), {}, {
@@ -159,10 +159,10 @@ EuiButtonEmpty.propTypes = {
159
159
  type: _propTypes.default.oneOf(["button", "submit"]),
160
160
  buttonRef: _propTypes.default.any,
161
161
  /**
162
- * Object of props passed to the <span/> wrapping the button's content
162
+ * Object of props passed to the `<span>` wrapping the button's content
163
163
  */
164
164
  /**
165
- * Object of props passed to the <span/> wrapping the button's content
165
+ * Object of props passed to the `<span>` wrapping the button's content
166
166
  */
167
167
  contentProps: _propTypes.default.shape({
168
168
  className: _propTypes.default.string,
@@ -179,16 +179,18 @@ EuiButtonEmpty.propTypes = {
179
179
  */
180
180
  iconSide: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([undefined])]),
181
181
  /**
182
- * Object of props passed to the <span/> wrapping the content's text/children only (not icon)
182
+ * Object of props passed to the `<span>` wrapping the content's text/children only (not icon)
183
+ *
184
+ * This span wrapper can be removed by passing `textProps={false}`.
183
185
  */
184
- textProps: _propTypes.default.shape({
186
+ textProps: _propTypes.default.oneOfType([_propTypes.default.shape({
185
187
  className: _propTypes.default.string,
186
188
  "aria-label": _propTypes.default.string,
187
189
  "data-test-subj": _propTypes.default.string,
188
190
  css: _propTypes.default.any,
189
191
  ref: _propTypes.default.any,
190
192
  "data-text": _propTypes.default.string
191
- }),
193
+ }).isRequired, _propTypes.default.oneOf([false])]),
192
194
  iconSize: _propTypes.default.any,
193
195
  className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string]),
194
196
  "aria-label": _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string]),
@@ -151,16 +151,18 @@ EuiButtonGroup.propTypes = {
151
151
  iconSide: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([undefined])]),
152
152
  isLoading: _propTypes.default.bool,
153
153
  /**
154
- * Object of props passed to the <span/> wrapping the content's text/children only (not icon)
154
+ * Object of props passed to the `<span>` wrapping the content's text/children only (not icon)
155
+ *
156
+ * This span wrapper can be removed by passing `textProps={false}`.
155
157
  */
156
- textProps: _propTypes.default.shape({
158
+ textProps: _propTypes.default.oneOfType([_propTypes.default.shape({
157
159
  className: _propTypes.default.string,
158
160
  "aria-label": _propTypes.default.string,
159
161
  "data-test-subj": _propTypes.default.string,
160
162
  css: _propTypes.default.any,
161
163
  ref: _propTypes.default.any,
162
164
  "data-text": _propTypes.default.string
163
- }),
165
+ }).isRequired, _propTypes.default.oneOf([false])]),
164
166
  iconSize: _propTypes.default.any,
165
167
  className: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string]),
166
168
  "aria-label": _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.string]),
@@ -111,16 +111,18 @@ EuiButtonGroupButton.propTypes = {
111
111
  iconSide: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.oneOf([undefined])]),
112
112
  isLoading: _propTypes.default.bool,
113
113
  /**
114
- * Object of props passed to the <span/> wrapping the content's text/children only (not icon)
114
+ * Object of props passed to the `<span>` wrapping the content's text/children only (not icon)
115
+ *
116
+ * This span wrapper can be removed by passing `textProps={false}`.
115
117
  */
116
- textProps: _propTypes.default.shape({
118
+ textProps: _propTypes.default.oneOfType([_propTypes.default.shape({
117
119
  className: _propTypes.default.string,
118
120
  "aria-label": _propTypes.default.string,
119
121
  "data-test-subj": _propTypes.default.string,
120
122
  css: _propTypes.default.any,
121
123
  ref: _propTypes.default.any,
122
124
  "data-text": _propTypes.default.string
123
- }),
125
+ }).isRequired, _propTypes.default.oneOf([false])]),
124
126
  iconSize: _propTypes.default.any,
125
127
  className: _propTypes.default.string,
126
128
  "aria-label": _propTypes.default.string,
@@ -51,6 +51,7 @@ var Card = function Card() {
51
51
  return (0, _react2.jsx)(_flex.EuiFlexGroup, {
52
52
  gutterSize: "l"
53
53
  }, (0, _react2.jsx)(_flex.EuiFlexItem, null, (0, _react2.jsx)(_card.EuiCard, {
54
+ "data-test-subj": "cy-card-1",
54
55
  icon: (0, _react2.jsx)(_icon.EuiIcon, {
55
56
  size: "xxl",
56
57
  type: "logoSketch"
@@ -119,24 +120,10 @@ describe('EuiCard', function () {
119
120
  cy.checkAxe();
120
121
  });
121
122
  it('has zero violations after keyboard interaction', function () {
122
- cy.repeatRealPress('Tab');
123
- cy.realPress('Enter');
124
- cy.focused().should('have.attr', 'aria-checked', 'true');
125
- cy.repeatRealPress('Tab');
126
- cy.realPress('Enter');
127
- cy.focused().should('have.attr', 'aria-checked', 'true');
128
- cy.repeatRealPress('Tab');
129
- cy.realPress('Enter');
130
- cy.focused().should('have.attr', 'aria-checked', 'true');
131
- cy.checkAxe();
132
- cy.realPress('Enter');
133
- cy.focused().should('have.attr', 'aria-checked', 'false');
134
- cy.repeatRealPress(['Shift', 'Tab']);
135
- cy.realPress('Enter');
136
- cy.focused().should('have.attr', 'aria-checked', 'false');
137
- cy.repeatRealPress(['Shift', 'Tab']);
138
- cy.realPress('Enter');
139
- cy.focused().should('have.attr', 'aria-checked', 'false');
123
+ cy.get('div[data-test-subj="cy-card-1"]').find('button.euiButtonEmpty').focus();
124
+ cy.realPress('Tab');
125
+ cy.realPress('{enter}');
126
+ cy.get('div[data-test-subj="cy-card-1"]').find('button.euiButton').should('have.attr', 'aria-checked', 'true');
140
127
  cy.checkAxe();
141
128
  });
142
129
  });
@@ -30,7 +30,7 @@ var euiCollapsibleNavBetaStyles = function euiCollapsibleNavBetaStyles(euiThemeC
30
30
  left: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('border-right', euiTheme.border.thin), ";;label:left;"),
31
31
  right: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('border-left', euiTheme.border.thin), ";;label:right;"),
32
32
  isPush: /*#__PURE__*/(0, _react.css)((0, _themes.euiShadowFlat)(euiThemeContext), ";;label:isPush;"),
33
- isPushCollapsed: /*#__PURE__*/(0, _react.css)(_collapsible_nav_body_footer.euiCollapsibleNavBodyStyles._isPushCollapsed, ";;label:isPushCollapsed;"),
33
+ isPushCollapsed: /*#__PURE__*/(0, _react.css)(_collapsible_nav_body_footer.hideScrollbars, ";;label:isPushCollapsed;"),
34
34
  isOverlayFullWidth: /*#__PURE__*/(0, _react.css)("&.euiFlyout{", (0, _global_styling.logicalCSS)('max-width', '100% !important'), ";};label:isOverlayFullWidth;")
35
35
  };
36
36
  };
@@ -55,9 +55,12 @@ var EuiCollapsibleNavFooter = function EuiCollapsibleNavFooter(_ref2) {
55
55
  var className = _ref2.className,
56
56
  props = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
57
57
  var classes = (0, _classnames.default)('euiCollapsibleNav__footer', className);
58
+ var _useContext2 = (0, _react.useContext)(_context.EuiCollapsibleNavContext),
59
+ isCollapsed = _useContext2.isCollapsed,
60
+ isPush = _useContext2.isPush;
58
61
  var euiTheme = (0, _services.useEuiTheme)();
59
62
  var styles = (0, _collapsible_nav_body_footer.euiCollapsibleNavFooterStyles)(euiTheme);
60
- var cssStyles = [styles.euiCollapsibleNav__footer];
63
+ var cssStyles = [styles.euiCollapsibleNav__footer, isCollapsed && isPush && styles.isPushCollapsed];
61
64
  return (0, _react2.jsx)(_flyout.EuiFlyoutFooter, (0, _extends2.default)({
62
65
  className: classes,
63
66
  css: cssStyles
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.euiCollapsibleNavFooterStyles = exports.euiCollapsibleNavBodyStyles = void 0;
6
+ exports.hideScrollbars = exports.euiCollapsibleNavFooterStyles = exports.euiCollapsibleNavBodyStyles = void 0;
7
7
  var _react = require("@emotion/react");
8
8
  var _global_styling = require("../../global_styling");
9
9
  /*
@@ -14,20 +14,23 @@ var _global_styling = require("../../global_styling");
14
14
  * Side Public License, v 1.
15
15
  */
16
16
 
17
+ // Hide the scrollbar for docked mode (while still keeping the nav scrollable)
18
+ // Otherwise if scrollbars are visible, button icon visibility suffers.
19
+ var hideScrollbars = "\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none; /* Chrome, Edge, & Safari */\n }\n";
20
+ exports.hideScrollbars = hideScrollbars;
17
21
  var euiCollapsibleNavBodyStyles = {
18
22
  // In case things get really dire responsively, ensure the footer doesn't overtake the body
19
23
  euiCollapsibleNav__body: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('min-height', '50%'), ";;label:euiCollapsibleNav__body;"),
20
- get isPushCollapsed() {
21
- return /*#__PURE__*/(0, _react.css)(".euiFlyoutBody__overflow{", this._isPushCollapsed, ";};label:isPushCollapsed;");
22
- },
23
- // CSS is reused by main euiCollapsibleNav styles in case the body component isn't used
24
- _isPushCollapsed: "\n /* Hide the scrollbar for docked mode (while still keeping the nav scrollable)\n Otherwise if scrollbars are visible, button icon visibility suffers. */\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none; /* Chrome, Edge, & Safari */\n }\n "
24
+ isPushCollapsed: /*#__PURE__*/(0, _react.css)(".euiFlyoutBody__overflow{", hideScrollbars, ";};label:isPushCollapsed;")
25
25
  };
26
26
  exports.euiCollapsibleNavBodyStyles = euiCollapsibleNavBodyStyles;
27
- var euiCollapsibleNavFooterStyles = function euiCollapsibleNavFooterStyles(_ref) {
28
- var euiTheme = _ref.euiTheme;
27
+ var euiCollapsibleNavFooterStyles = function euiCollapsibleNavFooterStyles(euiThemeContext) {
28
+ var euiTheme = euiThemeContext.euiTheme;
29
29
  return {
30
- euiCollapsibleNav__footer: /*#__PURE__*/(0, _react.css)("background-color:", euiTheme.colors.emptyShade, ";", (0, _global_styling.logicalCSS)('border-top', euiTheme.border.thin), ";;label:euiCollapsibleNav__footer;")
30
+ euiCollapsibleNav__footer: /*#__PURE__*/(0, _react.css)("background-color:", euiTheme.colors.emptyShade, ";", (0, _global_styling.logicalCSS)('border-top', euiTheme.border.thin), " ", (0, _global_styling.euiYScrollWithShadows)(euiThemeContext, {
31
+ side: 'end'
32
+ }), ";;label:euiCollapsibleNav__footer;"),
33
+ isPushCollapsed: /*#__PURE__*/(0, _react.css)(hideScrollbars, ";;label:isPushCollapsed;")
31
34
  };
32
35
  };
33
36
  exports.euiCollapsibleNavFooterStyles = euiCollapsibleNavFooterStyles;