@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
@@ -96,13 +96,14 @@ var EuiDataGridInMemoryRenderer = exports.EuiDataGridInMemoryRenderer = function
96
96
  var cells = [];
97
97
  var _loop = function _loop(i) {
98
98
  cells.push(columns.map(function (column, j) {
99
+ var key = "".concat(i, "-").concat(j, "-").concat(column.id);
99
100
  var skipThisColumn = inMemory.skipColumns && inMemory.skipColumns.indexOf(column.id) !== -1;
100
101
  if (skipThisColumn) {
101
102
  return null;
102
103
  }
103
104
  var isExpandable = column.isExpandable !== undefined ? column.isExpandable : true;
104
105
  return (0, _react3.jsx)("div", {
105
- key: "".concat(i, "-").concat(column.id),
106
+ key: key,
106
107
  "data-dg-row": i,
107
108
  "data-dg-column": column.id
108
109
  }, (0, _react3.jsx)(CellElement, {
@@ -311,7 +312,6 @@ EuiDataGridInMemoryRenderer.propTypes = {
311
312
  color: _propTypes.default.any,
312
313
  "aria-label": _propTypes.default.string,
313
314
  "aria-labelledby": _propTypes.default.string,
314
- isDisabled: _propTypes.default.bool,
315
315
  /**
316
316
  * Overall size of button.
317
317
  * Matches the sizes of other EuiButtons
@@ -341,6 +341,19 @@ EuiDataGridInMemoryRenderer.propTypes = {
341
341
  className: _propTypes.default.string,
342
342
  "data-test-subj": _propTypes.default.string,
343
343
  css: _propTypes.default.any,
344
+ /**
345
+ * Controls the disabled behavior via the native `disabled` attribute.
346
+ */
347
+ isDisabled: _propTypes.default.bool,
348
+ /**
349
+ * NOTE: Beta feature, may be changed or removed in the future
350
+ *
351
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
352
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
353
+ *
354
+ * Use e.g. when a disabled button should have a tooltip.
355
+ */
356
+ hasAriaDisabled: _propTypes.default.bool,
344
357
  buttonRef: _propTypes.default.any
345
358
  }),
346
359
  /**
@@ -394,7 +407,6 @@ EuiDataGridInMemoryRenderer.propTypes = {
394
407
  color: _propTypes.default.any,
395
408
  "aria-label": _propTypes.default.string,
396
409
  "aria-labelledby": _propTypes.default.string,
397
- isDisabled: _propTypes.default.bool,
398
410
  size: _propTypes.default.any,
399
411
  iconSize: _propTypes.default.any,
400
412
  isSelected: _propTypes.default.bool,
@@ -403,6 +415,8 @@ EuiDataGridInMemoryRenderer.propTypes = {
403
415
  className: _propTypes.default.string,
404
416
  "data-test-subj": _propTypes.default.string,
405
417
  css: _propTypes.default.any,
418
+ isDisabled: _propTypes.default.bool,
419
+ hasAriaDisabled: _propTypes.default.bool,
406
420
  buttonRef: _propTypes.default.any
407
421
  }),
408
422
  onClick: _propTypes.default.func,
@@ -437,7 +451,6 @@ EuiDataGridInMemoryRenderer.propTypes = {
437
451
  color: _propTypes.default.any,
438
452
  "aria-label": _propTypes.default.string,
439
453
  "aria-labelledby": _propTypes.default.string,
440
- isDisabled: _propTypes.default.bool,
441
454
  size: _propTypes.default.any,
442
455
  iconSize: _propTypes.default.any,
443
456
  isSelected: _propTypes.default.bool,
@@ -446,6 +459,8 @@ EuiDataGridInMemoryRenderer.propTypes = {
446
459
  className: _propTypes.default.string,
447
460
  "data-test-subj": _propTypes.default.string,
448
461
  css: _propTypes.default.any,
462
+ isDisabled: _propTypes.default.bool,
463
+ hasAriaDisabled: _propTypes.default.bool,
449
464
  buttonRef: _propTypes.default.any
450
465
  }),
451
466
  onClick: _propTypes.default.func,
@@ -480,7 +495,6 @@ EuiDataGridInMemoryRenderer.propTypes = {
480
495
  color: _propTypes.default.any,
481
496
  "aria-label": _propTypes.default.string,
482
497
  "aria-labelledby": _propTypes.default.string,
483
- isDisabled: _propTypes.default.bool,
484
498
  size: _propTypes.default.any,
485
499
  iconSize: _propTypes.default.any,
486
500
  isSelected: _propTypes.default.bool,
@@ -489,6 +503,8 @@ EuiDataGridInMemoryRenderer.propTypes = {
489
503
  className: _propTypes.default.string,
490
504
  "data-test-subj": _propTypes.default.string,
491
505
  css: _propTypes.default.any,
506
+ isDisabled: _propTypes.default.bool,
507
+ hasAriaDisabled: _propTypes.default.bool,
492
508
  buttonRef: _propTypes.default.any
493
509
  }),
494
510
  onClick: _propTypes.default.func,
@@ -523,7 +539,6 @@ EuiDataGridInMemoryRenderer.propTypes = {
523
539
  color: _propTypes.default.any,
524
540
  "aria-label": _propTypes.default.string,
525
541
  "aria-labelledby": _propTypes.default.string,
526
- isDisabled: _propTypes.default.bool,
527
542
  size: _propTypes.default.any,
528
543
  iconSize: _propTypes.default.any,
529
544
  isSelected: _propTypes.default.bool,
@@ -532,6 +547,8 @@ EuiDataGridInMemoryRenderer.propTypes = {
532
547
  className: _propTypes.default.string,
533
548
  "data-test-subj": _propTypes.default.string,
534
549
  css: _propTypes.default.any,
550
+ isDisabled: _propTypes.default.bool,
551
+ hasAriaDisabled: _propTypes.default.bool,
535
552
  buttonRef: _propTypes.default.any
536
553
  }),
537
554
  onClick: _propTypes.default.func,
@@ -566,7 +583,6 @@ EuiDataGridInMemoryRenderer.propTypes = {
566
583
  color: _propTypes.default.any,
567
584
  "aria-label": _propTypes.default.string,
568
585
  "aria-labelledby": _propTypes.default.string,
569
- isDisabled: _propTypes.default.bool,
570
586
  size: _propTypes.default.any,
571
587
  iconSize: _propTypes.default.any,
572
588
  isSelected: _propTypes.default.bool,
@@ -575,6 +591,8 @@ EuiDataGridInMemoryRenderer.propTypes = {
575
591
  className: _propTypes.default.string,
576
592
  "data-test-subj": _propTypes.default.string,
577
593
  css: _propTypes.default.any,
594
+ isDisabled: _propTypes.default.bool,
595
+ hasAriaDisabled: _propTypes.default.bool,
578
596
  buttonRef: _propTypes.default.any
579
597
  }),
580
598
  onClick: _propTypes.default.func,
@@ -180,9 +180,9 @@ EuiAutoRefreshButton.propTypes = {
180
180
  intervalUnits: _propTypes.default.any,
181
181
  onRefreshChange: _propTypes.default.func.isRequired,
182
182
  /**
183
- * `disabled` is also allowed
183
+ * Controls the disabled behavior via the native `disabled` attribute.
184
184
  */
185
- isDisabled: _propTypes.default.bool,
185
+ isDisabled: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.bool])]),
186
186
  /**
187
187
  * Reduces the time unit to a single letter
188
188
  */
@@ -236,5 +236,14 @@ EuiAutoRefreshButton.propTypes = {
236
236
  className: _propTypes.default.string,
237
237
  "aria-label": _propTypes.default.string,
238
238
  "data-test-subj": _propTypes.default.string,
239
- css: _propTypes.default.any
239
+ css: _propTypes.default.any,
240
+ /**
241
+ * NOTE: Beta feature, may be changed or removed in the future
242
+ *
243
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
244
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
245
+ *
246
+ * Use e.g. when a disabled button should have a tooltip.
247
+ */
248
+ hasAriaDisabled: _propTypes.default.bool
240
249
  };
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.EuiAbsoluteTab = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _react = _interopRequireWildcard(require("react"));
11
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -18,6 +19,7 @@ var _flex = require("../../../flex");
18
19
  var _button = require("../../../button");
19
20
  var _code = require("../../../code");
20
21
  var _date_picker = require("../../date_picker");
22
+ var _timezone_display = require("./timezone_display");
21
23
  var _absolute_tab = require("./absolute_tab.styles");
22
24
  var _react2 = require("@emotion/react");
23
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
@@ -44,7 +46,9 @@ var EuiAbsoluteTab = exports.EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
44
46
  utcOffset = _ref.utcOffset,
45
47
  minDate = _ref.minDate,
46
48
  maxDate = _ref.maxDate,
47
- labelPrefix = _ref.labelPrefix;
49
+ labelPrefix = _ref.labelPrefix,
50
+ _ref$timeZoneDisplayP = _ref.timeZoneDisplayProps,
51
+ timeZoneDisplayProps = _ref$timeZoneDisplayP === void 0 ? {} : _ref$timeZoneDisplayP;
48
52
  var styles = (0, _services.useEuiMemoizedStyles)(_absolute_tab.euiAbsoluteTabDateFormStyles);
49
53
  var _useState = (0, _react.useState)(function () {
50
54
  var parsedValue = _datemath.default.parse(value, {
@@ -63,6 +67,7 @@ var EuiAbsoluteTab = exports.EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
63
67
  setHasUnparsedText(false);
64
68
  setIsTextInvalid(false);
65
69
  }, [dateFormat]);
70
+ var timeZomeDescriptionId = (0, _services.useGeneratedHtmlId)();
66
71
  var submitButtonLabel = (0, _i18n.useEuiI18n)('euiAbsoluteTab.dateFormatButtonLabel', 'Parse date');
67
72
  var dateFormatError = (0, _i18n.useEuiI18n)('euiAbsoluteTab.dateFormatError', 'Allowed formats: {dateFormat}, ISO 8601, RFC 2822, or Unix timestamp.', {
68
73
  dateFormat: (0, _react2.jsx)(_code.EuiCode, null, dateFormat)
@@ -153,7 +158,8 @@ var EuiAbsoluteTab = exports.EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
153
158
  css: styles.euiAbsoluteTabDateForm__row,
154
159
  isInvalid: isTextInvalid,
155
160
  error: isTextInvalid ? dateFormatError : undefined,
156
- helpText: hasUnparsedText && !isTextInvalid ? dateFormatError : undefined
161
+ helpText: hasUnparsedText && !isTextInvalid ? dateFormatError : undefined,
162
+ describedByIds: [timeZomeDescriptionId]
157
163
  }, (0, _react2.jsx)(_form.EuiFieldText, {
158
164
  compressed: true,
159
165
  isInvalid: isTextInvalid,
@@ -177,7 +183,9 @@ var EuiAbsoluteTab = exports.EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
177
183
  "aria-label": submitButtonLabel,
178
184
  title: submitButtonLabel,
179
185
  "data-test-subj": "parseAbsoluteDateFormat"
180
- })));
186
+ })), (0, _react2.jsx)(_timezone_display.EuiTimeZoneDisplay, (0, _extends2.default)({
187
+ id: timeZomeDescriptionId
188
+ }, timeZoneDisplayProps)));
181
189
  };
