@elastic/eui 89.1.0 → 91.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/dist/eui_charts_theme.js +1 -15
  2. package/dist/eui_charts_theme.js.map +1 -1
  3. package/dist/eui_theme_dark.css +114 -547
  4. package/dist/eui_theme_dark.min.css +1 -1
  5. package/dist/eui_theme_light.css +114 -547
  6. package/dist/eui_theme_light.min.css +1 -1
  7. package/es/components/accessibility/skip_link/skip_link.js +1 -2
  8. package/es/components/accordion/accordion.js +40 -4
  9. package/es/components/accordion/accordion_children/accordion_children.js +10 -17
  10. package/es/components/basic_table/basic_table.js +60 -23
  11. package/es/components/basic_table/collapsed_item_actions.js +1 -1
  12. package/es/components/basic_table/in_memory_table.js +18 -4
  13. package/es/components/breadcrumbs/breadcrumb.js +5 -5
  14. package/es/components/breadcrumbs/breadcrumbs.js +5 -5
  15. package/es/components/button/button.js +17 -45
  16. package/es/components/button/button_display/_button_display.js +1 -1
  17. package/es/components/button/button_empty/button_empty.js +30 -47
  18. package/es/components/button/button_group/button_group.js +8 -10
  19. package/es/components/button/button_group/button_group_button.js +8 -51
  20. package/es/components/button/button_group/button_group_button.styles.js +2 -12
  21. package/es/components/button/button_icon/button_icon.js +26 -43
  22. package/es/components/card/card.js +1 -6
  23. package/es/components/card/card_select/card_select.js +1 -6
  24. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  25. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  26. package/es/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  27. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +26 -7
  28. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +11 -4
  29. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +11 -4
  30. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +11 -4
  31. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +36 -4
  32. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  33. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +162 -0
  34. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +65 -26
  35. package/es/components/collapsible_nav_beta/context.js +1 -0
  36. package/es/components/combo_box/combo_box.js +7 -5
  37. package/es/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  38. package/es/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  39. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  40. package/es/components/combo_box/utils.js +23 -0
  41. package/es/components/comment_list/comment_event.js +31 -19
  42. package/es/components/comment_list/comment_event.styles.js +26 -24
  43. package/es/components/context_menu/context_menu.js +28 -22
  44. package/es/components/context_menu/context_menu.styles.js +26 -0
  45. package/es/components/context_menu/context_menu_item.js +95 -125
  46. package/es/components/context_menu/context_menu_item.styles.js +82 -0
  47. package/es/components/context_menu/context_menu_panel.a11y.js +4 -2
  48. package/es/components/context_menu/context_menu_panel.js +32 -61
  49. package/es/components/context_menu/context_menu_panel.styles.js +40 -0
  50. package/es/components/control_bar/control_bar.js +33 -28
  51. package/es/components/datagrid/body/data_grid_body.js +6 -7
  52. package/es/components/datagrid/body/data_grid_body_custom.js +6 -7
  53. package/es/components/datagrid/body/data_grid_body_virtualized.js +6 -7
  54. package/es/components/datagrid/body/data_grid_cell.js +12 -13
  55. package/es/components/datagrid/body/data_grid_row_manager.js +28 -9
  56. package/es/components/datagrid/body/header/data_grid_header_cell.js +7 -8
  57. package/es/components/datagrid/body/header/data_grid_header_row.js +6 -7
  58. package/es/components/datagrid/controls/column_selector.js +5 -6
  59. package/es/components/datagrid/controls/column_sorting.js +6 -9
  60. package/es/components/datagrid/controls/display_selector.js +21 -16
  61. package/es/components/datagrid/data_grid.js +3 -865
  62. package/es/components/datagrid/utils/in_memory.js +6 -7
  63. package/es/components/date_picker/auto_refresh/auto_refresh.js +1 -2
  64. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +92 -26
  65. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  66. package/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  67. package/es/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  68. package/es/components/facet/facet_button.js +1 -1
  69. package/es/components/filter_group/filter_group.styles.js +1 -1
  70. package/es/components/form/field_number/field_number.js +13 -9
  71. package/es/components/form/field_password/field_password.js +4 -7
  72. package/es/components/form/range/dual_range.js +110 -85
  73. package/es/components/form/range/range.js +47 -40
  74. package/es/components/form/range/range_track.js +6 -20
  75. package/es/components/form/range/utils.js +1 -2
  76. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +5 -5
  77. package/es/components/header/header_links/header_link.js +1 -6
  78. package/es/components/header/header_links/header_links.js +5 -5
  79. package/es/components/header/header_section/header_section_item_button.js +1 -6
  80. package/es/components/i18n/i18n.js +1 -0
  81. package/es/components/list_group/list_group.js +1 -2
  82. package/es/components/list_group/list_group_item.js +7 -5
  83. package/es/components/list_group/list_group_item_extra_action.js +1 -2
  84. package/es/components/list_group/list_group_item_extra_action.styles.js +1 -1
  85. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +2 -3
  86. package/es/components/modal/confirm_modal.js +1 -1
  87. package/es/components/notification/notification_event.js +1 -6
  88. package/es/components/notification/notification_event_read_button.js +1 -2
  89. package/es/components/page/index.js +1 -4
  90. package/es/components/page/page_header/page_header_content.js +5 -5
  91. package/es/components/pagination/pagination_button.js +1 -6
  92. package/es/components/popover/input_popover.js +27 -12
  93. package/es/components/popover/popover.js +15 -27
  94. package/es/components/popover/popover_arrow/_popover_arrow.styles.js +2 -4
  95. package/es/components/popover/popover_panel/_popover_panel.js +2 -6
  96. package/es/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  97. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +13 -11
  98. package/es/components/tabs/tab.js +1 -1
  99. package/es/components/toast/global_toast_list.js +11 -1
  100. package/es/components/tour/tour_step.js +5 -5
  101. package/es/global_styling/mixins/_states.js +4 -1
  102. package/es/services/color/eui_palettes.js +0 -6
  103. package/es/services/color/index.js +1 -1
  104. package/es/services/hooks/useCombinedRefs.js +16 -9
  105. package/es/services/index.js +1 -2
  106. package/es/test/rtl/component_helpers.d.ts +2 -0
  107. package/es/test/rtl/component_helpers.js +40 -1
  108. package/eui.d.ts +294 -369
  109. package/i18ntokens.json +302 -248
  110. package/lib/components/accessibility/skip_link/skip_link.js +1 -2
  111. package/lib/components/accordion/accordion.js +40 -4
  112. package/lib/components/accordion/accordion_children/accordion_children.js +8 -15
  113. package/lib/components/basic_table/basic_table.js +60 -23
  114. package/lib/components/basic_table/collapsed_item_actions.js +1 -1
  115. package/lib/components/basic_table/in_memory_table.js +18 -4
  116. package/lib/components/breadcrumbs/breadcrumb.js +5 -5
  117. package/lib/components/button/button.js +24 -51
  118. package/lib/components/button/button_display/_button_display.js +1 -1
  119. package/lib/components/button/button_empty/button_empty.js +29 -46
  120. package/lib/components/button/button_group/button_group.js +7 -9
  121. package/lib/components/button/button_group/button_group_button.js +8 -51
  122. package/lib/components/button/button_group/button_group_button.styles.js +2 -12
  123. package/lib/components/button/button_icon/button_icon.js +25 -42
  124. package/lib/components/card/card.js +1 -6
  125. package/lib/components/card/card_select/card_select.js +1 -6
  126. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  127. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  128. package/lib/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  129. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +25 -6
  130. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +11 -4
  131. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +11 -4
  132. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +11 -4
  133. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +36 -4
  134. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  135. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +169 -0
  136. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +65 -26
  137. package/lib/components/collapsible_nav_beta/context.js +1 -0
  138. package/lib/components/combo_box/combo_box.js +7 -5
  139. package/lib/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  140. package/lib/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  141. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  142. package/lib/components/combo_box/utils.js +31 -0
  143. package/lib/components/comment_list/comment_event.js +33 -18
  144. package/lib/components/comment_list/comment_event.styles.js +28 -25
  145. package/lib/components/context_menu/context_menu.js +31 -24
  146. package/lib/components/context_menu/context_menu.styles.js +34 -0
  147. package/lib/components/context_menu/context_menu_item.js +102 -133
  148. package/lib/components/context_menu/context_menu_item.styles.js +87 -0
  149. package/lib/components/context_menu/context_menu_panel.a11y.js +4 -2
  150. package/lib/components/context_menu/context_menu_panel.js +35 -63
  151. package/lib/components/context_menu/context_menu_panel.styles.js +46 -0
  152. package/lib/components/control_bar/control_bar.js +28 -23
  153. package/lib/components/datagrid/body/data_grid_body.js +6 -7
  154. package/lib/components/datagrid/body/data_grid_body_custom.js +6 -7
  155. package/lib/components/datagrid/body/data_grid_body_virtualized.js +6 -7
  156. package/lib/components/datagrid/body/data_grid_cell.js +12 -13
  157. package/lib/components/datagrid/body/data_grid_row_manager.js +33 -16
  158. package/lib/components/datagrid/body/header/data_grid_header_cell.js +7 -8
  159. package/lib/components/datagrid/body/header/data_grid_header_row.js +6 -7
  160. package/lib/components/datagrid/controls/column_selector.js +5 -6
  161. package/lib/components/datagrid/controls/column_sorting.js +5 -8
  162. package/lib/components/datagrid/controls/display_selector.js +21 -16
  163. package/lib/components/datagrid/data_grid.js +2 -864
  164. package/lib/components/datagrid/utils/in_memory.js +6 -7
  165. package/lib/components/date_picker/auto_refresh/auto_refresh.js +1 -2
  166. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +91 -26
  167. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  168. package/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  169. package/lib/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  170. package/lib/components/facet/facet_button.js +1 -1
  171. package/lib/components/filter_group/filter_group.styles.js +1 -1
  172. package/lib/components/form/field_number/field_number.js +12 -8
  173. package/lib/components/form/field_password/field_password.js +4 -7
  174. package/lib/components/form/range/dual_range.js +110 -85
  175. package/lib/components/form/range/range.js +47 -40
  176. package/lib/components/form/range/range_track.js +5 -19
  177. package/lib/components/form/range/utils.js +1 -2
  178. package/lib/components/header/header_links/header_link.js +1 -6
  179. package/lib/components/header/header_section/header_section_item_button.js +1 -6
  180. package/lib/components/i18n/i18n.js +1 -0
  181. package/lib/components/list_group/list_group.js +1 -2
  182. package/lib/components/list_group/list_group_item.js +7 -5
  183. package/lib/components/list_group/list_group_item_extra_action.js +1 -2
  184. package/lib/components/list_group/list_group_item_extra_action.styles.js +1 -1
  185. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +2 -3
  186. package/lib/components/modal/confirm_modal.js +1 -1
  187. package/lib/components/notification/notification_event.js +1 -6
  188. package/lib/components/notification/notification_event_read_button.js +1 -2
  189. package/lib/components/page/index.js +1 -40
  190. package/lib/components/popover/input_popover.js +27 -12
  191. package/lib/components/popover/popover.js +29 -35
  192. package/lib/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  193. package/lib/components/popover/popover_panel/_popover_panel.js +2 -1
  194. package/lib/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  195. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  196. package/lib/components/tabs/tab.js +1 -1
  197. package/lib/components/toast/global_toast_list.js +11 -1
  198. package/lib/global_styling/mixins/_states.js +4 -1
  199. package/lib/services/color/eui_palettes.js +1 -8
  200. package/lib/services/color/index.js +0 -7
  201. package/lib/services/hooks/useCombinedRefs.js +19 -10
  202. package/lib/services/index.js +0 -15
  203. package/lib/test/rtl/component_helpers.d.ts +2 -0
  204. package/lib/test/rtl/component_helpers.js +41 -3
  205. package/optimize/es/components/accordion/accordion.js +32 -4
  206. package/optimize/es/components/accordion/accordion_children/accordion_children.js +8 -16
  207. package/optimize/es/components/basic_table/basic_table.js +42 -19
  208. package/optimize/es/components/button/button.js +15 -33
  209. package/optimize/es/components/button/button_empty/button_empty.js +29 -41
  210. package/optimize/es/components/button/button_group/button_group.js +7 -8
  211. package/optimize/es/components/button/button_group/button_group_button.js +6 -38
  212. package/optimize/es/components/button/button_group/button_group_button.styles.js +2 -12
  213. package/optimize/es/components/button/button_icon/button_icon.js +25 -37
  214. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  215. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  216. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +8 -3
  217. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  218. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +64 -0
  219. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +21 -10
  220. package/optimize/es/components/collapsible_nav_beta/context.js +1 -0
  221. package/optimize/es/components/combo_box/combo_box.js +7 -5
  222. package/optimize/es/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  223. package/optimize/es/components/combo_box/combo_box_input/combo_box_pill.js +8 -17
  224. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  225. package/optimize/es/components/combo_box/utils.js +23 -0
  226. package/optimize/es/components/comment_list/comment_event.js +31 -19
  227. package/optimize/es/components/comment_list/comment_event.styles.js +26 -24
  228. package/optimize/es/components/context_menu/context_menu.js +25 -19
  229. package/optimize/es/components/context_menu/context_menu.styles.js +26 -0
  230. package/optimize/es/components/context_menu/context_menu_item.js +94 -119
  231. package/optimize/es/components/context_menu/context_menu_item.styles.js +82 -0
  232. package/optimize/es/components/context_menu/context_menu_panel.a11y.js +4 -2
  233. package/optimize/es/components/context_menu/context_menu_panel.js +29 -58
  234. package/optimize/es/components/context_menu/context_menu_panel.styles.js +40 -0
  235. package/optimize/es/components/control_bar/control_bar.js +28 -23
  236. package/optimize/es/components/datagrid/body/data_grid_row_manager.js +23 -9
  237. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  238. package/optimize/es/components/datagrid/controls/column_selector.js +5 -6
  239. package/optimize/es/components/datagrid/controls/column_sorting.js +6 -9
  240. package/optimize/es/components/datagrid/controls/display_selector.js +21 -16
  241. package/optimize/es/components/datagrid/data_grid.js +3 -3
  242. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +87 -26
  243. package/optimize/es/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  244. package/optimize/es/components/filter_group/filter_group.styles.js +1 -1
  245. package/optimize/es/components/form/field_number/field_number.js +13 -9
  246. package/optimize/es/components/form/field_password/field_password.js +4 -7
  247. package/optimize/es/components/form/range/dual_range.js +110 -85
  248. package/optimize/es/components/form/range/range.js +47 -40
  249. package/optimize/es/components/form/range/range_track.js +5 -14
  250. package/optimize/es/components/form/range/utils.js +1 -2
  251. package/optimize/es/components/i18n/i18n.js +1 -0
  252. package/optimize/es/components/list_group/list_group_item.js +6 -3
  253. package/optimize/es/components/list_group/list_group_item_extra_action.styles.js +1 -1
  254. package/optimize/es/components/page/index.js +1 -4
  255. package/optimize/es/components/popover/input_popover.js +27 -12
  256. package/optimize/es/components/popover/popover.js +10 -22
  257. package/optimize/es/components/popover/popover_arrow/_popover_arrow.styles.js +2 -4
  258. package/optimize/es/components/popover/popover_panel/_popover_panel.js +2 -1
  259. package/optimize/es/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  260. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.js +13 -11
  261. package/optimize/es/components/tabs/tab.js +1 -1
  262. package/optimize/es/components/toast/global_toast_list.js +1 -1
  263. package/optimize/es/global_styling/mixins/_states.js +4 -1
  264. package/optimize/es/services/color/eui_palettes.js +0 -6
  265. package/optimize/es/services/color/index.js +1 -1
  266. package/optimize/es/services/hooks/useCombinedRefs.js +16 -9
  267. package/optimize/es/services/index.js +1 -2
  268. package/optimize/es/test/rtl/component_helpers.d.ts +2 -0
  269. package/optimize/es/test/rtl/component_helpers.js +40 -1
  270. package/optimize/lib/components/accordion/accordion.js +32 -4
  271. package/optimize/lib/components/accordion/accordion_children/accordion_children.js +6 -14
  272. package/optimize/lib/components/basic_table/basic_table.js +42 -19
  273. package/optimize/lib/components/button/button.js +16 -34
  274. package/optimize/lib/components/button/button_empty/button_empty.js +28 -40
  275. package/optimize/lib/components/button/button_group/button_group.js +6 -7
  276. package/optimize/lib/components/button/button_group/button_group_button.js +6 -38
  277. package/optimize/lib/components/button/button_group/button_group_button.styles.js +2 -12
  278. package/optimize/lib/components/button/button_icon/button_icon.js +24 -36
  279. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  280. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  281. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +7 -2
  282. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  283. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +71 -0
  284. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +21 -10
  285. package/optimize/lib/components/collapsible_nav_beta/context.js +1 -0
  286. package/optimize/lib/components/combo_box/combo_box.js +7 -5
  287. package/optimize/lib/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  288. package/optimize/lib/components/combo_box/combo_box_input/combo_box_pill.js +8 -17
  289. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  290. package/optimize/lib/components/combo_box/utils.js +31 -0
  291. package/optimize/lib/components/comment_list/comment_event.js +33 -18
  292. package/optimize/lib/components/comment_list/comment_event.styles.js +28 -25
  293. package/optimize/lib/components/context_menu/context_menu.js +28 -21
  294. package/optimize/lib/components/context_menu/context_menu.styles.js +34 -0
  295. package/optimize/lib/components/context_menu/context_menu_item.js +101 -128
  296. package/optimize/lib/components/context_menu/context_menu_item.styles.js +87 -0
  297. package/optimize/lib/components/context_menu/context_menu_panel.a11y.js +4 -2
  298. package/optimize/lib/components/context_menu/context_menu_panel.js +32 -60
  299. package/optimize/lib/components/context_menu/context_menu_panel.styles.js +47 -0
  300. package/optimize/lib/components/control_bar/control_bar.js +28 -23
  301. package/optimize/lib/components/datagrid/body/data_grid_row_manager.js +23 -8
  302. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +1 -1
  303. package/optimize/lib/components/datagrid/controls/column_selector.js +5 -6
  304. package/optimize/lib/components/datagrid/controls/column_sorting.js +5 -8
  305. package/optimize/lib/components/datagrid/controls/display_selector.js +21 -16
  306. package/optimize/lib/components/datagrid/data_grid.js +2 -2
  307. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +86 -26
  308. package/optimize/lib/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  309. package/optimize/lib/components/filter_group/filter_group.styles.js +1 -1
  310. package/optimize/lib/components/form/field_number/field_number.js +12 -8
  311. package/optimize/lib/components/form/field_password/field_password.js +5 -8
  312. package/optimize/lib/components/form/range/dual_range.js +110 -85
  313. package/optimize/lib/components/form/range/range.js +47 -40
  314. package/optimize/lib/components/form/range/range_track.js +4 -13
  315. package/optimize/lib/components/form/range/utils.js +1 -2
  316. package/optimize/lib/components/i18n/i18n.js +1 -0
  317. package/optimize/lib/components/list_group/list_group_item.js +6 -3
  318. package/optimize/lib/components/list_group/list_group_item_extra_action.styles.js +1 -1
  319. package/optimize/lib/components/page/index.js +1 -40
  320. package/optimize/lib/components/popover/input_popover.js +28 -13
  321. package/optimize/lib/components/popover/popover.js +24 -35
  322. package/optimize/lib/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  323. package/optimize/lib/components/popover/popover_panel/_popover_panel.js +2 -1
  324. package/optimize/lib/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  325. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  326. package/optimize/lib/components/tabs/tab.js +1 -1
  327. package/optimize/lib/components/toast/global_toast_list.js +1 -1
  328. package/optimize/lib/global_styling/mixins/_states.js +4 -1
  329. package/optimize/lib/services/color/eui_palettes.js +1 -8
  330. package/optimize/lib/services/color/index.js +0 -7
  331. package/optimize/lib/services/hooks/useCombinedRefs.js +19 -10
  332. package/optimize/lib/services/index.js +0 -15
  333. package/optimize/lib/test/rtl/component_helpers.d.ts +2 -0
  334. package/optimize/lib/test/rtl/component_helpers.js +41 -3
  335. package/package.json +14 -14
  336. package/src/components/combo_box/_combo_box.scss +46 -14
  337. package/src/components/combo_box/combo_box_input/_combo_box_pill.scss +0 -17
  338. package/src/components/combo_box/combo_box_input/_index.scss +0 -2
  339. package/src/components/datagrid/_data_grid_data_row.scss +1 -3
  340. package/src/components/date_picker/super_date_picker/date_popover/_absolute_tab.scss +21 -0
  341. package/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss +2 -1
  342. package/src/components/date_picker/super_date_picker/quick_select_popover/_quick_select_popover.scss +0 -4
  343. package/src/components/form/form_control_layout/_form_control_layout.scss +0 -1
  344. package/src/components/index.scss +0 -2
  345. package/src/global_styling/variables/_typography.scss +2 -2
  346. package/test-env/components/accessibility/skip_link/skip_link.js +1 -2
  347. package/test-env/components/accordion/accordion.js +40 -4
  348. package/test-env/components/accordion/accordion_children/accordion_children.js +8 -15
  349. package/test-env/components/basic_table/basic_table.js +60 -23
  350. package/test-env/components/basic_table/collapsed_item_actions.js +1 -1
  351. package/test-env/components/basic_table/in_memory_table.js +18 -4
  352. package/test-env/components/breadcrumbs/breadcrumb.js +5 -5
  353. package/test-env/components/button/button.js +17 -40
  354. package/test-env/components/button/button_display/_button_display.js +1 -1
  355. package/test-env/components/button/button_empty/button_empty.js +29 -46
  356. package/test-env/components/button/button_group/button_group.js +7 -9
  357. package/test-env/components/button/button_group/button_group_button.js +8 -51
  358. package/test-env/components/button/button_group/button_group_button.styles.js +2 -12
  359. package/test-env/components/button/button_icon/button_icon.js +25 -42
  360. package/test-env/components/card/card.js +1 -6
  361. package/test-env/components/card/card_select/card_select.js +1 -6
  362. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +8 -0
  363. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +12 -8
  364. package/test-env/components/collapsible_nav_beta/collapsible_nav_button/collapsible_nav_button.js +12 -7
  365. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +25 -6
  366. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +11 -4
  367. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +11 -4
  368. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +11 -4
  369. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +36 -4
  370. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  371. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +168 -0
  372. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +65 -26
  373. package/test-env/components/collapsible_nav_beta/context.js +1 -0
  374. package/test-env/components/combo_box/combo_box.js +7 -5
  375. package/test-env/components/combo_box/combo_box_input/combo_box_input.js +107 -65
  376. package/test-env/components/combo_box/combo_box_input/combo_box_pill.js +8 -18
  377. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +6 -6
  378. package/test-env/components/combo_box/utils.js +31 -0
  379. package/test-env/components/comment_list/comment_event.js +33 -18
  380. package/test-env/components/comment_list/comment_event.styles.js +28 -25
  381. package/test-env/components/context_menu/context_menu.js +31 -24
  382. package/test-env/components/context_menu/context_menu.styles.js +34 -0
  383. package/test-env/components/context_menu/context_menu_item.js +102 -129
  384. package/test-env/components/context_menu/context_menu_item.styles.js +87 -0
  385. package/test-env/components/context_menu/context_menu_panel.a11y.js +4 -2
  386. package/test-env/components/context_menu/context_menu_panel.js +35 -63
  387. package/test-env/components/context_menu/context_menu_panel.styles.js +47 -0
  388. package/test-env/components/control_bar/control_bar.js +28 -23
  389. package/test-env/components/datagrid/body/data_grid_body.js +6 -7
  390. package/test-env/components/datagrid/body/data_grid_body_custom.js +6 -7
  391. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +6 -7
  392. package/test-env/components/datagrid/body/data_grid_cell.js +12 -13
  393. package/test-env/components/datagrid/body/data_grid_row_manager.js +23 -8
  394. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +7 -8
  395. package/test-env/components/datagrid/body/header/data_grid_header_row.js +6 -7
  396. package/test-env/components/datagrid/controls/column_selector.js +5 -6
  397. package/test-env/components/datagrid/controls/column_sorting.js +5 -8
  398. package/test-env/components/datagrid/controls/display_selector.js +21 -16
  399. package/test-env/components/datagrid/data_grid.js +2 -864
  400. package/test-env/components/datagrid/utils/in_memory.js +6 -7
  401. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +1 -2
  402. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +86 -26
  403. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +1 -1
  404. package/test-env/components/date_picker/super_date_picker/quick_select_popover/quick_select_popover.js +1 -2
  405. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +19 -0
  406. package/test-env/components/facet/facet_button.js +1 -1
  407. package/test-env/components/filter_group/filter_group.styles.js +1 -1
  408. package/test-env/components/form/field_number/field_number.js +12 -8
  409. package/test-env/components/form/field_password/field_password.js +4 -7
  410. package/test-env/components/form/range/dual_range.js +110 -85
  411. package/test-env/components/form/range/range.js +47 -40
  412. package/test-env/components/form/range/range_track.js +5 -14
  413. package/test-env/components/form/range/utils.js +1 -2
  414. package/test-env/components/header/header_links/header_link.js +1 -6
  415. package/test-env/components/header/header_section/header_section_item_button.js +1 -6
  416. package/test-env/components/i18n/i18n.js +1 -0
  417. package/test-env/components/list_group/list_group.js +1 -2
  418. package/test-env/components/list_group/list_group_item.js +7 -5
  419. package/test-env/components/list_group/list_group_item_extra_action.js +1 -2
  420. package/test-env/components/list_group/list_group_item_extra_action.styles.js +1 -1
  421. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +2 -3
  422. package/test-env/components/modal/confirm_modal.js +1 -1
  423. package/test-env/components/notification/notification_event.js +1 -6
  424. package/test-env/components/notification/notification_event_read_button.js +1 -2
  425. package/test-env/components/page/index.js +1 -40
  426. package/test-env/components/popover/input_popover.js +27 -12
  427. package/test-env/components/popover/popover.js +29 -35
  428. package/test-env/components/popover/popover_arrow/_popover_arrow.styles.js +1 -3
  429. package/test-env/components/popover/popover_panel/_popover_panel.js +2 -1
  430. package/test-env/components/popover/popover_panel/_popover_panel.styles.js +6 -1
  431. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +12 -10
  432. package/test-env/components/tabs/tab.js +1 -1
  433. package/test-env/components/toast/global_toast_list.js +11 -1
  434. package/test-env/global_styling/mixins/_states.js +4 -1
  435. package/test-env/services/color/eui_palettes.js +1 -8
  436. package/test-env/services/color/index.js +0 -7
  437. package/test-env/services/hooks/useCombinedRefs.js +19 -10
  438. package/test-env/services/index.js +0 -15
  439. package/test-env/test/rtl/component_helpers.js +41 -3
  440. package/es/components/page/page_content/index.js +0 -12
  441. package/es/components/page/page_content/page_content.js +0 -110
  442. package/es/components/page/page_content/page_content_body.js +0 -69
  443. package/es/components/page/page_content/page_content_header.js +0 -43
  444. package/es/components/page/page_content/page_content_header_section.js +0 -34
  445. package/es/components/page/page_side_bar/index.js +0 -9
  446. package/es/components/page/page_side_bar/page_side_bar.js +0 -60
  447. package/es/components/page/page_template.js +0 -591
  448. package/es/services/random.js +0 -94
  449. package/es/services/utils.js +0 -25
  450. package/es/test/patch_random.js +0 -18
  451. package/lib/components/page/page_content/index.js +0 -33
  452. package/lib/components/page/page_content/page_content.js +0 -117
  453. package/lib/components/page/page_content/page_content_body.js +0 -77
  454. package/lib/components/page/page_content/page_content_header.js +0 -50
  455. package/lib/components/page/page_content/page_content_header_section.js +0 -41
  456. package/lib/components/page/page_side_bar/index.js +0 -12
  457. package/lib/components/page/page_side_bar/page_side_bar.js +0 -67
  458. package/lib/components/page/page_template.js +0 -598
  459. package/lib/services/random.js +0 -100
  460. package/lib/services/utils.js +0 -35
  461. package/lib/test/patch_random.js +0 -25
  462. package/optimize/es/components/page/page_content/index.js +0 -12
  463. package/optimize/es/components/page/page_content/page_content.js +0 -45
  464. package/optimize/es/components/page/page_content/page_content_body.js +0 -45
  465. package/optimize/es/components/page/page_content/page_content_header.js +0 -30
  466. package/optimize/es/components/page/page_content/page_content_header_section.js +0 -26
  467. package/optimize/es/components/page/page_side_bar/index.js +0 -9
  468. package/optimize/es/components/page/page_side_bar/page_side_bar.js +0 -44
  469. package/optimize/es/components/page/page_template.js +0 -325
  470. package/optimize/es/services/random.js +0 -85
  471. package/optimize/es/services/utils.js +0 -25
  472. package/optimize/es/test/patch_random.js +0 -18
  473. package/optimize/lib/components/page/page_content/index.js +0 -33
  474. package/optimize/lib/components/page/page_content/page_content.js +0 -52
  475. package/optimize/lib/components/page/page_content/page_content_body.js +0 -53
  476. package/optimize/lib/components/page/page_content/page_content_header.js +0 -37
  477. package/optimize/lib/components/page/page_content/page_content_header_section.js +0 -33
  478. package/optimize/lib/components/page/page_side_bar/index.js +0 -12
  479. package/optimize/lib/components/page/page_side_bar/page_side_bar.js +0 -51
  480. package/optimize/lib/components/page/page_template.js +0 -332
  481. package/optimize/lib/services/random.js +0 -91
  482. package/optimize/lib/services/utils.js +0 -35
  483. package/optimize/lib/test/patch_random.js +0 -25
  484. package/src/components/combo_box/combo_box_input/_combo_box_input.scss +0 -12
  485. package/src/components/combo_box/combo_box_input/_combo_box_placeholder.scss +0 -11
  486. package/src/components/context_menu/_context_menu.scss +0 -27
  487. package/src/components/context_menu/_context_menu_item.scss +0 -65
  488. package/src/components/context_menu/_context_menu_panel.scss +0 -101
  489. package/src/components/context_menu/_index.scss +0 -3
  490. package/src/components/page/_index.scss +0 -2
  491. package/src/components/page/page_content/_index.scss +0 -4
  492. package/src/components/page/page_content/_page_content.scss +0 -25
  493. package/src/components/page/page_content/_page_content_body.scss +0 -19
  494. package/src/components/page/page_content/_page_content_header.scss +0 -20
  495. package/src/components/page/page_content/_page_content_header_section.scss +0 -17
  496. package/src/components/page/page_side_bar/_index.scss +0 -1
  497. package/src/components/page/page_side_bar/_page_side_bar.scss +0 -31
  498. package/test-env/components/page/page_content/index.js +0 -33
  499. package/test-env/components/page/page_content/page_content.js +0 -116
  500. package/test-env/components/page/page_content/page_content_body.js +0 -73
  501. package/test-env/components/page/page_content/page_content_header.js +0 -49
  502. package/test-env/components/page/page_content/page_content_header_section.js +0 -40
  503. package/test-env/components/page/page_side_bar/index.js +0 -12
  504. package/test-env/components/page/page_side_bar/page_side_bar.js +0 -66
  505. package/test-env/components/page/page_template.js +0 -594
  506. package/test-env/services/random.js +0 -91
  507. package/test-env/services/utils.js +0 -35
  508. package/test-env/test/patch_random.js +0 -25
