@elastic/eui 108.0.0 → 109.1.0-snapshot.1763390960850

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/es/components/accessibility/skip_link/skip_link.js +10 -1
  2. package/es/components/basic_table/collapsed_item_actions.js +3 -1
  3. package/es/components/basic_table/default_item_action.js +7 -4
  4. package/es/components/bottom_bar/bottom_bar.js +12 -2
  5. package/es/components/button/button.js +20 -25
  6. package/es/components/button/button_display/_button_display.js +32 -30
  7. package/es/components/button/button_display/_button_display.styles.js +4 -4
  8. package/es/components/button/button_empty/button_empty.js +32 -14
  9. package/es/components/button/button_group/button_group.js +49 -31
  10. package/es/components/button/button_group/button_group_button.js +16 -5
  11. package/es/components/button/button_group/button_group_button.styles.js +12 -8
  12. package/es/components/button/button_icon/button_icon.js +30 -6
  13. package/es/components/card/card.js +20 -25
  14. package/es/components/card/card_select/card_select.js +20 -25
  15. package/es/components/code/code_block_virtualized.js +9 -7
  16. package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  17. package/es/components/datagrid/body/cell/data_grid_cell.js +35 -12
  18. package/es/components/datagrid/body/data_grid_body.js +23 -6
  19. package/es/components/datagrid/body/data_grid_body_custom.js +23 -6
  20. package/es/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  21. package/es/components/datagrid/body/header/column_actions.js +5 -21
  22. package/es/components/datagrid/body/header/data_grid_header_cell.js +29 -10
  23. package/es/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -2
  24. package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +5 -2
  25. package/es/components/datagrid/controls/column_selector.js +36 -19
  26. package/es/components/datagrid/controls/column_sorting.js +23 -6
  27. package/es/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  28. package/es/components/datagrid/data_grid.js +5 -1
  29. package/es/components/datagrid/utils/in_memory.js +25 -7
  30. package/es/components/date_picker/auto_refresh/auto_refresh.js +11 -2
  31. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +31 -5
  32. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  33. package/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  34. package/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  35. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +98 -0
  36. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  37. package/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  38. package/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  39. package/es/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  40. package/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  41. package/es/components/facet/facet_button.js +9 -19
  42. package/es/components/filter_group/filter_button.js +14 -1
  43. package/es/components/flyout/flyout.js +27 -10
  44. package/es/components/form/file_picker/file_picker.styles.js +3 -3
  45. package/es/components/form/form_control_button/form_control_button.js +13 -7
  46. package/es/components/header/header_links/header_link.js +13 -7
  47. package/es/components/header/header_section/header_section_item_button.js +13 -7
  48. package/es/components/icon/assets/boxes_vertical.js +1 -1
  49. package/es/components/icon/assets/checkInCircleFilled.js +1 -2
  50. package/es/components/icon/assets/errorFilled.js +1 -2
  51. package/es/components/icon/assets/paper_clip.js +1 -1
  52. package/es/components/icon/assets/streams_wired.js +3 -2
  53. package/es/components/icon/assets/warningFilled.js +1 -2
  54. package/es/components/icon/icon_map.js +3 -6
  55. package/es/components/list_group/list_group.js +13 -1
  56. package/es/components/list_group/list_group_item.js +13 -1
  57. package/es/components/list_group/list_group_item_extra_action.js +13 -1
  58. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  59. package/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  60. package/es/components/pagination/pagination_button.js +13 -7
  61. package/es/components/popover/popover.js +22 -16
  62. package/es/components/provider/component_defaults/component_defaults.js +22 -2
  63. package/es/components/table/table_row.styles.js +1 -1
  64. package/es/components/tool_tip/tool_tip.js +24 -24
  65. package/es/global_styling/index.js +2 -1
  66. package/es/global_styling/mixins/_button.js +1 -1
  67. package/es/global_styling/utility/selectors.js +9 -0
  68. package/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  69. package/es/services/focus_trap/index.js +9 -0
  70. package/es/services/hooks/index.js +2 -1
  71. package/es/services/hooks/useEuiDisabledElement.js +195 -0
  72. package/es/services/index.js +1 -0
  73. package/es/services/popover/reposition_on_scroll.js +61 -0
  74. package/es/services/theme/high_contrast_overrides.js +5 -1
  75. package/es/test/cypress/index.d.ts +12 -0
  76. package/es/test/cypress/index.js +9 -0
  77. package/es/test/cypress/matchers.d.ts +20 -0
  78. package/es/test/cypress/matchers.js +54 -0
  79. package/es/test/cypress/test_reposition_on_scroll.js +66 -0
  80. package/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  81. package/es/test/enzyme/enzyme_matchers.js +43 -0
  82. package/es/test/enzyme/index.d.ts +14 -0
  83. package/es/test/enzyme/index.js +10 -0
  84. package/es/test/rtl/index.d.ts +9 -1
  85. package/es/test/rtl/index.js +2 -1
  86. package/es/test/rtl/matchers.d.ts +36 -0
  87. package/es/test/rtl/matchers.js +82 -0
  88. package/es/utils/element_can_be_disabled.js +16 -0
  89. package/es/utils/index.js +2 -1
  90. package/eui.d.ts +604 -183
  91. package/i18ntokens.json +1357 -1231
  92. package/lib/components/accessibility/skip_link/skip_link.js +10 -1
  93. package/lib/components/basic_table/collapsed_item_actions.js +3 -1
  94. package/lib/components/basic_table/default_item_action.js +7 -4
  95. package/lib/components/bottom_bar/bottom_bar.js +11 -1
  96. package/lib/components/button/button.js +21 -26
  97. package/lib/components/button/button_display/_button_display.js +31 -29
  98. package/lib/components/button/button_display/_button_display.styles.js +4 -4
  99. package/lib/components/button/button_empty/button_empty.js +31 -13
  100. package/lib/components/button/button_group/button_group.js +49 -31
  101. package/lib/components/button/button_group/button_group_button.js +16 -5
  102. package/lib/components/button/button_group/button_group_button.styles.js +10 -6
  103. package/lib/components/button/button_icon/button_icon.js +29 -5
  104. package/lib/components/card/card.js +21 -26
  105. package/lib/components/card/card_select/card_select.js +21 -26
  106. package/lib/components/code/code_block_virtualized.js +9 -7
  107. package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  108. package/lib/components/datagrid/body/cell/data_grid_cell.js +35 -12
  109. package/lib/components/datagrid/body/data_grid_body.js +23 -6
  110. package/lib/components/datagrid/body/data_grid_body_custom.js +23 -6
  111. package/lib/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  112. package/lib/components/datagrid/body/header/column_actions.js +5 -21
  113. package/lib/components/datagrid/body/header/data_grid_header_cell.js +29 -10
  114. package/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -1
  115. package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +5 -2
  116. package/lib/components/datagrid/controls/column_selector.js +36 -19
  117. package/lib/components/datagrid/controls/column_sorting.js +23 -6
  118. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  119. package/lib/components/datagrid/data_grid.js +5 -1
  120. package/lib/components/datagrid/utils/in_memory.js +25 -7
  121. package/lib/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  122. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  123. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  124. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  125. package/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  126. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +104 -0
  127. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  128. package/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  129. package/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  130. package/lib/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  131. package/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  132. package/lib/components/facet/facet_button.js +9 -19
  133. package/lib/components/filter_group/filter_button.js +14 -1
  134. package/lib/components/flyout/flyout.js +26 -9
  135. package/lib/components/form/file_picker/file_picker.styles.js +3 -3
  136. package/lib/components/form/form_control_button/form_control_button.js +13 -7
  137. package/lib/components/header/header_links/header_link.js +13 -7
  138. package/lib/components/header/header_section/header_section_item_button.js +13 -7
  139. package/lib/components/icon/assets/boxes_vertical.js +1 -1
  140. package/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  141. package/lib/components/icon/assets/errorFilled.js +1 -2
  142. package/lib/components/icon/assets/paper_clip.js +1 -1
  143. package/lib/components/icon/assets/streams_wired.js +3 -2
  144. package/lib/components/icon/assets/warningFilled.js +1 -2
  145. package/lib/components/icon/icon_map.js +3 -6
  146. package/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  147. package/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  148. package/lib/components/icon/svgs/errorFilled.svg +1 -1
  149. package/lib/components/icon/svgs/paper_clip.svg +3 -3
  150. package/lib/components/icon/svgs/warningFilled.svg +1 -1
  151. package/lib/components/list_group/list_group.js +13 -1
  152. package/lib/components/list_group/list_group_item.js +13 -1
  153. package/lib/components/list_group/list_group_item_extra_action.js +13 -1
  154. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  155. package/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  156. package/lib/components/pagination/pagination_button.js +13 -7
  157. package/lib/components/popover/popover.js +21 -15
  158. package/lib/components/provider/component_defaults/component_defaults.js +22 -2
  159. package/lib/components/table/table_row.styles.js +1 -1
  160. package/lib/components/tool_tip/tool_tip.js +24 -24
  161. package/lib/global_styling/index.js +16 -1
  162. package/lib/global_styling/mixins/_button.js +1 -1
  163. package/lib/global_styling/utility/selectors.js +15 -0
  164. package/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  165. package/lib/services/focus_trap/index.js +12 -0
  166. package/lib/services/hooks/index.js +18 -1
  167. package/lib/services/hooks/useEuiDisabledElement.js +199 -0
  168. package/lib/services/index.js +8 -0
  169. package/lib/services/popover/reposition_on_scroll.js +67 -0
  170. package/lib/services/theme/high_contrast_overrides.js +5 -1
  171. package/lib/test/cypress/index.d.ts +12 -0
  172. package/lib/test/cypress/index.js +18 -0
  173. package/lib/test/cypress/matchers.d.ts +20 -0
  174. package/lib/test/cypress/matchers.js +61 -0
  175. package/lib/test/cypress/test_reposition_on_scroll.js +69 -0
  176. package/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  177. package/lib/test/enzyme/enzyme_matchers.js +49 -0
  178. package/lib/test/enzyme/index.d.ts +14 -0
  179. package/lib/test/enzyme/index.js +24 -0
  180. package/lib/test/rtl/index.d.ts +9 -1
  181. package/lib/test/rtl/index.js +24 -2
  182. package/lib/test/rtl/matchers.d.ts +36 -0
  183. package/lib/test/rtl/matchers.js +86 -0
  184. package/lib/utils/element_can_be_disabled.js +22 -0
  185. package/lib/utils/index.js +14 -1
  186. package/optimize/es/components/basic_table/collapsed_item_actions.js +3 -1
  187. package/optimize/es/components/basic_table/default_item_action.js +7 -4
  188. package/optimize/es/components/bottom_bar/bottom_bar.js +12 -2
  189. package/optimize/es/components/button/button_display/_button_display.js +24 -12
  190. package/optimize/es/components/button/button_display/_button_display.styles.js +4 -4
  191. package/optimize/es/components/button/button_empty/button_empty.js +18 -6
  192. package/optimize/es/components/button/button_group/button_group.js +10 -5
  193. package/optimize/es/components/button/button_group/button_group_button.js +2 -3
  194. package/optimize/es/components/button/button_group/button_group_button.styles.js +12 -8
  195. package/optimize/es/components/button/button_icon/button_icon.js +17 -5
  196. package/optimize/es/components/code/code_block_virtualized.js +9 -7
  197. package/optimize/es/components/datagrid/body/header/column_actions.js +5 -21
  198. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +6 -4
  199. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -2
  200. package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +4 -2
  201. package/optimize/es/components/datagrid/controls/column_selector.js +36 -19
  202. package/optimize/es/components/datagrid/data_grid.js +5 -1
  203. package/optimize/es/components/datagrid/utils/in_memory.js +2 -1
  204. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +12 -4
  205. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  206. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  207. package/optimize/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  208. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +97 -0
  209. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  210. package/optimize/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  211. package/optimize/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  212. package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  213. package/optimize/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  214. package/optimize/es/components/flyout/flyout.js +27 -10
  215. package/optimize/es/components/form/file_picker/file_picker.styles.js +3 -3
  216. package/optimize/es/components/icon/assets/boxes_vertical.js +1 -1
  217. package/optimize/es/components/icon/assets/checkInCircleFilled.js +1 -2
  218. package/optimize/es/components/icon/assets/errorFilled.js +1 -2
  219. package/optimize/es/components/icon/assets/paper_clip.js +1 -1
  220. package/optimize/es/components/icon/assets/streams_wired.js +3 -2
  221. package/optimize/es/components/icon/assets/warningFilled.js +1 -2
  222. package/optimize/es/components/icon/icon_map.js +3 -6
  223. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  224. package/optimize/es/components/popover/popover.js +22 -16
  225. package/optimize/es/components/table/table_row.styles.js +1 -1
  226. package/optimize/es/components/tool_tip/tool_tip.js +24 -24
  227. package/optimize/es/global_styling/index.js +2 -1
  228. package/optimize/es/global_styling/mixins/_button.js +1 -1
  229. package/optimize/es/global_styling/utility/selectors.js +9 -0
  230. package/optimize/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  231. package/optimize/es/services/focus_trap/index.js +9 -0
  232. package/optimize/es/services/hooks/index.js +2 -1
  233. package/optimize/es/services/hooks/useEuiDisabledElement.js +192 -0
  234. package/optimize/es/services/index.js +1 -0
  235. package/optimize/es/services/popover/reposition_on_scroll.js +61 -0
  236. package/optimize/es/services/theme/high_contrast_overrides.js +5 -1
  237. package/optimize/es/test/cypress/index.d.ts +12 -0
  238. package/optimize/es/test/cypress/index.js +9 -0
  239. package/optimize/es/test/cypress/matchers.d.ts +20 -0
  240. package/optimize/es/test/cypress/matchers.js +54 -0
  241. package/optimize/es/test/cypress/test_reposition_on_scroll.js +63 -0
  242. package/optimize/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  243. package/optimize/es/test/enzyme/enzyme_matchers.js +43 -0
  244. package/optimize/es/test/enzyme/index.d.ts +14 -0
  245. package/optimize/es/test/enzyme/index.js +10 -0
  246. package/optimize/es/test/rtl/index.d.ts +9 -1
  247. package/optimize/es/test/rtl/index.js +2 -1
  248. package/optimize/es/test/rtl/matchers.d.ts +36 -0
  249. package/optimize/es/test/rtl/matchers.js +82 -0
  250. package/optimize/es/utils/element_can_be_disabled.js +16 -0
  251. package/optimize/es/utils/index.js +2 -1
  252. package/optimize/lib/components/basic_table/collapsed_item_actions.js +3 -1
  253. package/optimize/lib/components/basic_table/default_item_action.js +7 -4
  254. package/optimize/lib/components/bottom_bar/bottom_bar.js +11 -1
  255. package/optimize/lib/components/button/button_display/_button_display.js +23 -11
  256. package/optimize/lib/components/button/button_display/_button_display.styles.js +4 -4
  257. package/optimize/lib/components/button/button_empty/button_empty.js +17 -5
  258. package/optimize/lib/components/button/button_group/button_group.js +10 -5
  259. package/optimize/lib/components/button/button_group/button_group_button.js +2 -3
  260. package/optimize/lib/components/button/button_group/button_group_button.styles.js +10 -6
  261. package/optimize/lib/components/button/button_icon/button_icon.js +16 -4
  262. package/optimize/lib/components/code/code_block_virtualized.js +9 -7
  263. package/optimize/lib/components/datagrid/body/header/column_actions.js +5 -21
  264. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +6 -4
  265. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -1
  266. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +4 -2
  267. package/optimize/lib/components/datagrid/controls/column_selector.js +36 -19
  268. package/optimize/lib/components/datagrid/data_grid.js +5 -1
  269. package/optimize/lib/components/datagrid/utils/in_memory.js +2 -1
  270. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +11 -3
  271. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  272. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  273. package/optimize/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  274. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  275. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  276. package/optimize/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  277. package/optimize/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  278. package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  279. package/optimize/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  280. package/optimize/lib/components/flyout/flyout.js +26 -9
  281. package/optimize/lib/components/form/file_picker/file_picker.styles.js +3 -3
  282. package/optimize/lib/components/icon/assets/boxes_vertical.js +1 -1
  283. package/optimize/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  284. package/optimize/lib/components/icon/assets/errorFilled.js +1 -2
  285. package/optimize/lib/components/icon/assets/paper_clip.js +1 -1
  286. package/optimize/lib/components/icon/assets/streams_wired.js +3 -2
  287. package/optimize/lib/components/icon/assets/warningFilled.js +1 -2
  288. package/optimize/lib/components/icon/icon_map.js +3 -6
  289. package/optimize/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  290. package/optimize/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  291. package/optimize/lib/components/icon/svgs/errorFilled.svg +1 -1
  292. package/optimize/lib/components/icon/svgs/paper_clip.svg +3 -3
  293. package/optimize/lib/components/icon/svgs/warningFilled.svg +1 -1
  294. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  295. package/optimize/lib/components/popover/popover.js +21 -15
  296. package/optimize/lib/components/table/table_row.styles.js +1 -1
  297. package/optimize/lib/components/tool_tip/tool_tip.js +24 -24
  298. package/optimize/lib/global_styling/index.js +16 -1
  299. package/optimize/lib/global_styling/mixins/_button.js +1 -1
  300. package/optimize/lib/global_styling/utility/selectors.js +15 -0
  301. package/optimize/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  302. package/optimize/lib/services/focus_trap/index.js +12 -0
  303. package/optimize/lib/services/hooks/index.js +18 -1
  304. package/optimize/lib/services/hooks/useEuiDisabledElement.js +197 -0
  305. package/optimize/lib/services/index.js +8 -0
  306. package/optimize/lib/services/popover/reposition_on_scroll.js +67 -0
  307. package/optimize/lib/services/theme/high_contrast_overrides.js +5 -1
  308. package/optimize/lib/test/cypress/index.d.ts +12 -0
  309. package/optimize/lib/test/cypress/index.js +18 -0
  310. package/optimize/lib/test/cypress/matchers.d.ts +20 -0
  311. package/optimize/lib/test/cypress/matchers.js +61 -0
  312. package/optimize/lib/test/cypress/test_reposition_on_scroll.js +70 -0
  313. package/optimize/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  314. package/optimize/lib/test/enzyme/enzyme_matchers.js +50 -0
  315. package/optimize/lib/test/enzyme/index.d.ts +14 -0
  316. package/optimize/lib/test/enzyme/index.js +24 -0
  317. package/optimize/lib/test/rtl/index.d.ts +9 -1
  318. package/optimize/lib/test/rtl/index.js +24 -2
  319. package/optimize/lib/test/rtl/matchers.d.ts +36 -0
  320. package/optimize/lib/test/rtl/matchers.js +86 -0
  321. package/optimize/lib/utils/element_can_be_disabled.js +22 -0
  322. package/optimize/lib/utils/index.js +14 -1
  323. package/package.json +6 -5
  324. package/test-env/components/accessibility/skip_link/skip_link.js +10 -1
  325. package/test-env/components/basic_table/collapsed_item_actions.js +3 -1
  326. package/test-env/components/basic_table/default_item_action.js +7 -4
  327. package/test-env/components/bottom_bar/bottom_bar.js +11 -1
  328. package/test-env/components/button/button.js +21 -26
  329. package/test-env/components/button/button_display/_button_display.js +31 -29
  330. package/test-env/components/button/button_display/_button_display.styles.js +4 -4
  331. package/test-env/components/button/button_empty/button_empty.js +31 -13
  332. package/test-env/components/button/button_group/button_group.js +49 -31
  333. package/test-env/components/button/button_group/button_group_button.js +16 -5
  334. package/test-env/components/button/button_group/button_group_button.styles.js +10 -6
  335. package/test-env/components/button/button_icon/button_icon.js +29 -5
  336. package/test-env/components/card/card.js +21 -26
  337. package/test-env/components/card/card_select/card_select.js +21 -26
  338. package/test-env/components/code/code_block_virtualized.js +9 -7
  339. package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  340. package/test-env/components/datagrid/body/cell/data_grid_cell.js +35 -12
  341. package/test-env/components/datagrid/body/data_grid_body.js +23 -6
  342. package/test-env/components/datagrid/body/data_grid_body_custom.js +23 -6
  343. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  344. package/test-env/components/datagrid/body/header/column_actions.js +5 -21
  345. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +29 -10
  346. package/test-env/components/datagrid/body/header/data_grid_header_cell.styles.js +8 -1
  347. package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.js +5 -2
  348. package/test-env/components/datagrid/controls/column_selector.js +36 -19
  349. package/test-env/components/datagrid/controls/column_sorting.js +23 -6
  350. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  351. package/test-env/components/datagrid/data_grid.js +5 -1
  352. package/test-env/components/datagrid/utils/in_memory.js +25 -7
  353. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  354. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  355. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  356. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  357. package/test-env/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  358. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  359. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  360. package/test-env/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  361. package/test-env/components/date_picker/super_date_picker/relative_utils.js +9 -0
  362. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  363. package/test-env/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  364. package/test-env/components/facet/facet_button.js +9 -19
  365. package/test-env/components/filter_group/filter_button.js +14 -1
  366. package/test-env/components/form/file_picker/file_picker.styles.js +3 -3
  367. package/test-env/components/form/form_control_button/form_control_button.js +13 -7
  368. package/test-env/components/header/header_links/header_link.js +13 -7
  369. package/test-env/components/header/header_section/header_section_item_button.js +13 -7
  370. package/test-env/components/icon/assets/boxes_vertical.js +1 -1
  371. package/test-env/components/icon/assets/checkInCircleFilled.js +1 -2
  372. package/test-env/components/icon/assets/errorFilled.js +1 -2
  373. package/test-env/components/icon/assets/paper_clip.js +1 -1
  374. package/test-env/components/icon/assets/streams_wired.js +3 -2
  375. package/test-env/components/icon/assets/warningFilled.js +1 -2
  376. package/test-env/components/icon/icon_map.js +3 -6
  377. package/test-env/components/list_group/list_group.js +13 -1
  378. package/test-env/components/list_group/list_group_item.js +13 -1
  379. package/test-env/components/list_group/list_group_item_extra_action.js +13 -1
  380. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  381. package/test-env/components/overlay_mask/overlay_mask.styles.js +1 -1
  382. package/test-env/components/pagination/pagination_button.js +13 -7
  383. package/test-env/components/popover/popover.js +21 -15
  384. package/test-env/components/provider/component_defaults/component_defaults.js +22 -2
  385. package/test-env/components/table/table_row.styles.js +1 -1
  386. package/test-env/components/tool_tip/tool_tip.js +24 -24
  387. package/test-env/global_styling/index.js +16 -1
  388. package/test-env/global_styling/mixins/_button.js +1 -1
  389. package/test-env/global_styling/utility/selectors.js +15 -0
  390. package/test-env/services/focus_trap/focus_trap_pub_sub.js +80 -0
  391. package/test-env/services/focus_trap/index.js +12 -0
  392. package/test-env/services/hooks/index.js +18 -1
  393. package/test-env/services/hooks/useEuiDisabledElement.js +197 -0
  394. package/test-env/services/index.js +8 -0
  395. package/test-env/services/popover/reposition_on_scroll.js +67 -0
  396. package/test-env/services/theme/high_contrast_overrides.js +5 -1
  397. package/test-env/test/cypress/index.js +18 -0
  398. package/test-env/test/cypress/matchers.js +61 -0
  399. package/test-env/test/cypress/test_reposition_on_scroll.js +70 -0
  400. package/test-env/test/enzyme/enzyme_matchers.js +50 -0
  401. package/test-env/test/enzyme/index.js +24 -0
  402. package/test-env/test/rtl/index.js +24 -2
  403. package/test-env/test/rtl/matchers.js +86 -0
  404. package/test-env/utils/element_can_be_disabled.js +22 -0
  405. package/test-env/utils/index.js +14 -1
