@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
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the "Elastic License
4
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5
+ * Public License v 1"; you may not use this file except in compliance with, at
6
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
7
+ * License v3.0 only", or the "Server Side Public License, v 1".
8
+ */
9
+
10
+ declare global {
11
+ namespace Chai {
12
+ interface Assertion {
13
+ euiDisabled: Assertion;
14
+ euiEnabled: Assertion;
15
+ }
16
+ }
17
+ }
18
+
19
+ export declare const registerEuiCypressMatchers: () => void;
20
+ export declare const setupEuiCypressMatchers: () => void;
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ /// <reference types="cypress" />
10
+
11
+ export function registerEuiCypressMatchers() {
12
+ var chai = window.chai;
13
+ if (chai && !chai.__euiMatchersRegistered) {
14
+ chai.use(function (_chai) {
15
+ _chai.Assertion.addProperty('euiDisabled', function () {
16
+ var element = this._obj[0] || this._obj;
17
+ var hasDisabledAttribute = element.hasAttribute('disabled');
18
+ var hasAriaDisabled = element.getAttribute('aria-disabled') === 'true';
19
+ var isDisabled = hasDisabledAttribute || hasAriaDisabled;
20
+ this.assert(isDisabled, 'expected element to be EUI disabled (= have `disabled` attribute or `aria-disabled="true"`)', 'expected element not to be EUI disabled (= not have `disabled` attribute or `aria-disabled="true"`)', true, isDisabled);
21
+ });
22
+ _chai.Assertion.addProperty('euiEnabled', function () {
23
+ var element = this._obj[0] || this._obj;
24
+ var hasDisabledAttribute = element.hasAttribute('disabled');
25
+ var hasAriaDisabled = element.getAttribute('aria-disabled') === 'true';
26
+ var isDisabled = hasDisabledAttribute || hasAriaDisabled;
27
+ this.assert(!isDisabled, 'expected element to be EUI enabled (= not have `disabled` attribute or `aria-disabled="true"`)', 'expected element not to be EUI enabled (= have `disabled` attribute or `aria-disabled="true"`)', false, isDisabled);
28
+ });
29
+ });
30
+
31
+ // Mark as registered to prevent double registration
32
+ chai.__euiMatchersRegistered = true;
33
+ }
34
+ }
35
+
36
+ // Register matchers when support file loads
37
+ export var setupEuiCypressMatchers = function setupEuiCypressMatchers() {
38
+ if (typeof window !== 'undefined') {
39
+ // Try to register immediately
40
+ if (window.chai) {
41
+ registerEuiCypressMatchers();
42
+ } else {
43
+ // Wait for chai to be available
44
+ var pollForChai = function pollForChai() {
45
+ if (window.chai) {
46
+ registerEuiCypressMatchers();
47
+ } else {
48
+ setTimeout(pollForChai, 10);
49
+ }
50
+ };
51
+ pollForChai();
52
+ }
53
+ }
54
+ };
@@ -0,0 +1,63 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
6
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
7
+ * Side Public License, v 1.
8
+ */
9
+
10
+ /// <reference types="cypress" />
11
+ /// <reference types="cypress-real-events" />
12
+ /// <reference types="../../../cypress/support" />
13
+
14
+ import React from 'react';
15
+ import { jsx as ___EmotionJSX } from "@emotion/react";
16
+ export var testRepositionOnScroll = function testRepositionOnScroll(_ref) {
17
+ var shouldReposition = _ref.shouldReposition,
18
+ propValue = _ref.propValue,
19
+ componentDefaultValue = _ref.componentDefaultValue,
20
+ componentName = _ref.componentName,
21
+ triggerSelector = _ref.triggerSelector,
22
+ panelSelector = _ref.panelSelector,
23
+ renderComponent = _ref.renderComponent;
24
+ var repositionProps = {
25
+ repositionOnScroll: typeof propValue === 'boolean' ? propValue : undefined
26
+ };
27
+ var providerProps = typeof componentDefaultValue === 'boolean' ? {
28
+ providerProps: {
29
+ componentDefaults: _defineProperty({}, componentName, {
30
+ repositionOnScroll: componentDefaultValue
31
+ })
32
+ }
33
+ } : undefined;
34
+ cy.mount(___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", {
35
+ style: {
36
+ height: '200vh'
37
+ }
38
+ }), ___EmotionJSX("div", {
39
+ style: {
40
+ position: 'fixed',
41
+ bottom: '16px',
42
+ right: '16px'
43
+ }
44
+ }, renderComponent(repositionProps))), providerProps);
45
+ cy.get(triggerSelector).click();
46
+
47
+ // Wait for positioning to finish
48
+ cy.get(panelSelector).as('panel').should('exist').waitForPositionToSettle();
49
+ cy.get('@panel').then(function ($panel) {
50
+ var initialRect = $panel[0].getBoundingClientRect();
51
+ cy.scrollTo(0, 500);
52
+
53
+ // Wait for re-positioning to finish
54
+ cy.get('@panel').waitForPositionToSettle().then(function ($repositionedPanel) {
55
+ var finalRect = $repositionedPanel[0].getBoundingClientRect();
56
+ if (shouldReposition) {
57
+ expect(finalRect.top).to.equal(initialRect.top);
58
+ } else {
59
+ expect(finalRect.top).to.not.equal(initialRect.top);
60
+ }
61
+ });
62
+ });
63
+ };
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the "Elastic License
4
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5
+ * Public License v 1"; you may not use this file except in compliance with, at
6
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
7
+ * License v3.0 only", or the "Server Side Public License, v 1".
8
+ */
9
+
10
+ import { ReactWrapper } from 'enzyme';
11
+
12
+ declare global {
13
+ namespace jest {
14
+ interface Matchers<R> {
15
+ /**
16
+ * Checks if an Enzyme wrapper has EUI disabled state (it checks `disabled`, `isDisabled` and `aria-disabled` props)
17
+ */
18
+ toHaveEuiDisabledProp(): R;
19
+ }
20
+ }
21
+ }
22
+
23
+ export declare const toHaveEuiDisabledProp: (wrapper: ReactWrapper<any>) => {
24
+ message: () => string;
25
+ pass: boolean;
26
+ };
27
+
28
+ export declare const hasEuiDisabledProp: (
29
+ props: Record<string, any>
30
+ ) => boolean;
31
+
32
+ export declare const euiEnzymeMatchers: {
33
+ toHaveEuiDisabledProp: typeof toHaveEuiDisabledProp;
34
+ };
35
+
36
+ export declare const setupEuiEnzymeMatchers: () => void;
@@ -0,0 +1,43 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the "Elastic License
5
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
6
+ * Public License v 1"; you may not use this file except in compliance with, at
7
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
8
+ * License v3.0 only", or the "Server Side Public License, v 1".
9
+ */
10
+
11
+ /* eslint-env jest */
12
+
13
+ export var euiEnzymeMatchers = {
14
+ /**
15
+ * Checks if an Enzyme wrapper has an EUI disabled state.
16
+ * It looks for `disabled`, `isDisabled` and `aria-disabled` props
17
+ */
18
+ toHaveEuiDisabledProp: function toHaveEuiDisabledProp(props) {
19
+ if (!props || _typeof(props) !== 'object') {
20
+ throw new Error('toHaveEuiDisabledProp() must be called with the props value from ReactWrapper.props()');
21
+ }
22
+ var isDisabled = hasEuiDisabledProp(props);
23
+ return {
24
+ message: function message() {
25
+ return isDisabled ? 'Expected component NOT to have EUI disabled prop, but it was disabled' : 'Expected component to have EUI disabled prop (`disabled`, `isDisabled` or `aria-disabled="true"`)';
26
+ },
27
+ pass: isDisabled
28
+ };
29
+ }
30
+ };
31
+ export var setupEuiEnzymeMatchers = function setupEuiEnzymeMatchers() {
32
+ expect.extend(euiEnzymeMatchers);
33
+ };
34
+
35
+ /* Utilities */
36
+
37
+ /**
38
+ * Checks if a ReactWrapper has one of the following disabled props enabled:
39
+ * `disabled`, `isDisabled` or attribute or `aria-disabled="true"`.
40
+ */
41
+ export var hasEuiDisabledProp = function hasEuiDisabledProp(props) {
42
+ return props.disabled === true || props.isDisabled === true || props['aria-disabled'] === true || props['aria-disabled'] === 'true';
43
+ };
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the "Elastic License
4
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5
+ * Public License v 1"; you may not use this file except in compliance with, at
6
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
7
+ * License v3.0 only", or the "Server Side Public License, v 1".
8
+ */
9
+
10
+ export {
11
+ euiEnzymeMatchers,
12
+ setupEuiEnzymeMatchers,
13
+ hasEuiDisabledProp,
14
+ } from './enzyme_matchers';
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the "Elastic License
4
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5
+ * Public License v 1"; you may not use this file except in compliance with, at
6
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
7
+ * License v3.0 only", or the "Server Side Public License, v 1".
8
+ */
9
+
10
+ export { euiEnzymeMatchers, setupEuiEnzymeMatchers, hasEuiDisabledProp } from './enzyme_matchers';
@@ -1,3 +1,11 @@
1
1
  export * from './component_helpers';
