@elastic/eui 109.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 (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 +3 -2
  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
@@ -38,6 +38,7 @@ import { EuiDatePickerRange } from '../date_picker_range';
38
38
  import { EuiFormControlButton, EuiFormControlLayout } from '../../form';
39
39
  import { RenderI18nTimeOptions } from './time_options';
40
40
  import { PrettyDuration, showPrettyDuration } from './pretty_duration';
41
+ import { EuiTimeWindowButtons } from './time_window_buttons';
41
42
  import { AsyncInterval } from './async_interval';
42
43
  import { EuiSuperUpdateButton } from './super_update_button';
43
44
  import { EuiQuickSelectPopover } from './quick_select_popover/quick_select_popover';
@@ -276,7 +277,9 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
276
277
  maxDate = _this$props3.maxDate,
277
278
  compressed = _this$props3.compressed,
278
279
  onFocus = _this$props3.onFocus,
279
- styles = _this$props3.memoizedStyles;
280
+ styles = _this$props3.memoizedStyles,
281
+ _this$props3$timeZone = _this$props3.timeZoneDisplayProps,
282
+ timeZoneDisplayProps = _this$props3$timeZone === void 0 ? {} : _this$props3$timeZone;
280
283
  var autoRefreshAppend = !isPaused ? ___EmotionJSX(EuiAutoRefreshButton, {
281
284
  refreshInterval: refreshInterval,
282
285
  minInterval: refreshMinInterval,
@@ -353,7 +356,8 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
353
356
  timeOptions: timeOptions,
354
357
  buttonProps: {
355
358
  onFocus: onFocus
356
- }
359
+ },
360
+ timeZoneDisplayProps: timeZoneDisplayProps
357
361
  }),
358
362
  endDateControl: isQuickSelectOnly ? undefined : ___EmotionJSX(EuiDatePopoverButton, {
359
363
  css: styles.euiSuperDatePicker__rangeInput,
@@ -378,7 +382,8 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
378
382
  timeOptions: timeOptions,
379
383
  buttonProps: {
380
384
  onFocus: onFocus
381
- }
385
+ },
386
+ timeZoneDisplayProps: timeZoneDisplayProps
382
387
  })
383
388
  }));
384
389
  });
@@ -398,13 +403,32 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
398
403
  _this.applyTime();
399
404
  }
400
405
  });