@@ -0,0 +1,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
  };
@@ -25,6 +25,7 @@ var _date_picker_range = require("../date_picker_range");
25
25
  var _form = require("../../form");
26
26
  var _time_options = require("./time_options");
27
27
  var _pretty_duration = require("./pretty_duration");
28
+ var _time_window_buttons = require("./time_window_buttons");
28
29
  var _async_interval = require("./async_interval");
29
30
  var _super_update_button = require("./super_update_button");
30
31
  var _quick_select_popover = require("./quick_select_popover/quick_select_popover");
@@ -276,7 +277,9 @@ var EuiSuperDatePickerInternal = exports.EuiSuperDatePickerInternal = /*#__PURE_
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 ? (0, _react2.jsx)(_auto_refresh.EuiAutoRefreshButton, {
281
284
  refreshInterval: refreshInterval,
282
285
  minInterval: refreshMinInterval,
@@ -353,7 +356,8 @@ var EuiSuperDatePickerInternal = exports.EuiSuperDatePickerInternal = /*#__PURE_
353
356
  timeOptions: timeOptions,
354
357
  buttonProps: {
355
358
  onFocus: onFocus
356
- }
359
+ },
360
+ timeZoneDisplayProps: timeZoneDisplayProps
357
361
  }),
358
362
  endDateControl: isQuickSelectOnly ? undefined : (0, _react2.jsx)(_date_popover_button.EuiDatePopoverButton, {
359
363
  css: styles.euiSuperDatePicker__rangeInput,
@@ -378,7 +382,8 @@ var EuiSuperDatePickerInternal = exports.EuiSuperDatePickerInternal = /*#__PURE_
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 @@ var EuiSuperDatePickerInternal = exports.EuiSuperDatePickerInternal = /*#__PURE_
398
403
  _this.applyTime();
399
404
  }
400
405
  });
401
- (0, _defineProperty2.default)(_this, "renderUpdateButton", function () {
406
+ (0, _defineProperty2.default)(_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 (0, _react2.jsx)(_time_window_buttons.EuiTimeWindowButtons, (0, _extends2.default)({
418
+ applyTime: _this.applyQuickTime,
419
+ start: start,
420
+ end: end,
421
+ compressed: compressed,
422
+ isDisabled: !!isDisabled || _this.state.isInvalid
423
+ }, config));
424
+ });
425
+ (0, _defineProperty2.default)(_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 (0, _react2.jsx)(_super_update_button.EuiSuperUpdateButton, (0, _extends2.default)({
410
434
  needsUpdate: _this.state.hasChanged,
@@ -423,21 +447,21 @@ var EuiSuperDatePickerInternal = exports.EuiSuperDatePickerInternal = /*#__PURE_
423
447
  return (0, _createClass2.default)(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 @@ var EuiSuperDatePickerInternal = exports.EuiSuperDatePickerInternal = /*#__PURE_
462
486
  compressed: compressed,
463
487
  isDisabled: !!isDisabled,
464
488
  className: className
465
- }) : (0, _react2.jsx)(_react.default.Fragment, null, this.renderDatePickerRange(), this.renderUpdateButton()));
489
+ }) : (0, _react2.jsx)(_react.default.Fragment, null, this.renderDatePickerRange(), this.renderTimeWindowButtons(), this.renderUpdateButton()));
466
490
  }
467
491
  }], [{
468
492
  key: "getDerivedStateFromProps",
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ZOOM_FACTOR_DEFAULT = exports.EuiTimeWindowButtons = void 0;
8
+ exports.useEuiTimeWindow = useEuiTimeWindow;
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _datemath = _interopRequireDefault(require("@elastic/datemath"));
11
+ var _moment = _interopRequireDefault(require("moment"));
12
+ var _pretty_interval = require("./pretty_interval");
13
+ var _relative_utils = require("./relative_utils");
14
+ var _button_group_button = require("../../button/button_group/button_group_button");
15
+ var _button_group = require("../../button/button_group/button_group.styles");
16
+ var _services = require("../../../services");
17
+ var _i18n = require("../../i18n");
18
+ var _react2 = require("@emotion/react");
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
+ var ZOOM_FACTOR_DEFAULT = exports.ZOOM_FACTOR_DEFAULT = 0.5;
28
+ /**
29
+ * Button group with time window controls for shifting the time window
30
+ * forwards and backwards, and zooming out.
31
+ */
32
+ var EuiTimeWindowButtons = exports.EuiTimeWindowButtons = function EuiTimeWindowButtons(_ref) {
33
+ var applyTime = _ref.applyTime,
34
+ start = _ref.start,
35
+ end = _ref.end,
36
+ compressed = _ref.compressed,
37
+ isDisabled = _ref.isDisabled,
38
+ _ref$showZoomOut = _ref.showZoomOut,
39
+ showZoomOut = _ref$showZoomOut === void 0 ? true : _ref$showZoomOut,
40
+ _ref$showShiftArrows = _ref.showShiftArrows,
41
+ showShiftArrows = _ref$showShiftArrows === void 0 ? true : _ref$showShiftArrows,
42
+ _ref$zoomFactor = _ref.zoomFactor,
43
+ zoomFactor = _ref$zoomFactor === void 0 ? ZOOM_FACTOR_DEFAULT : _ref$zoomFactor;
44
+ var buttonColor = 'text';
45
+ var buttonSize = compressed ? 's' : 'm';
46
+ var iconSize = compressed ? 's' : 'm';
47
+ var styles = (0, _services.useEuiMemoizedStyles)(_button_group.euiButtonGroupButtonsStyles);
48
+ var _useEuiTimeWindow = useEuiTimeWindow(start, end, applyTime, {
49
+ zoomFactor: zoomFactor
50
+ }),
51
+ displayInterval = _useEuiTimeWindow.displayInterval,
52
+ isInvalid = _useEuiTimeWindow.isInvalid,
53
+ stepForward = _useEuiTimeWindow.stepForward,
54
+ stepBackward = _useEuiTimeWindow.stepBackward,
55
+ expandWindow = _useEuiTimeWindow.expandWindow;
56
+ var invalidShiftDescription = (0, _i18n.useEuiI18n)('euiTimeWindowButtons.invalidShiftLabel', 'Cannot shift invalid time window');
57
+ var invalidZoomOutDescription = (0, _i18n.useEuiI18n)('euiTimeWindowButtons.invalidZoomOutLabel', 'Cannot zoom out invalid time window');
58
+ var previousId = (0, _services.useGeneratedHtmlId)({
59
+ prefix: 'previous'
60
+ });
61
+ var previousLabel = (0, _i18n.useEuiI18n)('euiTimeWindowButtons.previousLabel', 'Previous');
62
+ var previousTooltipContent = (0, _i18n.useEuiI18n)('euiTimeWindowButtons.previousDescription', 'Previous {displayInterval}', {
63
+ displayInterval: displayInterval
64
+ });
65
+ var zoomOutId = (0, _services.useGeneratedHtmlId)({
66
+ prefix: 'zoom_out'
67
+ });
68
+ var zoomOutLabel = (0, _i18n.useEuiI18n)('euiTimeWindowButtons.zoomOutLabel', 'Zoom out');
69
+ var zoomOutTooltipContent = isInvalid ? invalidZoomOutDescription : zoomOutLabel;
70
+ var nextId = (0, _services.useGeneratedHtmlId)({
71
+ prefix: 'next'
72
+ });
73
+ var nextLabel = (0, _i18n.useEuiI18n)('euiTimeWindowButtons.nextLabel', 'Next');
74
+ var nextTooltipContent = (0, _i18n.useEuiI18n)('euiTimeWindowButtons.nextDescription', 'Next {displayInterval}', {
75
+ displayInterval: displayInterval
76
+ });
77
+ if (!showZoomOut && !showShiftArrows) return null;
78
+ return (0, _react2.jsx)("div", {
79
+ className: "euiSuperDatePicker__timeWindowButtons",
80
+ css: [styles.euiButtonGroup__buttons, styles[buttonSize], ";label:EuiTimeWindowButtons;"],
81
+ "data-test-subj": "timeWindowButtons"
82
+ }, showShiftArrows && (0, _react2.jsx)(_button_group_button.EuiButtonGroupButton, {
83
+ id: previousId,
84
+ "data-test-subj": "timeWindowButtonsPrevious",
85
+ label: previousLabel,
86
+ title: "",
87
+ toolTipContent: !isDisabled && (isInvalid ? invalidShiftDescription : previousTooltipContent),
88
+ color: buttonColor,
89
+ size: buttonSize,
90
+ iconType: "arrowLeft",
91
+ iconSize: iconSize,
92
+ isIconOnly: true,
93
+ isSelected: false,
94
+ isDisabled: isDisabled,
95
+ onClick: stepBackward
96
+ }), showZoomOut && (0, _react2.jsx)(_button_group_button.EuiButtonGroupButton, {
97
+ id: zoomOutId,
98
+ "data-test-subj": "timeWindowButtonsZoomOut",
99
+ label: zoomOutLabel,
100
+ title: "",
101
+ toolTipContent: !isDisabled && zoomOutTooltipContent,
102
+ toolTipProps: {
103
+ disableScreenReaderOutput: zoomOutLabel === zoomOutTooltipContent
104
+ },
105
+ color: buttonColor,
106
+ size: buttonSize,
107
+ iconType: "magnifyWithMinus",
108
+ iconSize: iconSize,
109
+ isIconOnly: true,
110
+ isSelected: false,
111
+ isDisabled: isDisabled,
112
+ onClick: expandWindow
113
+ }), showShiftArrows && (0, _react2.jsx)(_button_group_button.EuiButtonGroupButton, {
114
+ id: nextId,
115
+ "data-test-subj": "timeWindowButtonsNext",
116
+ label: nextLabel,
117
+ title: "",
118
+ toolTipContent: !isDisabled && (isInvalid ? invalidShiftDescription : nextTooltipContent),
119
+ color: buttonColor,
120
+ size: buttonSize,
121
+ iconType: "arrowRight",
122
+ iconSize: iconSize,
123
+ isIconOnly: true,
124
+ isSelected: false,
125
+ isDisabled: isDisabled,
126
+ onClick: stepForward
127
+ }));
128
+ };
129
+
130
+ /**
131
+ * Partly adapted from date_picker/super_date_picker/quick_select_popover/quick_select.tsx
132
+ */
133
+ function useEuiTimeWindow(start, end, apply, options) {
134
+ var _options$zoomFactor;
135
+ var min = _datemath.default.parse(start);
136
+ var max = _datemath.default.parse(end, {
137
+ roundUp: true
138
+ });
139
+ var isInvalid = !min || !min.isValid() || !max || !max.isValid();
140
+ var windowDuration = isInvalid ? 1 : max.diff(min);
141
+ var zoomFactor = getPercentageMultiplier((_options$zoomFactor = options === null || options === void 0 ? void 0 : options.zoomFactor) !== null && _options$zoomFactor !== void 0 ? _options$zoomFactor : ZOOM_FACTOR_DEFAULT);
142
+ var zoomAddition = windowDuration * (zoomFactor / 2); // Gets added to each end, that's why it's split in half
143
+ var prettyInterval = (0, _pretty_interval.usePrettyInterval)(false, windowDuration);
144
+ var displayInterval = isInvalid ? '' : prettyInterval;
145
+ if (!isInvalid && !(0, _relative_utils.isRelativeToNow)(start, end) && !isExactMinuteRange(windowDuration)) {
146
+ displayInterval = "~".concat(displayInterval);
147
+ }
148
+ return {
149
+ displayInterval: displayInterval,
150
+ isInvalid: isInvalid,
151
+ stepForward: stepForward,
152
+ stepBackward: stepBackward,
153
+ expandWindow: expandWindow
154
+ };
155
+ function stepForward() {
156
+ if (isInvalid) return;
157
+ apply({
158
+ start: (0, _moment.default)(max).toISOString(),
159
+ end: (0, _moment.default)(max).add(windowDuration, 'ms').toISOString()
160
+ });
161
+ }
162
+ function stepBackward() {
163
+ if (isInvalid) return;
164
+ apply({
165
+ start: (0, _moment.default)(min).subtract(windowDuration, 'ms').toISOString(),
166
+ end: (0, _moment.default)(min).toISOString()
167
+ });
168
+ }
169
+ function expandWindow() {
170
+ if (isInvalid) return;
171
+ apply({
172
+ start: (0, _moment.default)(min).subtract(zoomAddition, 'ms').toISOString(),
173
+ end: (0, _moment.default)(max).add(zoomAddition, 'ms').toISOString()
174
+ });
175
+ }
176
+ }
177
+
178
+ /**
179
+ * Get a number out of either 0.2 or "20%"
180
+ */
181
+ function getPercentageMultiplier(value) {
182
+ var result = typeof value === 'number' ? value : parseFloat(String(value).replace('%', '').trim());
183
+ if (isNaN(result)) throw new TypeError('Please provide a valid number or percentage string e.g. "25%"');
184
+ return result > 1 ? result / 100 : result;
185
+ }
186
+
187
+ /**
188
+ * Useful to determine whether to show the tilde in the display
189
+ */
190
+ function isExactMinuteRange(diffMs) {
191
+ // 60 * 1000 = ms per minute
192
+ return diffMs % (60 * 1000) === 0;
193
+ }
@@ -219,20 +219,28 @@ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function
219
219
  }