2
- export { queryByTestSubject, queryAllByTestSubject, getByTestSubject, getAllByTestSubject, findAllByTestSubject, findByTestSubject, } from './data_test_subj_queries';
2
+ export {
3
+ queryByTestSubject,
4
+ queryAllByTestSubject,
5
+ getByTestSubject,
6
+ getAllByTestSubject,
7
+ findAllByTestSubject,
8
+ findByTestSubject,
9
+ } from './data_test_subj_queries';
3
10
  export { render, screen, within } from './custom_render';
11
+ export { euiMatchers, setupEuiMatchers, isEuiDisabled } from './matchers';
@@ -9,4 +9,5 @@
9
9
  export * from './component_helpers';
10
10
  export { queryByTestSubject, queryAllByTestSubject, getByTestSubject, getAllByTestSubject, findAllByTestSubject, findByTestSubject } from './data_test_subj_queries';
11
11
  export { render, screen, within } from './custom_render';
12
- export * from './render_hook';
12
+ export * from './render_hook';
13
+ export { euiMatchers, setupEuiMatchers, isEuiDisabled } from './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,82 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { elementCanBeDisabled } from '../../utils';
10
+ var NATIVE_DISABLED_ATTR = 'disabled';
11
+ var CUSTOM_DISABLED_ATTR = 'aria-disabled';
12
+ var toBeEuiDisabled = function toBeEuiDisabled(element) {
13
+ var _getEuiDisabledState = getEuiDisabledState(element),
14
+ isDisabled = _getEuiDisabledState.isDisabled,
15
+ canBeDisabled = _getEuiDisabledState.canBeDisabled,
16
+ isNativelyDisabled = _getEuiDisabledState.isNativelyDisabled;
17
+ return {
18
+ message: function message() {
19
+ if (isDisabled) {
20
+ var method = isNativelyDisabled ? "`".concat(NATIVE_DISABLED_ATTR, "`") : "`".concat(CUSTOM_DISABLED_ATTR, "=\"true\"`");
21
+ if (!canBeDisabled) {
22
+ return "Element cannot be disabled (based on its role), but it was disabled via ".concat(method);
23
+ } else {
24
+ return "Expected element NOT to be disabled, but it was disabled via ".concat(method);
25
+ }
26
+ } else {
27
+ return "Expected element to be disabled via either `".concat(NATIVE_DISABLED_ATTR, "` or `").concat(CUSTOM_DISABLED_ATTR, "=\"true\"` attribute, but found neither");
28
+ }
29
+ },
30
+ pass: isDisabled
31
+ };
32
+ };
33
+ var toBeEuiEnabled = function toBeEuiEnabled(element) {
34
+ var _getEuiDisabledState2 = getEuiDisabledState(element),
35
+ isDisabled = _getEuiDisabledState2.isDisabled,
36
+ isNativelyDisabled = _getEuiDisabledState2.isNativelyDisabled,
37
+ isAriaDisabled = _getEuiDisabledState2.isAriaDisabled;
38
+ return {
39
+ message: function message() {
40
+ var attributes = [isNativelyDisabled ? "`".concat(NATIVE_DISABLED_ATTR, "`") : undefined, isAriaDisabled ? "`".concat(CUSTOM_DISABLED_ATTR, "=\"true\"`") : undefined].filter(function (item) {
41
+ return item !== undefined;
42
+ }).join(' and ');
43
+ return "Expected element NOT to have attributes: ".concat(attributes, ".");
44
+ },
45
+ pass: !isDisabled
46
+ };
47
+ };
48
+ export var euiMatchers = {
49
+ toBeEuiDisabled: toBeEuiDisabled,
50
+ toBeEuiEnabled: toBeEuiEnabled
51
+ };
52
+ export var setupEuiMatchers = function setupEuiMatchers() {
53
+ expect.extend(euiMatchers);
54
+ };
55
+ export default euiMatchers;
56
+
57
+ /* Utilities */
58
+
59
+ /**
60
+ * Retrieve an element's disabled state details.
61
+ * Checks wheather the element has an `disabled` attribute or `aria-disabled="true"` attribute
62
+ * @returns { isDisabled: boolean; canBeDisabled: boolean; isNativelyDisabled: boolean; isAriaDisabled: boolean }
63
+ */
64
+ export var getEuiDisabledState = function getEuiDisabledState(element) {
65
+ var canBeDisabled = elementCanBeDisabled(element);
66
+ var isNativelyDisabled = element.hasAttribute('disabled');
67
+ var isAriaDisabled = element.getAttribute('aria-disabled') === 'true';
68
+ var isDisabled = canBeDisabled && (isNativelyDisabled || isAriaDisabled);
69
+ return {
70
+ isDisabled: isDisabled,
71
+ canBeDisabled: canBeDisabled,
72
+ isNativelyDisabled: isNativelyDisabled,
73
+ isAriaDisabled: isAriaDisabled
74
+ };
75
+ };
76
+
77
+ /**
78
+ * Checks if an element is disabled via `disabled` attribute or `aria-disabled="true"`.
79
+ */
80
+ export var isEuiDisabled = function isEuiDisabled(element) {
81
+ return getEuiDisabledState(element).isDisabled;
82
+ };
@@ -0,0 +1,16 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ var SUPPORTED_ELEMENTS = ['fieldset', 'input', 'select', 'optgroup', 'option', 'button', 'textarea'];
10
+ export var elementCanBeDisabled = function elementCanBeDisabled(htmlElement) {
11
+ var _htmlElement$getAttri;
12
+ if (!htmlElement) return false;
13
+ var tagName = htmlElement.tagName && htmlElement.tagName.toLowerCase();
14
+ var roleName = (_htmlElement$getAttri = htmlElement.getAttribute('role')) !== null && _htmlElement$getAttri !== void 0 ? _htmlElement$getAttri : '';
15
+ return SUPPORTED_ELEMENTS.includes(roleName) || SUPPORTED_ELEMENTS.includes(tagName);
16
+ };
@@ -8,4 +8,5 @@
8
8
 