182
190
  EuiAbsoluteTab.propTypes = {
183
191
  dateFormat: _propTypes.default.string.isRequired,
@@ -189,5 +197,23 @@ EuiAbsoluteTab.propTypes = {
189
197
  labelPrefix: _propTypes.default.string.isRequired,
190
198
  utcOffset: _propTypes.default.number,
191
199
  minDate: _propTypes.default.any,
192
- maxDate: _propTypes.default.any
200
+ maxDate: _propTypes.default.any,
201
+ timeZoneDisplayProps: _propTypes.default.shape({
202
+ /**
203
+ * A valid time zone name, from the IANA database, e.g. "America/Los_Angeles".
204
+ *
205
+ * @link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
206
+ */
207
+ timeZone: _propTypes.default.string,
208
+ /**
209
+ * Render prop function to add additional content to the time zone display.
210
+ * Useful for e.g. adding links to documentation or setting pages.
211
+ */
212
+ customRender: _propTypes.default.func,
213
+ /**
214
+ * Reference date to be used while resolving the UTC offset.
215
+ * Only useful for edge cases involving daylight saving time.
216
+ */
217
+ date: _propTypes.default.any
218
+ })
193
219
  };
@@ -17,7 +17,7 @@ var _pretty_duration = require("../pretty_duration");
17
17
  var _date_popover_content = require("./date_popover_content");
18
18
  var _date_popover_button = require("./date_popover_button.styles");
19
19
  var _react2 = require("@emotion/react");
20
- var _excluded = ["position", "isDisabled", "isInvalid", "needsUpdating", "value", "buttonProps", "canRoundRelativeUnits", "roundUp", "onChange", "locale", "dateFormat", "utcOffset", "minDate", "maxDate", "timeFormat", "isOpen", "onPopoverToggle", "onPopoverClose", "compressed", "timeOptions"];
20
+ var _excluded = ["position", "isDisabled", "isInvalid", "needsUpdating", "value", "buttonProps", "canRoundRelativeUnits", "roundUp", "onChange", "locale", "dateFormat", "utcOffset", "minDate", "maxDate", "timeFormat", "isOpen", "onPopoverToggle", "onPopoverClose", "compressed", "timeOptions", "timeZoneDisplayProps"];
21
21
  /*
22
22
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
23
23
  * or more contributor license agreements. Licensed under the Elastic License
@@ -47,6 +47,8 @@ var EuiDatePopoverButton = exports.EuiDatePopoverButton = function EuiDatePopove
47
47
  onPopoverClose = props.onPopoverClose,
48
48
  compressed = props.compressed,
49
49
  timeOptions = props.timeOptions,
50
+ _props$timeZoneDispla = props.timeZoneDisplayProps,
51
+ timeZoneDisplayProps = _props$timeZoneDispla === void 0 ? {} : _props$timeZoneDispla,
50
52
  rest = (0, _objectWithoutProperties2.default)(props, _excluded);
51
53
  var classes = (0, _classnames.default)(['euiDatePopoverButton', "euiDatePopoverButton--".concat(position), {
52
54
  'euiDatePopoverButton--compressed': compressed,
@@ -105,7 +107,8 @@ var EuiDatePopoverButton = exports.EuiDatePopoverButton = function EuiDatePopove
105
107
  utcOffset: utcOffset,
106
108
  timeOptions: timeOptions,
107
109
  minDate: minDate,
108
- maxDate: maxDate
110
+ maxDate: maxDate,
111
+ timeZoneDisplayProps: timeZoneDisplayProps
109
112
  }));
110
113
  };
111
114
  EuiDatePopoverButton.propTypes = {
@@ -148,6 +151,24 @@ EuiDatePopoverButton.propTypes = {
148
151
  label: _propTypes.default.string,
149
152
  start: _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]).isRequired
150
153
  }).isRequired).isRequired
151
- }).isRequired
154
+ }).isRequired,
155
+ timeZoneDisplayProps: _propTypes.default.shape({
156
+ /**
157
+ * A valid time zone name, from the IANA database, e.g. "America/Los_Angeles".
158
+ *
159
+ * @link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
160
+ */
161
+ timeZone: _propTypes.default.string,
162
+ /**
163
+ * Render prop function to add additional content to the time zone display.
164
+ * Useful for e.g. adding links to documentation or setting pages.
165
+ */
166
+ customRender: _propTypes.default.func,
167
+ /**
168
+ * Reference date to be used while resolving the UTC offset.
169
+ * Only useful for edge cases involving daylight saving time.
170
+ */
171
+ date: _propTypes.default.any
172
+ })
152
173
  };