401
- _defineProperty(_this, "renderUpdateButton", function () {
406
+ _defineProperty(_this, "renderTimeWindowButtons", function () {
407
+ if (!_this.props.showTimeWindowButtons || _this.props.isAutoRefreshOnly) {
408
+ return null;
409
+ }
402
410
  var _this$props5 = _this.props,
403
- isLoading = _this$props5.isLoading,
404
- isDisabled = _this$props5.isDisabled,
405
- updateButtonProps = _this$props5.updateButtonProps,
406
- showUpdateButton = _this$props5.showUpdateButton,
407
- compressed = _this$props5.compressed;
411
+ start = _this$props5.start,
412
+ end = _this$props5.end,
413
+ showTimeWindowButtons = _this$props5.showTimeWindowButtons,
414
+ compressed = _this$props5.compressed,
415
+ isDisabled = _this$props5.isDisabled;
416
+ var config = typeof showTimeWindowButtons === 'boolean' ? {} : showTimeWindowButtons;
417
+ return ___EmotionJSX(EuiTimeWindowButtons, _extends({
418
+ applyTime: _this.applyQuickTime,
419
+ start: start,
420
+ end: end,
421
+ compressed: compressed,
422
+ isDisabled: !!isDisabled || _this.state.isInvalid
423
+ }, config));
424
+ });
425
+ _defineProperty(_this, "renderUpdateButton", function () {
426
+ var _this$props6 = _this.props,
427
+ isLoading = _this$props6.isLoading,
428
+ isDisabled = _this$props6.isDisabled,
429
+ updateButtonProps = _this$props6.updateButtonProps,
430
+ showUpdateButton = _this$props6.showUpdateButton,
431
+ compressed = _this$props6.compressed;
408
432
  if (!showUpdateButton) return null;
409
433
  return ___EmotionJSX(EuiSuperUpdateButton, _extends({
410
434
  needsUpdate: _this.state.hasChanged,
@@ -423,21 +447,21 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
423
447
  return _createClass(EuiSuperDatePickerInternal, [{
424
448
  key: "render",
425
449
  value: function render() {
426
- var _this$props6 = this.props,
427
- isAutoRefreshOnly = _this$props6.isAutoRefreshOnly,
428
- isDisabled = _this$props6.isDisabled,
429
- isPaused = _this$props6.isPaused,
430
- onRefreshChange = _this$props6.onRefreshChange,
431
- refreshInterval = _this$props6.refreshInterval,
432
- refreshMinInterval = _this$props6.refreshMinInterval,
433
- refreshIntervalUnits = _this$props6.refreshIntervalUnits,
434
- showUpdateButton = _this$props6.showUpdateButton,
435
- dataTestSubj = _this$props6['data-test-subj'],
436
- _width = _this$props6.width,
437
- isQuickSelectOnly = _this$props6.isQuickSelectOnly,
438
- compressed = _this$props6.compressed,
439
- className = _this$props6.className,
440
- styles = _this$props6.memoizedStyles;
450
+ var _this$props7 = this.props,
451
+ isAutoRefreshOnly = _this$props7.isAutoRefreshOnly,
452
+ isDisabled = _this$props7.isDisabled,
453
+ isPaused = _this$props7.isPaused,
454
+ onRefreshChange = _this$props7.onRefreshChange,
455
+ refreshInterval = _this$props7.refreshInterval,
456
+ refreshMinInterval = _this$props7.refreshMinInterval,
457
+ refreshIntervalUnits = _this$props7.refreshIntervalUnits,
458
+ showUpdateButton = _this$props7.showUpdateButton,
459
+ dataTestSubj = _this$props7['data-test-subj'],
460
+ _width = _this$props7.width,
461
+ isQuickSelectOnly = _this$props7.isQuickSelectOnly,
462
+ compressed = _this$props7.compressed,
463
+ className = _this$props7.className,
464
+ styles = _this$props7.memoizedStyles;
441
465
  var _this$state2 = this.state,
442
466
  hasChanged = _this$state2.hasChanged,
443
467
  isInvalid = _this$state2.isInvalid;
@@ -462,7 +486,7 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
462
486
  compressed: compressed,
463
487
  isDisabled: !!isDisabled,
464
488
  className: className
465
- }) : ___EmotionJSX(React.Fragment, null, this.renderDatePickerRange(), this.renderUpdateButton()));
489
+ }) : ___EmotionJSX(React.Fragment, null, this.renderDatePickerRange(), this.renderTimeWindowButtons(), this.renderUpdateButton()));
466
490
  }
467
491
  }], [{
468
492
  key: "getDerivedStateFromProps",
@@ -627,6 +651,28 @@ EuiSuperDatePickerInternal.propTypes = {
627
651
  * @default true
628
652
  */
629
653
  showUpdateButton: PropTypes.oneOfType([PropTypes.bool.isRequired, PropTypes.oneOf(["iconOnly"])]),
654
+ /**
655
+ * Set to true to display buttons for time shifting and zooming out,
656
+ * next to the top-level control.
657
+ */
658
+ showTimeWindowButtons: PropTypes.oneOfType([PropTypes.bool.isRequired, PropTypes.shape({
659
+ /**
660
+ * Show button for zooming out
661
+ * @default true
662
+ */
663
+ showZoomOut: PropTypes.bool,
664
+ /**
665
+ * Show buttons for shifting the time window forward and backward
666
+ * @default true
667
+ */
668
+ showShiftArrows: PropTypes.bool,
669
+ /**
670
+ * How much the time window is increased when zooming.
671
+ * A number between 0 and 1 e.g. 0.25, or a string representing a percentage e.g. 25%
672
+ * @default 0.5
673
+ * */
674
+ zoomFactor: PropTypes.oneOfType([PropTypes.number.isRequired, PropTypes.string.isRequired])
675
+ }).isRequired]),
630
676
  /**
631
677
  * Hides the actual input reducing to just the quick select button.
632
678
  */
@@ -673,6 +719,31 @@ EuiSuperDatePickerInternal.propTypes = {
673
719
  * input by the user, set this flag to `false`.
674
720
  */
675
721
  canRoundRelativeUnits: PropTypes.bool,
722
+ /**
723
+ * Props passed to the time zone display in the popovers {@link EuiTimeZoneDisplayProps}
724
+ *
725
+ * Setting `timeZoneDisplayProps.timeZone` with a valid time zone name will make
726
+ * the time zone information be visible below the start and end input fields.
727
+ * This is informational only, it will not affect how date/times are handled.
728
+ */
729
+ timeZoneDisplayProps: PropTypes.shape({
730
+ /**
731
+ * A valid time zone name, from the IANA database, e.g. "America/Los_Angeles".
732
+ *
733
+ * @link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
734
+ */
735
+ timeZone: PropTypes.string,
736
+ /**
737
+ * Render prop function to add additional content to the time zone display.
738
+ * Useful for e.g. adding links to documentation or setting pages.
739
+ */
740
+ customRender: PropTypes.func,
741
+ /**
742
+ * Reference date to be used while resolving the UTC offset.
743
+ * Only useful for edge cases involving daylight saving time.
744
+ */
745
+ date: PropTypes.any
746
+ }),
676
747
  memoizedStyles: PropTypes.any.isRequired,
677
748
  timeOptions: PropTypes.shape({
678
749
  timeTenseOptions: PropTypes.arrayOf(PropTypes.any.isRequired).isRequired,
@@ -822,6 +893,15 @@ EuiSuperDatePicker.propTypes = {
822
893
  * @default true
823
894
  */
824
895
  showUpdateButton: PropTypes.oneOfType([PropTypes.bool.isRequired, PropTypes.oneOf(["iconOnly"])]),
896
+ /**
897
+ * Set to true to display buttons for time shifting and zooming out,
898
+ * next to the top-level control.
899
+ */
900
+ showTimeWindowButtons: PropTypes.oneOfType([PropTypes.bool.isRequired, PropTypes.shape({
901
+ showZoomOut: PropTypes.bool,
902
+ showShiftArrows: PropTypes.bool,
903
+ zoomFactor: PropTypes.oneOfType([PropTypes.number.isRequired, PropTypes.string.isRequired])
904
+ }).isRequired]),
825
905
  /**
826
906
  * Hides the actual input reducing to just the quick select button.
827
907
  */
@@ -847,5 +927,17 @@ EuiSuperDatePicker.propTypes = {
847
927
  * If you do not want this behavior and instead wish to keep the exact units
848
928
  * input by the user, set this flag to `false`.
849
929
  */
850
- canRoundRelativeUnits: PropTypes.bool
930
+ canRoundRelativeUnits: PropTypes.bool,
931
+ /**
932
+ * Props passed to the time zone display in the popovers {@link EuiTimeZoneDisplayProps}
933
+ *
934
+ * Setting `timeZoneDisplayProps.timeZone` with a valid time zone name will make
935
+ * the time zone information be visible below the start and end input fields.
936
+ * This is informational only, it will not affect how date/times are handled.
937
+ */
938
+ timeZoneDisplayProps: PropTypes.shape({
939
+ timeZone: PropTypes.string,
940
+ customRender: PropTypes.func,
941
+ date: PropTypes.any
942
+ })
851
943
  };
@@ -0,0 +1,185 @@
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 React from 'react';
10
+ import dateMath from '@elastic/datemath';
11
+ import moment from 'moment';
12
+ import { usePrettyInterval } from './pretty_interval';
13
+ import { isRelativeToNow } from './relative_utils';
14
+ import { EuiButtonGroupButton } from '../../button/button_group/button_group_button';
15
+ import { euiButtonGroupButtonsStyles } from '../../button/button_group/button_group.styles';
16
+ import { useEuiMemoizedStyles, useGeneratedHtmlId } from '../../../services';
17
+ import { useEuiI18n } from '../../i18n';
18
+ import { jsx as ___EmotionJSX } from "@emotion/react";
19
+ export var ZOOM_FACTOR_DEFAULT = 0.5;
20
+ /**
21
+ * Button group with time window controls for shifting the time window
22
+ * forwards and backwards, and zooming out.
23
+ */
24
+ export var EuiTimeWindowButtons = function EuiTimeWindowButtons(_ref) {
25
+ var applyTime = _ref.applyTime,
26
+ start = _ref.start,
27
+ end = _ref.end,
28
+ compressed = _ref.compressed,
29
+ isDisabled = _ref.isDisabled,
30
+ _ref$showZoomOut = _ref.showZoomOut,
31
+ showZoomOut = _ref$showZoomOut === void 0 ? true : _ref$showZoomOut,
32
+ _ref$showShiftArrows = _ref.showShiftArrows,
33
+ showShiftArrows = _ref$showShiftArrows === void 0 ? true : _ref$showShiftArrows,
34
+ _ref$zoomFactor = _ref.zoomFactor,
35
+ zoomFactor = _ref$zoomFactor === void 0 ? ZOOM_FACTOR_DEFAULT : _ref$zoomFactor;
36
+ var buttonColor = 'text';
37
+ var buttonSize = compressed ? 's' : 'm';
38
+ var iconSize = compressed ? 's' : 'm';
39
+ var styles = useEuiMemoizedStyles(euiButtonGroupButtonsStyles);
40
+ var _useEuiTimeWindow = useEuiTimeWindow(start, end, applyTime, {
41
+ zoomFactor: zoomFactor
42
+ }),
43
+ displayInterval = _useEuiTimeWindow.displayInterval,
44
+ isInvalid = _useEuiTimeWindow.isInvalid,
45
+ stepForward = _useEuiTimeWindow.stepForward,
46
+ stepBackward = _useEuiTimeWindow.stepBackward,
47
+ expandWindow = _useEuiTimeWindow.expandWindow;
48
+ var invalidShiftDescription = useEuiI18n('euiTimeWindowButtons.invalidShiftLabel', 'Cannot shift invalid time window');
49
+ var invalidZoomOutDescription = useEuiI18n('euiTimeWindowButtons.invalidZoomOutLabel', 'Cannot zoom out invalid time window');
50
+ var previousId = useGeneratedHtmlId({
51
+ prefix: 'previous'
52
+ });
53
+ var previousLabel = useEuiI18n('euiTimeWindowButtons.previousLabel', 'Previous');
54
+ var previousTooltipContent = useEuiI18n('euiTimeWindowButtons.previousDescription', 'Previous {displayInterval}', {
55
+ displayInterval: displayInterval
56
+ });
57
+ var zoomOutId = useGeneratedHtmlId({
58
+ prefix: 'zoom_out'
59
+ });
60
+ var zoomOutLabel = useEuiI18n('euiTimeWindowButtons.zoomOutLabel', 'Zoom out');
61
+ var zoomOutTooltipContent = isInvalid ? invalidZoomOutDescription : zoomOutLabel;
62
+ var nextId = useGeneratedHtmlId({
63
+ prefix: 'next'
64
+ });
65
+ var nextLabel = useEuiI18n('euiTimeWindowButtons.nextLabel', 'Next');
66
+ var nextTooltipContent = useEuiI18n('euiTimeWindowButtons.nextDescription', 'Next {displayInterval}', {
67
+ displayInterval: displayInterval
68
+ });
69
+ if (!showZoomOut && !showShiftArrows) return null;
70
+ return ___EmotionJSX("div", {
71
+ className: "euiSuperDatePicker__timeWindowButtons",
72
+ css: [styles.euiButtonGroup__buttons, styles[buttonSize], ";label:EuiTimeWindowButtons;"],
73
+ "data-test-subj": "timeWindowButtons"
74
+ }, showShiftArrows && ___EmotionJSX(EuiButtonGroupButton, {
75
+ id: previousId,
76
+ "data-test-subj": "timeWindowButtonsPrevious",
77
+ label: previousLabel,
78
+ title: "",
79
+ toolTipContent: !isDisabled && (isInvalid ? invalidShiftDescription : previousTooltipContent),
80
+ color: buttonColor,
81
+ size: buttonSize,
82
+ iconType: "arrowLeft",
83
+ iconSize: iconSize,
84
+ isIconOnly: true,
85
+ isSelected: false,
86
+ isDisabled: isDisabled,
87
+ onClick: stepBackward
88
+ }), showZoomOut && ___EmotionJSX(EuiButtonGroupButton, {
89
+ id: zoomOutId,
90
+ "data-test-subj": "timeWindowButtonsZoomOut",
91
+ label: zoomOutLabel,
92
+ title: "",
93
+ toolTipContent: !isDisabled && zoomOutTooltipContent,
94
+ toolTipProps: {
95
+ disableScreenReaderOutput: zoomOutLabel === zoomOutTooltipContent
96
+ },
97
+ color: buttonColor,
98
+ size: buttonSize,
99
+ iconType: "magnifyWithMinus",
100
+ iconSize: iconSize,
101
+ isIconOnly: true,
102
+ isSelected: false,
103
+ isDisabled: isDisabled,
104
+ onClick: expandWindow
105
+ }), showShiftArrows && ___EmotionJSX(EuiButtonGroupButton, {
106
+ id: nextId,
107
+ "data-test-subj": "timeWindowButtonsNext",
108
+ label: nextLabel,
109
+ title: "",
110
+ toolTipContent: !isDisabled && (isInvalid ? invalidShiftDescription : nextTooltipContent),
111
+ color: buttonColor,
112
+ size: buttonSize,
113
+ iconType: "arrowRight",
114
+ iconSize: iconSize,
115
+ isIconOnly: true,
116
+ isSelected: false,
117
+ isDisabled: isDisabled,
118
+ onClick: stepForward
119
+ }));
120
+ };
121
+
122
+ /**
123
+ * Partly adapted from date_picker/super_date_picker/quick_select_popover/quick_select.tsx
124
+ */
125
+ export function useEuiTimeWindow(start, end, apply, options) {
126
+ var _options$zoomFactor;
127
+ var min = dateMath.parse(start);
128
+ var max = dateMath.parse(end, {
129
+ roundUp: true
130
+ });
131
+ var isInvalid = !min || !min.isValid() || !max || !max.isValid();
132
+ var windowDuration = isInvalid ? 1 : max.diff(min);
133
+ var zoomFactor = getPercentageMultiplier((_options$zoomFactor = options === null || options === void 0 ? void 0 : options.zoomFactor) !== null && _options$zoomFactor !== void 0 ? _options$zoomFactor : ZOOM_FACTOR_DEFAULT);
134
+ var zoomAddition = windowDuration * (zoomFactor / 2); // Gets added to each end, that's why it's split in half
135
+ var prettyInterval = usePrettyInterval(false, windowDuration);
136
+ var displayInterval = isInvalid ? '' : prettyInterval;
137
+ if (!isInvalid && !isRelativeToNow(start, end) && !isExactMinuteRange(windowDuration)) {
138
+ displayInterval = "~".concat(displayInterval);
139
+ }
140
+ return {
141
+ displayInterval: displayInterval,
142
+ isInvalid: isInvalid,
143
+ stepForward: stepForward,
144
+ stepBackward: stepBackward,
145
+ expandWindow: expandWindow
146
+ };
147
+ function stepForward() {
148
+ if (isInvalid) return;
149
+ apply({
150
+ start: moment(max).toISOString(),
151
+ end: moment(max).add(windowDuration, 'ms').toISOString()
152
+ });
153
+ }
154
+ function stepBackward() {
155
+ if (isInvalid) return;
156
+ apply({
157
+ start: moment(min).subtract(windowDuration, 'ms').toISOString(),
158
+ end: moment(min).toISOString()
159
+ });
160
+ }
161
+ function expandWindow() {
162
+ if (isInvalid) return;
163
+ apply({
164
+ start: moment(min).subtract(zoomAddition, 'ms').toISOString(),
165
+ end: moment(max).add(zoomAddition, 'ms').toISOString()
166
+ });
167
+ }
168
+ }
169
+
170
+ /**
171
+ * Get a number out of either 0.2 or "20%"
172
+ */
173
+ function getPercentageMultiplier(value) {
174
+ var result = typeof value === 'number' ? value : parseFloat(String(value).replace('%', '').trim());
175
+ if (isNaN(result)) throw new TypeError('Please provide a valid number or percentage string e.g. "25%"');
176
+ return result > 1 ? result / 100 : result;
177
+ }
178
+
179
+ /**
180
+ * Useful to determine whether to show the tilde in the display
181
+ */
182
+ function isExactMinuteRange(diffMs) {
183
+ // 60 * 1000 = ms per minute
184
+ return diffMs % (60 * 1000) === 0;
185
+ }
@@ -108,6 +108,9 @@ EuiFacetButton.propTypes = {
108
108
  * Any node, but preferably a `EuiIcon` or `EuiAvatar`
109
109
  */
110
110
  icon: PropTypes.node,
111
+ /**
112
+ * Controls the disabled behavior via the native `disabled` attribute.
113
+ */
111
114
  isDisabled: PropTypes.bool,
112
115
  /**
113
116
  * Force disables the button and changes the icon to a loading spinner
@@ -150,27 +153,14 @@ EuiFacetButton.propTypes = {
150
153
  style: PropTypes.any,
151
154
  type: PropTypes.any,
152
155
  /**
153
- * Any `type` accepted by EuiIcon
154
- */
155
- iconType: PropTypes.oneOfType([PropTypes.oneOf(["accessibility", "addDataApp", "advancedSettingsApp", "agentApp", "aggregate", "alert", "analyzeEvent", "annotation", "anomalyChart", "anomalySwimLane", "apmApp", "apmTrace", "appSearchApp", "apps", "arrowDown", "arrowLeft", "arrowRight", "arrowUp", "arrowStart", "arrowEnd", "article", "asterisk", "at", "auditbeatApp", "backgroundTask", "beaker", "bell", "bellSlash", "beta", "bolt", "boxesHorizontal", "boxesVertical", "branch", "branchUser", "broom", "brush", "bug", "bullseye", "calendar", "canvasApp", "casesApp", "changePointDetection", "check", "checkCircle", "checkInCircleFilled", "cheer", "classificationJob", "clickLeft", "clickRight", "clock", "clockCounter", "cloudDrizzle", "cloudStormy", "cloudSunny", "cluster", "code", "codeApp", "color", "comment", "compute", "console", "consoleApp", "container", "continuityAbove", "continuityAboveBelow", "continuityBelow", "continuityWithin", "contrast", "contrastHigh", "controls", "controlsHorizontal", "controlsVertical", "copy", "copyClipboard", "createAdvancedJob", "createGenericJob", "createGeoJob", "createMultiMetricJob", "createPopulationJob", "createSingleMetricJob", "cross", "crossClusterReplicationApp", "crossInCircle", "crosshairs", "currency", "cut", "dashboardApp", "dataVisualizer", "database", "desktop", "devToolsApp", "diff", "discoverApp", "discuss", "document", "documentEdit", "documentation", "documents", "dot", "dotInCircle", "doubleArrowLeft", "doubleArrowRight", "download", "editorAlignCenter", "editorAlignLeft", "editorAlignRight", "editorBold", "editorChecklist", "editorCodeBlock", "editorComment", "editorDistributeHorizontal", "editorDistributeVertical", "editorHeading", "editorItalic", "editorItemAlignBottom", "editorItemAlignCenter", "editorItemAlignLeft", "editorItemAlignMiddle", "editorItemAlignRight", "editorItemAlignTop", "editorLink", "editorOrderedList", "editorPositionBottomLeft", "editorPositionBottomRight", "editorPositionTopLeft", "editorPositionTopRight", "editorRedo", "editorStrike", "editorTable", "editorUnderline", "editorUndo", "editorUnorderedList", "email", "empty", "emsApp", "endpoint", "eql", "eraser", "error", "errorFilled", "esqlVis", "exit", "expand", "expandMini", "export", "exportAction", "eye", "eyeClosed", "faceHappy", "faceNeutral", "faceSad", "fieldStatistics", "filebeatApp", "filter", "filterExclude", "filterIgnore", "filterInclude", "filterInCircle", "flask", "flag", "fleetApp", "fold", "folderCheck", "folderClosed", "folderExclamation", "folderOpen", "frameNext", "framePrevious", "fullScreen", "fullScreenExit", "function", "gear", "gisApp", "glasses", "globe", "grab", "grabHorizontal", "grabOmnidirectional", "gradient", "graphApp", "grid", "grokApp", "heart", "heartbeatApp", "heatmap", "help", "home", "info", "image", "importAction", "index", "indexClose", "indexEdit", "indexFlush", "indexManagementApp", "indexMapping", "indexOpen", "indexPatternApp", "indexRollupApp", "indexRuntime", "indexSettings", "indexTemporary", "infinity", "inputOutput", "inspect", "invert", "ip", "key", "keyboard", "kqlField", "kqlFunction", "kqlOperand", "kqlSelector", "kqlValue", "kubernetesNode", "kubernetesPod", "launch", "layers", "lensApp", "lettering", "lineDashed", "lineDotted", "lineSolid", "link", "list", "listAdd", "lock", "lockOpen", "logPatternAnalysis", "logRateAnalysis", "logoAWS", "logoAWSMono", "logoAerospike", "logoApache", "logoAppSearch", "logoAzure", "logoAzureMono", "logoBeats", "logoBusinessAnalytics", "logoCeph", "logoCloud", "logoCloudEnterprise", "logoCode", "logoCodesandbox", "logoCouchbase", "logoDocker", "logoDropwizard", "logoElastic", "logoElasticStack", "logoElasticsearch", "logoEnterpriseSearch", "logoEtcd", "logoGCP", "logoGCPMono", "logoGithub", "logoGmail", "logoGolang", "logoGoogleG", "logoHAproxy", "logoIBM", "logoIBMMono", "logoKafka", "logoKibana", "logoKubernetes", "logoLogging", "logoLogstash", "logoMaps", "logoMemcached", "logoMetrics", "logoMongodb", "logoMySQL", "logoNginx", "logoObservability", "logoOsquery", "logoPhp", "logoPostgres", "logoPrometheus", "logoRabbitmq", "logoRedis", "logoSecurity", "logoSiteSearch", "logoSketch", "logoSlack", "logoUptime", "logoVulnerabilityManagement", "logoWebhook", "logoWindows", "logoWorkplaceSearch", "logsApp", "logstashFilter", "logstashIf", "logstashInput", "logstashOutput", "logstashQueue", "machineLearningApp", "magnet", "magnifyWithExclamation", "magnifyWithMinus", "magnifyWithPlus", "managementApp", "mapMarker", "memory", "menu", "menuDown", "menuLeft", "menuRight", "menuUp", "merge", "metricbeatApp", "metricsApp", "minimize", "minus", "minusInCircle", "minusInCircleFilled", "minusInSquare", "mobile", "monitoringApp", "moon", "move", "namespace", "nested", "newChat", "node", "notebookApp", "number", "offline", "online", "outlierDetectionJob", "package", "packetbeatApp", "pageSelect", "pagesSelect", "palette", "paperClip", "partial", "pause", "payment", "pencil", "percent", "pin", "pinFilled", "pipeBreaks", "pipelineApp", "pipeNoBreaks", "pivot", "play", "playFilled", "plugs", "plus", "plusInCircle", "plusInCircleFilled", "plusInSquare", "popout", "push", "question", "quote", "readOnly", "recentlyViewedApp", "refresh", "regressionJob", "reporter", "reportingApp", "returnKey", "save", "savedObjectsApp", "scale", "search", "searchProfilerApp", "section", "securityAnalyticsApp", "securityApp", "securitySignal", "securitySignalDetected", "securitySignalResolved", "sessionViewer", "shard", "share", "singleMetricViewer", "snowflake", "sortAscending", "sortDescending", "sortDown", "sortLeft", "sortRight", "sortUp", "sortable", "spaces", "spacesApp", "sparkles", "sqlApp", "starEmpty", "starEmptySpace", "starFilled", "starFilledSpace", "starMinusEmpty", "starMinusFilled", "starPlusEmpty", "starPlusFilled", "stats", "stop", "stopFilled", "stopSlash", "storage", "streamsClassic", "streamsWired", "string", "submodule", "sun", "swatchInput", "symlink", "tableDensityCompact", "tableDensityExpanded", "tableDensityNormal", "tableOfContents", "tag", "tear", "temperature", "thumbDown", "thumbUp", "timeline", "timelineWithArrow", "timelionApp", "timeRefresh", "timeslider", "training", "transitionLeftIn", "transitionLeftOut", "transitionTopIn", "transitionTopOut", "trash", "unfold", "unlink", "upgradeAssistantApp", "uptimeApp", "user", "userAvatar", "users", "usersRolesApp", "vector", "videoPlayer", "visArea", "visAreaStacked", "visBarHorizontal", "visBarHorizontalStacked", "visBarVertical", "visBarVerticalStacked", "visGauge", "visGoal", "visLine", "visMapCoordinate", "visMapRegion", "visMetric", "visPie", "visTable", "visTagCloud", "visText", "visTimelion", "visVega", "visVisualBuilder", "visualizeApp", "vulnerabilityManagementApp", "warning", "warningFilled", "watchesApp", "web", "wordWrap", "wordWrapDisabled", "workflowsApp", "workplaceSearchApp", "wrench", "tokenAlias", "tokenAnnotation", "tokenArray", "tokenBinary", "tokenBoolean", "tokenClass", "tokenCompletionSuggester", "tokenConstant", "tokenDate", "tokenDimension", "tokenElement", "tokenEnum", "tokenEnumMember", "tokenEvent", "tokenException", "tokenField", "tokenFile", "tokenFlattened", "tokenFunction", "tokenGeo", "tokenHistogram", "tokenInterface", "tokenIP", "tokenJoin", "tokenKey", "tokenKeyword", "tokenMethod", "tokenMetricCounter", "tokenMetricGauge", "tokenModule", "tokenNamespace", "tokenNested", "tokenNull", "tokenNumber", "tokenObject", "tokenOperator", "tokenPackage", "tokenParameter", "tokenPercolator", "tokenProperty", "tokenRange", "tokenRankFeature", "tokenRankFeatures", "tokenRepo", "tokenSearchType", "tokenSemanticText", "tokenShape", "tokenString", "tokenStruct", "tokenSymbol", "tokenTag", "tokenText", "tokenTokenCount", "tokenVariable", "tokenVectorDense", "tokenDenseVector", "tokenVectorSparse"]).isRequired, PropTypes.string.isRequired, PropTypes.elementType.isRequired]),
156
- /**
157
- * Can only be one side `left` or `right`
158
- */
159
- iconSide: PropTypes.oneOfType([PropTypes.any.isRequired, PropTypes.oneOf([undefined])]),
160
- /**
161
- * Object of props passed to the `<span>` wrapping the content's text/children only (not icon)
156
+ * NOTE: Beta feature, may be changed or removed in the future
157
+ *
158
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
159
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
162
160
  *
163
- * This span wrapper can be removed by passing `textProps={false}`.
161
+ * Use e.g. when a disabled button should have a tooltip.
164
162
  */
165
- textProps: PropTypes.oneOfType([PropTypes.shape({
166
- className: PropTypes.string,
167
- "aria-label": PropTypes.string,
168
- "data-test-subj": PropTypes.string,
169
- css: PropTypes.any,
170
- ref: PropTypes.any,
171
- "data-text": PropTypes.string
172
- }).isRequired, PropTypes.oneOf([false])]),
173
- iconSize: PropTypes.any,
163
+ hasAriaDisabled: PropTypes.bool,
174
164
  className: PropTypes.string,
175
165
  "aria-label": PropTypes.string,
176
166
  "data-test-subj": PropTypes.string,
@@ -228,5 +228,18 @@ EuiFilterButton.propTypes = {
228
228
  * - accent
229
229
  * - warning
230
230
  */
231
- color: PropTypes.any
231
+ color: PropTypes.any,
232
+ /**
233
+ * Controls the disabled behavior via the native `disabled` attribute.
234
+ */
235
+ isDisabled: PropTypes.bool,
236
+ /**
237
+ * NOTE: Beta feature, may be changed or removed in the future
238
+ *
239
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
240
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
241
+ *
242
+ * Use e.g. when a disabled button should have a tooltip.
243
+ */
244
+ hasAriaDisabled: PropTypes.bool
232
245
  };
@@ -29,7 +29,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
29
29
 
30
30
  import React, { useEffect, useRef, useMemo, useCallback, useState, forwardRef } from 'react';
31
31
  import classnames from 'classnames';
32
- import { keys, EuiWindowEvent, useCombinedRefs, useIsWithinMinBreakpoint, useEuiMemoizedStyles, useGeneratedHtmlId, useEuiThemeCSSVariables } from '../../services';
32
+ import { keys, EuiWindowEvent, useCombinedRefs, useIsWithinMinBreakpoint, useEuiMemoizedStyles, useGeneratedHtmlId, useEuiThemeCSSVariables, focusTrapPubSub } from '../../services';
33
33
  import { logicalStyle } from '../../global_styling';
34
34
  import { EuiFocusTrap } from '../focus_trap';
35
35
  import { EuiOverlayMask } from '../overlay_mask';
@@ -223,20 +223,28 @@ export var EuiFlyout = /*#__PURE__*/forwardRef(function (props, ref) {
223
223
  }
224
224
  return selectors;
225
225
  }, [includeSelectorInFocusTrap, includeFixedHeadersInFocusTrap]);
226
- useEffect(function () {
226
+
227
+ /**
228
+ * Finds the shards to include in the focus trap by querying by `focusTrapSelectors`.
229
+ *
230
+ * @param shouldAutoFocus Whether to auto-focus the flyout wrapper when the focus trap is activated.
231
+ * This is necessary because when a flyout is toggled from within a shard, the focus trap's `autoFocus`
232
+ * feature doesn't work. This logic manually focuses the flyout as a workaround.
233
+ */
234
+ var findShards = useCallback(function () {
235
+ var shouldAutoFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
227
236
  if (focusTrapSelectors.length > 0) {
228
237
  var shardsEls = focusTrapSelectors.flatMap(function (selector) {
229
238
  return Array.from(document.querySelectorAll(selector));
230
239
  });
231
240
  setFocusTrapShards(Array.from(shardsEls));
232
-
233
- // Flyouts that are toggled from shards do not have working
234
- // focus trap autoFocus, so we need to focus the flyout wrapper ourselves
235
- shardsEls.forEach(function (shard) {
236
- if (shard.contains(flyoutToggle.current)) {
237
- resizeRef === null || resizeRef === void 0 || resizeRef.focus();
238
- }
239
- });
241
+ if (shouldAutoFocus) {
242
+ shardsEls.forEach(function (shard) {
243
+ if (shard.contains(flyoutToggle.current)) {
244
+ resizeRef === null || resizeRef === void 0 || resizeRef.focus();
245
+ }
246
+ });
247
+ }
240
248
  } else {
241
249
  // Clear existing shards if necessary, e.g. switching to `false`
242
250
  setFocusTrapShards(function (shards) {
@@ -244,6 +252,15 @@ export var EuiFlyout = /*#__PURE__*/forwardRef(function (props, ref) {
244
252
  });
245
253
  }
246
254
  }, [focusTrapSelectors, resizeRef]);
255
+ useEffect(function () {
256
+ // Auto-focus should only happen on initial flyout mount (or when the dependencies change)
257
+ // because it snaps focus to the flyout wrapper, which steals it from subsequently focused elements.
258
+ findShards(true);
259
+ var unsubscribe = focusTrapPubSub.subscribe(function () {
260
+ return findShards();
261
+ });
262
+ return unsubscribe;
263
+ }, [findShards]);
247
264
  var focusTrapProps = useMemo(function () {
248
265
  return _objectSpread(_objectSpread({}, _focusTrapProps), {}, {
249
266
  shards: [].concat(_toConsumableArray(focusTrapShards), _toConsumableArray((_focusTrapProps === null || _focusTrapProps === void 0 ? void 0 : _focusTrapProps.shards) || []))
@@ -100,13 +100,6 @@ EuiFormControlButton.propTypes = {
100
100
  fullWidth: PropTypes.bool,
101
101
  href: PropTypes.string,
102
102
  onClick: PropTypes.func,
103
- /**
104
- * `disabled` is also allowed
105
- */
106
- /**
107
- * `disabled` is also allowed
108
- */
109
- isDisabled: PropTypes.bool,
110
103
  target: PropTypes.string,
111
104
  rel: PropTypes.string,
112
105
  type: PropTypes.any,
@@ -145,10 +138,23 @@ EuiFormControlButton.propTypes = {
145
138
  "data-text": PropTypes.string
146
139
  }).isRequired, PropTypes.oneOf([false])]),
147
140
  iconSize: PropTypes.any,
141
+ /**
142
+ * Controls the disabled behavior via the native `disabled` attribute.
143
+ */
144
+ isDisabled: PropTypes.bool,
148
145
  className: PropTypes.string,
149
146
  "aria-label": PropTypes.string,
150
147
  "data-test-subj": PropTypes.string,
151
148
  css: PropTypes.any,
149
+ /**
150
+ * NOTE: Beta feature, may be changed or removed in the future
151
+ *
152
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
153
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
154
+ *
155
+ * Use e.g. when a disabled button should have a tooltip.
156
+ */
157
+ hasAriaDisabled: PropTypes.bool,
152
158
  /**
153
159
  * Defines the button label when used like an input in combination with `placeholder`
154
160
  */
@@ -33,13 +33,6 @@ export var EuiHeaderLink = function EuiHeaderLink(_ref) {
33
33
  EuiHeaderLink.propTypes = {
34
34
  href: PropTypes.string,
35
35
  onClick: PropTypes.func,
36
- /**
37
- * `disabled` is also allowed
38
- */
39
- /**
40
- * `disabled` is also allowed
41
- */
42
- isDisabled: PropTypes.bool,
43
36
  target: PropTypes.string,
44
37
  rel: PropTypes.string,
45
38
  type: PropTypes.any,
@@ -78,10 +71,23 @@ EuiHeaderLink.propTypes = {
78
71
  "data-text": PropTypes.string
79
72
  }).isRequired, PropTypes.oneOf([false])]),
80
73
  iconSize: PropTypes.any,
74
+ /**
75
+ * Controls the disabled behavior via the native `disabled` attribute.
76
+ */
77
+ isDisabled: PropTypes.bool,
81
78
  className: PropTypes.string,
82
79
  "aria-label": PropTypes.string,
83
80
  "data-test-subj": PropTypes.string,
84
81
  css: PropTypes.any,
82
+ /**
83
+ * NOTE: Beta feature, may be changed or removed in the future
84
+ *
85
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
86
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
87
+ *
88
+ * Use e.g. when a disabled button should have a tooltip.
89
+ */
90
+ hasAriaDisabled: PropTypes.bool,
85
91
  /**
86
92
  * Simple prop to update color based on active state.
87
93
  * Can be overridden with `color`
@@ -174,13 +174,6 @@ ref) {
174
174
  EuiHeaderSectionItemButton.propTypes = {
175
175
  href: PropTypes.string,
176
176
  onClick: PropTypes.func,
177
- /**
178
- * `disabled` is also allowed
179
- */
180
- /**
181
- * `disabled` is also allowed
182
- */
183
- isDisabled: PropTypes.bool,
184
177
  target: PropTypes.string,
185
178
  rel: PropTypes.string,
186
179
  type: PropTypes.any,
@@ -219,10 +212,23 @@ EuiHeaderSectionItemButton.propTypes = {
219
212
  "data-text": PropTypes.string
220
213
  }).isRequired, PropTypes.oneOf([false])]),
221
214
  iconSize: PropTypes.any,
215
+ /**
216
+ * Controls the disabled behavior via the native `disabled` attribute.
217
+ */
218
+ isDisabled: PropTypes.bool,
222
219
  className: PropTypes.string,
223
220
  "aria-label": PropTypes.string,
224
221
  "data-test-subj": PropTypes.string,
225
222
  css: PropTypes.any,
223
+ /**
224
+ * NOTE: Beta feature, may be changed or removed in the future
225
+ *
226
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
227
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
228
+ *
229
+ * Use e.g. when a disabled button should have a tooltip.
230
+ */
231
+ hasAriaDisabled: PropTypes.bool,
226
232
  /**
227
233
  * Inserts the node into a EuiBadgeNotification and places it appropriately against the button.
228
234
  * Or pass `true` to render a simple dot