@elastic/eui 89.1.0 → 90.0.1

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 (365) hide show
  1. package/dist/eui_theme_dark.css +2 -467
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +2 -467
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/accessibility/skip_link/skip_link.js +1 -2
  6. package/es/components/accordion/accordion.js +27 -2
  7. package/es/components/accordion/accordion_children/accordion_children.js +7 -15
  8. package/es/components/basic_table/basic_table.js +60 -23
  9. package/es/components/basic_table/collapsed_item_actions.js +1 -1
  10. package/es/components/basic_table/in_memory_table.js +18 -4
  11. package/es/components/button/button.js +17 -45
  12. package/es/components/button/button_empty/button_empty.js +30 -47
  13. package/es/components/button/button_icon/button_icon.js +26 -43
  14. package/es/components/card/card.js +1 -6
  15. package/es/components/card/card_select/card_select.js +1 -6
  16. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  17. package/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +2 -2
  18. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  19. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  20. package/es/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  21. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -87
  22. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -51
  23. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +90 -31
  24. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +67 -74
  25. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +1 -19
  26. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +16 -79
  27. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +5 -5
  28. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +79 -0
  29. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +176 -117
  30. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  31. package/es/components/collapsible_nav_beta/context.js +1 -0
  32. package/es/components/combo_box/combo_box.js +1 -1
  33. package/es/components/comment_list/comment_event.js +31 -19
  34. package/es/components/comment_list/comment_event.styles.js +26 -24
  35. package/es/components/context_menu/context_menu.js +28 -22
  36. package/es/components/context_menu/context_menu.styles.js +26 -0
  37. package/es/components/context_menu/context_menu_item.js +95 -125
  38. package/es/components/context_menu/context_menu_item.styles.js +82 -0
  39. package/es/components/context_menu/context_menu_panel.a11y.js +4 -2
  40. package/es/components/context_menu/context_menu_panel.js +32 -61
  41. package/es/components/context_menu/context_menu_panel.styles.js +40 -0
  42. package/es/components/control_bar/control_bar.js +28 -23
  43. package/es/components/datagrid/body/data_grid_body.js +6 -7
  44. package/es/components/datagrid/body/data_grid_body_custom.js +6 -7
  45. package/es/components/datagrid/body/data_grid_body_virtualized.js +6 -7
  46. package/es/components/datagrid/body/data_grid_cell.js +12 -13
  47. package/es/components/datagrid/body/data_grid_row_manager.js +28 -9
  48. package/es/components/datagrid/body/header/data_grid_header_cell.js +6 -7
  49. package/es/components/datagrid/body/header/data_grid_header_row.js +6 -7
  50. package/es/components/datagrid/data_grid.js +6 -7
  51. package/es/components/datagrid/utils/in_memory.js +6 -7
  52. package/es/components/date_picker/auto_refresh/auto_refresh.js +1 -2
  53. package/es/components/form/field_number/field_number.js +13 -9
  54. package/es/components/form/field_password/field_password.js +4 -7
  55. package/es/components/form/range/dual_range.js +110 -85
  56. package/es/components/form/range/range.js +47 -40
  57. package/es/components/form/range/range_track.js +6 -20
  58. package/es/components/form/range/utils.js +1 -2
  59. package/es/components/header/header_links/header_link.js +1 -6
  60. package/es/components/header/header_section/header_section_item_button.js +1 -6
  61. package/es/components/list_group/list_group.js +1 -2
  62. package/es/components/list_group/list_group_item.js +7 -5
  63. package/es/components/list_group/list_group_item_extra_action.js +1 -2
  64. package/es/components/list_group/list_group_item_extra_action.styles.js +1 -1
  65. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +2 -3
  66. package/es/components/modal/confirm_modal.js +1 -1
  67. package/es/components/notification/notification_event.js +1 -6
  68. package/es/components/notification/notification_event_read_button.js +1 -2
  69. package/es/components/page/index.js +1 -4
  70. package/es/components/pagination/pagination_button.js +1 -6
  71. package/es/components/popover/input_popover.js +26 -11
  72. package/es/components/selectable/selectable.js +16 -1
  73. package/es/components/selectable/selectable_list/selectable_list.js +227 -78
  74. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  75. package/es/components/tabs/tab.js +1 -1
  76. package/es/components/text_truncate/text_truncate.js +33 -10
  77. package/eui.d.ts +565 -341
  78. package/i18ntokens.json +141 -105
  79. package/lib/components/accessibility/skip_link/skip_link.js +1 -2
  80. package/lib/components/accordion/accordion.js +27 -2
  81. package/lib/components/accordion/accordion_children/accordion_children.js +5 -13
  82. package/lib/components/basic_table/basic_table.js +60 -23
  83. package/lib/components/basic_table/collapsed_item_actions.js +1 -1
  84. package/lib/components/basic_table/in_memory_table.js +18 -4
  85. package/lib/components/button/button.js +24 -51
  86. package/lib/components/button/button_empty/button_empty.js +29 -46
  87. package/lib/components/button/button_icon/button_icon.js +25 -42
  88. package/lib/components/card/card.js +1 -6
  89. package/lib/components/card/card_select/card_select.js +1 -6
  90. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  91. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  92. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  93. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  94. package/lib/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  95. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -87
  96. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -51
  97. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +90 -31
  98. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +66 -73
  99. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  100. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +16 -81
  101. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +5 -5
  102. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +86 -0
  103. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +176 -117
  104. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  105. package/lib/components/collapsible_nav_beta/context.js +1 -0
  106. package/lib/components/combo_box/combo_box.js +1 -1
  107. package/lib/components/comment_list/comment_event.js +33 -18
  108. package/lib/components/comment_list/comment_event.styles.js +28 -25
  109. package/lib/components/context_menu/context_menu.js +31 -24
  110. package/lib/components/context_menu/context_menu.styles.js +34 -0
  111. package/lib/components/context_menu/context_menu_item.js +102 -133
  112. package/lib/components/context_menu/context_menu_item.styles.js +87 -0
  113. package/lib/components/context_menu/context_menu_panel.a11y.js +4 -2
  114. package/lib/components/context_menu/context_menu_panel.js +35 -63
  115. package/lib/components/context_menu/context_menu_panel.styles.js +46 -0
  116. package/lib/components/control_bar/control_bar.js +28 -23
  117. package/lib/components/datagrid/body/data_grid_body.js +6 -7
  118. package/lib/components/datagrid/body/data_grid_body_custom.js +6 -7
  119. package/lib/components/datagrid/body/data_grid_body_virtualized.js +6 -7
  120. package/lib/components/datagrid/body/data_grid_cell.js +12 -13
  121. package/lib/components/datagrid/body/data_grid_row_manager.js +33 -16
  122. package/lib/components/datagrid/body/header/data_grid_header_cell.js +6 -7
  123. package/lib/components/datagrid/body/header/data_grid_header_row.js +6 -7
  124. package/lib/components/datagrid/data_grid.js +6 -7
  125. package/lib/components/datagrid/utils/in_memory.js +6 -7
  126. package/lib/components/date_picker/auto_refresh/auto_refresh.js +1 -2
  127. package/lib/components/form/field_number/field_number.js +12 -8
  128. package/lib/components/form/field_password/field_password.js +4 -7
  129. package/lib/components/form/range/dual_range.js +110 -85
  130. package/lib/components/form/range/range.js +47 -40
  131. package/lib/components/form/range/range_track.js +5 -19
  132. package/lib/components/form/range/utils.js +1 -2
  133. package/lib/components/header/header_links/header_link.js +1 -6
  134. package/lib/components/header/header_section/header_section_item_button.js +1 -6
  135. package/lib/components/list_group/list_group.js +1 -2
  136. package/lib/components/list_group/list_group_item.js +7 -5
  137. package/lib/components/list_group/list_group_item_extra_action.js +1 -2
  138. package/lib/components/list_group/list_group_item_extra_action.styles.js +1 -1
  139. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +2 -3
  140. package/lib/components/modal/confirm_modal.js +1 -1
  141. package/lib/components/notification/notification_event.js +1 -6
  142. package/lib/components/notification/notification_event_read_button.js +1 -2
  143. package/lib/components/page/index.js +1 -40
  144. package/lib/components/popover/input_popover.js +26 -11
  145. package/lib/components/selectable/selectable.js +16 -1
  146. package/lib/components/selectable/selectable_list/selectable_list.js +227 -78
  147. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  148. package/lib/components/tabs/tab.js +1 -1
  149. package/lib/components/text_truncate/text_truncate.js +32 -9
  150. package/optimize/es/components/accordion/accordion.js +27 -2
  151. package/optimize/es/components/accordion/accordion_children/accordion_children.js +5 -14
  152. package/optimize/es/components/basic_table/basic_table.js +42 -19
  153. package/optimize/es/components/button/button.js +15 -33
  154. package/optimize/es/components/button/button_empty/button_empty.js +29 -41
  155. package/optimize/es/components/button/button_icon/button_icon.js +25 -37
  156. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  157. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +2 -2
  158. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  159. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  160. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  161. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -3
  162. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +10 -5
  163. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +8 -36
  164. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +1 -19
  165. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -23
  166. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +5 -5
  167. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +60 -0
  168. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +28 -13
  169. package/optimize/es/components/collapsible_nav_beta/context.js +1 -0
  170. package/optimize/es/components/comment_list/comment_event.js +31 -19
  171. package/optimize/es/components/comment_list/comment_event.styles.js +26 -24
  172. package/optimize/es/components/context_menu/context_menu.js +25 -19
  173. package/optimize/es/components/context_menu/context_menu.styles.js +26 -0
  174. package/optimize/es/components/context_menu/context_menu_item.js +94 -119
  175. package/optimize/es/components/context_menu/context_menu_item.styles.js +82 -0
  176. package/optimize/es/components/context_menu/context_menu_panel.a11y.js +4 -2
  177. package/optimize/es/components/context_menu/context_menu_panel.js +29 -58
  178. package/optimize/es/components/context_menu/context_menu_panel.styles.js +40 -0
  179. package/optimize/es/components/control_bar/control_bar.js +28 -23
  180. package/optimize/es/components/datagrid/body/data_grid_row_manager.js +23 -9
  181. package/optimize/es/components/form/field_number/field_number.js +13 -9
  182. package/optimize/es/components/form/field_password/field_password.js +4 -7
  183. package/optimize/es/components/form/range/dual_range.js +110 -85
  184. package/optimize/es/components/form/range/range.js +47 -40
  185. package/optimize/es/components/form/range/range_track.js +5 -14
  186. package/optimize/es/components/form/range/utils.js +1 -2
  187. package/optimize/es/components/list_group/list_group_item.js +6 -3
  188. package/optimize/es/components/list_group/list_group_item_extra_action.styles.js +1 -1
  189. package/optimize/es/components/page/index.js +1 -4
  190. package/optimize/es/components/popover/input_popover.js +26 -11
  191. package/optimize/es/components/selectable/selectable_list/selectable_list.js +199 -76
  192. package/optimize/es/components/tabs/tab.js +1 -1
  193. package/optimize/es/components/text_truncate/text_truncate.js +26 -9
  194. package/optimize/lib/components/accordion/accordion.js +27 -2
  195. package/optimize/lib/components/accordion/accordion_children/accordion_children.js +3 -12
  196. package/optimize/lib/components/basic_table/basic_table.js +42 -19
  197. package/optimize/lib/components/button/button.js +16 -34
  198. package/optimize/lib/components/button/button_empty/button_empty.js +28 -40
  199. package/optimize/lib/components/button/button_icon/button_icon.js +24 -36
  200. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  201. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  202. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  203. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  204. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  205. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -3
  206. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +10 -5
  207. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +8 -36
  208. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  209. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -26
  210. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +5 -5
  211. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +67 -0
  212. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +28 -13
  213. package/optimize/lib/components/collapsible_nav_beta/context.js +1 -0
  214. package/optimize/lib/components/comment_list/comment_event.js +33 -18
  215. package/optimize/lib/components/comment_list/comment_event.styles.js +28 -25
  216. package/optimize/lib/components/context_menu/context_menu.js +28 -21
  217. package/optimize/lib/components/context_menu/context_menu.styles.js +34 -0
  218. package/optimize/lib/components/context_menu/context_menu_item.js +101 -128
  219. package/optimize/lib/components/context_menu/context_menu_item.styles.js +87 -0
  220. package/optimize/lib/components/context_menu/context_menu_panel.a11y.js +4 -2
  221. package/optimize/lib/components/context_menu/context_menu_panel.js +32 -60
  222. package/optimize/lib/components/context_menu/context_menu_panel.styles.js +47 -0
  223. package/optimize/lib/components/control_bar/control_bar.js +28 -23
  224. package/optimize/lib/components/datagrid/body/data_grid_row_manager.js +23 -8
  225. package/optimize/lib/components/form/field_number/field_number.js +12 -8
  226. package/optimize/lib/components/form/field_password/field_password.js +5 -8
  227. package/optimize/lib/components/form/range/dual_range.js +110 -85
  228. package/optimize/lib/components/form/range/range.js +47 -40
  229. package/optimize/lib/components/form/range/range_track.js +4 -13
  230. package/optimize/lib/components/form/range/utils.js +1 -2
  231. package/optimize/lib/components/list_group/list_group_item.js +6 -3
  232. package/optimize/lib/components/list_group/list_group_item_extra_action.styles.js +1 -1
  233. package/optimize/lib/components/page/index.js +1 -40
  234. package/optimize/lib/components/popover/input_popover.js +27 -12
  235. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +199 -76
  236. package/optimize/lib/components/tabs/tab.js +1 -1
  237. package/optimize/lib/components/text_truncate/text_truncate.js +25 -8
  238. package/package.json +5 -5
  239. package/src/components/datagrid/_data_grid_data_row.scss +0 -1
  240. package/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss +2 -1
  241. package/src/components/index.scss +0 -2
  242. package/test-env/components/accessibility/skip_link/skip_link.js +1 -2
  243. package/test-env/components/accordion/accordion.js +27 -2
  244. package/test-env/components/accordion/accordion_children/accordion_children.js +5 -13
  245. package/test-env/components/auto_sizer/auto_sizer.js +10 -3
  246. package/test-env/components/basic_table/basic_table.js +60 -23
  247. package/test-env/components/basic_table/collapsed_item_actions.js +1 -1
  248. package/test-env/components/basic_table/in_memory_table.js +18 -4
  249. package/test-env/components/button/button.js +17 -40
  250. package/test-env/components/button/button_empty/button_empty.js +29 -46
  251. package/test-env/components/button/button_icon/button_icon.js +25 -42
  252. package/test-env/components/card/card.js +1 -6
  253. package/test-env/components/card/card_select/card_select.js +1 -6
  254. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  255. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  256. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  257. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  258. package/test-env/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  259. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -87
  260. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -51
  261. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +90 -31
  262. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +66 -73
  263. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  264. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +16 -82
  265. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +5 -5
  266. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +85 -0
  267. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +176 -117
  268. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  269. package/test-env/components/collapsible_nav_beta/context.js +1 -0
  270. package/test-env/components/combo_box/combo_box.js +1 -1
  271. package/test-env/components/comment_list/comment_event.js +33 -18
  272. package/test-env/components/comment_list/comment_event.styles.js +28 -25
  273. package/test-env/components/context_menu/context_menu.js +31 -24
  274. package/test-env/components/context_menu/context_menu.styles.js +34 -0
  275. package/test-env/components/context_menu/context_menu_item.js +102 -129
  276. package/test-env/components/context_menu/context_menu_item.styles.js +87 -0
  277. package/test-env/components/context_menu/context_menu_panel.a11y.js +4 -2
  278. package/test-env/components/context_menu/context_menu_panel.js +35 -63
  279. package/test-env/components/context_menu/context_menu_panel.styles.js +47 -0
  280. package/test-env/components/control_bar/control_bar.js +28 -23
  281. package/test-env/components/datagrid/body/data_grid_body.js +6 -7
  282. package/test-env/components/datagrid/body/data_grid_body_custom.js +6 -7
  283. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +6 -7
  284. package/test-env/components/datagrid/body/data_grid_cell.js +12 -13
  285. package/test-env/components/datagrid/body/data_grid_row_manager.js +23 -8
  286. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +6 -7
  287. package/test-env/components/datagrid/body/header/data_grid_header_row.js +6 -7
  288. package/test-env/components/datagrid/data_grid.js +6 -7
  289. package/test-env/components/datagrid/utils/in_memory.js +6 -7
  290. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +1 -2
  291. package/test-env/components/form/field_number/field_number.js +12 -8
  292. package/test-env/components/form/field_password/field_password.js +4 -7
  293. package/test-env/components/form/range/dual_range.js +110 -85
  294. package/test-env/components/form/range/range.js +47 -40
  295. package/test-env/components/form/range/range_track.js +5 -14
  296. package/test-env/components/form/range/utils.js +1 -2
  297. package/test-env/components/header/header_links/header_link.js +1 -6
  298. package/test-env/components/header/header_section/header_section_item_button.js +1 -6
  299. package/test-env/components/list_group/list_group.js +1 -2
  300. package/test-env/components/list_group/list_group_item.js +7 -5
  301. package/test-env/components/list_group/list_group_item_extra_action.js +1 -2
  302. package/test-env/components/list_group/list_group_item_extra_action.styles.js +1 -1
  303. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +2 -3
  304. package/test-env/components/modal/confirm_modal.js +1 -1
  305. package/test-env/components/notification/notification_event.js +1 -6
  306. package/test-env/components/notification/notification_event_read_button.js +1 -2
  307. package/test-env/components/page/index.js +1 -40
  308. package/test-env/components/popover/input_popover.js +26 -11
  309. package/test-env/components/selectable/selectable.js +16 -1
  310. package/test-env/components/selectable/selectable_list/selectable_list.js +227 -78
  311. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  312. package/test-env/components/tabs/tab.js +1 -1
  313. package/test-env/components/text_truncate/text_truncate.js +32 -9
  314. package/es/components/page/page_content/index.js +0 -12
  315. package/es/components/page/page_content/page_content.js +0 -110
  316. package/es/components/page/page_content/page_content_body.js +0 -69
  317. package/es/components/page/page_content/page_content_header.js +0 -43
  318. package/es/components/page/page_content/page_content_header_section.js +0 -34
  319. package/es/components/page/page_side_bar/index.js +0 -9
  320. package/es/components/page/page_side_bar/page_side_bar.js +0 -60
  321. package/es/components/page/page_template.js +0 -591
  322. package/lib/components/page/page_content/index.js +0 -33
  323. package/lib/components/page/page_content/page_content.js +0 -117
  324. package/lib/components/page/page_content/page_content_body.js +0 -77
  325. package/lib/components/page/page_content/page_content_header.js +0 -50
  326. package/lib/components/page/page_content/page_content_header_section.js +0 -41
  327. package/lib/components/page/page_side_bar/index.js +0 -12
  328. package/lib/components/page/page_side_bar/page_side_bar.js +0 -67
  329. package/lib/components/page/page_template.js +0 -598
  330. package/optimize/es/components/page/page_content/index.js +0 -12
  331. package/optimize/es/components/page/page_content/page_content.js +0 -45
  332. package/optimize/es/components/page/page_content/page_content_body.js +0 -45
  333. package/optimize/es/components/page/page_content/page_content_header.js +0 -30
  334. package/optimize/es/components/page/page_content/page_content_header_section.js +0 -26
  335. package/optimize/es/components/page/page_side_bar/index.js +0 -9
  336. package/optimize/es/components/page/page_side_bar/page_side_bar.js +0 -44
  337. package/optimize/es/components/page/page_template.js +0 -325
  338. package/optimize/lib/components/page/page_content/index.js +0 -33
  339. package/optimize/lib/components/page/page_content/page_content.js +0 -52
  340. package/optimize/lib/components/page/page_content/page_content_body.js +0 -53
  341. package/optimize/lib/components/page/page_content/page_content_header.js +0 -37
  342. package/optimize/lib/components/page/page_content/page_content_header_section.js +0 -33
  343. package/optimize/lib/components/page/page_side_bar/index.js +0 -12
  344. package/optimize/lib/components/page/page_side_bar/page_side_bar.js +0 -51
  345. package/optimize/lib/components/page/page_template.js +0 -332
  346. package/src/components/context_menu/_context_menu.scss +0 -27
  347. package/src/components/context_menu/_context_menu_item.scss +0 -65
  348. package/src/components/context_menu/_context_menu_panel.scss +0 -101
  349. package/src/components/context_menu/_index.scss +0 -3
  350. package/src/components/page/_index.scss +0 -2
  351. package/src/components/page/page_content/_index.scss +0 -4
  352. package/src/components/page/page_content/_page_content.scss +0 -25
  353. package/src/components/page/page_content/_page_content_body.scss +0 -19
  354. package/src/components/page/page_content/_page_content_header.scss +0 -20
  355. package/src/components/page/page_content/_page_content_header_section.scss +0 -17
  356. package/src/components/page/page_side_bar/_index.scss +0 -1
  357. package/src/components/page/page_side_bar/_page_side_bar.scss +0 -31
  358. package/test-env/components/page/page_content/index.js +0 -33
  359. package/test-env/components/page/page_content/page_content.js +0 -116
  360. package/test-env/components/page/page_content/page_content_body.js +0 -73
  361. package/test-env/components/page/page_content/page_content_header.js +0 -49
  362. package/test-env/components/page/page_content/page_content_header_section.js +0 -40
  363. package/test-env/components/page/page_side_bar/index.js +0 -12
  364. package/test-env/components/page/page_side_bar/page_side_bar.js +0 -66
  365. package/test-env/components/page/page_template.js +0 -594