9
9
  export * from './prop_types';
10
10
  export * from './is_jest';
11
- export * from './type_guards';
11
+ export * from './type_guards';
12
+ export { elementCanBeDisabled } from './element_can_be_disabled';
@@ -87,7 +87,9 @@ var CollapsedItemActions = exports.CollapsedItemActions = function CollapsedItem
87
87
  },
88
88
  toolTipContent: toolTipContent,
89
89
  toolTipProps: {
90
- delay: 'long'
90
+ delay: 'long',
91
+ // Avoid screen-readers announcing the same text twice
92
+ disableScreenReaderOutput: typeof buttonContent === 'string' && buttonContent === toolTipContent
91
93
  }
92
94
  }, buttonContent));
93
95
  }
@@ -39,6 +39,12 @@ var DefaultItemAction = exports.DefaultItemAction = function DefaultItemAction(_
39
39
  var icon = action.icon ? (0, _action_types.callWithItemIfFunction)(item)(action.icon) : undefined;
40
40
  var actionContent = (0, _action_types.callWithItemIfFunction)(item)(action.name);
41
41
  var tooltipContent = (0, _action_types.callWithItemIfFunction)(item)(action.description);
42
+ var tooltipProps = {
43
+ content: tooltipContent,
44
+ delay: 'long',
45
+ // Avoid screen-readers announcing the same text twice
46
+ disableScreenReaderOutput: typeof actionContent === 'string' && actionContent === tooltipContent
47
+ };
42
48
  var href = (0, _action_types.callWithItemIfFunction)(item)(action.href);
43
49
  var dataTestSubj = (0, _action_types.callWithItemIfFunction)(item)(action['data-test-subj']);
44
50
  var ariaLabelId = (0, _accessibility.useGeneratedHtmlId)();
@@ -82,8 +88,5 @@ var DefaultItemAction = exports.DefaultItemAction = function DefaultItemAction(_
82
88
  flush: "right"
83
89
  }, actionContent);