@@ -1,4 +1,3 @@
1
- import { css as _css } from "@emotion/react";
2
1
  import _extends from "@babel/runtime/helpers/extends";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
3
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
@@ -28,6 +27,7 @@ import classNames from 'classnames';
28
27
  import { focusable } from 'tabbable';
29
28
  import { EuiFocusTrap } from '../focus_trap';
30
29
  import { keys, getTransitionTimings, getWaitDuration, performOnFrame, htmlIdGenerator } from '../../services';
30
+ import { setMultipleRefs } from '../../services/hooks/useCombinedRefs';
31
31
  import { EuiScreenReaderOnly } from '../accessibility';
32
32
  import { EuiPortal } from '../portal';
33
33
  import { EuiMutationObserver } from '../observer/mutation_observer';
@@ -257,9 +257,9 @@ export var EuiPopover = /*#__PURE__*/function (_Component) {
257
257
  window.addEventListener('resize', _this.positionPopoverFluid);
258
258
  }
259
259
  });
260
- _defineProperty(_assertThisInitialized(_this), "buttonRef", function (node) {
260
+ _defineProperty(_assertThisInitialized(_this), "popoverRef", function (node) {
261
261
  _this.button = node;
262
- _this.props.buttonRef && _this.props.buttonRef(node);
262
+ setMultipleRefs([_this.props.popoverRef, _this.props.buttonRef], node);
263
263
  });
264
264
  _this.state = {
265
265
  prevProps: {
@@ -378,12 +378,12 @@ export var EuiPopover = /*#__PURE__*/function (_Component) {
378
378
  var tabIndexProp = (_panelProps$tabIndex = panelProps === null || panelProps === void 0 ? void 0 : panelProps.tabIndex) !== null && _panelProps$tabIndex !== void 0 ? _panelProps$tabIndex : _tabIndexProp;
379
379
  var styles = euiPopoverStyles();
380
380
  var popoverStyles = [styles.euiPopover, {
381
- display: display
381
+ display: display,
382
+ label: display
382
383
  }];
383
384
  var classes = classNames('euiPopover', {
384
385
  'euiPopover-isOpen': this.state.isOpening
385
- }, className);
386
- var anchorClasses = classNames('euiPopover__anchor', anchorClassName);
386
+ }, className, anchorClassName);
387
387
  var showArrow = hasArrow && !attachToAnchor;
388
388
  var panel;
389
389
  if (!this.state.suppressingPopover && (isOpen || this.state.isClosing)) {
@@ -473,29 +473,17 @@ export var EuiPopover = /*#__PURE__*/function (_Component) {
473
473
  return ___EmotionJSX("div", _extends({
474
474
  css: popoverStyles,
475
475
  className: classes,
476
- ref: popoverRef
477
- }, rest), ___EmotionJSX("div", {
478
- css: /*#__PURE__*/_css({
479
- display: display
480
- }, ";label:render;"),
481
- className: anchorClasses,
482
- ref: this.buttonRef
483
- }, button instanceof HTMLElement ? null : button), panel);
476
+ ref: this.popoverRef
477
+ }, rest), button instanceof HTMLElement ? null : button, panel);
484
478
  } else {
485
479
  return ___EmotionJSX(EuiOutsideClickDetector, {
486
480
  onOutsideClick: this.closePopover
487
481
  }, ___EmotionJSX("div", _extends({
488
482
  css: popoverStyles,
489
483
  className: classes,
490
- ref: popoverRef,
484
+ ref: this.popoverRef,
491
485
  onKeyDown: this.onKeyDown
492
- }, rest), ___EmotionJSX("div", {
493
- css: /*#__PURE__*/_css({
494
- display: display
495
- }, ";label:render;"),
496
- className: anchorClasses,
497
- ref: this.buttonRef
498
- }, button instanceof HTMLElement ? null : button), panel));
486
+ }, rest), button instanceof HTMLElement ? null : button, panel));
499
487
  }