@@ -44,7 +44,19 @@ export var EuiAccordionClass = /*#__PURE__*/function (_Component) {
44
44
  var forceState = _this.props.forceState;
45
45
  if (forceState) {
46
46
  var _this$props$onToggle, _this$props;
47
- (_this$props$onToggle = (_this$props = _this.props).onToggle) === null || _this$props$onToggle === void 0 ? void 0 : _this$props$onToggle.call(_this$props, forceState === 'open' ? false : true);
47
+ var nextState = !_this.isOpen;
48
+ (_this$props$onToggle = (_this$props = _this.props).onToggle) === null || _this$props$onToggle === void 0 ? void 0 : _this$props$onToggle.call(_this$props, nextState);
49
+
50
+ // If the accordion should theoretically be opened, wait a tick (allows
51
+ // consumer state to update) and attempt to focus the child content.
52
+ // NOTE: Even if the accordion does not actually open, this is fine -
53
+ // the `inert` property on the hidden children will prevent focus
54
+ if (nextState === true) {
55
+ requestAnimationFrame(function () {
56
+ var _this$accordionChildr;
57
+ (_this$accordionChildr = _this.accordionChildrenEl) === null || _this$accordionChildr === void 0 ? void 0 : _this$accordionChildr.focus();
58
+ });
59
+ }
48
60
  } else {
49
61
  _this.setState(function (prevState) {
50
62
  return {
@@ -53,9 +65,21 @@ export var EuiAccordionClass = /*#__PURE__*/function (_Component) {
53
65
  }, function () {
54
66
  var _this$props$onToggle2, _this$props2;
55
67
  (_this$props$onToggle2 = (_this$props2 = _this.props).onToggle) === null || _this$props$onToggle2 === void 0 ? void 0 : _this$props$onToggle2.call(_this$props2, _this.state.isOpen);
68
+
69
+ // If the accordion is open, programmatically move focus
70
+ // from the accordion trigger to the child content
71
+ if (_this.state.isOpen) {
72
+ var _this$accordionChildr2;
73
+ (_this$accordionChildr2 = _this.accordionChildrenEl) === null || _this$accordionChildr2 === void 0 ? void 0 : _this$accordionChildr2.focus();
74
+ }
56
75
  });
57
76
  }
58
77
  });
78
+ // Used to focus the accordion children on user trigger click only (vs controlled/programmatic open)
79
+ _defineProperty(_assertThisInitialized(_this), "accordionChildrenEl", null);
80
+ _defineProperty(_assertThisInitialized(_this), "accordionChildrenRef", function (node) {
81
+ _this.accordionChildrenEl = node;
82
+ });
59
83
  _defineProperty(_assertThisInitialized(_this), "generatedId", htmlIdGenerator()());
60
84
  return _this;
61
85
  }