84
90
  }
85
- return enabled ? (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_tool_tip.EuiToolTip, {
86
- content: tooltipContent,
87
- delay: "long"
88
- }, button), ariaLabelledBy) : (0, _react2.jsx)(_react.default.Fragment, null, button, ariaLabelledBy);
91
+ return enabled ? (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_tool_tip.EuiToolTip, tooltipProps, button), ariaLabelledBy) : (0, _react2.jsx)(_react.default.Fragment, null, button, ariaLabelledBy);
89
92
  };
@@ -56,6 +56,8 @@ var _EuiBottomBar = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
56
56
  style = _ref.style,
57
57
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
58
58
  var styles = (0, _services.useEuiMemoizedStyles)(_bottom_bar.euiBottomBarStyles);
59
+ var _useEuiThemeCSSVariab = (0, _services.useEuiThemeCSSVariables)(),
60
+ setGlobalCSSVariables = _useEuiThemeCSSVariab.setGlobalCSSVariables;
59
61
 
60
62
  // Force some props if `fixed` position, but not if the user has supplied these
61
63
  affordForDisplacement = position !== 'fixed' ? false : affordForDisplacement;
@@ -70,6 +72,11 @@ var _EuiBottomBar = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
70
72
  (0, _react.useEffect)(function () {
71
73
  if (affordForDisplacement && usePortal) {
72
74
  document.body.style.paddingBottom = "".concat(dimensions.height, "px");
75
+
76
+ // EUI doesn't use this css variable, but it is useful for consumers
77
+ setGlobalCSSVariables({
78
+ '--euiBottomBarOffset': "".concat(dimensions.height, "px")
79
+ });
73
80
  }
74
81
  if (bodyClassName) {
75
82
  document.body.classList.add(bodyClassName);
@@ -77,12 +84,15 @@ var _EuiBottomBar = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
77
84
  return function () {
78
85
  if (affordForDisplacement && usePortal) {
79
86
  document.body.style.paddingBottom = '';
87
+ setGlobalCSSVariables({
88
+ '--euiBottomBarOffset': null
89
+ });
80
90
  }
81
91
  if (bodyClassName) {
82
92
  document.body.classList.remove(bodyClassName);
83
93
  }
84
94
  };
85
- }, [affordForDisplacement, usePortal, dimensions, bodyClassName]);
95
+ }, [affordForDisplacement, usePortal, dimensions, bodyClassName, setGlobalCSSVariables]);
86
96
  var classes = (0, _classnames.default)('euiBottomBar', "euiBottomBar--".concat(position), className);