153
174
  EuiDatePopoverButton.displayName = 'EuiDatePopoverButton';
@@ -40,7 +40,9 @@ var EuiDatePopoverContent = exports.EuiDatePopoverContent = function EuiDatePopo
40
40
  utcOffset = _ref.utcOffset,
41
41
  timeOptions = _ref.timeOptions,
42
42
  minDate = _ref.minDate,
43
- maxDate = _ref.maxDate;
43
+ maxDate = _ref.maxDate,
44
+ _ref$timeZoneDisplayP = _ref.timeZoneDisplayProps,
45
+ timeZoneDisplayProps = _ref$timeZoneDisplayP === void 0 ? {} : _ref$timeZoneDisplayP;
44
46
  var styles = (0, _services.useEuiMemoizedStyles)(_date_popover_content.euiDatePopoverContentStyles);
45
47
  var onTabClick = function onTabClick(selectedTab) {
46
48
  switch (selectedTab.id) {
@@ -71,7 +73,8 @@ var EuiDatePopoverContent = exports.EuiDatePopoverContent = function EuiDatePopo
71
73
  labelPrefix: labelPrefix,
72
74
  utcOffset: utcOffset,
73
75
  minDate: minDate,
74
- maxDate: maxDate
76
+ maxDate: maxDate,
77
+ timeZoneDisplayProps: timeZoneDisplayProps
75
78
  }),