@@ -122,7 +146,8 @@ export var EuiAccordionClass = /*#__PURE__*/function (_Component) {
122
146
  paddingSize: paddingSize,
123
147
  isLoading: isLoading,
124
148
  isLoadingMessage: isLoadingMessage,
125
- isOpen: this.isOpen
149
+ isOpen: this.isOpen,
150
+ accordionChildrenRef: this.accordionChildrenRef
126
151
  }, children));
127
152
  }
128
153
  }]);
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["children", "paddingSize", "isLoading", "isLoadingMessage", "isOpen"];
4
+ var _excluded = ["children", "accordionChildrenRef", "paddingSize", "isLoading", "isLoadingMessage", "isOpen"];
5
5
  /*
6
6
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
7
7
  * or more contributor license agreements. Licensed under the Elastic License
@@ -10,15 +10,16 @@ var _excluded = ["children", "paddingSize", "isLoading", "isLoadingMessage", "is
10
10
  * Side Public License, v 1.
11
11
  */
12
12
 
13
- import React, { useRef, useCallback, useMemo, useState } from 'react';
13
+ import React, { useCallback, useMemo, useState } from 'react';
14
14
  import classNames from 'classnames';
15
- import { useEuiTheme, useUpdateEffect } from '../../../services';
15
+ import { useEuiTheme } from '../../../services';
16
16
  import { EuiResizeObserver } from '../../observer/resize_observer';