500
488
  }
501
489
  }], [{
@@ -7,13 +7,11 @@
7
7
  */
8
8
 
9
9
  import { css } from '@emotion/react';
10
- import { euiBackgroundColor, logicals, logicalSizeCSS } from '../../../global_styling';
10
+ import { logicals, logicalSizeCSS } from '../../../global_styling';
11
11
  export var popoverArrowSize = 'm';
12
12
  export var euiPopoverArrowStyles = function euiPopoverArrowStyles(euiThemeContext) {
13
13
  var euiTheme = euiThemeContext.euiTheme;
14
-
15
- // Match the background color of panels
16
- var borderColor = euiBackgroundColor(euiThemeContext, 'plain');
14
+ var borderColor = 'var(--euiPopoverBackgroundColor)';
17
15
  var arrowSize = euiTheme.size[popoverArrowSize];
18
16
  return {
19
17
  // Base
@@ -35,7 +35,8 @@ export var EuiPopoverPanel = function EuiPopoverPanel(_ref) {
35
35
  var euiThemeContext = useEuiTheme();
36
36
  var cssStyles = useMemo(function () {
37
37
  var styles = euiPopoverPanelStyles(euiThemeContext);
38
- var sharedStyles = [styles.euiPopover__panel, isOpen && styles.isOpen];
38
+ var colorMode = euiThemeContext.colorMode.toLowerCase();
39
+ var sharedStyles = [styles.euiPopover__panel, styles[colorMode], isOpen && styles.isOpen];
39
40
  if (hasDragDrop) {
40
41
  return [].concat(sharedStyles, [styles.hasDragDrop.hasDragDrop, position && styles.hasDragDrop[position]]);
41
42
  }
@@ -10,6 +10,7 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
10
10
  import { css } from '@emotion/react';
11
11
  import { euiShadow, euiShadowFlat, euiShadowMedium } from '../../../themes/amsterdam/global_styling/mixins';
12
12
  import { getShadowColor } from '../../../themes/amsterdam/global_styling/functions';
13
+ import { tint } from '../../../services';
13
14
  import { euiCanAnimate, logicalCSS, mathWithUnits } from '../../../global_styling';
14
15
  export var openAnimationTiming = 'slow';
15
16
 
@@ -17,6 +18,7 @@ export var openAnimationTiming = 'slow';
17
18
  * 1. Can expand further, but it looks weird if it's smaller than the originating button.
18
19
  * 2. Animation happens on the panel. But don't animate position when using the attached mode like for inputs
19
20
  * 3. Make sure the panel stays within the window.
21
+ * 4. Make the popover lighter on dark mode (too hard to distinguish from plain bgs otherwise), and set a CSS var for the arrow to use
20
22
  */
21
23
  var _ref = process.env.NODE_ENV === "production" ? {
22
24
  name: "j5y6yx-isOpen",
@@ -37,8 +39,11 @@ export var euiPopoverPanelStyles = function euiPopoverPanelStyles(euiThemeContex
37
39
  }));
38
40
  return {
39
41
  // Base
40
- euiPopover__panel: /*#__PURE__*/css("position:absolute;", logicalCSS('min-width', "".concat(euiTheme.base * 7, "px")), logicalCSS('max-width', "calc(100vw - ".concat(euiTheme.size.xl, ")")), "backface-visibility:hidden;pointer-events:none;opacity:0;", euiCanAnimate, "{transition:", opacityTransition, ",", transformTransition, ";}&:focus{outline-offset:0;};label:euiPopover__panel;"),
42
+ euiPopover__panel: /*#__PURE__*/css("position:absolute;", logicalCSS('min-width', "".concat(euiTheme.base * 7, "px")), logicalCSS('max-width', "calc(100vw - ".concat(euiTheme.size.xl, ")")), "backface-visibility:hidden;pointer-events:none;opacity:0;background-color:var(--euiPopoverBackgroundColor);", euiCanAnimate, "{transition:", opacityTransition, ",", transformTransition, ";}&:focus{outline-offset:0;};label:euiPopover__panel;"),
41
43
  isOpen: _ref,
44
+ /* 4 */
45
+ light: /*#__PURE__*/css("--euiPopoverBackgroundColor:", euiTheme.colors.emptyShade, ";;label:light;"),
46
+ dark: /*#__PURE__*/css("--euiPopoverBackgroundColor:", tint(euiTheme.colors.emptyShade, 0.025), ";;label:dark;"),
42
47
  // Regular popover with an arrow, a transform animation/transition, and a
43
48
  // drop shadow via `filter` (which automatically handles the arrow)
44
49
  hasTransform: {
@@ -14,7 +14,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
14
14
  * Side Public License, v 1.
15
15
  */
16
16
 
17
- import React, { useState, useMemo } from 'react';
17
+ import React, { useState, useMemo, useCallback } from 'react';
18
18
  import classNames from 'classnames';
19
19
  import { useCombinedRefs, useCurrentEuiBreakpoint } from '../../../services';
20
20
  import { EuiSelectable } from '../selectable';
@@ -67,9 +67,11 @@ export var EuiSelectableTemplateSitewide = function EuiSelectableTemplateSitewid
67
67
  setPopoverIsOpen(false);
68
68
  _closePopover && _closePopover();
69
69
  };
70
- var togglePopover = function togglePopover() {
71
- setPopoverIsOpen(!popoverIsOpen);
72
- };
70
+ var togglePopover = useCallback(function () {
71
+ setPopoverIsOpen(function (isOpen) {
72
+ return !isOpen;
73
+ });
74
+ }, []);
73
75
 
74
76
  // Width applied to the internal div
75
77
  var popoverWidth = width || 600;
@@ -144,16 +146,16 @@ export var EuiSelectableTemplateSitewide = function EuiSelectableTemplateSitewid
144
146
  if (!currentBreakpoint) return false;
145
147
  return popoverButtonBreakpoints.includes(currentBreakpoint);
146
148
  }, [currentBreakpoint, popoverButtonBreakpoints]);
147
- var popoverTrigger;
148
- if (popoverButton && canShowPopoverButton) {
149
- popoverTrigger = /*#__PURE__*/React.cloneElement(popoverButton, _objectSpread(_objectSpread({}, popoverButton.props), {}, {
149
+ var popoverTrigger = useMemo(function () {
150
+ if (!popoverButton || !canShowPopoverButton) return;
151
+ return ___EmotionJSX("span", {
152
+ className: "euiSelectableTemplateSitewide__popoverTrigger",
150
153
  onClick: togglePopover,
151
154
  onKeyDown: function onKeyDown(e) {
152
- // Selectable preventsDefault on Enter which kills browser controls for pressing the button
153
- e.stopPropagation();
155
+ return e.stopPropagation();
154
156
  }
155
- }));
156
- }
157
+ }, popoverButton);
158
+ }, [popoverButton, canShowPopoverButton, togglePopover]);
157
159
  return ___EmotionJSX(EuiSelectable, _extends({
158
160
  isLoading: isLoading,
159
161
  options: formattedOptions,
@@ -78,7 +78,7 @@ export var EuiTab = function EuiTab(_ref) {
78
78
  css: cssTabStyles,
79
79
  disabled: disabled
80
80
  }, rest), prependNode, ___EmotionJSX("span", {
81
- className: "euiTab__content",
81
+ className: "euiTab__content eui-textTruncate",
82
82
  css: cssTabContentStyles
83
83
  }, children), appendNode);
84
84
  };
@@ -263,7 +263,7 @@ export var EuiGlobalToastList = function EuiGlobalToastList(_ref) {
263
263
  var classes = classNames('euiGlobalToastList', className);
264
264
  return ___EmotionJSX("div", _extends({
265
265
  "aria-live": "polite",
266
- role: "region",
266
+ role: "log",
267
267
  ref: listElement,
268
268
  css: cssStyles,
269
269
  className: classes
@@ -7,6 +7,7 @@
7
7
  */
8
8
 
9
9
  import { useEuiTheme } from '../../services';
10
+ import { mathWithUnits } from '../functions';
10
11
  /**
11
12
  * It is best practice to utilize the browser's default `outline` property for handling focus rings.
12
13
  * However, some components need to be forced to have the same behavior, or adjust the display.
@@ -29,7 +30,9 @@ export var euiOutline = function euiOutline(_ref) {
29
30
  } else if (offset === 'outset') {
30
31
  outlineOffset = "".concat(outlineWidth);
31
32
  } else if (offset === 'center') {
32
- outlineOffset = "calc(".concat(outlineWidth, " / -2);");
33
+ outlineOffset = mathWithUnits(outlineWidth, function (x) {
34
+ return x / -2;
35
+ });
33
36
  }
34
37
 
35
38
  // This is a separate function from `euiFocusRing` because some EUI components
@@ -148,12 +148,6 @@ export var euiPaletteComplementary = function euiPaletteComplementary(steps) {
148
148
  }
149
149
  return euiPalette([euiPaletteColorBlind()[1], euiPaletteColorBlind()[7]], steps, true);
150
150
  };
151
-
152
- /**
153
- * The old typo'd name for this palette remains exported until the end of its deprecation period
154
- * @deprecated Use euiPaletteComplementary instead
155
- */
156
- export var euiPaletteComplimentary = euiPaletteComplementary;
157
151
  export var euiPaletteNegative = function euiPaletteNegative(steps) {
158
152
  if (steps === 1) {
159
153
  return [lightNegativeColor];
@@ -17,7 +17,7 @@ export { rgbToHsv } from './rgb_to_hsv';
17
17
  export { calculateContrast, calculateLuminance } from './luminance_and_contrast';
18
18
  export { VISUALIZATION_COLORS, DEFAULT_VISUALIZATION_COLOR } from './visualization_colors';
19
19
  export { colorPalette } from './color_palette';
20
- export { euiPaletteForLightBackground, euiPaletteForDarkBackground, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteComplimentary, euiPaletteComplementary, euiPaletteNegative, euiPalettePositive, euiPaletteCool, euiPaletteWarm, euiPaletteGray } from './eui_palettes';
20
+ export { euiPaletteForLightBackground, euiPaletteForDarkBackground, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteComplementary, euiPaletteNegative, euiPalettePositive, euiPaletteCool, euiPaletteWarm, euiPaletteGray } from './eui_palettes';
21
21
  export { getSteppedGradient } from './stepped_gradient';
22
22
  export * from './manipulation';
23
23
  export * from './contrast';
@@ -7,7 +7,6 @@
7
7
  */
8
8
 
9
9
  import { useCallback } from 'react';
10
-
11
10
  /*
12
11
  * For use when a component needs to set `ref` objects from multiple sources.
13
12
  * For instance, if a component accepts a `ref` prop but also needs its own
@@ -17,13 +16,21 @@ import { useCallback } from 'react';
17
16
  */
18
17
  export var useCombinedRefs = function useCombinedRefs(refs) {
19
18
  return useCallback(function (node) {
20
- return refs.forEach(function (ref) {
21
- if (!ref) return;
22
- if (typeof ref === 'function') {
23
- ref(node);
24
- } else {
25
- ref.current = node;
26
- }
27
- });
19
+ return setMultipleRefs(refs, node);
28
20
  }, [refs]);
21
+ };
22
+
23
+ /**
24
+ * Non-hook util for setting multiple refs/ref types.
25
+ * Useful for non-functional components
26
+ */
27
+ export var setMultipleRefs = function setMultipleRefs(refs, node) {
28
+ refs.forEach(function (ref) {
29
+ if (!ref) return;
30
+ if (typeof ref === 'function') {
31
+ ref(node);
32
+ } else {
33
+ ref.current = node;
34
+ }
35
+ });
29
36
  };
@@ -12,7 +12,7 @@ export { htmlIdGenerator, useGeneratedHtmlId } from './accessibility';
12
12
  export { CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT } from './alignment';
13
13
  export { CurrentEuiBreakpointContext, CurrentEuiBreakpointProvider, useCurrentEuiBreakpoint, useIsWithinBreakpoints, useIsWithinMaxBreakpoint, useIsWithinMinBreakpoint } from './breakpoint';
14
14
  export { CanvasTextUtils } from './canvas';
15
- export { brighten, calculateContrast, calculateLuminance, colorPalette, darken, DEFAULT_VISUALIZATION_COLOR, desaturate, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteComplimentary, euiPaletteComplementary, euiPaletteCool, euiPaletteForDarkBackground, euiPaletteForLightBackground, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteGray, euiPaletteNegative, euiPalettePositive, euiPaletteWarm, getSteppedGradient, hexToHsv, hexToRgb, hsvToHex, hsvToRgb, isColorDark, isValidHex, lightness, makeDisabledContrastColor, makeHighContrastColor, rgbToHex, rgbToHsv, saturate, shade, shadeOrTint, tint, tintOrShade, transparentize, VISUALIZATION_COLORS, wcagContrastMin } from './color';
15
+ export { brighten, calculateContrast, calculateLuminance, colorPalette, darken, DEFAULT_VISUALIZATION_COLOR, desaturate, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteComplementary, euiPaletteCool, euiPaletteForDarkBackground, euiPaletteForLightBackground, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteGray, euiPaletteNegative, euiPalettePositive, euiPaletteWarm, getSteppedGradient, hexToHsv, hexToRgb, hsvToHex, hsvToRgb, isColorDark, isValidHex, lightness, makeDisabledContrastColor, makeHighContrastColor, rgbToHex, rgbToHsv, saturate, shade, shadeOrTint, tint, tintOrShade, transparentize, VISUALIZATION_COLORS, wcagContrastMin } from './color';
16
16
  export { useColorPickerState, useColorStopsState } from './color_picker';
17
17
  export * from './console';
18
18
  export { copyToClipboard } from './copy_to_clipboard';
@@ -23,7 +23,6 @@ export * from './hooks';
23
23
  export { isEvenlyDivisibleBy, isWithinRange } from './number';
24
24
  export { Pager } from './paging';
25
25
  export { calculatePopoverPosition, findPopoverPosition } from './popover';
26
- export { Random } from './random';
27
26
  export { getSecureRelForTarget } from './security';
28
27
  export { Comparators, PropertySortType, SortableProperties, SortDirection, SortDirectionType } from './sort';
29
28
  export { slugify, toInitials, toSentenceCase } from './string';
@@ -10,3 +10,5 @@ export declare const waitForEuiToolTipVisible: () => Promise<void>;
10
10
  export declare const waitForEuiToolTipHidden: () => Promise<void>;
11
11
 
12
12
  export declare const showEuiComboBoxOptions: () => Promise<void>;
13
+
14
+ export declare const waitForEuiContextMenuPanelTransition: () => Promise<void>;
@@ -114,8 +114,9 @@ export var waitForEuiToolTipHidden = /*#__PURE__*/function () {
114
114
  }();
115
115
 
116
116
  /**
117
- * Doot doo
117
+ * EuiComboBox
118
118
  */
119
+
119
120
  export var showEuiComboBoxOptions = /*#__PURE__*/function () {
120
121
  var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
121
122
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
@@ -138,4 +139,42 @@ export var showEuiComboBoxOptions = /*#__PURE__*/function () {
138
139
  return function showEuiComboBoxOptions() {
139
140
  return _ref5.apply(this, arguments);
140
141
  };
142
+ }();
143
+
144
+ /**
145
+ * EuiContextMenu
146
+ */
147
+
148
+ export var waitForEuiContextMenuPanelTransition = /*#__PURE__*/function () {
149
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
150
+ var getPanels;
151
+ return _regeneratorRuntime.wrap(function _callee6$(_context6) {
152
+ while (1) switch (_context6.prev = _context6.next) {
153
+ case 0:
154
+ // Used document instead of container or screen due to context menus living in portals
155
+ getPanels = function getPanels() {
156
+ return document.querySelectorAll('.euiContextMenuPanel');
157
+ }; // 2 panels will appear for the transition animation
158
+ _context6.next = 3;
159
+ return waitFor(function () {
160
+ expect(getPanels().length).toEqual(2);
161
+ });
162
+ case 3:
163
+ // Outgoing panel will be removed on animation end
164
+ fireEvent.animationEnd(getPanels()[0]);
165
+ if (getPanels().length > 1) {
166
+ fireEvent.animationEnd(getPanels()[1]);
167
+ }
168
+
169
+ // Transition/animation is done once we're back to 1 panel
170
+ expect(getPanels().length).toEqual(1);
171
+ case 6:
172
+ case "end":
173
+ return _context6.stop();
174
+ }
175
+ }, _callee6);
176
+ }));
177
+ return function waitForEuiContextMenuPanelTransition() {
178
+ return _ref6.apply(this, arguments);
179
+ };
141
180
  }();
@@ -23,7 +23,7 @@ var _accordion_trigger = require("./accordion_trigger");
23
23
  var _accordion_children = require("./accordion_children");
24
24
  var _accordion = require("./accordion.styles");
25
25
  var _react2 = require("@emotion/react");
26
- var _excluded = ["children", "className", "id", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "theme"];
26
+ var _excluded = ["children", "className", "id", "role", "element", "buttonElement", "buttonProps", "buttonClassName", "buttonContentClassName", "buttonContent", "arrowDisplay", "arrowProps", "extraAction", "paddingSize", "borders", "initialIsOpen", "forceState", "isLoading", "isLoadingMessage", "isDisabled", "theme"];
27
27
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
29
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -53,7 +53,19 @@ var EuiAccordionClass = /*#__PURE__*/function (_Component) {
53
53
  var forceState = _this.props.forceState;
54
54
  if (forceState) {
55
55
  var _this$props$onToggle, _this$props;
56
- (_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);
56
+ var nextState = !_this.isOpen;
57
+ (_this$props$onToggle = (_this$props = _this.props).onToggle) === null || _this$props$onToggle === void 0 ? void 0 : _this$props$onToggle.call(_this$props, nextState);
58
+
59
+ // If the accordion should theoretically be opened, wait a tick (allows
60
+ // consumer state to update) and attempt to focus the child content.
61
+ // NOTE: Even if the accordion does not actually open, this is fine -
62
+ // the `inert` property on the hidden children will prevent focus
63
+ if (nextState === true) {
64
+ requestAnimationFrame(function () {
65
+ var _this$accordionChildr;
66
+ (_this$accordionChildr = _this.accordionChildrenEl) === null || _this$accordionChildr === void 0 ? void 0 : _this$accordionChildr.focus();
67
+ });
68
+ }
57
69
  } else {
58
70
  _this.setState(function (prevState) {
59
71
  return {
@@ -62,9 +74,21 @@ var EuiAccordionClass = /*#__PURE__*/function (_Component) {
62
74
  }, function () {
63
75
  var _this$props$onToggle2, _this$props2;
64
76
  (_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);
77
+
78
+ // If the accordion is open, programmatically move focus
79
+ // from the accordion trigger to the child content
80
+ if (_this.state.isOpen) {
81
+ var _this$accordionChildr2;
82
+ (_this$accordionChildr2 = _this.accordionChildrenEl) === null || _this$accordionChildr2 === void 0 ? void 0 : _this$accordionChildr2.focus();
83
+ }
65
84
  });
66
85
  }
67
86
  });
87
+ // Used to focus the accordion children on user trigger click only (vs controlled/programmatic open)
88
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "accordionChildrenEl", null);
89
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "accordionChildrenRef", function (node) {
90
+ _this.accordionChildrenEl = node;
91
+ });
68
92
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "generatedId", (0, _services.htmlIdGenerator)()());
69
93
  return _this;
70
94
  }
@@ -81,6 +105,7 @@ var EuiAccordionClass = /*#__PURE__*/function (_Component) {
81
105
  children = _this$props3.children,
82
106
  className = _this$props3.className,
83
107
  id = _this$props3.id,
108
+ role = _this$props3.role,
84
109
  _this$props3$element = _this$props3.element,
85
110
  Element = _this$props3$element === void 0 ? 'div' : _this$props3$element,
86
111
  buttonElement = _this$props3.buttonElement,
@@ -126,12 +151,14 @@ var EuiAccordionClass = /*#__PURE__*/function (_Component) {
126
151
  onToggle: this.onToggle,
127
152
  extraAction: isLoading ? (0, _react2.jsx)(_loading.EuiLoadingSpinner, null) : extraAction
128
153
  }), (0, _react2.jsx)(_accordion_children.EuiAccordionChildren, {
154
+ role: role,
129
155
  id: id,
130
156
  "aria-labelledby": buttonId,
131
157
  paddingSize: paddingSize,
132
158
  isLoading: isLoading,
133
159
  isLoadingMessage: isLoadingMessage,
134
- isOpen: this.isOpen
160
+ isOpen: this.isOpen,
161
+ accordionChildrenRef: this.accordionChildrenRef
135
162
  }, children));
136
163
  }
137
164
  }]);
@@ -147,7 +174,8 @@ exports.EuiAccordionClass = EuiAccordionClass;
147
174
  isDisabled: false,
148
175
  isLoadingMessage: false,
149
176
  element: 'div',
150
- buttonElement: 'button'
177
+ buttonElement: 'button',
178
+ role: 'group'
151
179
  });