76
79
  'data-test-subj': 'superDatePickerAbsoluteTab',
77
80
  'aria-label': "".concat(labelPrefix, ": ").concat(absoluteLabel)
@@ -85,7 +88,8 @@ var EuiDatePopoverContent = exports.EuiDatePopoverContent = function EuiDatePopo
85
88
  onChange: onChange,
86
89
  roundUp: roundUp,
87
90
  labelPrefix: labelPrefix,
88
- timeOptions: timeOptions
91
+ timeOptions: timeOptions,
92
+ timeZoneDisplayProps: timeZoneDisplayProps
89
93
  }),
90
94
  'data-test-subj': 'superDatePickerRelativeTab',
91
95
  'aria-label': "".concat(labelPrefix, ": ").concat(relativeLabel)
@@ -157,6 +161,24 @@ EuiDatePopoverContent.propTypes = {
157
161
  label: _propTypes.default.string,
158
162
  start: _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]).isRequired
159
163
  }).isRequired).isRequired
160
- }).isRequired
164
+ }).isRequired,
165
+ timeZoneDisplayProps: _propTypes.default.shape({
166
+ /**
167
+ * A valid time zone name, from the IANA database, e.g. "America/Los_Angeles".
168
+ *
169
+ * @link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
170
+ */
171
+ timeZone: _propTypes.default.string,
172
+ /**
173
+ * Render prop function to add additional content to the time zone display.
174
+ * Useful for e.g. adding links to documentation or setting pages.
175
+ */
176
+ customRender: _propTypes.default.func,
177
+ /**
178
+ * Reference date to be used while resolving the UTC offset.
179
+ * Only useful for edge cases involving daylight saving time.
180
+ */
181
+ date: _propTypes.default.any
182
+ })
161
183
  };
