@elastic/eui 108.0.0 → 109.1.0-snapshot.1763390960850

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 (405) hide show
  1. package/es/components/accessibility/skip_link/skip_link.js +10 -1
  2. package/es/components/basic_table/collapsed_item_actions.js +3 -1
  3. package/es/components/basic_table/default_item_action.js +7 -4
  4. package/es/components/bottom_bar/bottom_bar.js +12 -2
  5. package/es/components/button/button.js +20 -25
  6. package/es/components/button/button_display/_button_display.js +32 -30
  7. package/es/components/button/button_display/_button_display.styles.js +4 -4
  8. package/es/components/button/button_empty/button_empty.js +32 -14
  9. package/es/components/button/button_group/button_group.js +49 -31
  10. package/es/components/button/button_group/button_group_button.js +16 -5
  11. package/es/components/button/button_group/button_group_button.styles.js +12 -8
  12. package/es/components/button/button_icon/button_icon.js +30 -6
  13. package/es/components/card/card.js +20 -25
  14. package/es/components/card/card_select/card_select.js +20 -25
  15. package/es/components/code/code_block_virtualized.js +9 -7
  16. package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  17. package/es/components/datagrid/body/cell/data_grid_cell.js +35 -12
  18. package/es/components/datagrid/body/data_grid_body.js +23 -6
  19. package/es/components/datagrid/body/data_grid_body_custom.js +23 -6
  20. package/es/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  21. package/es/components/datagrid/body/header/column_actions.js +5 -21
  22. package/es/components/datagrid/body/header/data_grid_header_cell.js +29 -10
  23. package/es/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -2
  24. package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +5 -2
  25. package/es/components/datagrid/controls/column_selector.js +36 -19
  26. package/es/components/datagrid/controls/column_sorting.js +23 -6
  27. package/es/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  28. package/es/components/datagrid/data_grid.js +5 -1
  29. package/es/components/datagrid/utils/in_memory.js +25 -7
  30. package/es/components/date_picker/auto_refresh/auto_refresh.js +11 -2
  31. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +31 -5
  32. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  33. package/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  34. package/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  35. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +98 -0
  36. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  37. package/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  38. package/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  39. package/es/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  40. package/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  41. package/es/components/facet/facet_button.js +9 -19
  42. package/es/components/filter_group/filter_button.js +14 -1
  43. package/es/components/flyout/flyout.js +27 -10
  44. package/es/components/form/file_picker/file_picker.styles.js +3 -3
  45. package/es/components/form/form_control_button/form_control_button.js +13 -7
  46. package/es/components/header/header_links/header_link.js +13 -7
  47. package/es/components/header/header_section/header_section_item_button.js +13 -7
  48. package/es/components/icon/assets/boxes_vertical.js +1 -1
  49. package/es/components/icon/assets/checkInCircleFilled.js +1 -2
  50. package/es/components/icon/assets/errorFilled.js +1 -2
  51. package/es/components/icon/assets/paper_clip.js +1 -1
  52. package/es/components/icon/assets/streams_wired.js +3 -2
  53. package/es/components/icon/assets/warningFilled.js +1 -2
  54. package/es/components/icon/icon_map.js +3 -6
  55. package/es/components/list_group/list_group.js +13 -1
  56. package/es/components/list_group/list_group_item.js +13 -1
  57. package/es/components/list_group/list_group_item_extra_action.js +13 -1
  58. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  59. package/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  60. package/es/components/pagination/pagination_button.js +13 -7
  61. package/es/components/popover/popover.js +22 -16
  62. package/es/components/provider/component_defaults/component_defaults.js +22 -2
  63. package/es/components/table/table_row.styles.js +1 -1
  64. package/es/components/tool_tip/tool_tip.js +24 -24
  65. package/es/global_styling/index.js +2 -1
  66. package/es/global_styling/mixins/_button.js +1 -1
  67. package/es/global_styling/utility/selectors.js +9 -0
  68. package/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  69. package/es/services/focus_trap/index.js +9 -0
  70. package/es/services/hooks/index.js +2 -1
  71. package/es/services/hooks/useEuiDisabledElement.js +195 -0
  72. package/es/services/index.js +1 -0
  73. package/es/services/popover/reposition_on_scroll.js +61 -0
  74. package/es/services/theme/high_contrast_overrides.js +5 -1
  75. package/es/test/cypress/index.d.ts +12 -0
  76. package/es/test/cypress/index.js +9 -0
  77. package/es/test/cypress/matchers.d.ts +20 -0
  78. package/es/test/cypress/matchers.js +54 -0
  79. package/es/test/cypress/test_reposition_on_scroll.js +66 -0
  80. package/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  81. package/es/test/enzyme/enzyme_matchers.js +43 -0
  82. package/es/test/enzyme/index.d.ts +14 -0
  83. package/es/test/enzyme/index.js +10 -0
  84. package/es/test/rtl/index.d.ts +9 -1
  85. package/es/test/rtl/index.js +2 -1
  86. package/es/test/rtl/matchers.d.ts +36 -0
  87. package/es/test/rtl/matchers.js +82 -0
  88. package/es/utils/element_can_be_disabled.js +16 -0
  89. package/es/utils/index.js +2 -1
  90. package/eui.d.ts +604 -183
  91. package/i18ntokens.json +1357 -1231
  92. package/lib/components/accessibility/skip_link/skip_link.js +10 -1
  93. package/lib/components/basic_table/collapsed_item_actions.js +3 -1
  94. package/lib/components/basic_table/default_item_action.js +7 -4
  95. package/lib/components/bottom_bar/bottom_bar.js +11 -1
  96. package/lib/components/button/button.js +21 -26
  97. package/lib/components/button/button_display/_button_display.js +31 -29
  98. package/lib/components/button/button_display/_button_display.styles.js +4 -4
  99. package/lib/components/button/button_empty/button_empty.js +31 -13
  100. package/lib/components/button/button_group/button_group.js +49 -31
  101. package/lib/components/button/button_group/button_group_button.js +16 -5
  102. package/lib/components/button/button_group/button_group_button.styles.js +10 -6
  103. package/lib/components/button/button_icon/button_icon.js +29 -5
  104. package/lib/components/card/card.js +21 -26
  105. package/lib/components/card/card_select/card_select.js +21 -26
  106. package/lib/components/code/code_block_virtualized.js +9 -7
  107. package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  108. package/lib/components/datagrid/body/cell/data_grid_cell.js +35 -12
  109. package/lib/components/datagrid/body/data_grid_body.js +23 -6
  110. package/lib/components/datagrid/body/data_grid_body_custom.js +23 -6
  111. package/lib/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  112. package/lib/components/datagrid/body/header/column_actions.js +5 -21
  113. package/lib/components/datagrid/body/header/data_grid_header_cell.js +29 -10
  114. package/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -1
  115. package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +5 -2
  116. package/lib/components/datagrid/controls/column_selector.js +36 -19
  117. package/lib/components/datagrid/controls/column_sorting.js +23 -6
  118. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  119. package/lib/components/datagrid/data_grid.js +5 -1
  120. package/lib/components/datagrid/utils/in_memory.js +25 -7
  121. package/lib/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  122. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  123. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  124. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  125. package/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  126. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +104 -0
  127. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  128. package/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  129. package/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  130. package/lib/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  131. package/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  132. package/lib/components/facet/facet_button.js +9 -19
  133. package/lib/components/filter_group/filter_button.js +14 -1
  134. package/lib/components/flyout/flyout.js +26 -9
  135. package/lib/components/form/file_picker/file_picker.styles.js +3 -3
  136. package/lib/components/form/form_control_button/form_control_button.js +13 -7
  137. package/lib/components/header/header_links/header_link.js +13 -7
  138. package/lib/components/header/header_section/header_section_item_button.js +13 -7
  139. package/lib/components/icon/assets/boxes_vertical.js +1 -1
  140. package/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  141. package/lib/components/icon/assets/errorFilled.js +1 -2
  142. package/lib/components/icon/assets/paper_clip.js +1 -1
  143. package/lib/components/icon/assets/streams_wired.js +3 -2
  144. package/lib/components/icon/assets/warningFilled.js +1 -2
  145. package/lib/components/icon/icon_map.js +3 -6
  146. package/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  147. package/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  148. package/lib/components/icon/svgs/errorFilled.svg +1 -1
  149. package/lib/components/icon/svgs/paper_clip.svg +3 -3
  150. package/lib/components/icon/svgs/warningFilled.svg +1 -1
  151. package/lib/components/list_group/list_group.js +13 -1
  152. package/lib/components/list_group/list_group_item.js +13 -1
  153. package/lib/components/list_group/list_group_item_extra_action.js +13 -1
  154. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  155. package/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  156. package/lib/components/pagination/pagination_button.js +13 -7
  157. package/lib/components/popover/popover.js +21 -15
  158. package/lib/components/provider/component_defaults/component_defaults.js +22 -2
  159. package/lib/components/table/table_row.styles.js +1 -1
  160. package/lib/components/tool_tip/tool_tip.js +24 -24
  161. package/lib/global_styling/index.js +16 -1
  162. package/lib/global_styling/mixins/_button.js +1 -1
  163. package/lib/global_styling/utility/selectors.js +15 -0
  164. package/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  165. package/lib/services/focus_trap/index.js +12 -0
  166. package/lib/services/hooks/index.js +18 -1
  167. package/lib/services/hooks/useEuiDisabledElement.js +199 -0
  168. package/lib/services/index.js +8 -0
  169. package/lib/services/popover/reposition_on_scroll.js +67 -0
  170. package/lib/services/theme/high_contrast_overrides.js +5 -1
  171. package/lib/test/cypress/index.d.ts +12 -0
  172. package/lib/test/cypress/index.js +18 -0
  173. package/lib/test/cypress/matchers.d.ts +20 -0
  174. package/lib/test/cypress/matchers.js +61 -0
  175. package/lib/test/cypress/test_reposition_on_scroll.js +69 -0
  176. package/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  177. package/lib/test/enzyme/enzyme_matchers.js +49 -0
  178. package/lib/test/enzyme/index.d.ts +14 -0
  179. package/lib/test/enzyme/index.js +24 -0
  180. package/lib/test/rtl/index.d.ts +9 -1
  181. package/lib/test/rtl/index.js +24 -2
  182. package/lib/test/rtl/matchers.d.ts +36 -0
  183. package/lib/test/rtl/matchers.js +86 -0
  184. package/lib/utils/element_can_be_disabled.js +22 -0
  185. package/lib/utils/index.js +14 -1
  186. package/optimize/es/components/basic_table/collapsed_item_actions.js +3 -1
  187. package/optimize/es/components/basic_table/default_item_action.js +7 -4
  188. package/optimize/es/components/bottom_bar/bottom_bar.js +12 -2
  189. package/optimize/es/components/button/button_display/_button_display.js +24 -12
  190. package/optimize/es/components/button/button_display/_button_display.styles.js +4 -4
  191. package/optimize/es/components/button/button_empty/button_empty.js +18 -6
  192. package/optimize/es/components/button/button_group/button_group.js +10 -5
  193. package/optimize/es/components/button/button_group/button_group_button.js +2 -3
  194. package/optimize/es/components/button/button_group/button_group_button.styles.js +12 -8
  195. package/optimize/es/components/button/button_icon/button_icon.js +17 -5
  196. package/optimize/es/components/code/code_block_virtualized.js +9 -7
  197. package/optimize/es/components/datagrid/body/header/column_actions.js +5 -21
  198. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +6 -4
  199. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -2
  200. package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +4 -2
  201. package/optimize/es/components/datagrid/controls/column_selector.js +36 -19
  202. package/optimize/es/components/datagrid/data_grid.js +5 -1
  203. package/optimize/es/components/datagrid/utils/in_memory.js +2 -1
  204. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +12 -4
  205. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  206. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  207. package/optimize/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  208. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +97 -0
  209. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  210. package/optimize/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  211. package/optimize/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  212. package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  213. package/optimize/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  214. package/optimize/es/components/flyout/flyout.js +27 -10
  215. package/optimize/es/components/form/file_picker/file_picker.styles.js +3 -3
  216. package/optimize/es/components/icon/assets/boxes_vertical.js +1 -1
  217. package/optimize/es/components/icon/assets/checkInCircleFilled.js +1 -2
  218. package/optimize/es/components/icon/assets/errorFilled.js +1 -2
  219. package/optimize/es/components/icon/assets/paper_clip.js +1 -1
  220. package/optimize/es/components/icon/assets/streams_wired.js +3 -2
  221. package/optimize/es/components/icon/assets/warningFilled.js +1 -2
  222. package/optimize/es/components/icon/icon_map.js +3 -6
  223. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  224. package/optimize/es/components/popover/popover.js +22 -16
  225. package/optimize/es/components/table/table_row.styles.js +1 -1
  226. package/optimize/es/components/tool_tip/tool_tip.js +24 -24
  227. package/optimize/es/global_styling/index.js +2 -1
  228. package/optimize/es/global_styling/mixins/_button.js +1 -1
  229. package/optimize/es/global_styling/utility/selectors.js +9 -0
  230. package/optimize/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  231. package/optimize/es/services/focus_trap/index.js +9 -0
  232. package/optimize/es/services/hooks/index.js +2 -1
  233. package/optimize/es/services/hooks/useEuiDisabledElement.js +192 -0
  234. package/optimize/es/services/index.js +1 -0
  235. package/optimize/es/services/popover/reposition_on_scroll.js +61 -0
  236. package/optimize/es/services/theme/high_contrast_overrides.js +5 -1
  237. package/optimize/es/test/cypress/index.d.ts +12 -0
  238. package/optimize/es/test/cypress/index.js +9 -0
  239. package/optimize/es/test/cypress/matchers.d.ts +20 -0
  240. package/optimize/es/test/cypress/matchers.js +54 -0
  241. package/optimize/es/test/cypress/test_reposition_on_scroll.js +63 -0
  242. package/optimize/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  243. package/optimize/es/test/enzyme/enzyme_matchers.js +43 -0
  244. package/optimize/es/test/enzyme/index.d.ts +14 -0
  245. package/optimize/es/test/enzyme/index.js +10 -0
  246. package/optimize/es/test/rtl/index.d.ts +9 -1
  247. package/optimize/es/test/rtl/index.js +2 -1
  248. package/optimize/es/test/rtl/matchers.d.ts +36 -0
  249. package/optimize/es/test/rtl/matchers.js +82 -0
  250. package/optimize/es/utils/element_can_be_disabled.js +16 -0
  251. package/optimize/es/utils/index.js +2 -1
  252. package/optimize/lib/components/basic_table/collapsed_item_actions.js +3 -1
  253. package/optimize/lib/components/basic_table/default_item_action.js +7 -4
  254. package/optimize/lib/components/bottom_bar/bottom_bar.js +11 -1
  255. package/optimize/lib/components/button/button_display/_button_display.js +23 -11
  256. package/optimize/lib/components/button/button_display/_button_display.styles.js +4 -4
  257. package/optimize/lib/components/button/button_empty/button_empty.js +17 -5
  258. package/optimize/lib/components/button/button_group/button_group.js +10 -5
  259. package/optimize/lib/components/button/button_group/button_group_button.js +2 -3
  260. package/optimize/lib/components/button/button_group/button_group_button.styles.js +10 -6
  261. package/optimize/lib/components/button/button_icon/button_icon.js +16 -4
  262. package/optimize/lib/components/code/code_block_virtualized.js +9 -7
  263. package/optimize/lib/components/datagrid/body/header/column_actions.js +5 -21
  264. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +6 -4
  265. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -1
  266. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +4 -2
  267. package/optimize/lib/components/datagrid/controls/column_selector.js +36 -19
  268. package/optimize/lib/components/datagrid/data_grid.js +5 -1
  269. package/optimize/lib/components/datagrid/utils/in_memory.js +2 -1
  270. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +11 -3
  271. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  272. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  273. package/optimize/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  274. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  275. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  276. package/optimize/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  277. package/optimize/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  278. package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  279. package/optimize/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  280. package/optimize/lib/components/flyout/flyout.js +26 -9
  281. package/optimize/lib/components/form/file_picker/file_picker.styles.js +3 -3
  282. package/optimize/lib/components/icon/assets/boxes_vertical.js +1 -1
  283. package/optimize/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  284. package/optimize/lib/components/icon/assets/errorFilled.js +1 -2
  285. package/optimize/lib/components/icon/assets/paper_clip.js +1 -1
  286. package/optimize/lib/components/icon/assets/streams_wired.js +3 -2
  287. package/optimize/lib/components/icon/assets/warningFilled.js +1 -2
  288. package/optimize/lib/components/icon/icon_map.js +3 -6
  289. package/optimize/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  290. package/optimize/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  291. package/optimize/lib/components/icon/svgs/errorFilled.svg +1 -1
  292. package/optimize/lib/components/icon/svgs/paper_clip.svg +3 -3
  293. package/optimize/lib/components/icon/svgs/warningFilled.svg +1 -1
  294. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  295. package/optimize/lib/components/popover/popover.js +21 -15
  296. package/optimize/lib/components/table/table_row.styles.js +1 -1
  297. package/optimize/lib/components/tool_tip/tool_tip.js +24 -24
  298. package/optimize/lib/global_styling/index.js +16 -1
  299. package/optimize/lib/global_styling/mixins/_button.js +1 -1
  300. package/optimize/lib/global_styling/utility/selectors.js +15 -0
  301. package/optimize/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  302. package/optimize/lib/services/focus_trap/index.js +12 -0
  303. package/optimize/lib/services/hooks/index.js +18 -1
  304. package/optimize/lib/services/hooks/useEuiDisabledElement.js +197 -0
  305. package/optimize/lib/services/index.js +8 -0
  306. package/optimize/lib/services/popover/reposition_on_scroll.js +67 -0
  307. package/optimize/lib/services/theme/high_contrast_overrides.js +5 -1
  308. package/optimize/lib/test/cypress/index.d.ts +12 -0
  309. package/optimize/lib/test/cypress/index.js +18 -0
  310. package/optimize/lib/test/cypress/matchers.d.ts +20 -0
  311. package/optimize/lib/test/cypress/matchers.js +61 -0
  312. package/optimize/lib/test/cypress/test_reposition_on_scroll.js +70 -0
  313. package/optimize/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  314. package/optimize/lib/test/enzyme/enzyme_matchers.js +50 -0
  315. package/optimize/lib/test/enzyme/index.d.ts +14 -0
  316. package/optimize/lib/test/enzyme/index.js +24 -0
  317. package/optimize/lib/test/rtl/index.d.ts +9 -1
  318. package/optimize/lib/test/rtl/index.js +24 -2
  319. package/optimize/lib/test/rtl/matchers.d.ts +36 -0
  320. package/optimize/lib/test/rtl/matchers.js +86 -0
  321. package/optimize/lib/utils/element_can_be_disabled.js +22 -0
  322. package/optimize/lib/utils/index.js +14 -1
  323. package/package.json +6 -5
  324. package/test-env/components/accessibility/skip_link/skip_link.js +10 -1
  325. package/test-env/components/basic_table/collapsed_item_actions.js +3 -1
  326. package/test-env/components/basic_table/default_item_action.js +7 -4
  327. package/test-env/components/bottom_bar/bottom_bar.js +11 -1
  328. package/test-env/components/button/button.js +21 -26
  329. package/test-env/components/button/button_display/_button_display.js +31 -29
  330. package/test-env/components/button/button_display/_button_display.styles.js +4 -4
  331. package/test-env/components/button/button_empty/button_empty.js +31 -13
  332. package/test-env/components/button/button_group/button_group.js +49 -31
  333. package/test-env/components/button/button_group/button_group_button.js +16 -5
  334. package/test-env/components/button/button_group/button_group_button.styles.js +10 -6
  335. package/test-env/components/button/button_icon/button_icon.js +29 -5
  336. package/test-env/components/card/card.js +21 -26
  337. package/test-env/components/card/card_select/card_select.js +21 -26
  338. package/test-env/components/code/code_block_virtualized.js +9 -7
  339. package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  340. package/test-env/components/datagrid/body/cell/data_grid_cell.js +35 -12
  341. package/test-env/components/datagrid/body/data_grid_body.js +23 -6
  342. package/test-env/components/datagrid/body/data_grid_body_custom.js +23 -6
  343. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  344. package/test-env/components/datagrid/body/header/column_actions.js +5 -21
  345. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +29 -10
  346. package/test-env/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -1
  347. package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.js +5 -2
  348. package/test-env/components/datagrid/controls/column_selector.js +36 -19
  349. package/test-env/components/datagrid/controls/column_sorting.js +23 -6
  350. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  351. package/test-env/components/datagrid/data_grid.js +5 -1
  352. package/test-env/components/datagrid/utils/in_memory.js +25 -7
  353. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  354. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  355. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  356. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  357. package/test-env/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  358. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  359. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  360. package/test-env/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  361. package/test-env/components/date_picker/super_date_picker/relative_utils.js +9 -0
  362. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  363. package/test-env/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  364. package/test-env/components/facet/facet_button.js +9 -19
  365. package/test-env/components/filter_group/filter_button.js +14 -1
  366. package/test-env/components/form/file_picker/file_picker.styles.js +3 -3
  367. package/test-env/components/form/form_control_button/form_control_button.js +13 -7
  368. package/test-env/components/header/header_links/header_link.js +13 -7
  369. package/test-env/components/header/header_section/header_section_item_button.js +13 -7
  370. package/test-env/components/icon/assets/boxes_vertical.js +1 -1
  371. package/test-env/components/icon/assets/checkInCircleFilled.js +1 -2
  372. package/test-env/components/icon/assets/errorFilled.js +1 -2
  373. package/test-env/components/icon/assets/paper_clip.js +1 -1
  374. package/test-env/components/icon/assets/streams_wired.js +3 -2
  375. package/test-env/components/icon/assets/warningFilled.js +1 -2
  376. package/test-env/components/icon/icon_map.js +3 -6
  377. package/test-env/components/list_group/list_group.js +13 -1
  378. package/test-env/components/list_group/list_group_item.js +13 -1
  379. package/test-env/components/list_group/list_group_item_extra_action.js +13 -1
  380. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  381. package/test-env/components/overlay_mask/overlay_mask.styles.js +1 -1
  382. package/test-env/components/pagination/pagination_button.js +13 -7
  383. package/test-env/components/popover/popover.js +21 -15
  384. package/test-env/components/provider/component_defaults/component_defaults.js +22 -2
  385. package/test-env/components/table/table_row.styles.js +1 -1
  386. package/test-env/components/tool_tip/tool_tip.js +24 -24
  387. package/test-env/global_styling/index.js +16 -1
  388. package/test-env/global_styling/mixins/_button.js +1 -1
  389. package/test-env/global_styling/utility/selectors.js +15 -0
  390. package/test-env/services/focus_trap/focus_trap_pub_sub.js +80 -0
  391. package/test-env/services/focus_trap/index.js +12 -0
  392. package/test-env/services/hooks/index.js +18 -1
  393. package/test-env/services/hooks/useEuiDisabledElement.js +197 -0
  394. package/test-env/services/index.js +8 -0
  395. package/test-env/services/popover/reposition_on_scroll.js +67 -0
  396. package/test-env/services/theme/high_contrast_overrides.js +5 -1
  397. package/test-env/test/cypress/index.js +18 -0
  398. package/test-env/test/cypress/matchers.js +61 -0
  399. package/test-env/test/cypress/test_reposition_on_scroll.js +70 -0
  400. package/test-env/test/enzyme/enzyme_matchers.js +50 -0
  401. package/test-env/test/enzyme/index.js +24 -0
  402. package/test-env/test/rtl/index.js +24 -2
  403. package/test-env/test/rtl/matchers.js +86 -0
  404. package/test-env/utils/element_can_be_disabled.js +22 -0
  405. package/test-env/utils/index.js +14 -1