220
220
  return selectors;
221
221
  }, [includeSelectorInFocusTrap, includeFixedHeadersInFocusTrap]);
222
- (0, _react.useEffect)(function () {
222
+
223
+ /**
224
+ * Finds the shards to include in the focus trap by querying by `focusTrapSelectors`.
225
+ *
226
+ * @param shouldAutoFocus Whether to auto-focus the flyout wrapper when the focus trap is activated.
227
+ * This is necessary because when a flyout is toggled from within a shard, the focus trap's `autoFocus`
228
+ * feature doesn't work. This logic manually focuses the flyout as a workaround.
229
+ */
230
+ var findShards = (0, _react.useCallback)(function () {
231
+ var shouldAutoFocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
223
232
  if (focusTrapSelectors.length > 0) {
224
233
  var shardsEls = focusTrapSelectors.flatMap(function (selector) {
225
234
  return Array.from(document.querySelectorAll(selector));
226
235
  });
227
236
  setFocusTrapShards(Array.from(shardsEls));
228
-
229
- // Flyouts that are toggled from shards do not have working
230
- // focus trap autoFocus, so we need to focus the flyout wrapper ourselves
231
- shardsEls.forEach(function (shard) {
232
- if (shard.contains(flyoutToggle.current)) {
233
- resizeRef === null || resizeRef === void 0 || resizeRef.focus();
234
- }
235
- });
237
+ if (shouldAutoFocus) {
238
+ shardsEls.forEach(function (shard) {
239
+ if (shard.contains(flyoutToggle.current)) {
240
+ resizeRef === null || resizeRef === void 0 || resizeRef.focus();
241
+ }
242
+ });
243
+ }
236
244
  } else {
237
245
  // Clear existing shards if necessary, e.g. switching to `false`
238
246
  setFocusTrapShards(function (shards) {
@@ -240,6 +248,15 @@ var EuiFlyout = exports.EuiFlyout = /*#__PURE__*/(0, _react.forwardRef)(function
240
248
  });
241
249
  }
242
250
  }, [focusTrapSelectors, resizeRef]);
251
+ (0, _react.useEffect)(function () {
252
+ // Auto-focus should only happen on initial flyout mount (or when the dependencies change)
253
+ // because it snaps focus to the flyout wrapper, which steals it from subsequently focused elements.
254
+ findShards(true);
255
+ var unsubscribe = _services.focusTrapPubSub.subscribe(function () {
256
+ return findShards();
257
+ });
258
+ return unsubscribe;
259
+ }, [findShards]);
243
260
  var focusTrapProps = (0, _react.useMemo)(function () {
244
261
  return _objectSpread(_objectSpread({}, _focusTrapProps), {}, {
245
262
  shards: [].concat((0, _toConsumableArray2.default)(focusTrapShards), (0, _toConsumableArray2.default)((_focusTrapProps === null || _focusTrapProps === void 0 ? void 0 : _focusTrapProps.shards) || []))
@@ -47,7 +47,7 @@ var euiFilePickerStyles = exports.euiFilePickerStyles = function euiFilePickerSt
47
47
  fontSize = _euiFontSize.fontSize,
48
48
  lineHeight = _euiFontSize.lineHeight;
49
49
  return {
50
- euiFilePicker: /*#__PURE__*/(0, _react.css)("--euiFormControlLeftIconsCount:1;position:relative;border-radius:", formVariables.controlBorderRadius, ";&:has(input:focus){--euiFormControlStateColor:", formVariables.borderFocused, ";}&:hover{--euiFormControlStateColor:", highContrastMode ? euiTheme.border.color : formVariables.borderHovered, ";--euiFormControlStateStyle:solid;}&:focus-within{", (0, _global_styling.highContrastModeStyles)(euiThemeContext, {
50
+ euiFilePicker: /*#__PURE__*/(0, _react.css)("--euiFormControlLeftIconsCount:1;position:relative;border-radius:", formVariables.controlBorderRadius, ";&:has(input:focus){--euiFormControlStateColor:", formVariables.borderFocused, ";}&:hover{--euiFormControlStateColor:", highContrastMode ? euiTheme.border.color : euiTheme.colors.borderInteractiveFormsHoverProminent, ";--euiFormControlStateStyle:", highContrastMode ? 'solid' : 'dashed', ";}&:focus-within{", (0, _global_styling.highContrastModeStyles)(euiThemeContext, {
51
51
  forced: "\n ".concat((0, _form.euiFormControlShowBackgroundLine)(euiThemeContext, formVariables.borderFocused), "\n ")
52
52
  }), ";};label:euiFilePicker;"),
53
53
  isDroppingFile: /*#__PURE__*/(0, _react.css)("--euiFormControlStateColor:", euiTheme.colors.borderStrongSuccess, ";--euiFormControlStateStyle:", highContrastMode === 'forced' ? 'solid' : 'dashed', ";background-color:", euiTheme.components.forms.backgroundDropping, ";;label:isDroppingFile;"),
@@ -66,8 +66,8 @@ var euiFilePickerStyles = exports.euiFilePickerStyles = function euiFilePickerSt
66
66
  forced: "\n text-decoration: underline;\n "
67
67
  }), ";}.euiFilePicker__icon{transform:scale(1.05);}}};label:largeInteractive;")
68
68
  },
69
- euiFilePicker__prompt: /*#__PURE__*/(0, _react.css)("pointer-events:none;font-size:", fontSize, ";line-height:1;", (0, _global_styling.euiTextTruncate)(), " color:", euiTheme.colors.textParagraph, ";border:", euiTheme.border.width.thin, " var(--euiFormControlStateStyle, dashed) var(--euiFormControlStateColor, ", formVariables.borderColor, ");", _global_styling.euiCanAnimate, "{transition:border-color ", euiTheme.animation.fast, " ease-in,background-color ", euiTheme.animation.fast, " ease-in;};label:euiFilePicker__prompt;"),
70
- disabled: /*#__PURE__*/(0, _react.css)(formStyles.disabled, ";label:disabled;"),
69
+ euiFilePicker__prompt: /*#__PURE__*/(0, _react.css)("pointer-events:none;font-size:", fontSize, ";line-height:1;", (0, _global_styling.euiTextTruncate)(), " color:", euiTheme.colors.textParagraph, ";border:", euiTheme.border.width.thin, " var(--euiFormControlStateStyle, dashed) var(--euiFormControlStateColor, ", euiTheme.colors.borderBaseProminent, ");", _global_styling.euiCanAnimate, "{transition:border-color ", euiTheme.animation.fast, " ease-in,background-color ", euiTheme.animation.fast, " ease-in;};label:euiFilePicker__prompt;"),
70
+ disabled: /*#__PURE__*/(0, _react.css)(formStyles.disabled, "--euiFormControlStateColor:transparent;;label:disabled;"),
71
71
  // Skip the css() on the default height to avoid generating a className
72
72
  uncompressed: formStyles.uncompressed,
73
73
  compressed: /*#__PURE__*/(0, _react.css)(formStyles.compressed, ";label:compressed;"),
@@ -34,7 +34,7 @@ var EuiIconBoxesVertical = function EuiIconBoxesVertical(_ref) {
34
34
  }, props), title ? (0, _react2.jsx)("title", {
35
35
  id: titleId
36
36
  }, title) : null, (0, _react2.jsx)("path", {
37
- d: "M8 12a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm0-6a2 2 0 1 1 0 4 2 2 0 0 1 0-4Zm0-6a2 2 0 1 1 0 4 2 2 0 0 1 0-4Z"
37
+ d: "M6 3a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm2-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM6 8a2 2 0 1 1 4 0 2 2 0 0 1-4 0Zm2-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm0 4a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-1 2a1 1 0 1 1 2 0 1 1 0 0 1-2 0Z"
38
38
  }));
39
39
  };
40
40
  var icon = exports.icon = EuiIconBoxesVertical;
@@ -34,8 +34,7 @@ var EuiIconCheckInCircleFilled = function EuiIconCheckInCircleFilled(_ref) {
34
34
  }, props), title ? (0, _react2.jsx)("title", {
35
35
  id: titleId
36
36
  }, title) : null, (0, _react2.jsx)("path", {
37
- fillRule: "evenodd",
38
- d: "M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16Zm3.65-10.857L6.91 9.8 4.35 7.286a.5.5 0 0 0-.7.714l2.909 2.857a.5.5 0 0 0 .7 0l5.091-5a.5.5 0 1 0-.7-.714Z"
37
+ d: "M8 1a7 7 0 1 1 0 14A7 7 0 0 1 8 1ZM7 9.293 5.354 7.646l-.708.708L7 10.707l4.354-4.353-.707-.708L7 9.293Z"
39
38
  }));
40
39
  };
41
40
  var icon = exports.icon = EuiIconCheckInCircleFilled;
@@ -34,8 +34,7 @@ var EuiIconErrorFilled = function EuiIconErrorFilled(_ref) {
34
34
  }, props), title ? (0, _react2.jsx)("title", {
35
35
  id: titleId
36
36
  }, title) : null, (0, _react2.jsx)("path", {
37
- fillRule: "evenodd",
38
- d: "M10 1a1 1 0 0 1 .707.293l4 4A1 1 0 0 1 15 6v5a1 1 0 0 1-.293.707l-4 4A1 1 0 0 1 10 16H5a1 1 0 0 1-.707-.293l-4-4A1 1 0 0 1 0 11V6a1 1 0 0 1 .293-.707l4-4A1 1 0 0 1 5 1h5ZM4.146 5.146a.5.5 0 0 1 .708 0L7.5 7.793l2.646-2.647a.5.5 0 0 1 .708.708L8.207 8.5l2.647 2.646a.5.5 0 0 1-.708.708L7.5 9.207l-2.646 2.647a.5.5 0 0 1-.708-.708L6.793 8.5 4.146 5.854a.5.5 0 0 1 0-.708Z"
37
+ d: "M10.392 1.005a1 1 0 0 1 .608.288L14.707 5a1 1 0 0 1 .293.707v4.586a1 1 0 0 1-.293.707L11 14.707a1 1 0 0 1-.707.293H5.707a1 1 0 0 1-.634-.227L5 14.707 1.293 11a1 1 0 0 1-.288-.608L1 10.293V5.707A1 1 0 0 1 1.293 5L5 1.293A1 1 0 0 1 5.707 1h4.586l.099.005ZM8 7.293 5.354 4.646l-.708.708L7.293 8l-2.647 2.646.708.707L8 8.707l2.646 2.646.707-.707L8.707 8l2.646-2.646-.707-.708L8 7.293Z"
39
38
  }));
