@elastic/eui 109.0.0 → 109.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/es/components/accessibility/skip_link/skip_link.js +10 -1
  2. package/es/components/bottom_bar/bottom_bar.js +12 -2
  3. package/es/components/button/button.js +20 -25
  4. package/es/components/button/button_display/_button_display.js +32 -30
  5. package/es/components/button/button_display/_button_display.styles.js +4 -4
  6. package/es/components/button/button_empty/button_empty.js +32 -14
  7. package/es/components/button/button_group/button_group.js +49 -31
  8. package/es/components/button/button_group/button_group_button.js +14 -2
  9. package/es/components/button/button_group/button_group_button.styles.js +12 -8
  10. package/es/components/button/button_icon/button_icon.js +30 -6
  11. package/es/components/card/card.js +20 -25
  12. package/es/components/card/card_select/card_select.js +20 -25
  13. package/es/components/code/code_block_virtualized.js +9 -7
  14. package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  15. package/es/components/datagrid/body/cell/data_grid_cell.js +35 -12
  16. package/es/components/datagrid/body/data_grid_body.js +23 -6
  17. package/es/components/datagrid/body/data_grid_body_custom.js +23 -6
  18. package/es/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  19. package/es/components/datagrid/body/header/data_grid_header_cell.js +23 -6
  20. package/es/components/datagrid/controls/column_selector.js +36 -19
  21. package/es/components/datagrid/controls/column_sorting.js +23 -6
  22. package/es/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  23. package/es/components/datagrid/data_grid.js +5 -1
  24. package/es/components/datagrid/utils/in_memory.js +25 -7
  25. package/es/components/date_picker/auto_refresh/auto_refresh.js +11 -2
  26. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +31 -5
  27. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  28. package/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  29. package/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  30. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +98 -0
  31. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  32. package/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  33. package/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  34. package/es/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  35. package/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  36. package/es/components/facet/facet_button.js +9 -19
  37. package/es/components/filter_group/filter_button.js +14 -1
  38. package/es/components/flyout/flyout.js +27 -10
  39. package/es/components/form/form_control_button/form_control_button.js +13 -7
  40. package/es/components/header/header_links/header_link.js +13 -7
  41. package/es/components/header/header_section/header_section_item_button.js +13 -7
  42. package/es/components/icon/assets/boxes_vertical.js +1 -1
  43. package/es/components/icon/assets/checkInCircleFilled.js +1 -2
  44. package/es/components/icon/assets/errorFilled.js +1 -2
  45. package/es/components/icon/assets/warningFilled.js +1 -2
  46. package/es/components/icon/icon_map.js +3 -6
  47. package/es/components/list_group/list_group.js +13 -1
  48. package/es/components/list_group/list_group_item.js +13 -1
  49. package/es/components/list_group/list_group_item_extra_action.js +13 -1
  50. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  51. package/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  52. package/es/components/pagination/pagination_button.js +13 -7
  53. package/es/components/popover/popover.js +22 -16
  54. package/es/components/provider/component_defaults/component_defaults.js +22 -2
  55. package/es/components/table/table_row.styles.js +1 -1
  56. package/es/components/tool_tip/tool_tip.js +24 -24
  57. package/es/global_styling/index.js +2 -1
  58. package/es/global_styling/mixins/_button.js +1 -1
  59. package/es/global_styling/utility/selectors.js +9 -0
  60. package/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  61. package/es/services/focus_trap/index.js +9 -0
  62. package/es/services/hooks/index.js +2 -1
  63. package/es/services/hooks/useEuiDisabledElement.js +195 -0
  64. package/es/services/index.js +1 -0
  65. package/es/services/popover/reposition_on_scroll.js +61 -0
  66. package/es/test/cypress/index.d.ts +12 -0
  67. package/es/test/cypress/index.js +9 -0
  68. package/es/test/cypress/matchers.d.ts +20 -0
  69. package/es/test/cypress/matchers.js +54 -0
  70. package/es/test/cypress/test_reposition_on_scroll.js +66 -0
  71. package/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  72. package/es/test/enzyme/enzyme_matchers.js +43 -0
  73. package/es/test/enzyme/index.d.ts +14 -0
  74. package/es/test/enzyme/index.js +10 -0
  75. package/es/test/rtl/index.d.ts +9 -1
  76. package/es/test/rtl/index.js +2 -1
  77. package/es/test/rtl/matchers.d.ts +36 -0
  78. package/es/test/rtl/matchers.js +82 -0
  79. package/es/utils/element_can_be_disabled.js +16 -0
  80. package/es/utils/index.js +2 -1
  81. package/eui.d.ts +588 -180
  82. package/i18ntokens.json +1357 -1231
  83. package/lib/components/accessibility/skip_link/skip_link.js +10 -1
  84. package/lib/components/bottom_bar/bottom_bar.js +11 -1
  85. package/lib/components/button/button.js +21 -26
  86. package/lib/components/button/button_display/_button_display.js +31 -29
  87. package/lib/components/button/button_display/_button_display.styles.js +4 -4
  88. package/lib/components/button/button_empty/button_empty.js +31 -13
  89. package/lib/components/button/button_group/button_group.js +49 -31
  90. package/lib/components/button/button_group/button_group_button.js +14 -2
  91. package/lib/components/button/button_group/button_group_button.styles.js +10 -6
  92. package/lib/components/button/button_icon/button_icon.js +29 -5
  93. package/lib/components/card/card.js +21 -26
  94. package/lib/components/card/card_select/card_select.js +21 -26
  95. package/lib/components/code/code_block_virtualized.js +9 -7
  96. package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  97. package/lib/components/datagrid/body/cell/data_grid_cell.js +35 -12
  98. package/lib/components/datagrid/body/data_grid_body.js +23 -6
  99. package/lib/components/datagrid/body/data_grid_body_custom.js +23 -6
  100. package/lib/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  101. package/lib/components/datagrid/body/header/data_grid_header_cell.js +23 -6
  102. package/lib/components/datagrid/controls/column_selector.js +36 -19
  103. package/lib/components/datagrid/controls/column_sorting.js +23 -6
  104. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  105. package/lib/components/datagrid/data_grid.js +5 -1
  106. package/lib/components/datagrid/utils/in_memory.js +25 -7
  107. package/lib/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  108. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  109. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  110. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  111. package/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  112. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +104 -0
  113. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  114. package/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  115. package/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  116. package/lib/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  117. package/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  118. package/lib/components/facet/facet_button.js +9 -19
  119. package/lib/components/filter_group/filter_button.js +14 -1
  120. package/lib/components/flyout/flyout.js +26 -9
  121. package/lib/components/form/form_control_button/form_control_button.js +13 -7
  122. package/lib/components/header/header_links/header_link.js +13 -7
  123. package/lib/components/header/header_section/header_section_item_button.js +13 -7
  124. package/lib/components/icon/assets/boxes_vertical.js +1 -1
  125. package/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  126. package/lib/components/icon/assets/errorFilled.js +1 -2
  127. package/lib/components/icon/assets/warningFilled.js +1 -2
  128. package/lib/components/icon/icon_map.js +3 -6
  129. package/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  130. package/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  131. package/lib/components/icon/svgs/errorFilled.svg +1 -1
  132. package/lib/components/icon/svgs/warningFilled.svg +1 -1
  133. package/lib/components/list_group/list_group.js +13 -1
  134. package/lib/components/list_group/list_group_item.js +13 -1
  135. package/lib/components/list_group/list_group_item_extra_action.js +13 -1
  136. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  137. package/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  138. package/lib/components/pagination/pagination_button.js +13 -7
  139. package/lib/components/popover/popover.js +21 -15
  140. package/lib/components/provider/component_defaults/component_defaults.js +22 -2
  141. package/lib/components/table/table_row.styles.js +1 -1
  142. package/lib/components/tool_tip/tool_tip.js +24 -24
  143. package/lib/global_styling/index.js +16 -1
  144. package/lib/global_styling/mixins/_button.js +1 -1
  145. package/lib/global_styling/utility/selectors.js +15 -0
  146. package/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  147. package/lib/services/focus_trap/index.js +12 -0
  148. package/lib/services/hooks/index.js +18 -1
  149. package/lib/services/hooks/useEuiDisabledElement.js +199 -0
  150. package/lib/services/index.js +8 -0
  151. package/lib/services/popover/reposition_on_scroll.js +67 -0
  152. package/lib/test/cypress/index.d.ts +12 -0
  153. package/lib/test/cypress/index.js +18 -0
  154. package/lib/test/cypress/matchers.d.ts +20 -0
  155. package/lib/test/cypress/matchers.js +61 -0
  156. package/lib/test/cypress/test_reposition_on_scroll.js +69 -0
  157. package/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  158. package/lib/test/enzyme/enzyme_matchers.js +49 -0
  159. package/lib/test/enzyme/index.d.ts +14 -0
  160. package/lib/test/enzyme/index.js +24 -0
  161. package/lib/test/rtl/index.d.ts +9 -1
  162. package/lib/test/rtl/index.js +24 -2
  163. package/lib/test/rtl/matchers.d.ts +36 -0
  164. package/lib/test/rtl/matchers.js +86 -0
  165. package/lib/utils/element_can_be_disabled.js +22 -0
  166. package/lib/utils/index.js +14 -1
  167. package/optimize/es/components/bottom_bar/bottom_bar.js +12 -2
  168. package/optimize/es/components/button/button_display/_button_display.js +24 -12
  169. package/optimize/es/components/button/button_display/_button_display.styles.js +4 -4
  170. package/optimize/es/components/button/button_empty/button_empty.js +18 -6
  171. package/optimize/es/components/button/button_group/button_group.js +10 -5
  172. package/optimize/es/components/button/button_group/button_group_button.js +1 -1
  173. package/optimize/es/components/button/button_group/button_group_button.styles.js +12 -8
  174. package/optimize/es/components/button/button_icon/button_icon.js +17 -5
  175. package/optimize/es/components/code/code_block_virtualized.js +9 -7
  176. package/optimize/es/components/datagrid/controls/column_selector.js +36 -19
  177. package/optimize/es/components/datagrid/data_grid.js +5 -1
  178. package/optimize/es/components/datagrid/utils/in_memory.js +2 -1
  179. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +12 -4
  180. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  181. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  182. package/optimize/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  183. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +97 -0
  184. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  185. package/optimize/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  186. package/optimize/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  187. package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  188. package/optimize/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  189. package/optimize/es/components/flyout/flyout.js +27 -10
  190. package/optimize/es/components/icon/assets/boxes_vertical.js +1 -1
  191. package/optimize/es/components/icon/assets/checkInCircleFilled.js +1 -2
  192. package/optimize/es/components/icon/assets/errorFilled.js +1 -2
  193. package/optimize/es/components/icon/assets/warningFilled.js +1 -2
  194. package/optimize/es/components/icon/icon_map.js +3 -6
  195. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  196. package/optimize/es/components/popover/popover.js +22 -16
  197. package/optimize/es/components/table/table_row.styles.js +1 -1
  198. package/optimize/es/components/tool_tip/tool_tip.js +24 -24
  199. package/optimize/es/global_styling/index.js +2 -1
  200. package/optimize/es/global_styling/mixins/_button.js +1 -1
  201. package/optimize/es/global_styling/utility/selectors.js +9 -0
  202. package/optimize/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  203. package/optimize/es/services/focus_trap/index.js +9 -0
  204. package/optimize/es/services/hooks/index.js +2 -1
  205. package/optimize/es/services/hooks/useEuiDisabledElement.js +192 -0
  206. package/optimize/es/services/index.js +1 -0
  207. package/optimize/es/services/popover/reposition_on_scroll.js +61 -0
  208. package/optimize/es/test/cypress/index.d.ts +12 -0
  209. package/optimize/es/test/cypress/index.js +9 -0
  210. package/optimize/es/test/cypress/matchers.d.ts +20 -0
  211. package/optimize/es/test/cypress/matchers.js +54 -0
  212. package/optimize/es/test/cypress/test_reposition_on_scroll.js +63 -0
  213. package/optimize/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  214. package/optimize/es/test/enzyme/enzyme_matchers.js +43 -0
  215. package/optimize/es/test/enzyme/index.d.ts +14 -0
  216. package/optimize/es/test/enzyme/index.js +10 -0
  217. package/optimize/es/test/rtl/index.d.ts +9 -1
  218. package/optimize/es/test/rtl/index.js +2 -1
  219. package/optimize/es/test/rtl/matchers.d.ts +36 -0
  220. package/optimize/es/test/rtl/matchers.js +82 -0
  221. package/optimize/es/utils/element_can_be_disabled.js +16 -0
  222. package/optimize/es/utils/index.js +2 -1
  223. package/optimize/lib/components/bottom_bar/bottom_bar.js +11 -1
  224. package/optimize/lib/components/button/button_display/_button_display.js +23 -11
  225. package/optimize/lib/components/button/button_display/_button_display.styles.js +4 -4
  226. package/optimize/lib/components/button/button_empty/button_empty.js +17 -5
  227. package/optimize/lib/components/button/button_group/button_group.js +10 -5
  228. package/optimize/lib/components/button/button_group/button_group_button.js +1 -1
  229. package/optimize/lib/components/button/button_group/button_group_button.styles.js +10 -6
  230. package/optimize/lib/components/button/button_icon/button_icon.js +16 -4
  231. package/optimize/lib/components/code/code_block_virtualized.js +9 -7
  232. package/optimize/lib/components/datagrid/controls/column_selector.js +36 -19
  233. package/optimize/lib/components/datagrid/data_grid.js +5 -1
  234. package/optimize/lib/components/datagrid/utils/in_memory.js +2 -1
  235. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +11 -3
  236. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  237. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  238. package/optimize/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  239. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  240. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  241. package/optimize/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  242. package/optimize/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  243. package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  244. package/optimize/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  245. package/optimize/lib/components/flyout/flyout.js +26 -9
  246. package/optimize/lib/components/icon/assets/boxes_vertical.js +1 -1
  247. package/optimize/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  248. package/optimize/lib/components/icon/assets/errorFilled.js +1 -2
  249. package/optimize/lib/components/icon/assets/warningFilled.js +1 -2
  250. package/optimize/lib/components/icon/icon_map.js +3 -6
  251. package/optimize/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  252. package/optimize/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  253. package/optimize/lib/components/icon/svgs/errorFilled.svg +1 -1
  254. package/optimize/lib/components/icon/svgs/warningFilled.svg +1 -1
  255. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  256. package/optimize/lib/components/popover/popover.js +21 -15
  257. package/optimize/lib/components/table/table_row.styles.js +1 -1
  258. package/optimize/lib/components/tool_tip/tool_tip.js +24 -24
  259. package/optimize/lib/global_styling/index.js +16 -1
  260. package/optimize/lib/global_styling/mixins/_button.js +1 -1
  261. package/optimize/lib/global_styling/utility/selectors.js +15 -0
  262. package/optimize/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  263. package/optimize/lib/services/focus_trap/index.js +12 -0
  264. package/optimize/lib/services/hooks/index.js +18 -1
  265. package/optimize/lib/services/hooks/useEuiDisabledElement.js +197 -0
  266. package/optimize/lib/services/index.js +8 -0
  267. package/optimize/lib/services/popover/reposition_on_scroll.js +67 -0
  268. package/optimize/lib/test/cypress/index.d.ts +12 -0
  269. package/optimize/lib/test/cypress/index.js +18 -0
  270. package/optimize/lib/test/cypress/matchers.d.ts +20 -0
  271. package/optimize/lib/test/cypress/matchers.js +61 -0
  272. package/optimize/lib/test/cypress/test_reposition_on_scroll.js +70 -0
  273. package/optimize/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  274. package/optimize/lib/test/enzyme/enzyme_matchers.js +50 -0
  275. package/optimize/lib/test/enzyme/index.d.ts +14 -0
  276. package/optimize/lib/test/enzyme/index.js +24 -0
  277. package/optimize/lib/test/rtl/index.d.ts +9 -1
  278. package/optimize/lib/test/rtl/index.js +24 -2
  279. package/optimize/lib/test/rtl/matchers.d.ts +36 -0
  280. package/optimize/lib/test/rtl/matchers.js +86 -0
  281. package/optimize/lib/utils/element_can_be_disabled.js +22 -0
  282. package/optimize/lib/utils/index.js +14 -1
  283. package/package.json +1 -1
  284. package/test-env/components/accessibility/skip_link/skip_link.js +10 -1
  285. package/test-env/components/bottom_bar/bottom_bar.js +11 -1
  286. package/test-env/components/button/button.js +21 -26
  287. package/test-env/components/button/button_display/_button_display.js +31 -29
  288. package/test-env/components/button/button_display/_button_display.styles.js +4 -4
  289. package/test-env/components/button/button_empty/button_empty.js +31 -13
  290. package/test-env/components/button/button_group/button_group.js +49 -31
  291. package/test-env/components/button/button_group/button_group_button.js +14 -2
  292. package/test-env/components/button/button_group/button_group_button.styles.js +10 -6
  293. package/test-env/components/button/button_icon/button_icon.js +29 -5
  294. package/test-env/components/card/card.js +21 -26
  295. package/test-env/components/card/card_select/card_select.js +21 -26
  296. package/test-env/components/code/code_block_virtualized.js +9 -7
  297. package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  298. package/test-env/components/datagrid/body/cell/data_grid_cell.js +35 -12
  299. package/test-env/components/datagrid/body/data_grid_body.js +23 -6
  300. package/test-env/components/datagrid/body/data_grid_body_custom.js +23 -6
  301. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  302. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +23 -6
  303. package/test-env/components/datagrid/controls/column_selector.js +36 -19
  304. package/test-env/components/datagrid/controls/column_sorting.js +23 -6
  305. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  306. package/test-env/components/datagrid/data_grid.js +5 -1
  307. package/test-env/components/datagrid/utils/in_memory.js +25 -7
  308. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  309. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  310. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  311. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  312. package/test-env/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  313. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  314. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  315. package/test-env/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  316. package/test-env/components/date_picker/super_date_picker/relative_utils.js +9 -0
  317. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  318. package/test-env/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  319. package/test-env/components/facet/facet_button.js +9 -19
  320. package/test-env/components/filter_group/filter_button.js +14 -1
  321. package/test-env/components/form/form_control_button/form_control_button.js +13 -7
  322. package/test-env/components/header/header_links/header_link.js +13 -7
  323. package/test-env/components/header/header_section/header_section_item_button.js +13 -7
  324. package/test-env/components/icon/assets/boxes_vertical.js +1 -1
  325. package/test-env/components/icon/assets/checkInCircleFilled.js +1 -2
  326. package/test-env/components/icon/assets/errorFilled.js +1 -2
  327. package/test-env/components/icon/assets/warningFilled.js +1 -2
  328. package/test-env/components/icon/icon_map.js +3 -6
  329. package/test-env/components/list_group/list_group.js +13 -1
  330. package/test-env/components/list_group/list_group_item.js +13 -1
  331. package/test-env/components/list_group/list_group_item_extra_action.js +13 -1
  332. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  333. package/test-env/components/overlay_mask/overlay_mask.styles.js +1 -1
  334. package/test-env/components/pagination/pagination_button.js +13 -7
  335. package/test-env/components/popover/popover.js +21 -15
  336. package/test-env/components/provider/component_defaults/component_defaults.js +22 -2
  337. package/test-env/components/table/table_row.styles.js +1 -1
  338. package/test-env/components/tool_tip/tool_tip.js +24 -24
  339. package/test-env/global_styling/index.js +16 -1
  340. package/test-env/global_styling/mixins/_button.js +1 -1
  341. package/test-env/global_styling/utility/selectors.js +15 -0
  342. package/test-env/services/focus_trap/focus_trap_pub_sub.js +80 -0
  343. package/test-env/services/focus_trap/index.js +12 -0
  344. package/test-env/services/hooks/index.js +18 -1
  345. package/test-env/services/hooks/useEuiDisabledElement.js +197 -0
  346. package/test-env/services/index.js +8 -0
  347. package/test-env/services/popover/reposition_on_scroll.js +67 -0
  348. package/test-env/test/cypress/index.js +18 -0
  349. package/test-env/test/cypress/matchers.js +61 -0
  350. package/test-env/test/cypress/test_reposition_on_scroll.js +70 -0
  351. package/test-env/test/enzyme/enzyme_matchers.js +50 -0
  352. package/test-env/test/enzyme/index.js +24 -0
  353. package/test-env/test/rtl/index.js +24 -2
  354. package/test-env/test/rtl/matchers.js +86 -0
  355. package/test-env/utils/element_can_be_disabled.js +22 -0
  356. package/test-env/utils/index.js +14 -1