@@ -12,8 +12,17 @@ var _exportNames = {
12
12
  findByTestSubject: true,
13
13
  render: true,
14
14
  screen: true,
15
- within: true
15
+ within: true,
16
+ euiMatchers: true,
17
+ setupEuiMatchers: true,
18
+ isEuiDisabled: true
16
19
  };
20
+ Object.defineProperty(exports, "euiMatchers", {
21
+ enumerable: true,
22
+ get: function get() {
23
+ return _matchers.euiMatchers;
24
+ }
25
+ });
17
26
  Object.defineProperty(exports, "findAllByTestSubject", {
18
27
  enumerable: true,
19
28
  get: function get() {
@@ -38,6 +47,12 @@ Object.defineProperty(exports, "getByTestSubject", {
38
47
  return _data_test_subj_queries.getByTestSubject;
39
48
  }
40
49
  });
50
+ Object.defineProperty(exports, "isEuiDisabled", {
51
+ enumerable: true,
52
+ get: function get() {
53
+ return _matchers.isEuiDisabled;
54
+ }
55
+ });
41
56
  Object.defineProperty(exports, "queryAllByTestSubject", {
42
57
  enumerable: true,
43
58
  get: function get() {
@@ -62,6 +77,12 @@ Object.defineProperty(exports, "screen", {
62
77
  return _custom_render.screen;
63
78
  }
64
79
  });
80
+ Object.defineProperty(exports, "setupEuiMatchers", {
81
+ enumerable: true,
82
+ get: function get() {
83
+ return _matchers.setupEuiMatchers;
84
+ }
85
+ });
65
86
  Object.defineProperty(exports, "within", {
66
87
  enumerable: true,
67
88
  get: function get() {
@@ -93,4 +114,5 @@ Object.keys(_render_hook).forEach(function (key) {
93
114
  return _render_hook[key];
94
115
  }
95
116
  });
96
- });
117
+ });
118
+ var _matchers = require("./matchers");
@@ -0,0 +1,36 @@
1
+ declare global {
2
+ /* eslint-disable-next-line @typescript-eslint/no-namespace,no-redeclare */
3
+ namespace jest {
4
+ interface Matchers<R> {
5
+ /**
6
+ * Custom matcher to check the disabled state of a DOM element.
7
+ * Ensures that both `disabled` and `aria-disabled` attributes are checked.
8
+ */
9
+ toBeEuiDisabled(): R;
10
+ /**
11
+ * Custom matcher to check a DOM element is enabled (= not disabled).
12
+ * Ensures that both `disabled` and `aria-disabled` attributes are checked.
13
+ */
14
+ toBeEuiEnabled(): R;
15
+ }
16
+ }
17
+ }
18
+
19
+ export declare const toBeEuiDisabled: (element: HTMLElement) => {
20
+ message: () => string;
21
+ pass: boolean;
22
+ };
23
+
24
+ export declare const toBeEuiEnabled: (element: HTMLElement) => {
25
+ message: () => string;
26
+ pass: boolean;
27
+ };
28
+
29
+ export declare const isEuiDisabled: (element: HTMLElement) => boolean;
30
+
31
+ export declare const euiMatchers: {
32
+ toBeEuiDisabled: typeof toBeEuiDisabled;
33
+ toBeEuiEnabled: typeof toBeEuiEnabled;
34
+ };
35
+
36
+ export declare const setupEuiMatchers: () => void;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setupEuiMatchers = exports.isEuiDisabled = exports.getEuiDisabledState = exports.euiMatchers = exports.default = void 0;
7
+ var _utils = require("../../utils");
8
+ /*
9
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
10
+ * or more contributor license agreements. Licensed under the Elastic License
11
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
12
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
13
+ * Side Public License, v 1.
14
+ */
15
+
16
+ var NATIVE_DISABLED_ATTR = 'disabled';
17
+ var CUSTOM_DISABLED_ATTR = 'aria-disabled';
18
+ var toBeEuiDisabled = function toBeEuiDisabled(element) {
19
+ var _getEuiDisabledState = getEuiDisabledState(element),
20
+ isDisabled = _getEuiDisabledState.isDisabled,
21
+ canBeDisabled = _getEuiDisabledState.canBeDisabled,
22
+ isNativelyDisabled = _getEuiDisabledState.isNativelyDisabled;
23
+ return {
24
+ message: function message() {
25
+ if (isDisabled) {
26
+ var method = isNativelyDisabled ? "`".concat(NATIVE_DISABLED_ATTR, "`") : "`".concat(CUSTOM_DISABLED_ATTR, "=\"true\"`");
27
+ if (!canBeDisabled) {
28
+ return "Element cannot be disabled (based on its role), but it was disabled via ".concat(method);
29
+ } else {
30
+ return "Expected element NOT to be disabled, but it was disabled via ".concat(method);
31
+ }
32
+ } else {
33
+ return "Expected element to be disabled via either `".concat(NATIVE_DISABLED_ATTR, "` or `").concat(CUSTOM_DISABLED_ATTR, "=\"true\"` attribute, but found neither");
34
+ }
35
+ },
36
+ pass: isDisabled
37
+ };
38
+ };
39
+ var toBeEuiEnabled = function toBeEuiEnabled(element) {
40
+ var _getEuiDisabledState2 = getEuiDisabledState(element),
41
+ isDisabled = _getEuiDisabledState2.isDisabled,
42
+ isNativelyDisabled = _getEuiDisabledState2.isNativelyDisabled,
43
+ isAriaDisabled = _getEuiDisabledState2.isAriaDisabled;
44
+ return {
45
+ message: function message() {
46
+ var attributes = [isNativelyDisabled ? "`".concat(NATIVE_DISABLED_ATTR, "`") : undefined, isAriaDisabled ? "`".concat(CUSTOM_DISABLED_ATTR, "=\"true\"`") : undefined].filter(function (item) {
47
+ return item !== undefined;
48
+ }).join(' and ');
49
+ return "Expected element NOT to have attributes: ".concat(attributes, ".");
50
+ },
51
+ pass: !isDisabled
52
+ };
53
+ };
54
+ var euiMatchers = exports.euiMatchers = {
55
+ toBeEuiDisabled: toBeEuiDisabled,
56
+ toBeEuiEnabled: toBeEuiEnabled
57
+ };
58
+ var setupEuiMatchers = exports.setupEuiMatchers = function setupEuiMatchers() {
59
+ expect.extend(euiMatchers);
60
+ };
61
+ var _default = exports.default = euiMatchers;
62
+ /* Utilities */
63
+ /**
64
+ * Retrieve an element's disabled state details.
65
+ * Checks wheather the element has an `disabled` attribute or `aria-disabled="true"` attribute
66
+ * @returns { isDisabled: boolean; canBeDisabled: boolean; isNativelyDisabled: boolean; isAriaDisabled: boolean }
67
+ */
68
+ var getEuiDisabledState = exports.getEuiDisabledState = function getEuiDisabledState(element) {
69
+ var canBeDisabled = (0, _utils.elementCanBeDisabled)(element);
70
+ var isNativelyDisabled = element.hasAttribute('disabled');
71
+ var isAriaDisabled = element.getAttribute('aria-disabled') === 'true';
72
+ var isDisabled = canBeDisabled && (isNativelyDisabled || isAriaDisabled);
73
+ return {
74
+ isDisabled: isDisabled,
75
+ canBeDisabled: canBeDisabled,
76
+ isNativelyDisabled: isNativelyDisabled,
77
+ isAriaDisabled: isAriaDisabled
78
+ };
79
+ };
80
+
81
+ /**
82
+ * Checks if an element is disabled via `disabled` attribute or `aria-disabled="true"`.
83
+ */
84
+ var isEuiDisabled = exports.isEuiDisabled = function isEuiDisabled(element) {
85
+ return getEuiDisabledState(element).isDisabled;
86
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.elementCanBeDisabled = void 0;
7
+ /*
8
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
9
+ * or more contributor license agreements. Licensed under the Elastic License
10
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
11
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
12
+ * Side Public License, v 1.
13
+ */
14
+
15
+ var SUPPORTED_ELEMENTS = ['fieldset', 'input', 'select', 'optgroup', 'option', 'button', 'textarea'];
16
+ var elementCanBeDisabled = exports.elementCanBeDisabled = function elementCanBeDisabled(htmlElement) {
17
+ var _htmlElement$getAttri;
18
+ if (!htmlElement) return false;
19
+ var tagName = htmlElement.tagName && htmlElement.tagName.toLowerCase();
20
+ var roleName = (_htmlElement$getAttri = htmlElement.getAttribute('role')) !== null && _htmlElement$getAttri !== void 0 ? _htmlElement$getAttri : '';
21
+ return SUPPORTED_ELEMENTS.includes(roleName) || SUPPORTED_ELEMENTS.includes(tagName);
22
+ };
@@ -3,9 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ elementCanBeDisabled: true
8
+ };
9
+ Object.defineProperty(exports, "elementCanBeDisabled", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _element_can_be_disabled.elementCanBeDisabled;
13
+ }
14
+ });
6
15
  var _prop_types = require("./prop_types");