162
184
  EuiDatePopoverContent.displayName = 'EuiDatePopoverContent';
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.EuiRelativeTab = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _react = _interopRequireWildcard(require("react"));
11
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -20,6 +21,7 @@ var _popover = require("../../../popover");
20
21
  var _spacer = require("../../../spacer");
21
22
  var _date_modes = require("../date_modes");
22
23
  var _relative_utils = require("../relative_utils");
24
+ var _timezone_display = require("./timezone_display");
23
25
  var _react2 = require("@emotion/react");
24
26
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
27
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -40,7 +42,9 @@ var EuiRelativeTab = exports.EuiRelativeTab = function EuiRelativeTab(_ref) {
40
42
  value = _ref.value,
41
43
  onChange = _ref.onChange,
42
44
  roundUp = _ref.roundUp,
43
- labelPrefix = _ref.labelPrefix;
45
+ labelPrefix = _ref.labelPrefix,
46
+ _ref$timeZoneDisplayP = _ref.timeZoneDisplayProps,
47
+ timeZoneDisplayProps = _ref$timeZoneDisplayP === void 0 ? {} : _ref$timeZoneDisplayP;
44
48
  var initialRelativeParts = (0, _react.useRef)((0, _relative_utils.parseRelativeParts)(value));
45
49
  var roundUnit = initialRelativeParts.current.roundUnit;
46
50
  var _useState = (0, _react.useState)(initialRelativeParts.current.unit),
@@ -88,6 +92,7 @@ var EuiRelativeTab = exports.EuiRelativeTab = function EuiRelativeTab(_ref) {
88
92
  return parsedValue.locale(locale || 'en').format(dateFormat);
89
93
  }, [isInvalid, value, roundUp, locale, dateFormat]);