152
180
  var EuiAccordion = (0, _services.withEuiTheme)(EuiAccordionClass);
153
181
  exports.EuiAccordion = EuiAccordion;
@@ -16,7 +16,7 @@ var _resize_observer = require("../../observer/resize_observer");
16
16
  var _accordion_children_loading = require("./accordion_children_loading");
17
17
  var _accordion_children = require("./accordion_children.styles");
18
18
  var _react2 = require("@emotion/react");
19
- var _excluded = ["children", "paddingSize", "isLoading", "isLoadingMessage", "isOpen"];
19
+ var _excluded = ["role", "children", "accordionChildrenRef", "paddingSize", "isLoading", "isLoadingMessage", "isOpen"];
20
20
  /*
21
21
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
22
22
  * or more contributor license agreements. Licensed under the Elastic License
@@ -27,7 +27,9 @@ var _excluded = ["children", "paddingSize", "isLoading", "isLoadingMessage", "is
27
27
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
29
  var EuiAccordionChildren = function EuiAccordionChildren(_ref) {
30
- var children = _ref.children,
30
+ var role = _ref.role,
31
+ children = _ref.children,
32
+ accordionChildrenRef = _ref.accordionChildrenRef,
31
33
  paddingSize = _ref.paddingSize,
32
34
  isLoading = _ref.isLoading,
33
35
  isLoadingMessage = _ref.isLoadingMessage,
@@ -48,7 +50,6 @@ var EuiAccordionChildren = function EuiAccordionChildren(_ref) {
48
50
  */