17
17
  import { EuiAccordionChildrenLoading } from './accordion_children_loading';
18
18
  import { euiAccordionChildrenStyles, euiAccordionChildWrapperStyles } from './accordion_children.styles';
19
19
  import { jsx as ___EmotionJSX } from "@emotion/react";
20
20
  export var EuiAccordionChildren = function EuiAccordionChildren(_ref) {
21
21
  var children = _ref.children,
22
+ accordionChildrenRef = _ref.accordionChildrenRef,
22
23
  paddingSize = _ref.paddingSize,
23
24
  isLoading = _ref.isLoading,
24
25
  isLoadingMessage = _ref.isLoadingMessage,
@@ -39,7 +40,6 @@ export var EuiAccordionChildren = function EuiAccordionChildren(_ref) {
39
40
  */
40
41
  var wrapperStyles = euiAccordionChildWrapperStyles(euiTheme);
41
42
  var wrapperCssStyles = [wrapperStyles.euiAccordion__childWrapper, isOpen ? wrapperStyles.isOpen : wrapperStyles.isClosed];
42
- var wrapperRef = useRef(null);
43
43
 
44
44
  /**
45
45
  * Update the accordion wrapper height whenever the accordion opens, and also
@@ -58,20 +58,11 @@ export var EuiAccordionChildren = function EuiAccordionChildren(_ref) {
58
58
  blockSize: isOpen ? contentHeight : 0
59
59
  };
60
60
  }, [isOpen, contentHeight]);
61
-
62
- /**
63
- * Focus the children wrapper when the accordion is opened,
64
- * but not if the accordion is initially open on mount
65
- */
66
- useUpdateEffect(function () {
67
- var _wrapperRef$current;
68
- if (isOpen) (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.focus();
69
- }, [isOpen]);
70
61
  return ___EmotionJSX("div", _extends({}, rest, {
71
62
  className: "euiAccordion__childWrapper",
72
63
  css: wrapperCssStyles,
73
64
  style: heightInlineStyle,
74
- ref: wrapperRef,
65
+ ref: accordionChildrenRef,
75
66
  role: "region",
76
67
  tabIndex: -1
77
68
  // @ts-expect-error - inert property not yet available in React TS defs. TODO: Remove this once https://github.com/DefinitelyTyped/DefinitelyTyped/pull/60822 is merged
@@ -218,18 +218,27 @@ export var EuiBasicTable = /*#__PURE__*/function (_Component) {
218
218
  var _ref5, _this$props$paginatio, _this$props$paginatio2, _this$context$EuiTabl;
219
219
  return (_ref5 = (_this$props$paginatio = (_this$props$paginatio2 = this.props.pagination) === null || _this$props$paginatio2 === void 0 ? void 0 : _this$props$paginatio2.pageSize) !== null && _this$props$paginatio !== void 0 ? _this$props$paginatio : (_this$context$EuiTabl = this.context.EuiTablePagination) === null || _this$context$EuiTabl === void 0 ? void 0 : _this$context$EuiTabl.itemsPerPage) !== null && _ref5 !== void 0 ? _ref5 : euiTablePaginationDefaults.itemsPerPage;
220
220
  }
221
+ }, {
222
+ key: "isSelectionControlled",
223
+ get: function get() {
224
+ var _this$props$selection;
225
+ return !!((_this$props$selection = this.props.selection) !== null && _this$props$selection !== void 0 && _this$props$selection.selected);
226
+ }
221
227
  }, {
222
228
  key: "getInitialSelection",
223
229
  value: function getInitialSelection() {
230
+ if (this.isSelectionControlled) return;
224
231
  if (this.props.selection && this.props.selection.initialSelected && !this.state.initialSelectionRendered && this.props.items.length > 0) {
225
232
  this.setState({
226
- selection: this.props.selection.initialSelected
227
- });
228
- this.setState({
233
+ selection: this.props.selection.initialSelected,
229
234
  initialSelectionRendered: true
230
235
  });
231
236
  }
232
237
  }
238
+
239
+ /**
240
+ * @deprecated Use `selection.selected` instead to declaratively control table selection
241
+ */
233
242
  }, {
234
243
  key: "setSelection",
235
244
  value: function setSelection(newSelection) {
@@ -252,15 +261,15 @@ export var EuiBasicTable = /*#__PURE__*/function (_Component) {
252
261
  }
253
262
  }, {
254
263
  key: "changeSelection",
255
- value: function changeSelection(selection) {
256
- if (!this.props.selection) {
257
- return;
258
- }
259
- this.setState({
260
- selection: selection
261
- });
262
- if (this.props.selection.onSelectionChange) {
263
- this.props.selection.onSelectionChange(selection);
264
+ value: function changeSelection(changedSelection) {
265
+ var _selection$onSelectio;
266
+ var selection = this.props.selection;
267
+ if (!selection) return;
268
+ (_selection$onSelectio = selection.onSelectionChange) === null || _selection$onSelectio === void 0 ? void 0 : _selection$onSelectio.call(selection, changedSelection);
269
+ if (!this.isSelectionControlled) {
270
+ this.setState({
271
+ selection: changedSelection
272
+ });
264
273
  }
265
274
  }
266
275
  }, {
@@ -948,16 +957,30 @@ export var EuiBasicTable = /*#__PURE__*/function (_Component) {
948
957
  selection: []
949
958
  };
950
959
  }
951
- var itemId = nextProps.itemId;
952
- var selection = prevState.selection.filter(function (selectedItem) {
953
- return nextProps.items.findIndex(function (item) {
960
+ var controlledSelection = nextProps.selection.selected;
961
+ var unfilteredSelection = controlledSelection !== null && controlledSelection !== void 0 ? controlledSelection : prevState.selection;
962
+
963
+ // Ensure we're not including selections that aren't in the
964
+ // current `items` array (affected by pagination)
965
+ var itemId = nextProps.itemId,
966
+ items = nextProps.items;
967
+ var selection = unfilteredSelection.filter(function (selectedItem) {
968
+ return items.findIndex(function (item) {
954
969
  return getItemId(item, itemId) === getItemId(selectedItem, itemId);
955
970
  }) !== -1;
956
971
  });
957
- if (selection.length !== prevState.selection.length) {
958
- if (nextProps.selection.onSelectionChange) {
959
- nextProps.selection.onSelectionChange(selection);
960
- }
972
+
973
+ // If some selected items were filtered out, update state and callback
974
+ if (selection.length !== unfilteredSelection.length) {
975
+ var _nextProps$selection$, _nextProps$selection;
976
+ (_nextProps$selection$ = (_nextProps$selection = nextProps.selection).onSelectionChange) === null || _nextProps$selection$ === void 0 ? void 0 : _nextProps$selection$.call(_nextProps$selection, selection);
977
+ return {
978
+ selection: selection
979
+ };
980
+ }
981
+
982
+ // Always update selection state from props if controlled
983
+ if (controlledSelection) {
961
984
  return {
962
985
  selection: selection
963
986
  };
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
- var _excluded = ["className", "buttonRef", "color", "fill"];
3
+ var _excluded = ["className", "buttonRef", "size", "color", "fill"];
5
4
  /*
6
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
7
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -14,54 +13,37 @@ import React from 'react';
14
13
  import classNames from 'classnames';
15
14
  import { BUTTON_COLORS, useEuiButtonColorCSS, useEuiButtonFocusCSS } from '../../themes/amsterdam/global_styling/mixins/button';
16
15
  import { EuiButtonDisplay, isButtonDisabled } from './button_display/_button_display';
17
- import { EuiThemeProvider } from '../../services';
18
16
  import { jsx as ___EmotionJSX } from "@emotion/react";
19
- export var COLORS = [].concat(_toConsumableArray(BUTTON_COLORS), ['ghost']);
17
+ export var COLORS = BUTTON_COLORS;
20
18
  export var SIZES = ['s', 'm'];
21
19
  /**
22
20
  * EuiButton is largely responsible for providing relevant props
23
21
  * and the logic for element-specific attributes
24
22
  */
25
- export var EuiButton = function EuiButton(props) {
26
- var className = props.className,
27
- buttonRef = props.buttonRef,
28
- _props$color = props.color,
29
- _color = _props$color === void 0 ? 'primary' : _props$color,
30
- fill = props.fill,
31
- rest = _objectWithoutProperties(props, _excluded);
32
- var buttonIsDisabled = isButtonDisabled({
23
+ export var EuiButton = function EuiButton(_ref) {
24
+ var className = _ref.className,
25
+ buttonRef = _ref.buttonRef,
26
+ _ref$size = _ref.size,
27
+ size = _ref$size === void 0 ? 'm' : _ref$size,
28
+ _ref$color = _ref.color,
29
+ color = _ref$color === void 0 ? 'primary' : _ref$color,
30
+ fill = _ref.fill,
31
+ rest = _objectWithoutProperties(_ref, _excluded);
32
+ var isDisabled = isButtonDisabled({
33
33
  href: rest.href,
34
34
  isDisabled: rest.isDisabled || rest.disabled,
35
35
  isLoading: rest.isLoading
36
36
  });
37
- var color = buttonIsDisabled ? 'disabled' : _color;
38
37
  var buttonColorStyles = useEuiButtonColorCSS({
39
38
  display: fill ? 'fill' : 'base'
40
- })[color === 'ghost' ? 'text' : color];
39
+ })[isDisabled ? 'disabled' : color];
41
40
  var buttonFocusStyle = useEuiButtonFocusCSS();
42
41
  var classes = classNames('euiButton', className);
43
42
  var cssStyles = [buttonColorStyles, buttonFocusStyle];
44
- if (_color === 'ghost') {
45
- // INCEPTION: If `ghost`, re-implement with a wrapping dark mode theme provider
46
- return ___EmotionJSX(EuiThemeProvider, {
47
- colorMode: "dark",
48
- wrapperProps: {
49
- cloneElement: true
50
- }
51
- }, ___EmotionJSX(EuiButton, _extends({}, props, {
52
- color: "text"
53
- })));
54
- }
55
43
  return ___EmotionJSX(EuiButtonDisplay, _extends({
56
44
  className: classes,
57
45
  css: cssStyles,
58
- ref: buttonRef
46
+ ref: buttonRef,
47
+ size: size
59
48
  }, rest));
60
- };
61
- EuiButton.displayName = 'EuiButton';
62
-
63
- // Use defaultProps for simple pass-through props
64
- EuiButton.defaultProps = {
65
- size: 'm',
66
- color: 'primary'
67
49
  };
@@ -1,5 +1,5 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
4
  var _excluded = ["children", "className", "iconType", "iconSide", "iconSize", "color", "size", "flush", "isDisabled", "disabled", "isLoading", "href", "target", "rel", "type", "buttonRef", "contentProps", "textProps", "isSelected"];
5
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -14,7 +14,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
14
14
 
15
15
  import React from 'react';
16
16
  import classNames from 'classnames';
17
- import { useEuiTheme, EuiThemeProvider, getSecureRelForTarget } from '../../../services';
17
+ import { useEuiTheme, getSecureRelForTarget } from '../../../services';
18
18
  import { EuiButtonDisplayContent } from '../button_display/_button_display_content';
19
19
  import { useEuiButtonColorCSS } from '../../../themes/amsterdam/global_styling/mixins/button';
20
20
  import { isButtonDisabled } from '../button_display/_button_display';
@@ -28,55 +28,43 @@ export var FLUSH_TYPES = ['left', 'right', 'both'];
28
28
  * `iconType`, `iconSide`, and `textProps`
29
29
  */
30
30
 
31
- export var EuiButtonEmpty = function EuiButtonEmpty(props) {
32
- var children = props.children,
33
- className = props.className,
34
- iconType = props.iconType,
35
- _props$iconSide = props.iconSide,
36
- iconSide = _props$iconSide === void 0 ? 'left' : _props$iconSide,
37
- _props$iconSize = props.iconSize,
38
- iconSize = _props$iconSize === void 0 ? 'm' : _props$iconSize,
39
- _props$color = props.color,
40
- _color = _props$color === void 0 ? 'primary' : _props$color,
41
- _props$size = props.size,
42
- size = _props$size === void 0 ? 'm' : _props$size,
43
- flush = props.flush,
44
- _isDisabled = props.isDisabled,
45
- disabled = props.disabled,
46
- isLoading = props.isLoading,
47
- href = props.href,
48
- target = props.target,
49
- rel = props.rel,
50
- _props$type = props.type,
51
- type = _props$type === void 0 ? 'button' : _props$type,
52
- buttonRef = props.buttonRef,
53
- contentProps = props.contentProps,
54
- textProps = props.textProps,
55
- isSelected = props.isSelected,
56
- rest = _objectWithoutProperties(props, _excluded);
31
+ export var EuiButtonEmpty = function EuiButtonEmpty(_ref) {
32
+ var children = _ref.children,
33
+ className = _ref.className,
34
+ iconType = _ref.iconType,
35
+ _ref$iconSide = _ref.iconSide,
36
+ iconSide = _ref$iconSide === void 0 ? 'left' : _ref$iconSide,
37
+ _ref$iconSize = _ref.iconSize,
38
+ iconSize = _ref$iconSize === void 0 ? 'm' : _ref$iconSize,
39
+ _ref$color = _ref.color,
40
+ color = _ref$color === void 0 ? 'primary' : _ref$color,
41
+ _ref$size = _ref.size,
42
+ size = _ref$size === void 0 ? 'm' : _ref$size,
43
+ flush = _ref.flush,
44
+ _isDisabled = _ref.isDisabled,
45
+ disabled = _ref.disabled,
46
+ isLoading = _ref.isLoading,
47
+ href = _ref.href,
48
+ target = _ref.target,
49
+ rel = _ref.rel,
50
+ _ref$type = _ref.type,
51
+ type = _ref$type === void 0 ? 'button' : _ref$type,
52
+ buttonRef = _ref.buttonRef,
53
+ contentProps = _ref.contentProps,
54
+ textProps = _ref.textProps,
55
+ isSelected = _ref.isSelected,
56
+ rest = _objectWithoutProperties(_ref, _excluded);
57
57
  var isDisabled = isButtonDisabled({
58
58
  isDisabled: _isDisabled || disabled,
59
59
  href: href,
60
60
  isLoading: isLoading
61
61
  });
62
- var color = isDisabled ? 'disabled' : _color === 'ghost' ? 'text' : _color;
63
62
  var buttonColorStyles = useEuiButtonColorCSS({
64
63
  display: 'empty'
65
64
  });
66
65
  var euiTheme = useEuiTheme();
67
66
  var styles = euiButtonEmptyStyles(euiTheme);
68
- var cssStyles = [styles.euiButtonEmpty, styles[size], buttonColorStyles[color], flush && styles.flush, flush && styles[flush], isDisabled && styles.isDisabled];
69
- if (_color === 'ghost') {
70
- // INCEPTION: If `ghost`, re-implement with a wrapping dark mode theme provider
71
- return ___EmotionJSX(EuiThemeProvider, {
72
- colorMode: "dark",
73
- wrapperProps: {
74
- cloneElement: true
75
- }
76
- }, ___EmotionJSX(EuiButtonEmpty, _extends({}, props, {
77
- color: "text"
78
- })));
79
- }
67
+ var cssStyles = [styles.euiButtonEmpty, styles[size], buttonColorStyles[isDisabled ? 'disabled' : color], flush && styles.flush, flush && styles[flush], isDisabled && styles.isDisabled];
80
68
  var classes = classNames('euiButtonEmpty', className);
81
69
  var contentClassNames = classNames('euiButtonEmpty__content', contentProps === null || contentProps === void 0 ? void 0 : contentProps.className);
82
70
  var textClassNames = classNames('euiButtonEmpty__text', textProps === null || textProps === void 0 ? void 0 : textProps.className);
@@ -11,7 +11,7 @@ var _excluded = ["className", "iconType", "iconSize", "color", "isDisabled", "di
11
11
 
12
12
  import React from 'react';
13
13
  import classNames from 'classnames';
14
- import { EuiThemeProvider, getSecureRelForTarget, useEuiTheme } from '../../../services';
14
+ import { getSecureRelForTarget, useEuiTheme } from '../../../services';
15
15
  import { EuiIcon } from '../../icon';
16
16
  import { EuiLoadingSpinner } from '../../loading';
17
17
  import { useEuiButtonColorCSS, useEuiButtonFocusCSS } from '../../../themes/amsterdam/global_styling/mixins/button';
@@ -20,28 +20,28 @@ import { euiButtonIconStyles, _emptyHoverStyles } from './button_icon.styles';
20
20
  import { jsx as ___EmotionJSX } from "@emotion/react";
21
21
  export var SIZES = ['xs', 's', 'm'];
22
22
  export var DISPLAYS = ['base', 'empty', 'fill'];
23
- export var EuiButtonIcon = function EuiButtonIcon(props) {
24
- var className = props.className,
25
- iconType = props.iconType,
26
- _props$iconSize = props.iconSize,
27
- iconSize = _props$iconSize === void 0 ? 'm' : _props$iconSize,
28
- _props$color = props.color,
29
- _color = _props$color === void 0 ? 'primary' : _props$color,
30
- _isDisabled = props.isDisabled,
31
- disabled = props.disabled,
32
- href = props.href,
33
- _props$type = props.type,
34
- type = _props$type === void 0 ? 'button' : _props$type,
35
- _props$display = props.display,
36
- display = _props$display === void 0 ? 'empty' : _props$display,
37
- target = props.target,
38
- rel = props.rel,
39
- _props$size = props.size,
40
- size = _props$size === void 0 ? 'xs' : _props$size,
41
- buttonRef = props.buttonRef,
42
- isSelected = props.isSelected,
43
- isLoading = props.isLoading,
44
- rest = _objectWithoutProperties(props, _excluded);
23
+ export var EuiButtonIcon = function EuiButtonIcon(_ref) {
24
+ var className = _ref.className,
25
+ iconType = _ref.iconType,
26
+ _ref$iconSize = _ref.iconSize,
27
+ iconSize = _ref$iconSize === void 0 ? 'm' : _ref$iconSize,
28
+ _ref$color = _ref.color,
29
+ color = _ref$color === void 0 ? 'primary' : _ref$color,
30
+ _isDisabled = _ref.isDisabled,
31
+ disabled = _ref.disabled,
32
+ href = _ref.href,
33
+ _ref$type = _ref.type,
34
+ type = _ref$type === void 0 ? 'button' : _ref$type,
35
+ _ref$display = _ref.display,
36
+ display = _ref$display === void 0 ? 'empty' : _ref$display,
37
+ target = _ref.target,
38
+ rel = _ref.rel,
39
+ _ref$size = _ref.size,
40
+ size = _ref$size === void 0 ? 'xs' : _ref$size,
41
+ buttonRef = _ref.buttonRef,
42
+ isSelected = _ref.isSelected,
43
+ isLoading = _ref.isLoading,
44
+ rest = _objectWithoutProperties(_ref, _excluded);
45
45
  var euiThemeContext = useEuiTheme();
46
46
  var isDisabled = isButtonDisabled({
47
47
  isDisabled: _isDisabled || disabled,
@@ -53,26 +53,14 @@ export var EuiButtonIcon = function EuiButtonIcon(props) {
53
53
  if (!rest['aria-label'] && !rest['aria-labelledby'] && !isAriaHidden) {
54
54
  console.warn("EuiButtonIcon requires aria-label or aria-labelledby to be specified because icon-only\n buttons are screen-reader-inaccessible without them.");
55
55
  }
56
- var color = isDisabled ? 'disabled' : _color === 'ghost' ? 'text' : _color;
57
56
  var buttonColorStyles = useEuiButtonColorCSS({
58
57
  display: display
59
58
  });
60
59
  var buttonFocusStyle = useEuiButtonFocusCSS();
60
+ var emptyHoverStyles = display === 'empty' && !isDisabled && _emptyHoverStyles(euiThemeContext, color);
61
61
  var styles = euiButtonIconStyles(euiThemeContext);
62
- var emptyHoverStyles = _emptyHoverStyles(euiThemeContext, color);
63
- var cssStyles = [styles.euiButtonIcon, styles[size], buttonColorStyles[color], buttonFocusStyle, display === 'empty' && emptyHoverStyles, isDisabled && styles.isDisabled];
62
+ var cssStyles = [styles.euiButtonIcon, styles[size], buttonColorStyles[isDisabled ? 'disabled' : color], buttonFocusStyle, emptyHoverStyles, isDisabled && styles.isDisabled];
64
63
  var classes = classNames('euiButtonIcon', className);
65
- if (_color === 'ghost') {
66
- // INCEPTION: If `ghost`, re-implement with a wrapping dark mode theme provider
67
- return ___EmotionJSX(EuiThemeProvider, {
68
- colorMode: "dark",
69
- wrapperProps: {
70
- cloneElement: true
71
- }
72
- }, ___EmotionJSX(EuiButtonIcon, _extends({}, props, {
73
- color: "text"
74
- })));
75
- }
76
64
 
77
65
  // Add an icon to the button if one exists.
78
66
  var buttonIcon;
@@ -71,6 +71,15 @@ var _EuiCollapsibleNavBeta = function _EuiCollapsibleNavBeta(_ref) {
71
71
  _useState6 = _slicedToArray(_useState5, 2),
72
72
  isOverlayFullWidth = _useState6[0],
73
73
  setIsOverlayFullWidth = _useState6[1];
74
+ var _useState7 = useState(false),
75
+ _useState8 = _slicedToArray(_useState7, 2),
76
+ isOverlayOpen = _useState8[0],
77
+ setIsOverlayOpen = _useState8[1];
78
+ var toggleOverlayFlyout = useCallback(function () {
79
+ setIsOverlayOpen(function (isOpen) {
80
+ return !isOpen;
81
+ });
82
+ }, []);
74
83
  var flyoutType = isOverlay ? 'overlay' : 'push';
75
84
  var isPush = !isOverlay;
76
85
 
@@ -87,12 +96,6 @@ var _EuiCollapsibleNavBeta = function _EuiCollapsibleNavBeta(_ref) {
87
96
  return window.removeEventListener('resize', onWindowResize);
88
97
  };
89
98
  }, [_width]);
90
-
91
- // If the nav was previously uncollapsed and shrinks down to the
92
- // overlay flyout, default to its hidden/collapsed state
93
- useEffect(function () {
94
- if (isOverlay) setIsCollapsed(true);
95
- }, [isOverlay]);
96
99
  var width = useMemo(function () {
97
100
  if (isOverlayFullWidth) return '100%';
98
101
  if (isPush && isCollapsed) return headerHeight;
@@ -141,16 +144,17 @@ var _EuiCollapsibleNavBeta = function _EuiCollapsibleNavBeta(_ref) {
141
144
  onClose: onClose,
142
145
  hideCloseButton: true
143
146
  }), children);
144
- var hideFlyout = isOverlay && isCollapsed;
147
+ var hideFlyout = isOverlay && !isOverlayOpen;
145
148
  return ___EmotionJSX(EuiCollapsibleNavContext.Provider, {
146
149
  value: {
147
150
  isPush: isPush,
148
151
  isCollapsed: isCollapsed,
152
+ isOverlayOpen: isOverlayOpen,
149
153
  side: side
150
154
  }
151
155
  }, ___EmotionJSX(EuiCollapsibleNavButton, {
152
156
  ref: buttonRef,
153
- onClick: toggleCollapsed,
157
+ onClick: isPush ? toggleCollapsed : toggleOverlayFlyout,
154
158
  "aria-controls": flyoutID
155
159
  }), !hideFlyout && flyout);
156
160
  };
@@ -10,7 +10,7 @@ import { css } from '@emotion/react';
10
10
  import { logicalCSS } from '../../global_styling';
11
11
  import { euiShadowFlat } from '../../themes';
12
12
  import { euiHeaderVariables } from '../header/header.styles';
13
- import { euiCollapsibleNavBodyStyles } from './collapsible_nav_body_footer.styles';
13
+ import { hideScrollbars } from './collapsible_nav_body_footer.styles';
14
14
  export var euiCollapsibleNavBetaStyles = function euiCollapsibleNavBetaStyles(euiThemeContext) {
15
15
  var euiTheme = euiThemeContext.euiTheme;
16
16
 
@@ -24,7 +24,7 @@ export var euiCollapsibleNavBetaStyles = function euiCollapsibleNavBetaStyles(eu
24
24
  left: /*#__PURE__*/css(logicalCSS('border-right', euiTheme.border.thin), ";;label:left;"),
25
25
  right: /*#__PURE__*/css(logicalCSS('border-left', euiTheme.border.thin), ";;label:right;"),
26
26
  isPush: /*#__PURE__*/css(euiShadowFlat(euiThemeContext), ";;label:isPush;"),
27
- isPushCollapsed: /*#__PURE__*/css(euiCollapsibleNavBodyStyles._isPushCollapsed, ";;label:isPushCollapsed;"),
27
+ isPushCollapsed: /*#__PURE__*/css(hideScrollbars, ";;label:isPushCollapsed;"),
28
28
  isOverlayFullWidth: /*#__PURE__*/css("&.euiFlyout{", logicalCSS('max-width', '100% !important'), ";};label:isOverlayFullWidth;")
29
29
  };
30
30
  };
@@ -46,9 +46,12 @@ export var EuiCollapsibleNavFooter = function EuiCollapsibleNavFooter(_ref2) {
46
46
  var className = _ref2.className,
47
47
  props = _objectWithoutProperties(_ref2, _excluded2);
48
48
  var classes = classNames('euiCollapsibleNav__footer', className);
49
+ var _useContext2 = useContext(EuiCollapsibleNavContext),
50
+ isCollapsed = _useContext2.isCollapsed,
51
+ isPush = _useContext2.isPush;
49
52
  var euiTheme = useEuiTheme();
50
53
  var styles = euiCollapsibleNavFooterStyles(euiTheme);
51
- var cssStyles = [styles.euiCollapsibleNav__footer];
54
+ var cssStyles = [styles.euiCollapsibleNav__footer, isCollapsed && isPush && styles.isPushCollapsed];
52
55
  return ___EmotionJSX(EuiFlyoutFooter, _extends({
53
56
  className: classes,
54
57
  css: cssStyles
@@ -7,19 +7,23 @@
7
7
  */
8
8
 
9
9
  import { css } from '@emotion/react';
10
- import { logicalCSS } from '../../global_styling';
10
+ import { logicalCSS, euiYScrollWithShadows } from '../../global_styling';
11
+
12
+ // Hide the scrollbar for docked mode (while still keeping the nav scrollable)
13
+ // Otherwise if scrollbars are visible, button icon visibility suffers.
14
+ export var hideScrollbars = "\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none; /* Chrome, Edge, & Safari */\n }\n";
11
15
  export var euiCollapsibleNavBodyStyles = {
12
16
  // In case things get really dire responsively, ensure the footer doesn't overtake the body
13
17
  euiCollapsibleNav__body: /*#__PURE__*/css(logicalCSS('min-height', '50%'), ";;label:euiCollapsibleNav__body;"),
14
- get isPushCollapsed() {
15
- return /*#__PURE__*/css(".euiFlyoutBody__overflow{", this._isPushCollapsed, ";};label:isPushCollapsed;");
16
- },
17
- // CSS is reused by main euiCollapsibleNav styles in case the body component isn't used
18
- _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 "
18
+ isPushCollapsed: /*#__PURE__*/css(".euiFlyoutBody__overflow{", hideScrollbars, ";};label:isPushCollapsed;")
19
19
  };
20
- export var euiCollapsibleNavFooterStyles = function euiCollapsibleNavFooterStyles(_ref) {
21
- var euiTheme = _ref.euiTheme;
20
+ export var euiCollapsibleNavFooterStyles = function euiCollapsibleNavFooterStyles(euiThemeContext) {
21
+ var euiTheme = euiThemeContext.euiTheme;
22
22
  return {
23
- euiCollapsibleNav__footer: /*#__PURE__*/css("background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('border-top', euiTheme.border.thin), ";;label:euiCollapsibleNav__footer;")
23
+ euiCollapsibleNav__footer: /*#__PURE__*/css("background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('border-top', euiTheme.border.thin), " ", euiYScrollWithShadows(euiThemeContext, {
24
+ side: 'end',
25
+ height: 'auto'
26
+ }), " flex-shrink:0;;label:euiCollapsibleNav__footer;"),
27
+ isPushCollapsed: /*#__PURE__*/css(hideScrollbars, ";;label:isPushCollapsed;")
24
28
  };
25
29
  };
@@ -24,25 +24,30 @@ export var EuiCollapsibleNavButton = /*#__PURE__*/forwardRef(function (_ref, ref
24
24
  var _useContext = useContext(EuiCollapsibleNavContext),
25
25
  side = _useContext.side,
26
26
  isPush = _useContext.isPush,
27
- isCollapsed = _useContext.isCollapsed;
27
+ isCollapsed = _useContext.isCollapsed,
28
+ isOverlayOpen = _useContext.isOverlayOpen;
28
29
  var euiTheme = useEuiTheme();
29
30
  var styles = euiCollapsibleNavButtonWrapperStyles(euiTheme);
30
31
  var cssStyles = [styles.euiCollapsibleNavButtonWrapper, styles[side]];
31
32
  var buttonStyles = [styles.euiCollapsibleNavButton, css];
32
33
  var classes = classNames('euiCollapsibleNavButton', className);
34
+ var toggleExpandLabel = useEuiI18n('euiCollapsibleNavButton.ariaLabelExpand', 'Expand navigation');
35
+ var toggleCollapseLabel = useEuiI18n('euiCollapsibleNavButton.ariaLabelCollapse', 'Collapse navigation');
36
+ var toggleOpenLabel = useEuiI18n('euiCollapsibleNavButton.ariaLabelOpen', 'Open navigation');
37
+ var toggleCloseLabel = useEuiI18n('euiCollapsibleNavButton.ariaLabelClose', 'Close navigation');
38
+ var ariaLabel;
33
39
  var iconType;
34
40
  if (isPush) {
41
+ ariaLabel = isCollapsed ? toggleExpandLabel : toggleCollapseLabel;
35
42
  if (side === 'left') {
36
43
  iconType = isCollapsed ? 'menuRight' : 'menuLeft';
37
44
  } else {
38
45
  iconType = isCollapsed ? 'menuLeft' : 'menuRight';
39
46
  }
40
47
  } else {
41
- iconType = isCollapsed ? 'menu' : 'cross';
48
+ ariaLabel = isOverlayOpen ? toggleCloseLabel : toggleOpenLabel;
49
+ iconType = isOverlayOpen ? 'cross' : 'menu';
42
50
  }
43
- var toggleOpenLabel = useEuiI18n('euiCollapsibleNavButton.ariaLabelOpen', 'Toggle navigation open');
44
- var toggleCloselLabel = useEuiI18n('euiCollapsibleNavButton.ariaLabelClose', 'Toggle navigation closed');
45
- var ariaLabel = isCollapsed ? toggleOpenLabel : toggleCloselLabel;
46
51
  return ___EmotionJSX("div", {
47
52
  className: "euiCollapsibleNavButtonWrapper",
48
53
  css: cssStyles,
@@ -55,8 +60,8 @@ export var EuiCollapsibleNavButton = /*#__PURE__*/forwardRef(function (_ref, ref
55
60
  color: "text",
56
61
  iconType: iconType,
57
62
  "aria-label": ariaLabel,
58
- "aria-pressed": !isCollapsed,
59
- "aria-expanded": !isCollapsed
63
+ "aria-pressed": isPush ? !isCollapsed : isOverlayOpen,
64
+ "aria-expanded": isPush ? !isCollapsed : isOverlayOpen
60
65
  }, rest)));
61
66
  });
62
67
  EuiCollapsibleNavButton.displayName = 'EuiCollapsibleNavButton';