@@ -141,7 +141,7 @@ var euiButtonDisplaysColors = function euiButtonDisplaysColors(euiThemeContext)
141
141
  case 'fill':
142
142
  {
143
143
  var _buttonColors = getButtonVariantTokenValues(euiThemeContext, color, 'filled');
144
- displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : euiThemeContext.euiTheme.colors.fullShade, ";", _interactionStyles(euiThemeContext, _buttonColors), ";;label:displaysColorsMap-display-color;");
144
+ displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : color !== 'disabled' ? euiThemeContext.euiTheme.colors.fullShade : '', ";", _interactionStyles(euiThemeContext, _buttonColors), ";;label:displaysColorsMap-display-color;");
145
145
  break;
146
146
  }
147
147
  case 'empty':
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.euiDisabledSelector = 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 euiDisabledSelector = exports.euiDisabledSelector = ":disabled, [aria-disabled=\"true\"]";
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.focusTrapPubSub = 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 listeners = new Set();
16
+
17
+ /**
18
+ * Subscribes a listener function to be called whenever focus trap updates are published.
19
+ *
20
+ * @param listener The function to be called on updates.
21
+ * @returns A function that, when called, will unsubscribe the listener. Please remember
22
+ * to call this function for proper cleanup.
23
+ * @example
24
+ * ```tsx
25
+ * useEffect(() => {
26
+ * const unsubscribe = focusTrapPubSub.subscribe(() => {
27
+ * console.log('focus trap updated');
28
+ * });
29
+ *
30
+ * return () => unsubscribe();
31
+ * }, []);
32
+ * ```
33
+ */
34
+ var subscribe = function subscribe(listener) {
35
+ listeners.add(listener);
36
+ return function () {
37
+ return unsubscribe(listener);
38
+ };
39
+ };
40
+
41
+ /**
42
+ * Unsubscribes a listener from the focus trap PubSub service.
43
+ *
44
+ * @param listener The function to unsubscribe.
45
+ */
46
+ var unsubscribe = function unsubscribe(listener) {
47
+ listeners.delete(listener);
48
+ };
49
+
50
+ /**
51
+ * Publishes an event to all subscribed listeners, signaling that
52
+ * components managing focus traps should re-evaluate their tracked elements.
53
+ */
54
+ var publish = function publish() {
55
+ listeners.forEach(function (listener) {
56
+ return listener();
57
+ });
58
+ };
59
+
60
+ /**
61
+ * A lightweight, global PubSub service for loose coupling of components
62
+ * that need to interact with the same focus trap.
63
+ *
64
+ * This allows a component (like `EuiPopover`) to be rendered in a React Portal
65
+ * and still be included in the focus trap of another component (like `EuiFlyout`)
66
+ * without either component needing a direct reference to the other.
67
+ *
68
+ * How it works:
69
+ *
70
+ * 1. A container component (e.g., `EuiFlyout`) `subscribe`s to this service on mount.
71
+ * 2. An ephemeral component (e.g., `EuiPopover`) calls `publish` when its state
72
+ * changes in a way that affects the DOM (e.g., opening, closing, unmounting).
73
+ * 3. The container component's subscribed callback fires, causing it to re-query
74
+ * the DOM for any elements it should include in its focus trap.
75
+ */
76
+ var focusTrapPubSub = exports.focusTrapPubSub = {
77
+ subscribe: subscribe,
78
+ unsubscribe: unsubscribe,
79
+ publish: publish
80
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "focusTrapPubSub", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _focus_trap_pub_sub.focusTrapPubSub;
10
+ }
11
+ });
12
+ var _focus_trap_pub_sub = require("./focus_trap_pub_sub");
@@ -3,9 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ useEuiDisabledElement: true
8
+ };
9
+ Object.defineProperty(exports, "useEuiDisabledElement", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _useEuiDisabledElement.useEuiDisabledElement;
13
+ }
14
+ });
6
15
  var _useDependentState = require("./useDependentState");