90
94
  var relativeDateInputNumberDescriptionId = (0, _services.useGeneratedHtmlId)();
95
+ var timeZomeDescriptionId = (0, _services.useGeneratedHtmlId)();
91
96
  var numberAriaLabel = (0, _i18n.useEuiI18n)('euiRelativeTab.numberInputLabel', 'Time span amount');
92
97
  var numberInputError = (0, _i18n.useEuiI18n)('euiRelativeTab.numberInputError', 'Must be >= 0');
93
98
  var dateInputError = (0, _i18n.useEuiI18n)('euiRelativeTab.dateInputError', 'Must be a valid range');
@@ -121,6 +126,7 @@ var EuiRelativeTab = exports.EuiRelativeTab = function EuiRelativeTab(_ref) {
121
126
  compressed: true,
122
127
  value: formattedValue,
123
128
  readOnly: true,
129
+ "aria-describedby": timeZomeDescriptionId,
124
130
  prepend: (0, _react2.jsx)(_form.EuiFormLabel, null, labelPrefix)
125
131
  }), (0, _react2.jsx)(_accessibility.EuiScreenReaderOnly, null, (0, _react2.jsx)("p", {
126
132
  id: relativeDateInputNumberDescriptionId
@@ -130,7 +136,9 @@ var EuiRelativeTab = exports.EuiRelativeTab = function EuiRelativeTab(_ref) {
130
136
  values: {
131
137
  unit: unit
132
138
  }
133
- })))), (0, _react2.jsx)(_popover.EuiPopoverFooter, {
139
+ })))), (0, _react2.jsx)(_timezone_display.EuiTimeZoneDisplay, (0, _extends2.default)({
140
+ id: timeZomeDescriptionId
141
+ }, timeZoneDisplayProps)), (0, _react2.jsx)(_popover.EuiPopoverFooter, {
134
142
  paddingSize: "s"
135
143
  }, (0, _react2.jsx)(_form.EuiSwitch, {
136
144
  "data-test-subj": "superDatePickerRelativeDateRoundSwitch",
@@ -160,5 +168,23 @@ EuiRelativeTab.propTypes = {
160
168
  label: _propTypes.default.string,
161
169
  start: _propTypes.default.oneOfType([_propTypes.default.oneOf(["now"]), _propTypes.default.string.isRequired]).isRequired
162
170
  }).isRequired).isRequired
163
- }).isRequired
171
+ }).isRequired,
172
+ timeZoneDisplayProps: _propTypes.default.shape({
173
+ /**
174
+ * A valid time zone name, from the IANA database, e.g. "America/Los_Angeles".
175
+ *
176
+ * @link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
177
+ */
178
+ timeZone: _propTypes.default.string,
179
+ /**
180
+ * Render prop function to add additional content to the time zone display.
181
+ * Useful for e.g. adding links to documentation or setting pages.
182
+ */
183
+ customRender: _propTypes.default.func,
184
+ /**
185
+ * Reference date to be used while resolving the UTC offset.
186
+ * Only useful for edge cases involving daylight saving time.
187
+ */
188
+ date: _propTypes.default.any
189
+ })
164
190
  };
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.EuiTimeZoneDisplay = void 0;
8
+ exports.useEuiUTCOffsetDisplay = useEuiUTCOffsetDisplay;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _timezone_display = require("./timezone_display.styles");
13
+ var _services = require("../../../../services");
14
+ var _flex = require("../../../flex");
15
+ var _icon = require("../../../icon");
16
+ var _text = require("../../../text");
17
+ var _react2 = require("@emotion/react");
18
+ var _excluded = ["timeZone", "customRender", "date"];
19
+ /*
20
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
21
+ * or more contributor license agreements. Licensed under the Elastic License
22
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
23
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
24
+ * Side Public License, v 1.
25
+ */
26
+ /**
27
+ * Available elements to render passed to the
28
+ * `customRender` render function.
29
+ */
30
+ /**
31
+ * Display time zone information.
32
+ */
33
+ var EuiTimeZoneDisplay = exports.EuiTimeZoneDisplay = function EuiTimeZoneDisplay(_ref) {
34
+ var timeZone = _ref.timeZone,
35
+ customRender = _ref.customRender,
36
+ date = _ref.date,
37
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
38
+ var color = 'subdued';
39
+ var styles = (0, _services.useEuiMemoizedStyles)(_timezone_display.euiTimeZoneDisplayStyles);
40
+ var referenceDate = date ? date.toDate() : undefined;
41
+ var _useEuiUTCOffsetDispl = useEuiUTCOffsetDisplay(timeZone !== null && timeZone !== void 0 ? timeZone : 'Browser', referenceDate),
42
+ utc = _useEuiUTCOffsetDispl.utc,
43
+ name = _useEuiUTCOffsetDispl.name,
44
+ isInvalid = _useEuiUTCOffsetDispl.isInvalid;
45
+ if (!timeZone || isInvalid) return null;
46
+ var label = !name ? utc : "".concat(utc, " (").concat(name, ")");
47
+ var nameDisplay = (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_icon.EuiIcon, {
48
+ type: "globe",
49
+ color: color
50
+ }), (0, _react2.jsx)(_text.EuiText, {
51
+ component: "span",
52
+ color: color,
53
+ size: "s"
54
+ }, label));
55
+ return (0, _react2.jsx)(_flex.EuiFlexGroup, (0, _extends2.default)({
56
+ css: styles.euiTimeZoneDisplay,
57
+ alignItems: "center",
58
+ gutterSize: "xs",
59
+ "data-test-subj": "euiTimeZoneDisplay",
60
+ "aria-label": label
61
+ }, rest), typeof customRender === 'function' ? customRender({
62
+ nameDisplay: nameDisplay
63
+ }) : nameDisplay);
64
+ };
65
+
66
+ /**
67
+ * Get the UTC offset display in hours e.g. "UTC+2" from time zone name.
68
+ *
69
+ * @param timeZoneName IANA time zone name
70
+ * @param [date] Reference date to get offset with Intl.DateTimeFormat
71
+ */
72
+ function useEuiUTCOffsetDisplay(timeZoneName, date) {
73
+ try {
74
+ var _formattedParts$find;
75
+ if (timeZoneName === 'UTC') {
76
+ return {
77
+ utc: 'UTC',
78
+ name: '',
79
+ isInvalid: false
80
+ };
81
+ }
82
+ var ianaName = timeZoneName === 'Browser' ? new Intl.DateTimeFormat().resolvedOptions().timeZone : timeZoneName;
83
+ var formatter = new Intl.DateTimeFormat(undefined, {
84
+ timeZone: ianaName,
85
+ timeZoneName: 'shortOffset'
86
+ });
87
+ var formattedParts = formatter.formatToParts(date !== null && date !== void 0 ? date : new Date());
88
+ var timeZoneNamePart = ((_formattedParts$find = formattedParts.find(function (part) {
89
+ return part.type === 'timeZoneName';
90
+ })) === null || _formattedParts$find === void 0 ? void 0 : _formattedParts$find.value) || '';
91
+ return {
92
+ utc: timeZoneNamePart.replace('GMT', 'UTC'),
93
+ name: ianaName,
94
+ isInvalid: false
95
+ };
96
+ } catch (err) {
97
+ return {
98
+ utc: '',
99
+ name: timeZoneName,
100
+ isInvalid: true
101
+ };
102
+ }
103
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.euiTimeZoneDisplayStyles = void 0;
7
+ var _react = require("@emotion/react");
8
+ var _global_styling = require("../../../../global_styling");
9
+ /*
10
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
11
+ * or more contributor license agreements. Licensed under the Elastic License
12
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
13
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
14
+ * Side Public License, v 1.
15
+ */
16
+
17
+ var euiTimeZoneDisplayStyles = exports.euiTimeZoneDisplayStyles = function euiTimeZoneDisplayStyles(euiThemeContext) {
18
+ var euiTheme = euiThemeContext.euiTheme;
19
+
20
+ // This padding should probably not be part of this component to make it really reusable
21
+
22
+ return {
23
+ euiTimeZoneDisplay: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('padding-horizontal', euiTheme.size.s), " ", (0, _global_styling.logicalCSS)('padding-bottom', euiTheme.size.s), ";;label:euiTimeZoneDisplay;")
24
+ };
25
+ };
@@ -224,7 +224,7 @@ var usePrettyDuration = exports.usePrettyDuration = function usePrettyDuration(_
224
224
  */
225
225
  var relativeDuration = 0;
226
226
  var relativeParts = {};
227
- if (isRelativeToNow(timeFrom, timeTo)) {
227
+ if ((0, _relative_utils.isRelativeToNow)(timeFrom, timeTo)) {
228
228
  if ((0, _date_modes.getDateMode)(timeTo) === _date_modes.DATE_MODES.NOW) {
229
229
  relativeParts = (0, _relative_utils.parseRelativeParts)(timeFrom);
230
230
  } else {
@@ -281,16 +281,9 @@ var hasRangeMatch = function hasRangeMatch(timeFrom, timeTo, ranges) {
281
281
  return timeFrom === start && timeTo === end;
282
282
  });
283
283
  };
284
- var isRelativeToNow = function isRelativeToNow(timeFrom, timeTo) {
285
- var fromDateMode = (0, _date_modes.getDateMode)(timeFrom);
286
- var toDateMode = (0, _date_modes.getDateMode)(timeTo);
287
- var isLast = fromDateMode === _date_modes.DATE_MODES.RELATIVE && toDateMode === _date_modes.DATE_MODES.NOW;
288
- var isNext = fromDateMode === _date_modes.DATE_MODES.NOW && toDateMode === _date_modes.DATE_MODES.RELATIVE;
289
- return isLast || isNext;
290
- };
291
284
  var showPrettyDuration = exports.showPrettyDuration = function showPrettyDuration(timeFrom, timeTo, quickRanges) {
292
285
  if (hasRangeMatch(timeFrom, timeTo, quickRanges)) {
293
286
  return true;
294
287
  }
295
- return isRelativeToNow(timeFrom, timeTo);
288
+ return (0, _relative_utils.isRelativeToNow)(timeFrom, timeTo);
296
289
  };
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.isRelativeToNow = void 0;
7
8
  exports.parseRelativeParts = parseRelativeParts;
8
9
  exports.toRelativeStringFromParts = exports.relativeUnitsFromLargestToSmallest = void 0;
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -11,6 +12,7 @@ var _datemath = _interopRequireDefault(require("@elastic/datemath"));
11
12
  var _moment = _interopRequireDefault(require("moment"));
12
13
  var _objects = require("../../../services/objects");
13
14
  var _predicate = require("../../../services/predicate");
15
+ var _date_modes = require("./date_modes");
14
16
  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; }
15
17
  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) { (0, _defineProperty2.default)(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; } /*
16
18
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -68,4 +70,11 @@ var toRelativeStringFromParts = exports.toRelativeStringFromParts = function toR
68
70
  var operator = matches && matches[2] ? matches[2] : '-';
69
71
  var round = isRounded ? "".concat(ROUND_DELIMETER).concat(unit) : '';
70
72
  return "now".concat(operator).concat(count).concat(unit).concat(round);
73
+ };
74
+ var isRelativeToNow = exports.isRelativeToNow = function isRelativeToNow(timeFrom, timeTo) {
75
+ var fromDateMode = (0, _date_modes.getDateMode)(timeFrom);
76
+ var toDateMode = (0, _date_modes.getDateMode)(timeTo);
77
+ var isLast = fromDateMode === _date_modes.DATE_MODES.RELATIVE && toDateMode === _date_modes.DATE_MODES.NOW;
78
+ var isNext = fromDateMode === _date_modes.DATE_MODES.NOW && toDateMode === _date_modes.DATE_MODES.RELATIVE;
79
+ return isLast || isNext;
71
80
  };