87
97
  var cssStyles = [styles.euiBottomBar, styles[position], styles[paddingSize]];
88
98
  var newStyle = _objectSpread({
@@ -13,10 +13,12 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _react2 = require("@emotion/react");
15
15
  var _services = require("../../../services");
16
+ var _href_validator = require("../../../services/security/href_validator");
17
+ var _useEuiDisabledElement = require("../../../services/hooks/useEuiDisabledElement");
16
18
  var _button_display = require("./_button_display.styles");
17
19
  var _button_display_content = require("./_button_display_content");
18
- var _href_validator = require("../../../services/security/href_validator");
19
- var _excluded = ["element", "type", "children", "iconType", "iconSide", "iconSize", "size", "isDisabled", "disabled", "isLoading", "isSelected", "fullWidth", "minWidth", "contentProps", "textProps", "href", "target", "rel", "style"];
20
+ var _excluded = ["element", "type", "children", "iconType", "iconSide", "iconSize", "size", "isDisabled", "disabled", "hasAriaDisabled", "isLoading", "isSelected", "fullWidth", "minWidth", "contentProps", "textProps", "href", "target", "rel", "style"],
21
+ _excluded2 = ["ref"];
20
22
  /*
21
23
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
22
24
  * or more contributor license agreements. Licensed under the Elastic License
@@ -62,6 +64,8 @@ var EuiButtonDisplay = exports.EuiButtonDisplay = /*#__PURE__*/(0, _react.forwar
62
64
  size = _ref2$size === void 0 ? 'm' : _ref2$size,
63
65
  isDisabled = _ref2.isDisabled,
64
66
  disabled = _ref2.disabled,
67
+ _ref2$hasAriaDisabled = _ref2.hasAriaDisabled,
68
+ hasAriaDisabled = _ref2$hasAriaDisabled === void 0 ? false : _ref2$hasAriaDisabled,
65
69
  isLoading = _ref2.isLoading,
66
70
  isSelected = _ref2.isSelected,
67
71
  fullWidth = _ref2.fullWidth,
@@ -78,6 +82,14 @@ var EuiButtonDisplay = exports.EuiButtonDisplay = /*#__PURE__*/(0, _react.forwar
78
82
  isDisabled: isDisabled || disabled,
79
83
  isLoading: isLoading
80
84
  });
85
+ var _useEuiDisabledElemen = (0, _useEuiDisabledElement.useEuiDisabledElement)({
86
+ isDisabled: buttonIsDisabled,
87
+ hasAriaDisabled: hasAriaDisabled,
88
+ onKeyDown: rest.onKeyDown
89
+ }),
90
+ disabledRef = _useEuiDisabledElemen.ref,
91
+ disabledButtonProps = (0, _objectWithoutProperties2.default)(_useEuiDisabledElemen, _excluded2);
92
+ var setCombinedRef = (0, _services.useCombinedRefs)([disabledRef, ref]);
81
93
  var styles = (0, _services.useEuiMemoizedStyles)(_button_display.euiButtonDisplayStyles);
82
94
  var cssStyles = [styles.euiButtonDisplay, styles[size], fullWidth && styles.fullWidth, minWidth == null && [styles.defaultMinWidth.defaultMinWidth, styles.defaultMinWidth[size]], buttonIsDisabled && styles.isDisabled];
83
95
  var innerNode = (0, _react2.jsx)(_button_display_content.EuiButtonDisplayContent, (0, _extends2.default)({
@@ -89,13 +101,14 @@ var EuiButtonDisplay = exports.EuiButtonDisplay = /*#__PURE__*/(0, _react.forwar
89
101
  textProps: textProps
90
102
  }, contentProps), children);
91
103
  var element = buttonIsDisabled ? 'button' : href ? 'a' : _element;
92
- var elementProps = {};
93
- // Element-specific attributes
104
+ var elementProps = {
105
+ ref: setCombinedRef
106
+ };
107
+ var buttonProps = {};
94
108
  if (element === 'button') {
95
- elementProps = _objectSpread(_objectSpread({}, elementProps), {}, {
96
- disabled: buttonIsDisabled,
109
+ buttonProps = _objectSpread({
97
110
  'aria-pressed': isSelected
98
- });
111
+ }, disabledButtonProps);
99
112
  }
100
113
  var relObj = {};
101
114
  if (href && !buttonIsDisabled) {
@@ -109,12 +122,11 @@ var EuiButtonDisplay = exports.EuiButtonDisplay = /*#__PURE__*/(0, _react.forwar
109
122
  } else {
110
123
  relObj.type = type;
111
124
  }
112
- return (0, _react2.createElement)(element, _objectSpread(_objectSpread(_objectSpread({
125
+ return (0, _react2.createElement)(element, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
113
126
  css: cssStyles,
114
127
  style: minWidth ? _objectSpread(_objectSpread({}, style), {}, {
115
128
  minInlineSize: minWidth
116
- }) : style,
117
- ref: ref
118
- }, elementProps), relObj), rest), innerNode);
129
+ }) : style
130
+ }, elementProps), relObj), rest), buttonProps), innerNode);
119
131
  });