7
16
  Object.keys(_useDependentState).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] === _useDependentState[key]) return;
10
20
  Object.defineProperty(exports, key, {
11
21
  enumerable: true,
@@ -17,6 +27,7 @@ Object.keys(_useDependentState).forEach(function (key) {
17
27
  var _useCombinedRefs = require("./useCombinedRefs");
18
28
  Object.keys(_useCombinedRefs).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] === _useCombinedRefs[key]) return;
21
32
  Object.defineProperty(exports, key, {
22
33
  enumerable: true,
@@ -28,6 +39,7 @@ Object.keys(_useCombinedRefs).forEach(function (key) {
28
39
  var _useForceRender = require("./useForceRender");
29
40
  Object.keys(_useForceRender).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] === _useForceRender[key]) return;
32
44
  Object.defineProperty(exports, key, {
33
45
  enumerable: true,
@@ -39,6 +51,7 @@ Object.keys(_useForceRender).forEach(function (key) {
39
51
  var _useLatest = require("./useLatest");
40
52
  Object.keys(_useLatest).forEach(function (key) {
41
53
  if (key === "default" || key === "__esModule") return;
54
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
42
55
  if (key in exports && exports[key] === _useLatest[key]) return;
43
56
  Object.defineProperty(exports, key, {
44
57
  enumerable: true,
@@ -50,6 +63,7 @@ Object.keys(_useLatest).forEach(function (key) {
50
63
  var _useDeepEqual = require("./useDeepEqual");
51
64
  Object.keys(_useDeepEqual).forEach(function (key) {
52
65
  if (key === "default" || key === "__esModule") return;
66
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
53
67
  if (key in exports && exports[key] === _useDeepEqual[key]) return;
54
68
  Object.defineProperty(exports, key, {
55
69
  enumerable: true,
@@ -61,6 +75,7 @@ Object.keys(_useDeepEqual).forEach(function (key) {
61
75
  var _useMouseMove = require("./useMouseMove");
62
76
  Object.keys(_useMouseMove).forEach(function (key) {
63
77
  if (key === "default" || key === "__esModule") return;
78
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
64
79
  if (key in exports && exports[key] === _useMouseMove[key]) return;
65
80
  Object.defineProperty(exports, key, {
66
81
  enumerable: true,
@@ -72,6 +87,7 @@ Object.keys(_useMouseMove).forEach(function (key) {
72
87
  var _useUpdateEffect = require("./useUpdateEffect");
73
88
  Object.keys(_useUpdateEffect).forEach(function (key) {
74
89
  if (key === "default" || key === "__esModule") return;
90
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
75
91
  if (key in exports && exports[key] === _useUpdateEffect[key]) return;
76
92
  Object.defineProperty(exports, key, {
77
93
  enumerable: true,
@@ -79,4 +95,5 @@ Object.keys(_useUpdateEffect).forEach(function (key) {
79
95
  return _useUpdateEffect[key];
80
96
  }
81
97
  });
82
- });
98
+ });
99
+ var _useEuiDisabledElement = require("./useEuiDisabledElement");
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useEuiDisabledElement = void 0;
7
+ var _react = require("react");
8
+ var _keys = require("../../services/keys");
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ 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; }
11
+ 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; }
12
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*
15
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
16
+ * or more contributor license agreements. Licensed under the Elastic License
17
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
18
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
19
+ * Side Public License, v 1.
20
+ */
21
+ var DISABLED_ELEMENT_EVENTS = {
22
+ click: 'onClick',
23
+ mousedown: 'onMouseDown',
24
+ mouseup: 'onMouseUp',
25
+ mouseenter: 'onMouseEnter',
26
+ mouseleave: 'onMouseLeave',
27
+ mouseout: 'onMouseOut',
28
+ mousemove: 'onMouseMove',
29
+ mouseover: 'onMouseOver',
30
+ pointerdown: 'onPointerDown',
31
+ pointerup: 'onPointerUp',
32
+ pointerenter: 'onPointerEnter',
33
+ pointerleave: 'onPointerLeave',
34
+ pointermove: 'onPointerMove',
35
+ pointerover: 'onPointerOver',
36
+ touchstart: 'onTouchStart',
37
+ touchend: 'onTouchEnd',
38
+ touchmove: 'onTouchMove',
39
+ keydown: 'onKeyDown',
40
+ keyup: 'onKeyUp',
41
+ keypress: 'onKeyPress',
42
+ submit: 'onSubmit'
43
+ };
44
+ var ALLOWED_KEY_EVENTS = [_keys.keys.TAB, _keys.keys.ESCAPE];
45
+ var getReactEventHandlers = function getReactEventHandlers() {
46
+ return Object.values(DISABLED_ELEMENT_EVENTS).reduce(function (acc, curr) {
47
+ acc[curr] = undefined;
48
+ return acc;
49
+ }, {});
50
+ };
51
+ var UNSET_REACT_EVENT_HANDLERS = getReactEventHandlers();
52
+ var useCustomDisabledEvents = function useCustomDisabledEvents() {
53
+ var elementMethodsRef = (0, _react.useRef)(null);
54
+ var isAllowedKeyEvent = function isAllowedKeyEvent(event) {
55
+ return event instanceof KeyboardEvent && ALLOWED_KEY_EVENTS.includes(event.key);
56
+ };
57
+ var preventEvent = (0, _react.useCallback)(function (event) {
58
+ if (isAllowedKeyEvent(event)) {
59
+ return;
60
+ }
61
+ event.stopImmediatePropagation();
62
+ event.preventDefault();
63
+ event.stopPropagation();
64
+ }, []);
65
+ var preventElementEvents = (0, _react.useCallback)(function (element) {
66
+ if (elementMethodsRef.current) return;
67
+ var originalEvents = {
68
+ click: 'click' in element ? element.click : undefined,
69
+ dispatchEvent: element.dispatchEvent
70
+ };
71
+ try {
72
+ elementMethodsRef.current = originalEvents;
73
+
74
+ // Add prevention listeners
75
+ Object.keys(DISABLED_ELEMENT_EVENTS).forEach(function (eventType) {
76
+ element.addEventListener(eventType, preventEvent, {
77
+ capture: true
78
+ });
79
+ });
80
+ if ('click' in element && typeof element.click === 'function') {
81
+ element.click = function () {};
82
+ }
83
+ element.dispatchEvent = function (event) {
84
+ if (Object.keys(DISABLED_ELEMENT_EVENTS).includes(event.type)) {
85
+ if (isAllowedKeyEvent(event)) {
86
+ return originalEvents.dispatchEvent.call(element, event);
87
+ }
88
+ return false;
89
+ }
90
+ return originalEvents.dispatchEvent.call(element, event);
91
+ };
92
+ } catch (error) {
93
+ elementMethodsRef.current = null;
94
+ }
95
+ }, [preventEvent]);
96
+ var resetElementEvents = (0, _react.useCallback)(function (element) {
97
+ if (!elementMethodsRef.current) return;
98
+ var _elementMethodsRef$cu = elementMethodsRef.current,
99
+ click = _elementMethodsRef$cu.click,
100
+ dispatchEvent = _elementMethodsRef$cu.dispatchEvent;
101
+ try {
102
+ // remove prevention listeners
103
+ Object.keys(DISABLED_ELEMENT_EVENTS).forEach(function (eventType) {
104
+ element.removeEventListener(eventType, preventEvent, {
105
+ capture: true
106
+ });
107
+ });
108
+
109
+ // restore click method
110
+ if (click && 'click' in element) {
111
+ element.click = click;
112
+ }
113
+
114
+ // restore dispatchEvent
115
+ element.dispatchEvent = dispatchEvent;
116
+ } catch (error) {}
117
+ elementMethodsRef.current = null;
118
+ }, [preventEvent]);
119
+ return {
120
+ preventElementEvents: preventElementEvents,
121
+ resetElementEvents: resetElementEvents
122
+ };
123
+ };
124
+
125
+ /**
126
+ * NOTE: Beta feature, may be changed or removed in the future
127
+ *
128
+ * Utility to apply either the native or a custom semantic disabled state.
129
+ *
130
+ * It applies `aria-disabled` instead of `disabled` when `hasAriaDisabled=true`
131
+ * to ensure the element is semantically disabled while still focusable.
132
+ *
133
+ * It mimics the native `disabled` behavior by removing any programmatic mouse, pointer, touch
134
+ * or keyboard event handler but it differs to the native `disabled` behavior in that it preserves
135
+ * the focus, blur and tabIndex behavior.
136
+ */
137
+ var useEuiDisabledElement = exports.useEuiDisabledElement = function useEuiDisabledElement(_ref) {
138
+ var _ref$isDisabled = _ref.isDisabled,
139
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
140
+ _ref$hasAriaDisabled = _ref.hasAriaDisabled,
141
+ hasAriaDisabled = _ref$hasAriaDisabled === void 0 ? false : _ref$hasAriaDisabled,
142
+ onKeyDown = _ref.onKeyDown,
143
+ onKeyUp = _ref.onKeyUp,
144
+ onKeyPress = _ref.onKeyPress;
145
+ var elementRef = (0, _react.useRef)(null);
146
+ var _useCustomDisabledEve = useCustomDisabledEvents(),
147
+ preventElementEvents = _useCustomDisabledEve.preventElementEvents,
148
+ resetElementEvents = _useCustomDisabledEve.resetElementEvents;
149
+ var shouldBeDisabled = hasAriaDisabled && isDisabled;
150
+ var setRef = (0, _react.useCallback)(function (node) {
151
+ if (elementRef.current) {
152
+ resetElementEvents(elementRef.current);
153
+ }
154
+ elementRef.current = node;
155
+ if (node && shouldBeDisabled) {
156
+ preventElementEvents(node);
157
+ }
158
+ }, [shouldBeDisabled, preventElementEvents, resetElementEvents]);
159
+ (0, _react.useEffect)(function () {
160
+ if (!elementRef.current) return;
161
+ if (shouldBeDisabled) {
162
+ preventElementEvents(elementRef.current);
163
+ } else {
164
+ resetElementEvents(elementRef.current);
165
+ }
166
+ return function () {
167
+ if (elementRef.current) {
168
+ resetElementEvents(elementRef.current);
169
+ }
170
+ };
171
+ }, [shouldBeDisabled, preventElementEvents, resetElementEvents]);
172
+ if (!hasAriaDisabled) {
173
+ return {
174
+ ref: setRef,
175
+ disabled: isDisabled
176
+ };
177
+ }
178
+ var onKeyboardEvent = function onKeyboardEvent(e, callback) {
179
+ if (ALLOWED_KEY_EVENTS.includes(e.key)) {
180
+ callback === null || callback === void 0 || callback(e);
181
+ }
182
+ };
183
+ var eventHandlers = shouldBeDisabled && _objectSpread(_objectSpread({}, UNSET_REACT_EVENT_HANDLERS), {}, {
184
+ onKeyDown: onKeyDown ? function (e) {
185
+ return onKeyboardEvent(e, onKeyDown);
186
+ } : undefined,
187
+ onKeyUp: onKeyUp ? function (e) {
188
+ return onKeyboardEvent(e, onKeyUp);
189
+ } : undefined,
190
+ onKeyPress: onKeyPress ? function (e) {
191
+ return onKeyboardEvent(e, onKeyPress);
192
+ } : undefined
193
+ });
194
+ return _objectSpread({
195
+ ref: setRef,
196
+ 'aria-disabled': isDisabled ? true : undefined,
197
+ disabled: isDisabled ? undefined : false
198
+ }, eventHandlers);
199
+ };
@@ -63,6 +63,7 @@ var _exportNames = {
63
63
  wcagContrastMin: true,
64
64
  useColorPickerState: true,
65
65
  useColorStopsState: true,
66
+ focusTrapPubSub: true,
66
67
  dateFormatAliases: true,
67
68
  formatAuto: true,
68
69
  formatBoolean: true,
@@ -330,6 +331,12 @@ Object.defineProperty(exports, "findPopoverPosition", {
330
331
  return _popover.findPopoverPosition;
331
332
  }
332
333
  });
334
+ Object.defineProperty(exports, "focusTrapPubSub", {
335
+ enumerable: true,
336
+ get: function get() {
337
+ return _focus_trap.focusTrapPubSub;
338
+ }
339
+ });
333
340
  Object.defineProperty(exports, "formatAuto", {
334
341
  enumerable: true,
335
342
  get: function get() {
@@ -657,6 +664,7 @@ Object.keys(_findElement).forEach(function (key) {
657
664
  }
658
665
  });
659
666
  });
667
+ var _focus_trap = require("./focus_trap");
660
668
  var _format = require("./format");
661
669
  var _hooks = require("./hooks");
662
670
  Object.keys(_hooks).forEach(function (key) {
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getRepositionOnScroll = exports.createRepositionOnScroll = 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
+ /**
16
+ * Returns the value of the `repositionOnScroll` from the props, component's defaults context
17
+ * or default to `false`.
18
+ *
19
+ * @param args The arguments for `getRepositionOnScroll`. See {@link RepositionOnScrollArgs}.
20
+ * @returns The value of the `repositionOnScroll`.
21
+ */
22
+ var getRepositionOnScroll = exports.getRepositionOnScroll = function getRepositionOnScroll(args) {
23
+ var repositionOnScroll = args.repositionOnScroll,
24
+ componentDefaults = args.componentDefaults;
25
+ if (repositionOnScroll !== undefined) return repositionOnScroll;
26
+ if (componentDefaults && 'repositionOnScroll' in componentDefaults && typeof componentDefaults.repositionOnScroll === 'boolean') {
27
+ var contextValue = componentDefaults.repositionOnScroll;
28
+ return contextValue !== null && contextValue !== void 0 ? contextValue : false;
29
+ }
30
+ return false;
31
+ };
32
+ /**
33
+ * Creates a manager for handling `repositionOnScroll` logic in overlay components.
34
+ * This utility abstracts the adding, updating, and removing of window scroll event listeners.
35
+ *
36
+ * @param getArgs A function that returns the arguments for `getRepositionOnScroll`. See {@link RepositionOnScrollArgs}.
37
+ * @returns An object with `subscribe`, `update`, and `cleanup` methods to manage the scroll listener.
38
+ */
39
+ var createRepositionOnScroll = exports.createRepositionOnScroll = function createRepositionOnScroll(getArgs) {
40
+ var lastResolvedRepositionOnScroll;
41
+ var subscribe = function subscribe() {
42
+ var repositionOnScroll = getRepositionOnScroll(getArgs());
43
+ lastResolvedRepositionOnScroll = repositionOnScroll;
44
+ if (repositionOnScroll) {
45
+ window.addEventListener('scroll', getArgs().repositionFn, true);
46
+ }
47
+ };
48
+ var update = function update() {
49
+ var repositionOnScroll = getRepositionOnScroll(getArgs());
50
+ if (lastResolvedRepositionOnScroll !== repositionOnScroll) {
51
+ if (repositionOnScroll) {
52
+ window.addEventListener('scroll', getArgs().repositionFn, true);
53
+ } else {
54
+ window.removeEventListener('scroll', getArgs().repositionFn, true);
55
+ }
56
+ lastResolvedRepositionOnScroll = repositionOnScroll;
57
+ }
58
+ };
59
+ var cleanup = function cleanup() {
60
+ window.removeEventListener('scroll', getArgs().repositionFn, true);
61
+ };
62
+ return {
63
+ subscribe: subscribe,
64
+ update: update,
65
+ cleanup: cleanup
66
+ };
67
+ };
@@ -0,0 +1,12 @@
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
+ export {
10
+ registerEuiCypressMatchers,
11
+ setupEuiCypressMatchers,
12
+ } from './matchers';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "registerEuiCypressMatchers", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _matchers.registerEuiCypressMatchers;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "setupEuiCypressMatchers", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _matchers.setupEuiCypressMatchers;
16
+ }
17
+ });
18
+ var _matchers = require("./matchers");
@@ -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,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.registerEuiCypressMatchers = registerEuiCypressMatchers;
7
+ exports.setupEuiCypressMatchers = void 0;
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
+ /// <reference types="cypress" />
17
+
18
+ function registerEuiCypressMatchers() {
19
+ var chai = window.chai;
20
+ if (chai && !chai.__euiMatchersRegistered) {
21
+ chai.use(function (_chai) {
22
+ _chai.Assertion.addProperty('euiDisabled', 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 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);
28
+ });
29
+ _chai.Assertion.addProperty('euiEnabled', function () {
30
+ var element = this._obj[0] || this._obj;
31
+ var hasDisabledAttribute = element.hasAttribute('disabled');
32
+ var hasAriaDisabled = element.getAttribute('aria-disabled') === 'true';
33
+ var isDisabled = hasDisabledAttribute || hasAriaDisabled;
34
+ 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);
35
+ });
36
+ });
37
+
38
+ // Mark as registered to prevent double registration
39
+ chai.__euiMatchersRegistered = true;
40
+ }
41
+ }
42
+
43
+ // Register matchers when support file loads
44
+ var setupEuiCypressMatchers = exports.setupEuiCypressMatchers = function setupEuiCypressMatchers() {
45
+ if (typeof window !== 'undefined') {
46
+ // Try to register immediately
47
+ if (window.chai) {
48
+ registerEuiCypressMatchers();
49
+ } else {
50
+ // Wait for chai to be available
51
+ var pollForChai = function pollForChai() {
52
+ if (window.chai) {
53
+ registerEuiCypressMatchers();
54
+ } else {
55
+ setTimeout(pollForChai, 10);
56
+ }
57
+ };
58
+ pollForChai();
59
+ }
60
+ }
61
+ };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.testRepositionOnScroll = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _react2 = require("@emotion/react");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
11
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
13
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*
14
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
15
+ * or more contributor license agreements. Licensed under the Elastic License
16
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
17
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
18
+ * Side Public License, v 1.
19
+ */ /// <reference types="cypress" />
20
+ /// <reference types="cypress-real-events" />
21
+ /// <reference types="../../../cypress/support" />
22
+ var testRepositionOnScroll = exports.testRepositionOnScroll = function testRepositionOnScroll(_ref) {
23
+ var shouldReposition = _ref.shouldReposition,
24
+ propValue = _ref.propValue,
25
+ componentDefaultValue = _ref.componentDefaultValue,
26
+ componentName = _ref.componentName,
27
+ triggerSelector = _ref.triggerSelector,
28
+ panelSelector = _ref.panelSelector,
29
+ renderComponent = _ref.renderComponent;
30
+ var repositionProps = {
31
+ repositionOnScroll: typeof propValue === 'boolean' ? propValue : undefined
32
+ };
33
+ var providerProps = typeof componentDefaultValue === 'boolean' ? {
34
+ providerProps: {
35
+ componentDefaults: _defineProperty({}, componentName, {
36
+ repositionOnScroll: componentDefaultValue
37
+ })
38
+ }
39
+ } : undefined;
40
+ cy.mount((0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)("div", {
41
+ style: {
42
+ height: '200vh'
43
+ }
44
+ }), (0, _react2.jsx)("div", {
45
+ style: {
46
+ position: 'fixed',
47
+ bottom: '16px',
48
+ right: '16px'
49
+ }
50
+ }, renderComponent(repositionProps))), providerProps);
51
+ cy.get(triggerSelector).click();
52
+
53
+ // Wait for positioning to finish
54
+ cy.get(panelSelector).as('panel').should('exist').waitForPositionToSettle();
55
+ cy.get('@panel').then(function ($panel) {
56
+ var initialRect = $panel[0].getBoundingClientRect();
57
+ cy.scrollTo(0, 500);
58
+
59
+ // Wait for re-positioning to finish
60
+ cy.get('@panel').waitForPositionToSettle().then(function ($repositionedPanel) {
61
+ var finalRect = $repositionedPanel[0].getBoundingClientRect();
62
+ if (shouldReposition) {
63
+ expect(finalRect.top).to.equal(initialRect.top);
64
+ } else {
65
+ expect(finalRect.top).to.not.equal(initialRect.top);
66
+ }
67
+ });
68
+ });
69
+ };