49
51
  var wrapperStyles = (0, _accordion_children.euiAccordionChildWrapperStyles)(euiTheme);
50
52
  var wrapperCssStyles = [wrapperStyles.euiAccordion__childWrapper, isOpen ? wrapperStyles.isOpen : wrapperStyles.isClosed];
51
- var wrapperRef = (0, _react.useRef)(null);
52
53
 
53
54
  /**
54
55
  * Update the accordion wrapper height whenever the accordion opens, and also
@@ -67,21 +68,12 @@ var EuiAccordionChildren = function EuiAccordionChildren(_ref) {
67
68
  blockSize: isOpen ? contentHeight : 0
68
69
  };
69
70
  }, [isOpen, contentHeight]);
70
-
71
- /**
72
- * Focus the children wrapper when the accordion is opened,
73
- * but not if the accordion is initially open on mount
74
- */
75
- (0, _services.useUpdateEffect)(function () {
76
- var _wrapperRef$current;
77
- if (isOpen) (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.focus();
78
- }, [isOpen]);
79
71
  return (0, _react2.jsx)("div", (0, _extends2.default)({}, rest, {
80
72
  className: "euiAccordion__childWrapper",
81
73
  css: wrapperCssStyles,
82
74
  style: heightInlineStyle,
83
- ref: wrapperRef,
84
- role: "region",
75
+ ref: accordionChildrenRef,
76
+ role: role,
85
77
  tabIndex: -1
86
78
  // @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
87
79
  ,
@@ -227,18 +227,27 @@ var EuiBasicTable = /*#__PURE__*/function (_Component) {
227
227
  var _ref5, _this$props$paginatio, _this$props$paginatio2, _this$context$EuiTabl;
228
228
  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 : _table_pagination.euiTablePaginationDefaults.itemsPerPage;
229
229
  }
230
+ }, {
231
+ key: "isSelectionControlled",
232
+ get: function get() {
233
+ var _this$props$selection;
234
+ return !!((_this$props$selection = this.props.selection) !== null && _this$props$selection !== void 0 && _this$props$selection.selected);
235
+ }
230
236
  }, {
231
237
  key: "getInitialSelection",
232
238
  value: function getInitialSelection() {
239
+ if (this.isSelectionControlled) return;
233
240
  if (this.props.selection && this.props.selection.initialSelected && !this.state.initialSelectionRendered && this.props.items.length > 0) {
234
241
  this.setState({
235
- selection: this.props.selection.initialSelected
236
- });
237
- this.setState({
242
+ selection: this.props.selection.initialSelected,
238
243
  initialSelectionRendered: true
239
244
  });
240
245
  }
241
246
  }
247
+
248
+ /**
249
+ * @deprecated Use `selection.selected` instead to declaratively control table selection
250
+ */
242
251
  }, {
243
252
  key: "setSelection",
244
253
  value: function setSelection(newSelection) {
@@ -261,15 +270,15 @@ var EuiBasicTable = /*#__PURE__*/function (_Component) {
261
270
  }
262
271
  }, {
263
272
  key: "changeSelection",
264
- value: function changeSelection(selection) {
265
- if (!this.props.selection) {
266
- return;
267
- }
268
- this.setState({
269
- selection: selection
270
- });
271
- if (this.props.selection.onSelectionChange) {
272
- this.props.selection.onSelectionChange(selection);
273
+ value: function changeSelection(changedSelection) {
274
+ var _selection$onSelectio;
275
+ var selection = this.props.selection;
276
+ if (!selection) return;
277
+ (_selection$onSelectio = selection.onSelectionChange) === null || _selection$onSelectio === void 0 ? void 0 : _selection$onSelectio.call(selection, changedSelection);
278
+ if (!this.isSelectionControlled) {
279
+ this.setState({
280
+ selection: changedSelection
281
+ });
273
282
  }
274
283
  }
275
284
  }, {
@@ -957,16 +966,30 @@ var EuiBasicTable = /*#__PURE__*/function (_Component) {
957
966
  selection: []
958
967
  };
959
968
  }
960
- var itemId = nextProps.itemId;
961
- var selection = prevState.selection.filter(function (selectedItem) {
962
- return nextProps.items.findIndex(function (item) {
969
+ var controlledSelection = nextProps.selection.selected;
970
+ var unfilteredSelection = controlledSelection !== null && controlledSelection !== void 0 ? controlledSelection : prevState.selection;
971
+
972
+ // Ensure we're not including selections that aren't in the
973
+ // current `items` array (affected by pagination)
974
+ var itemId = nextProps.itemId,
975
+ items = nextProps.items;
976
+ var selection = unfilteredSelection.filter(function (selectedItem) {
977
+ return items.findIndex(function (item) {
963
978
  return getItemId(item, itemId) === getItemId(selectedItem, itemId);
964
979
  }) !== -1;
965
980
  });
966
- if (selection.length !== prevState.selection.length) {
967
- if (nextProps.selection.onSelectionChange) {
968
- nextProps.selection.onSelectionChange(selection);
969
- }
981
+
982
+ // If some selected items were filtered out, update state and callback
983
+ if (selection.length !== unfilteredSelection.length) {
984
+ var _nextProps$selection$, _nextProps$selection;
985
+ (_nextProps$selection$ = (_nextProps$selection = nextProps.selection).onSelectionChange) === null || _nextProps$selection$ === void 0 ? void 0 : _nextProps$selection$.call(_nextProps$selection, selection);
986
+ return {
987
+ selection: selection
988
+ };
989
+ }
990
+
991
+ // Always update selection state from props if controlled
992
+ if (controlledSelection) {
970
993
  return {
971
994
  selection: selection
972
995
  };