7
16
  Object.keys(_prop_types).forEach(function (key) {
8
17
  if (key === "default" || key === "__esModule") return;
18
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
9
19
  if (key in exports && exports[key] === _prop_types[key]) return;
10
20
  Object.defineProperty(exports, key, {
11
21
  enumerable: true,
@@ -17,6 +27,7 @@ Object.keys(_prop_types).forEach(function (key) {
17
27
  var _is_jest = require("./is_jest");
18
28
  Object.keys(_is_jest).forEach(function (key) {
19
29
  if (key === "default" || key === "__esModule") return;
30
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
31
  if (key in exports && exports[key] === _is_jest[key]) return;
21
32
  Object.defineProperty(exports, key, {
22
33
  enumerable: true,
@@ -28,6 +39,7 @@ Object.keys(_is_jest).forEach(function (key) {
28
39
  var _type_guards = require("./type_guards");
29
40
  Object.keys(_type_guards).forEach(function (key) {
30
41
  if (key === "default" || key === "__esModule") return;
42
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
43
  if (key in exports && exports[key] === _type_guards[key]) return;
32
44
  Object.defineProperty(exports, key, {
33
45
  enumerable: true,
@@ -35,4 +47,5 @@ Object.keys(_type_guards).forEach(function (key) {
35
47
  return _type_guards[key];
36
48
  }
37
49
  });
38
- });
50
+ });
51
+ var _element_can_be_disabled = require("./element_can_be_disabled");
@@ -77,7 +77,9 @@ export var CollapsedItemActions = function CollapsedItemActions(_ref) {
77
77
  },
78
78
  toolTipContent: toolTipContent,
79
79
  toolTipProps: {
80
- delay: 'long'
80
+ delay: 'long',
81
+ // Avoid screen-readers announcing the same text twice
82
+ disableScreenReaderOutput: typeof buttonContent === 'string' && buttonContent === toolTipContent
81
83
  }
82
84
  }, buttonContent));
83
85
  }
@@ -30,6 +30,12 @@ export var DefaultItemAction = function DefaultItemAction(_ref) {
30
30
  var icon = action.icon ? callWithItemIfFunction(item)(action.icon) : undefined;
31
31
  var actionContent = callWithItemIfFunction(item)(action.name);
32
32
  var tooltipContent = callWithItemIfFunction(item)(action.description);
33
+ var tooltipProps = {
34
+ content: tooltipContent,
35
+ delay: 'long',
36
+ // Avoid screen-readers announcing the same text twice
37
+ disableScreenReaderOutput: typeof actionContent === 'string' && actionContent === tooltipContent
38
+ };
33
39
  var href = callWithItemIfFunction(item)(action.href);
34
40
  var dataTestSubj = callWithItemIfFunction(item)(action['data-test-subj']);
35
41
  var ariaLabelId = useGeneratedHtmlId();
@@ -73,8 +79,5 @@ export var DefaultItemAction = function DefaultItemAction(_ref) {
73
79
  flush: "right"
74
80
  }, actionContent);
75
81
  }
76
- return enabled ? ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiToolTip, {
77
- content: tooltipContent,
78
- delay: "long"
79
- }, button), ariaLabelledBy) : ___EmotionJSX(React.Fragment, null, button, ariaLabelledBy);
82
+ return enabled ? ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiToolTip, tooltipProps, button), ariaLabelledBy) : ___EmotionJSX(React.Fragment, null, button, ariaLabelledBy);
80
83
  };
@@ -15,7 +15,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
15
15
 
16
16
  import classNames from 'classnames';
17
17
  import React, { forwardRef, useEffect, useState } from 'react';
18
- import { useCombinedRefs, useEuiMemoizedStyles, EuiThemeProvider } from '../../services';
18
+ import { useCombinedRefs, useEuiMemoizedStyles, useEuiThemeCSSVariables, EuiThemeProvider } from '../../services';
19
19
  import { EuiScreenReaderOnly } from '../accessibility';
20
20
  import { EuiI18n } from '../i18n';
21
21
  import { useResizeObserver } from '../observer/resize_observer';
@@ -47,6 +47,8 @@ var _EuiBottomBar = /*#__PURE__*/forwardRef(function (_ref, ref) {
47
47
  style = _ref.style,
48
48
  rest = _objectWithoutProperties(_ref, _excluded);
49
49
  var styles = useEuiMemoizedStyles(euiBottomBarStyles);
50
+ var _useEuiThemeCSSVariab = useEuiThemeCSSVariables(),
51
+ setGlobalCSSVariables = _useEuiThemeCSSVariab.setGlobalCSSVariables;
50
52
 
51
53
  // Force some props if `fixed` position, but not if the user has supplied these
52
54
  affordForDisplacement = position !== 'fixed' ? false : affordForDisplacement;
@@ -61,6 +63,11 @@ var _EuiBottomBar = /*#__PURE__*/forwardRef(function (_ref, ref) {
61
63
  useEffect(function () {
62
64
  if (affordForDisplacement && usePortal) {
63
65
  document.body.style.paddingBottom = "".concat(dimensions.height, "px");
66
+
67
+ // EUI doesn't use this css variable, but it is useful for consumers
68
+ setGlobalCSSVariables({
69
+ '--euiBottomBarOffset': "".concat(dimensions.height, "px")
70
+ });
64
71
  }
65
72
  if (bodyClassName) {
66
73
  document.body.classList.add(bodyClassName);
@@ -68,12 +75,15 @@ var _EuiBottomBar = /*#__PURE__*/forwardRef(function (_ref, ref) {
68
75
  return function () {
69
76
  if (affordForDisplacement && usePortal) {
70
77
  document.body.style.paddingBottom = '';
78
+ setGlobalCSSVariables({
79
+ '--euiBottomBarOffset': null
80
+ });
71
81
  }
72
82
  if (bodyClassName) {
73
83
  document.body.classList.remove(bodyClassName);
74
84
  }
75
85
  };
76
- }, [affordForDisplacement, usePortal, dimensions, bodyClassName]);
86
+ }, [affordForDisplacement, usePortal, dimensions, bodyClassName, setGlobalCSSVariables]);
77
87
  var classes = classNames('euiBottomBar', "euiBottomBar--".concat(position), className);
78
88
  var cssStyles = [styles.euiBottomBar, styles[position], styles[paddingSize]];
79
89
  var newStyle = _objectSpread({
@@ -1,7 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["element", "type", "children", "iconType", "iconSide", "iconSize", "size", "isDisabled", "disabled", "isLoading", "isSelected", "fullWidth", "minWidth", "contentProps", "textProps", "href", "target", "rel", "style"];
4
+ var _excluded = ["element", "type", "children", "iconType", "iconSide", "iconSize", "size", "isDisabled", "disabled", "hasAriaDisabled", "isLoading", "isSelected", "fullWidth", "minWidth", "contentProps", "textProps", "href", "target", "rel", "style"],
5
+ _excluded2 = ["ref"];
5
6
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
7
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
8
  /*
@@ -16,10 +17,11 @@ import React, { forwardRef } from 'react';
16
17
 
17
18
  // @ts-ignore module doesn't export `createElement`
18
19
  import { createElement } from '@emotion/react';
19
- import { getSecureRelForTarget, useEuiMemoizedStyles } from '../../../services';
20
+ import { getSecureRelForTarget, useCombinedRefs, useEuiMemoizedStyles } from '../../../services';
21
+ import { validateHref } from '../../../services/security/href_validator';
22
+ import { useEuiDisabledElement } from '../../../services/hooks/useEuiDisabledElement';
20
23
  import { euiButtonDisplayStyles } from './_button_display.styles';
21
24
  import { EuiButtonDisplayContent } from './_button_display_content';
22
- import { validateHref } from '../../../services/security/href_validator';
23
25
  import { jsx as ___EmotionJSX } from "@emotion/react";
24
26
  var SIZES = ['xs', 's', 'm'];
25
27
 
@@ -54,6 +56,8 @@ export var EuiButtonDisplay = /*#__PURE__*/forwardRef(function (_ref2, ref) {
54
56
  size = _ref2$size === void 0 ? 'm' : _ref2$size,
55
57
  isDisabled = _ref2.isDisabled,
56
58
  disabled = _ref2.disabled,
59
+ _ref2$hasAriaDisabled = _ref2.hasAriaDisabled,
60
+ hasAriaDisabled = _ref2$hasAriaDisabled === void 0 ? false : _ref2$hasAriaDisabled,
57
61
  isLoading = _ref2.isLoading,
58
62
  isSelected = _ref2.isSelected,
59
63
  fullWidth = _ref2.fullWidth,
@@ -70,6 +74,14 @@ export var EuiButtonDisplay = /*#__PURE__*/forwardRef(function (_ref2, ref) {
70
74
  isDisabled: isDisabled || disabled,
71
75
  isLoading: isLoading
72
76
  });
77
+ var _useEuiDisabledElemen = useEuiDisabledElement({
78
+ isDisabled: buttonIsDisabled,
79
+ hasAriaDisabled: hasAriaDisabled,
80
+ onKeyDown: rest.onKeyDown
81
+ }),
82
+ disabledRef = _useEuiDisabledElemen.ref,
83
+ disabledButtonProps = _objectWithoutProperties(_useEuiDisabledElemen, _excluded2);
84
+ var setCombinedRef = useCombinedRefs([disabledRef, ref]);
73
85
  var styles = useEuiMemoizedStyles(euiButtonDisplayStyles);
74
86
  var cssStyles = [styles.euiButtonDisplay, styles[size], fullWidth && styles.fullWidth, minWidth == null && [styles.defaultMinWidth.defaultMinWidth, styles.defaultMinWidth[size]], buttonIsDisabled && styles.isDisabled];
75
87
  var innerNode = ___EmotionJSX(EuiButtonDisplayContent, _extends({
@@ -81,13 +93,14 @@ export var EuiButtonDisplay = /*#__PURE__*/forwardRef(function (_ref2, ref) {
81
93
  textProps: textProps
82
94
  }, contentProps), children);
83
95
  var element = buttonIsDisabled ? 'button' : href ? 'a' : _element;
84
- var elementProps = {};
85
- // Element-specific attributes
96
+ var elementProps = {
97
+ ref: setCombinedRef
98
+ };
99
+ var buttonProps = {};
86
100
  if (element === 'button') {
87
- elementProps = _objectSpread(_objectSpread({}, elementProps), {}, {
88
- disabled: buttonIsDisabled,
101
+ buttonProps = _objectSpread({
89
102
  'aria-pressed': isSelected
90
- });
103
+ }, disabledButtonProps);
91
104
  }
92
105
  var relObj = {};
93
106
  if (href && !buttonIsDisabled) {
@@ -101,12 +114,11 @@ export var EuiButtonDisplay = /*#__PURE__*/forwardRef(function (_ref2, ref) {
101
114
  } else {
102
115
  relObj.type = type;
103
116
  }
104
- return createElement(element, _objectSpread(_objectSpread(_objectSpread({
117
+ return createElement(element, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
105
118
  css: cssStyles,
106
119
  style: minWidth ? _objectSpread(_objectSpread({}, style), {}, {
107
120
  minInlineSize: minWidth
108
- }) : style,
109
- ref: ref
110
- }, elementProps), relObj), rest), innerNode);
121
+ }) : style
122
+ }, elementProps), relObj), rest), buttonProps), innerNode);
111
123
  });
112
124
  EuiButtonDisplay.displayName = 'EuiButtonDisplay';
@@ -15,11 +15,11 @@ export var euiButtonBaseCSS = function euiButtonBaseCSS() {
15
15
  return "\n display: inline-block;\n appearance: none;\n cursor: pointer;\n ".concat(logicalTextAlignCSS('center'), ";\n white-space: nowrap;\n ").concat(logicalCSS('max-width', '100%'), ";\n vertical-align: middle;\n ");
16
16
  };
17
17
  var _ref = process.env.NODE_ENV === "production" ? {
18
- name: "8595p9-isDisabled",
19
- styles: "cursor:not-allowed;label:isDisabled;"
18
+ name: "col2gx-isDisabled",
19
+ styles: "cursor:not-allowed;&[aria-disabled='true']{pointer-events:none;>*{pointer-events:none;}};label:isDisabled;"
20
20
  } : {
21
- name: "8595p9-isDisabled",
22
- styles: "cursor:not-allowed;label:isDisabled;",
21
+ name: "col2gx-isDisabled",
22
+ styles: "cursor:not-allowed;&[aria-disabled='true']{pointer-events:none;>*{pointer-events:none;}};label:isDisabled;",
23
23
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
24
24
  };
25
25
  export var euiButtonDisplayStyles = function euiButtonDisplayStyles(euiThemeContext) {
@@ -1,7 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["children", "className", "iconType", "iconSide", "iconSize", "color", "size", "flush", "isDisabled", "disabled", "isLoading", "href", "target", "rel", "type", "buttonRef", "contentProps", "textProps", "isSelected"];
4
+ var _excluded = ["children", "className", "iconType", "iconSide", "iconSize", "color", "size", "flush", "isDisabled", "disabled", "hasAriaDisabled", "isLoading", "href", "target", "rel", "type", "buttonRef", "contentProps", "textProps", "isSelected"],
5
+ _excluded2 = ["ref"];
5
6
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
7
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
8
  /*
@@ -14,9 +15,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
14
15
 
15
16
  import React from 'react';
16
17
  import classNames from 'classnames';
17
- import { useEuiMemoizedStyles, getSecureRelForTarget } from '../../../services';
18
- import { EuiButtonDisplayContent } from '../button_display/_button_display_content';
18
+ import { useEuiMemoizedStyles, getSecureRelForTarget, useCombinedRefs } from '../../../services';
19
+ import { useEuiDisabledElement } from '../../../services/hooks/useEuiDisabledElement';
19
20
  import { useEuiButtonColorCSS } from '../../../global_styling/mixins/_button';
21
+ import { EuiButtonDisplayContent } from '../button_display/_button_display_content';
20
22
  import { isButtonDisabled } from '../button_display/_button_display';
21
23
  import { euiButtonEmptyStyles } from './button_empty.styles';
22
24
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -43,6 +45,8 @@ export var EuiButtonEmpty = function EuiButtonEmpty(_ref) {
43
45
  flush = _ref.flush,
44
46
  _isDisabled = _ref.isDisabled,
45
47
  disabled = _ref.disabled,
48
+ _ref$hasAriaDisabled = _ref.hasAriaDisabled,
49
+ hasAriaDisabled = _ref$hasAriaDisabled === void 0 ? false : _ref$hasAriaDisabled,
46
50
  isLoading = _ref.isLoading,
47
51
  href = _ref.href,
48
52
  target = _ref.target,
@@ -59,6 +63,14 @@ export var EuiButtonEmpty = function EuiButtonEmpty(_ref) {
59
63
  href: href,
60
64
  isLoading: isLoading
61
65
  });
66
+ var _useEuiDisabledElemen = useEuiDisabledElement({
67
+ isDisabled: isDisabled,
68
+ hasAriaDisabled: hasAriaDisabled,
69
+ onKeyDown: rest.onKeyDown
70
+ }),
71
+ disabledRef = _useEuiDisabledElemen.ref,
72
+ disabledButtonProps = _objectWithoutProperties(_useEuiDisabledElemen, _excluded2);
73
+ var setCombinedRef = useCombinedRefs([disabledRef, buttonRef]);
62
74
  var buttonColorStyles = useEuiButtonColorCSS({
63
75
  display: 'empty'
64
76
  });
@@ -94,7 +106,7 @@ export var EuiButtonEmpty = function EuiButtonEmpty(_ref) {
94
106
  href: href,
95
107
  target: target,
96
108
  rel: secureRel,
97
- ref: buttonRef
109
+ ref: setCombinedRef
98
110
  }, rest), innerNode);
99
111
  }
100
112
  return ___EmotionJSX("button", _extends({
@@ -102,7 +114,7 @@ export var EuiButtonEmpty = function EuiButtonEmpty(_ref) {
102
114
  className: classes,
103
115
  css: cssStyles,
104
116
  type: type,
105
- ref: buttonRef,
117
+ ref: setCombinedRef,
106
118
  "aria-pressed": isSelected
107
- }, rest), innerNode);
119
+ }, rest, disabledButtonProps), innerNode);
108
120
  };
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["className", "buttonSize", "color", "idSelected", "idToSelectedMap", "isDisabled", "isFullWidth", "isIconOnly", "legend", "name", "onChange", "options", "type"];
3
+ var _excluded = ["className", "buttonSize", "color", "idSelected", "idToSelectedMap", "isDisabled", "hasAriaDisabled", "isFullWidth", "isIconOnly", "legend", "name", "onChange", "options", "type"];
4
4
  /*
5
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -28,6 +28,8 @@ export var EuiButtonGroup = function EuiButtonGroup(_ref) {
28
28
  idToSelectedMap = _ref$idToSelectedMap === void 0 ? {} : _ref$idToSelectedMap,
29
29
  _ref$isDisabled = _ref.isDisabled,
30
30
  isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
31
+ _ref$hasAriaDisabled = _ref.hasAriaDisabled,
32
+ hasAriaDisabled = _ref$hasAriaDisabled === void 0 ? false : _ref$hasAriaDisabled,
31
33
  _ref$isFullWidth = _ref.isFullWidth,
32
34
  isFullWidth = _ref$isFullWidth === void 0 ? false : _ref$isFullWidth,
33
35
  _ref$isIconOnly = _ref.isIconOnly,
@@ -47,18 +49,21 @@ export var EuiButtonGroup = function EuiButtonGroup(_ref) {
47
49
  'euiButtonGroup-isDisabled': isDisabled
48
50
  }, className);
49
51
  var typeIsSingle = type === 'single';
52
+ var groupDisabledProps = {
53
+ disabled: hasAriaDisabled ? undefined : isDisabled,
54
+ 'aria-disabled': hasAriaDisabled ? isDisabled : undefined
55
+ };
50
56
  return ___EmotionJSX("fieldset", _extends({
51
57
  css: wrapperCssStyles,
52
58
  className: classes
53
- }, rest, {
54
- disabled: isDisabled
55
- }), ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("legend", null, legend)), ___EmotionJSX("div", {
59
+ }, rest, groupDisabledProps), ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("legend", null, legend)), ___EmotionJSX("div", {
56
60
  css: cssStyles,
57
61
  className: "euiButtonGroup__buttons"
58
62
  }, options.map(function (option) {
59
63
  return ___EmotionJSX(EuiButtonGroupButton, _extends({
60
64
  key: option.id,
61
- isDisabled: isDisabled
65
+ isDisabled: isDisabled,
66
+ hasAriaDisabled: hasAriaDisabled
62
67
  }, option, {
63
68
  onClick: typeIsSingle ? function () {
64
69
  return onChange(option.id, option.value);
@@ -27,8 +27,7 @@ export var EuiButtonGroupButton = function EuiButtonGroupButton(_ref) {
27
27
  id = _ref.id,
28
28
  isDisabled = _ref.isDisabled,
29
29
  isIconOnly = _ref.isIconOnly,
30
- _ref$isSelected = _ref.isSelected,
31
- isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
30
+ isSelected = _ref.isSelected,
32
31
  label = _ref.label,
33
32
  value = _ref.value,
34
33
  size = _ref.size,
@@ -48,7 +47,7 @@ export var EuiButtonGroupButton = function EuiButtonGroupButton(_ref) {
48
47
  var buttonColorStyles = useEuiButtonColorCSS({
49
48
  display: display
50
49
  })[color];
51
- var cssStyles = [styles.euiButtonGroupButton, isIconOnly && styles.iconOnly, !isCompressed && (hasToolTip ? styles.uncompressed.hasToolTip : styles.uncompressed[size]), isCompressed ? styles.compressed : styles.uncompressed.uncompressed, isDisabled && isSelected ? styles.disabledAndSelected : buttonColorStyles, !isDisabled && isCompressed && focusColorStyles[color], hasBorder && styles.hasBorder];
50
+ var cssStyles = [styles.euiButtonGroupButton, isIconOnly && styles.iconOnly.iconOnly, isIconOnly && styles.iconOnly[size], !isCompressed && (hasToolTip ? styles.uncompressed.hasToolTip : styles.uncompressed[size]), isCompressed ? styles.compressed : styles.uncompressed.uncompressed, isDisabled && isSelected ? styles.disabledAndSelected : buttonColorStyles, !isDisabled && isCompressed && focusColorStyles[color], hasBorder && styles.hasBorder];
52
51
  var tooltipWrapperStyles = [styles.tooltipWrapper, !isCompressed && styles.uncompressed[size]];
53
52
  var contentStyles = [styles.content.euiButtonGroupButton__content, isCompressed && styles.content.compressed];
54
53
  var textStyles = [isIconOnly ? styles.text.euiButtonGroupButton__iconOnly : styles.text.euiButtonGroupButton__text];
@@ -12,10 +12,9 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
12
12
  */
13
13
 
14
14
  import { css } from '@emotion/react';
15
- import { mathWithUnits, logicalCSS, logicalShorthandCSS, euiTextShift, euiOutline, euiCanAnimate, preventForcedColors, highContrastModeStyles } from '../../../global_styling';
16
- import { BUTTON_COLORS } from '../../../global_styling/mixins/_button';
15
+ import { mathWithUnits, logicalCSS, logicalShorthandCSS, euiTextShift, euiOutline, euiCanAnimate, preventForcedColors, highContrastModeStyles, euiDisabledSelector } from '../../../global_styling';
16
+ import { BUTTON_COLORS, euiButtonSizeMap } from '../../../global_styling/mixins/_button';
17
17
  import { euiScreenReaderOnly } from '../../accessibility';
18
- import { euiFormVariables } from '../../form/form.styles';
19
18
  var _ref = process.env.NODE_ENV === "production" ? {
20
19
  name: "m6ysua-tooltipWrapper",
21
20
  styles: "overflow:hidden;&:has(:focus-visible){z-index:1;};label:tooltipWrapper;"
@@ -35,9 +34,8 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
35
34
  export var euiButtonGroupButtonStyles = function euiButtonGroupButtonStyles(euiThemeContext) {
36
35
  var euiTheme = euiThemeContext.euiTheme,
37
36
  highContrastMode = euiThemeContext.highContrastMode;
38
- var _euiFormVariables = euiFormVariables(euiThemeContext),
39
- controlCompressedHeight = _euiFormVariables.controlCompressedHeight;
40
- var compressedButtonHeight = mathWithUnits([controlCompressedHeight, euiTheme.border.width.thin], function (x, y) {
37
+ var buttonSizes = euiButtonSizeMap(euiThemeContext);
38
+ var compressedButtonHeight = mathWithUnits([buttonSizes.s.height, euiTheme.border.width.thin], function (x, y) {
41
39
  return x - y * 6;
42
40
  });
43
41
  var selectedSelectors = '.euiButtonGroupButton-isSelected, .euiButtonGroup__tooltipWrapper-isSelected';
@@ -49,10 +47,16 @@ export var euiButtonGroupButtonStyles = function euiButtonGroupButtonStyles(euiT
49
47
  euiButtonGroupButton: /*#__PURE__*/css(logicalCSS('min-width', 0), " flex-shrink:1;flex-grow:0;z-index:0;&:focus-visible{z-index:2;}", euiCanAnimate, "{transition:background-color ", euiTheme.animation.normal, " ease-in-out,color ", euiTheme.animation.normal, " ease-in-out;}&:is(", selectedSelectors, "){", highContrastModeStyles(euiThemeContext, {
50
48
  forced: "\n --highContrastHoverIndicatorColor: ".concat(euiTheme.colors.textInverse, ";\n border: none;\n\n /* styles the content manually instead of the button itself to preserve the system\n focus style, as otherwise preventForcedColors() would require manual styling */\n > [class*=\"euiButtonDisplayContent\"] {\n ").concat(preventForcedColors(euiThemeContext), "\n color: ").concat(euiTheme.colors.emptyShade, ";\n border: none;\n }\n ")
51
49
  }), ";};label:euiButtonGroupButton;"),
52
- iconOnly: /*#__PURE__*/css("padding-inline:", euiTheme.size.s, ";;label:iconOnly;"),
50
+ iconOnly: {
51
+ // used only as classname, sizes are added separately
52
+ iconOnly: /*#__PURE__*/css(";label:iconOnly;"),
53
+ s: "\n ".concat(logicalCSS('width', buttonSizes.s.height), "\n "),
54
+ m: "\n ".concat(logicalCSS('width', buttonSizes.m.height), "\n "),
55
+ compressed: "\n ".concat(logicalCSS('width', compressedButtonHeight), "\n ")
56
+ },
53
57
  // Sizes
54
58
  uncompressed: {
55
- uncompressed: /*#__PURE__*/css("&:focus-visible{", euiOutline(euiThemeContext, 'inset', euiTheme.components.buttonGroupFocusColor), ";}&:is(", selectedSelectors, "):not(:disabled){z-index:1;border:", euiTheme.border.width.thin, " solid transparent;", highContrastModeStyles(euiThemeContext, {
59
+ uncompressed: /*#__PURE__*/css("&:focus-visible{", euiOutline(euiThemeContext, 'inset', euiTheme.components.buttonGroupFocusColor), ";}&:is(", selectedSelectors, "):not(", euiDisabledSelector, "){z-index:1;border:", euiTheme.border.width.thin, " solid transparent;", highContrastModeStyles(euiThemeContext, {
56
60
  forced: "\n /* use inset focus outline to ensure visibility, same as custom hover.\n NOTE: temp solution - this will be revisited once we handle global focus styles */\n &:focus-visible {\n outline-color: ".concat(euiTheme.colors.textInverse, ";\n /* has to be inset due to overflow: hidden */\n outline-offset: -").concat(mathWithUnits(euiTheme.border.width.thin, function (x) {
57
61
  return x * 4;
58
62
  }), ";\n }\n ")