120
132
  EuiButtonDisplay.displayName = 'EuiButtonDisplay';
@@ -20,11 +20,11 @@ var euiButtonBaseCSS = exports.euiButtonBaseCSS = function euiButtonBaseCSS() {
20
20
  return "\n display: inline-block;\n appearance: none;\n cursor: pointer;\n ".concat((0, _global_styling.logicalTextAlignCSS)('center'), ";\n white-space: nowrap;\n ").concat((0, _global_styling.logicalCSS)('max-width', '100%'), ";\n vertical-align: middle;\n ");
21
21
  };
22
22
  var _ref = process.env.NODE_ENV === "production" ? {
23
- name: "8595p9-isDisabled",
24
- styles: "cursor:not-allowed;label:isDisabled;"
23
+ name: "col2gx-isDisabled",
24
+ styles: "cursor:not-allowed;&[aria-disabled='true']{pointer-events:none;>*{pointer-events:none;}};label:isDisabled;"
25
25
  } : {
26
- name: "8595p9-isDisabled",
27
- styles: "cursor:not-allowed;label:isDisabled;",
26
+ name: "col2gx-isDisabled",
27
+ styles: "cursor:not-allowed;&[aria-disabled='true']{pointer-events:none;>*{pointer-events:none;}};label:isDisabled;",
28
28
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
29
29
  };