40
39
  };
41
40
  var icon = exports.icon = EuiIconErrorFilled;
@@ -34,7 +34,7 @@ var EuiIconPaperClip = function EuiIconPaperClip(_ref) {
34
34
  }, props), title ? (0, _react2.jsx)("title", {
35
35
  id: titleId
36
36
  }, title) : null, (0, _react2.jsx)("path", {
37
- d: "M9.84 2.019 3.046 8.57c-.987.952-1.133 2.517-.199 3.516.951 1.021 2.58 1.106 3.64.19.034-.03.068-.061.1-.092l5.655-5.452a.484.484 0 0 0 0-.703.53.53 0 0 0-.729 0L5.92 11.421c-.572.551-1.505.657-2.131.163a1.455 1.455 0 0 1-.118-2.211l6.899-6.651a2.646 2.646 0 0 1 3.644 0 2.422 2.422 0 0 1 0 3.513L7.3 12.901c-1.333 1.285-3.497 1.493-4.95.336-1.54-1.22-1.764-3.411-.5-4.897a3.33 3.33 0 0 1 .238-.252l5.78-5.572a.484.484 0 0 0 0-.703.53.53 0 0 0-.73 0l-5.78 5.572a4.36 4.36 0 0 0 0 6.324c2.188 2.109 5.202 1.31 6.66-.095l6.925-6.676a3.39 3.39 0 0 0 0-4.92C13.534.66 11.25.66 9.841 2.019z"
37
+ d: "M7 11c0 .423.105.648.229.771.123.124.348.229.771.229.423 0 .648-.105.771-.229.124-.123.229-.348.229-.771V5h1v6c0 .577-.145 1.102-.521 1.479C9.102 12.854 8.577 13 8 13c-.577 0-1.102-.145-1.479-.521C6.145 12.101 6 11.577 6 11V4c0-.719.215-1.468.716-2.046C7.226 1.364 7.996 1 9 1c1.005 0 1.773.365 2.284.954.5.578.716 1.327.716 2.046v7c0 1.103-.345 2.11-1.043 2.845C10.255 14.583 9.242 15 8 15c-1.242 0-2.255-.417-2.957-1.155C4.345 13.11 4 12.103 4 11V4h1v7c0 .897.279 1.64.768 2.155C6.253 13.666 6.99 14 8 14c1.01 0 1.747-.334 2.232-.845.49-.515.768-1.258.768-2.155V4c0-.531-.16-1.032-.472-1.392C10.227 2.26 9.745 2 9 2s-1.227.26-1.528.608C7.16 2.968 7 3.47 7 4v7Z"
38
38
  }));
39
39
  };
40
40
  var icon = exports.icon = EuiIconPaperClip;