30
30
  var euiButtonDisplayStyles = exports.euiButtonDisplayStyles = function euiButtonDisplayStyles(euiThemeContext) {
@@ -11,12 +11,14 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
11
11
  var _react = _interopRequireDefault(require("react"));
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
  var _services = require("../../../services");
14
- var _button_display_content = require("../button_display/_button_display_content");
14
+ var _useEuiDisabledElement = require("../../../services/hooks/useEuiDisabledElement");
15
15
  var _button = require("../../../global_styling/mixins/_button");
16
+ var _button_display_content = require("../button_display/_button_display_content");
16
17
  var _button_display = require("../button_display/_button_display");
17
18
  var _button_empty = require("./button_empty.styles");
18
19
  var _react2 = require("@emotion/react");
19
- var _excluded = ["children", "className", "iconType", "iconSide", "iconSize", "color", "size", "flush", "isDisabled", "disabled", "isLoading", "href", "target", "rel", "type", "buttonRef", "contentProps", "textProps", "isSelected"];
20
+ var _excluded = ["children", "className", "iconType", "iconSide", "iconSize", "color", "size", "flush", "isDisabled", "disabled", "hasAriaDisabled", "isLoading", "href", "target", "rel", "type", "buttonRef", "contentProps", "textProps", "isSelected"],
21
+ _excluded2 = ["ref"];
20
22
  /*
21
23
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
22
24
  * or more contributor license agreements. Licensed under the Elastic License
@@ -49,6 +51,8 @@ var EuiButtonEmpty = exports.EuiButtonEmpty = function EuiButtonEmpty(_ref) {
49
51
  flush = _ref.flush,
50
52
  _isDisabled = _ref.isDisabled,
51
53
  disabled = _ref.disabled,
54
+ _ref$hasAriaDisabled = _ref.hasAriaDisabled,
55
+ hasAriaDisabled = _ref$hasAriaDisabled === void 0 ? false : _ref$hasAriaDisabled,
52
56
  isLoading = _ref.isLoading,
53
57
  href = _ref.href,
54
58
  target = _ref.target,
@@ -65,6 +69,14 @@ var EuiButtonEmpty = exports.EuiButtonEmpty = function EuiButtonEmpty(_ref) {
65
69
  href: href,
66
70
  isLoading: isLoading
67
71
  });
72
+ var _useEuiDisabledElemen = (0, _useEuiDisabledElement.useEuiDisabledElement)({
73
+ isDisabled: isDisabled,
74
+ hasAriaDisabled: hasAriaDisabled,
75
+ onKeyDown: rest.onKeyDown
76
+ }),
77
+ disabledRef = _useEuiDisabledElemen.ref,
78
+ disabledButtonProps = (0, _objectWithoutProperties2.default)(_useEuiDisabledElemen, _excluded2);
79
+ var setCombinedRef = (0, _services.useCombinedRefs)([disabledRef, buttonRef]);
68
80
  var buttonColorStyles = (0, _button.useEuiButtonColorCSS)({
69
81
  display: 'empty'
70
82
  });
@@ -100,7 +112,7 @@ var EuiButtonEmpty = exports.EuiButtonEmpty = function EuiButtonEmpty(_ref) {
100
112
  href: href,
101
113
  target: target,
102
114
  rel: secureRel,
103
- ref: buttonRef
115
+ ref: setCombinedRef
104
116
  }, rest), innerNode);
105
117
  }
106
118
  return (0, _react2.jsx)("button", (0, _extends2.default)({
@@ -108,7 +120,7 @@ var EuiButtonEmpty = exports.EuiButtonEmpty = function EuiButtonEmpty(_ref) {
108
120
  className: classes,
109
121
  css: cssStyles,
110
122
  type: type,
111
- ref: buttonRef,
123
+ ref: setCombinedRef,
112
124
  "aria-pressed": isSelected
113
- }, rest), innerNode);
125
+ }, rest, disabledButtonProps), innerNode);
114
126
  };