@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
@@ -56,6 +56,7 @@ var EuiDataGridHeaderCell = exports.EuiDataGridHeaderCell = /*#__PURE__*/(0, _re
56
56
  var width = columnWidths[id] || defaultColumnWidth;
57
57
  var columnType = schema[id] ? schema[id].columnType : null;
58
58
  var hasColumnActions = (0, _column_actions.useHasColumnActions)(actions);
59
+ var cellContentId = "dataGridHeaderCellContent-".concat(id);
59
60
  var classes = (0, _classnames2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "euiDataGridHeaderCell--".concat(columnType), columnType), 'euiDataGridHeaderCell--hasColumnActions', hasColumnActions), displayHeaderCellProps === null || displayHeaderCellProps === void 0 ? void 0 : displayHeaderCellProps.className);
60
61
  var styles = (0, _services.useEuiMemoizedStyles)(_data_grid_header_cell.euiDataGridHeaderCellStyles);
61
62
  var contentStyles = [styles.euiDataGridHeaderCell__content, (columnType === 'numeric' || columnType === 'currency') && styles.right];
@@ -99,8 +100,7 @@ var EuiDataGridHeaderCell = exports.EuiDataGridHeaderCell = /*#__PURE__*/(0, _re
99
100
  isLastColumn: isLastColumn,
100
101
  width: width,
101
102
  "aria-sort": ariaSort,
102
- "aria-label": displayAsText && "".concat(displayAsText, ", ") // ensure cell text content is read first, if available
103
- ,
103
+ "aria-labelledby": cellContentId,
104
104
  "aria-describedby": (0, _classnames2.default)(sortingAriaId, dragProps === null || dragProps === void 0 ? void 0 : dragProps['aria-describedby']),
105
105
  "data-column-moving": propsFromColumnActions['data-column-moving'] || (dragProps === null || dragProps === void 0 ? void 0 : dragProps['data-column-moving']) || undefined
106
106
  }), function (hasFocusTrap) {
@@ -109,11 +109,13 @@ var EuiDataGridHeaderCell = exports.EuiDataGridHeaderCell = /*#__PURE__*/(0, _re
109
109
  }, (0, _react2.jsx)(_icon.EuiIcon, {
110
110
  type: "grabOmnidirectional",
111
111
  size: "s",
112
- css: styles.euiDataGridHeaderCell__actions
112
+ css: [styles.euiDataGridHeaderCell__actions.action, styles.euiDataGridHeaderCell__actions.start, ";label:EuiDataGridHeaderCell;"]
113
113
  })), (0, _react2.jsx)("div", {
114
114
  css: contentStyles,
115
115
  className: "euiDataGridHeaderCell__content",
116
- title: title
116
+ title: title,
117
+ id: cellContentId,
118
+ "aria-label": displayAsText ? displayAsText : typeof children === 'string' ? children : undefined
117
119
  }, children), sortingArrow, sortingScreenReaderText, hasColumnActions && (0, _react2.jsx)(_column_actions.ColumnActions, {
118
120
  index: index,
119
121
  id: id,
@@ -253,7 +255,6 @@ EuiDataGridHeaderCell.propTypes = {
253
255
  color: _propTypes.default.any,
254
256
  "aria-label": _propTypes.default.string,
255
257
  "aria-labelledby": _propTypes.default.string,
256
- isDisabled: _propTypes.default.bool,
257
258
  /**
258
259
  * Overall size of button.
259
260
  * Matches the sizes of other EuiButtons
@@ -283,6 +284,19 @@ EuiDataGridHeaderCell.propTypes = {
283
284
  className: _propTypes.default.string,
284
285
  "data-test-subj": _propTypes.default.string,
285
286
  css: _propTypes.default.any,
287
+ /**
288
+ * Controls the disabled behavior via the native `disabled` attribute.
289
+ */
290
+ isDisabled: _propTypes.default.bool,
291
+ /**
292
+ * NOTE: Beta feature, may be changed or removed in the future
293
+ *
294
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
295
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
296
+ *
297
+ * Use e.g. when a disabled button should have a tooltip.
298
+ */
299
+ hasAriaDisabled: _propTypes.default.bool,
286
300
  buttonRef: _propTypes.default.any
287
301
  }),
288
302
  /**
@@ -336,7 +350,6 @@ EuiDataGridHeaderCell.propTypes = {
336
350
  color: _propTypes.default.any,
337
351
  "aria-label": _propTypes.default.string,
338
352
  "aria-labelledby": _propTypes.default.string,
339
- isDisabled: _propTypes.default.bool,
340
353
  size: _propTypes.default.any,
341
354
  iconSize: _propTypes.default.any,
342
355
  isSelected: _propTypes.default.bool,
@@ -345,6 +358,8 @@ EuiDataGridHeaderCell.propTypes = {
345
358
  className: _propTypes.default.string,
346
359
  "data-test-subj": _propTypes.default.string,
347
360
  css: _propTypes.default.any,
361
+ isDisabled: _propTypes.default.bool,
362
+ hasAriaDisabled: _propTypes.default.bool,
348
363
  buttonRef: _propTypes.default.any
349
364
  }),
350
365
  onClick: _propTypes.default.func,
@@ -379,7 +394,6 @@ EuiDataGridHeaderCell.propTypes = {
379
394
  color: _propTypes.default.any,
380
395
  "aria-label": _propTypes.default.string,
381
396
  "aria-labelledby": _propTypes.default.string,
382
- isDisabled: _propTypes.default.bool,
383
397
  size: _propTypes.default.any,
384
398
  iconSize: _propTypes.default.any,
385
399
  isSelected: _propTypes.default.bool,
@@ -388,6 +402,8 @@ EuiDataGridHeaderCell.propTypes = {
388
402
  className: _propTypes.default.string,
389
403
  "data-test-subj": _propTypes.default.string,
390
404
  css: _propTypes.default.any,
405
+ isDisabled: _propTypes.default.bool,
406
+ hasAriaDisabled: _propTypes.default.bool,
391
407
  buttonRef: _propTypes.default.any
392
408
  }),
393
409
  onClick: _propTypes.default.func,
@@ -422,7 +438,6 @@ EuiDataGridHeaderCell.propTypes = {
422
438
  color: _propTypes.default.any,
423
439
  "aria-label": _propTypes.default.string,
424
440
  "aria-labelledby": _propTypes.default.string,
425
- isDisabled: _propTypes.default.bool,
426
441
  size: _propTypes.default.any,
427
442
  iconSize: _propTypes.default.any,
428
443
  isSelected: _propTypes.default.bool,
@@ -431,6 +446,8 @@ EuiDataGridHeaderCell.propTypes = {
431
446
  className: _propTypes.default.string,
432
447
  "data-test-subj": _propTypes.default.string,
433
448
  css: _propTypes.default.any,
449
+ isDisabled: _propTypes.default.bool,
450
+ hasAriaDisabled: _propTypes.default.bool,
434
451
  buttonRef: _propTypes.default.any
435
452
  }),
436
453
  onClick: _propTypes.default.func,
@@ -465,7 +482,6 @@ EuiDataGridHeaderCell.propTypes = {
465
482
  color: _propTypes.default.any,
466
483
  "aria-label": _propTypes.default.string,
467
484
  "aria-labelledby": _propTypes.default.string,
468
- isDisabled: _propTypes.default.bool,
469
485
  size: _propTypes.default.any,
470
486
  iconSize: _propTypes.default.any,
471
487
  isSelected: _propTypes.default.bool,
@@ -474,6 +490,8 @@ EuiDataGridHeaderCell.propTypes = {
474
490
  className: _propTypes.default.string,
475
491
  "data-test-subj": _propTypes.default.string,
476
492
  css: _propTypes.default.any,
493
+ isDisabled: _propTypes.default.bool,
494
+ hasAriaDisabled: _propTypes.default.bool,
477
495
  buttonRef: _propTypes.default.any
478
496
  }),
479
497
  onClick: _propTypes.default.func,
@@ -508,7 +526,6 @@ EuiDataGridHeaderCell.propTypes = {
508
526
  color: _propTypes.default.any,
509
527
  "aria-label": _propTypes.default.string,
510
528
  "aria-labelledby": _propTypes.default.string,
511
- isDisabled: _propTypes.default.bool,
512
529
  size: _propTypes.default.any,
513
530
  iconSize: _propTypes.default.any,
514
531
  isSelected: _propTypes.default.bool,
@@ -517,6 +534,8 @@ EuiDataGridHeaderCell.propTypes = {
517
534
  className: _propTypes.default.string,
518
535
  "data-test-subj": _propTypes.default.string,
519
536
  css: _propTypes.default.any,
537
+ isDisabled: _propTypes.default.bool,
538
+ hasAriaDisabled: _propTypes.default.bool,
520
539
  buttonRef: _propTypes.default.any
521
540
  }),
522
541
  onClick: _propTypes.default.func,
@@ -22,11 +22,18 @@ var euiDataGridHeaderCellStyles = exports.euiDataGridHeaderCellStyles = function
22
22
  var euiTheme = euiThemeContext.euiTheme;
23
23
  var _euiDataGridCellOutli = (0, _data_grid_cell.euiDataGridCellOutlineSelectors)('.euiDataGridHeaderCell'),
24
24
  header = _euiDataGridCellOutli.header;
25
+ var hideAnimation = function hideAnimation(margin, translateX) {
26
+ return "\n ".concat(header.hideActions, " & {\n ").concat((0, _global_styling.logicalCSS)('margin-left', margin), "\n transform: translateX(").concat(translateX, ") scale(0.01);\n opacity: 0;\n }\n ");
27
+ };
25
28
  return {
26
29
  euiDataGridHeaderCell__content: /*#__PURE__*/(0, _react.css)("flex-grow:1;", (0, _global_styling.euiTextTruncate)(), ";;label:euiDataGridHeaderCell__content;"),
27
30
  // Numeric and currency schemas are aligned to the right
28
31
  right: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalTextAlignCSS)('right'), ";;label:right;"),
29
32
  euiDataGridHeaderCell__popover: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-left', 'auto'), "line-height:0;;label:euiDataGridHeaderCell__popover;"),
30
- euiDataGridHeaderCell__actions: /*#__PURE__*/(0, _react.css)("overflow:hidden;display:flex;", header.hideActions, " &{", (0, _global_styling.logicalCSS)('width', 0), " opacity:0;}", _global_styling.euiCanAnimate, "{transition:inline-size ", euiTheme.animation.fast, " ease-in,opacity ", euiTheme.animation.slow, " ease-in;transform:none!important;animation:none!important;};label:euiDataGridHeaderCell__actions;")
33
+ euiDataGridHeaderCell__actions: {
34
+ action: /*#__PURE__*/(0, _react.css)("overflow:hidden;display:flex;max-inline-size:24px;", _global_styling.euiCanAnimate, "{transition:transform ", euiTheme.animation.fast, " ease-in,opacity ", euiTheme.animation.slow, " ease-in,margin-left ", euiTheme.animation.fast, " ease-in;animation:none!important;};label:action;"),
35
+ start: /*#__PURE__*/(0, _react.css)(hideAnimation("-".concat(euiTheme.size.m), '0%'), ";;label:start;"),
36
+ end: /*#__PURE__*/(0, _react.css)(hideAnimation("-".concat(euiTheme.size.l), '50%'), ";;label:end;")
37
+ }
31
38
  };
32
39
  };
@@ -17,7 +17,7 @@ var _focus = require("../../utils/focus");
17
17
  var _focus_utils = require("../cell/focus_utils");
18
18
  var _data_grid_header_cell_wrapper = require("./data_grid_header_cell_wrapper.styles");
19
19
  var _react2 = require("@emotion/react");
20
- var _excluded = ["id", "index", "isLastColumn", "width", "className", "children", "hasColumnActions", "isDragging", "onKeyDown", "aria-label"];
20
+ var _excluded = ["id", "index", "isLastColumn", "width", "className", "children", "hasColumnActions", "isDragging", "onKeyDown", "aria-label", "aria-labelledby"];
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
@@ -43,6 +43,7 @@ var EuiDataGridHeaderCellWrapper = exports.EuiDataGridHeaderCellWrapper = functi
43
43
  isDragging = _ref.isDragging,
44
44
  _onKeyDown = _ref.onKeyDown,
45
45
  ariaLabel = _ref['aria-label'],
46
+ ariaLabelledby = _ref['aria-labelledby'],
46
47
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
47
48
  var classes = (0, _classnames.default)('euiDataGridHeaderCell', className);
48
49
  var styles = (0, _services.useEuiMemoizedStyles)(_data_grid_header_cell_wrapper.euiDataGridHeaderCellWrapperStyles);
@@ -108,7 +109,8 @@ var EuiDataGridHeaderCellWrapper = exports.EuiDataGridHeaderCellWrapper = functi
108
109
  style: width != null ? {
109
110
  width: "".concat(width, "px")
110
111
  } : {},
111
- "aria-label": renderFocusTrap ? ariaLabel : undefined
112
+ "aria-label": renderFocusTrap ? ariaLabel : undefined,
113
+ "aria-labelledby": renderFocusTrap ? ariaLabelledby : undefined
112
114
  }, rest), (0, _react2.jsx)(_focus_utils.HandleInteractiveChildren, {
113
115
  cellEl: isDragging ? null : headerEl,
114
116
  renderFocusTrap: isDragging ? false : renderFocusTrap,
@@ -124,6 +126,7 @@ EuiDataGridHeaderCellWrapper.propTypes = {
124
126
  width: _propTypes.default.oneOfType([_propTypes.default.number.isRequired, _propTypes.default.oneOf([null])]),
125
127
  className: _propTypes.default.string,
126
128
  "aria-label": _propTypes.default.any,
129
+ "aria-labelledby": _propTypes.default.any,
127
130
  hasColumnActions: _propTypes.default.bool,
128
131
  isDragging: _propTypes.default.bool,
129
132
  onKeyDown: _propTypes.default.any
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.useDataGridColumnSelector = void 0;
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -45,31 +45,48 @@ var useDataGridColumnSelector = exports.useDataGridColumnSelector = function use
45
45
  var id = _ref.id;
46
46
  return id;
47
47
  });
48
- var availableSet = new Set(availableColumnIds);
49
- // Filter visibleColumns to only include existing columns
48
+ // remove duplicate columns to ensure unique columns
49
+ var availableColumnIdsSet = new Set(availableColumnIds);
50
+ if (process.env.NODE_ENV === 'development') {
51
+ if (availableColumnIds.length > availableColumnIdsSet.size) {
52
+ var duplicateIds = [];
53
+ var _iterator = _createForOfIteratorHelper(availableColumnIds),
54
+ _step;
55
+ try {
56
+ var _loop = function _loop() {
57
+ var id = _step.value;
58
+ if (!duplicateIds.includes(id) && availableColumnIds.filter(function (_id) {
59
+ return _id === id;
60
+ }).length > 1) {
61
+ duplicateIds.push(id);
62
+ }
63
+ };
64
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
65
+ _loop();
66
+ }
67
+ } catch (err) {
68
+ _iterator.e(err);
69
+ } finally {
70
+ _iterator.f();
71
+ }
72
+ console.warn("\u26A0\uFE0F EuiDataGrid: Duplicate column IDs detected and removed: ".concat(duplicateIds.join(', '), "."), '\n Column IDs must be unique. Only the first occurrence of each duplicate will be used.');
73
+ }
74
+ }
50
75
  var validVisibleColumns = visibleColumns.filter(function (id) {
51
- return availableSet.has(id);
76
+ return availableColumnIdsSet.has(id);
52
77
  });
53
78
  var visibleSet = new Set(validVisibleColumns);
54
79
  var result = [];
55
80
  var visibleIndex = 0;
56
- var _iterator = _createForOfIteratorHelper(availableColumnIds),
57
- _step;
58
- try {
59
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
60
- var columnId = _step.value;
61
- if (visibleSet.has(columnId)) {
62
- // Replace with next visible column in order
81
+ for (var _i = 0, _arr = (0, _toConsumableArray2.default)(availableColumnIdsSet); _i < _arr.length; _i++) {
82
+ var columnId = _arr[_i];
83
+ if (visibleSet.has(columnId)) {
84
+ if (visibleIndex < validVisibleColumns.length) {
63
85
  result.push(validVisibleColumns[visibleIndex++]);
64
- } else {
65
- // Keep hidden column in original position
66
- result.push(columnId);
67
86
  }
87
+ } else {
88
+ result.push(columnId);
68
89
  }
69
- } catch (err) {
70
- _iterator.e(err);
71
- } finally {
72
- _iterator.f();
73
90
  }
74
91
  return result;
75
92
  // doesn't depend on visibleColumns on purpose to keep it an initial state
@@ -134,7 +151,7 @@ var useDataGridColumnSelector = exports.useDataGridColumnSelector = function use
134
151
  anchorPosition: "downLeft",
135
152
  panelPaddingSize: "none",
136
153
  button: (0, _react2.jsx)(_data_grid_toolbar_control.EuiDataGridToolbarControl, {
137
- badgeContent: numberOfHiddenFields > 0 ? "".concat(orderedVisibleColumns.length, "/").concat(availableColumns.length) : availableColumns.length,
154
+ badgeContent: numberOfHiddenFields > 0 ? "".concat(orderedVisibleColumns.length, "/").concat(sortedColumns.length) : sortedColumns.length,
138
155
  iconType: "tableDensityNormal",
139
156
  "data-test-subj": "dataGridColumnSelectorButton",
140
157
  onClick: function onClick() {
@@ -383,7 +383,6 @@ DataGridSortingControl.propTypes = {
383
383
  color: _propTypes.default.any,
384
384
  "aria-label": _propTypes.default.string,
385
385
  "aria-labelledby": _propTypes.default.string,
386
- isDisabled: _propTypes.default.bool,
387
386
  /**
388
387
  * Overall size of button.
389
388
  * Matches the sizes of other EuiButtons
@@ -413,6 +412,19 @@ DataGridSortingControl.propTypes = {
413
412
  className: _propTypes.default.string,
414
413
  "data-test-subj": _propTypes.default.string,
415
414
  css: _propTypes.default.any,
415
+ /**
416
+ * Controls the disabled behavior via the native `disabled` attribute.
417
+ */
418
+ isDisabled: _propTypes.default.bool,
419
+ /**
420
+ * NOTE: Beta feature, may be changed or removed in the future
421
+ *
422
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
423
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
424
+ *
425
+ * Use e.g. when a disabled button should have a tooltip.
426
+ */
427
+ hasAriaDisabled: _propTypes.default.bool,
416
428
  buttonRef: _propTypes.default.any
417
429
  }),
418
430
  /**
@@ -466,7 +478,6 @@ DataGridSortingControl.propTypes = {
466
478
  color: _propTypes.default.any,
467
479
  "aria-label": _propTypes.default.string,
468
480
  "aria-labelledby": _propTypes.default.string,
469
- isDisabled: _propTypes.default.bool,
470
481
  size: _propTypes.default.any,
471
482
  iconSize: _propTypes.default.any,
472
483
  isSelected: _propTypes.default.bool,
@@ -475,6 +486,8 @@ DataGridSortingControl.propTypes = {
475
486
  className: _propTypes.default.string,
476
487
  "data-test-subj": _propTypes.default.string,
477
488
  css: _propTypes.default.any,
489
+ isDisabled: _propTypes.default.bool,
490
+ hasAriaDisabled: _propTypes.default.bool,
478
491
  buttonRef: _propTypes.default.any
479
492
  }),
480
493
  onClick: _propTypes.default.func,
@@ -509,7 +522,6 @@ DataGridSortingControl.propTypes = {
509
522
  color: _propTypes.default.any,
510
523
  "aria-label": _propTypes.default.string,
511
524
  "aria-labelledby": _propTypes.default.string,
512
- isDisabled: _propTypes.default.bool,
513
525
  size: _propTypes.default.any,
514
526
  iconSize: _propTypes.default.any,
515
527
  isSelected: _propTypes.default.bool,
@@ -518,6 +530,8 @@ DataGridSortingControl.propTypes = {
518
530
  className: _propTypes.default.string,
519
531
  "data-test-subj": _propTypes.default.string,
520
532
  css: _propTypes.default.any,
533
+ isDisabled: _propTypes.default.bool,
534
+ hasAriaDisabled: _propTypes.default.bool,
521
535
  buttonRef: _propTypes.default.any
522
536
  }),
523
537
  onClick: _propTypes.default.func,
@@ -552,7 +566,6 @@ DataGridSortingControl.propTypes = {
552
566
  color: _propTypes.default.any,
553
567
  "aria-label": _propTypes.default.string,
554
568
  "aria-labelledby": _propTypes.default.string,
555
- isDisabled: _propTypes.default.bool,
556
569
  size: _propTypes.default.any,
557
570
  iconSize: _propTypes.default.any,
558
571
  isSelected: _propTypes.default.bool,
@@ -561,6 +574,8 @@ DataGridSortingControl.propTypes = {
561
574
  className: _propTypes.default.string,
562
575
  "data-test-subj": _propTypes.default.string,
563
576
  css: _propTypes.default.any,
577
+ isDisabled: _propTypes.default.bool,
578
+ hasAriaDisabled: _propTypes.default.bool,
564
579
  buttonRef: _propTypes.default.any
565
580
  }),
566
581
  onClick: _propTypes.default.func,
@@ -595,7 +610,6 @@ DataGridSortingControl.propTypes = {
595
610
  color: _propTypes.default.any,
596
611
  "aria-label": _propTypes.default.string,
597
612
  "aria-labelledby": _propTypes.default.string,
598
- isDisabled: _propTypes.default.bool,
599
613
  size: _propTypes.default.any,
600
614
  iconSize: _propTypes.default.any,
601
615
  isSelected: _propTypes.default.bool,
@@ -604,6 +618,8 @@ DataGridSortingControl.propTypes = {
604
618
  className: _propTypes.default.string,
605
619
  "data-test-subj": _propTypes.default.string,
606
620
  css: _propTypes.default.any,
621
+ isDisabled: _propTypes.default.bool,
622
+ hasAriaDisabled: _propTypes.default.bool,
607
623
  buttonRef: _propTypes.default.any
608
624
  }),
609
625
  onClick: _propTypes.default.func,
@@ -638,7 +654,6 @@ DataGridSortingControl.propTypes = {
638
654
  color: _propTypes.default.any,
639
655
  "aria-label": _propTypes.default.string,
640
656
  "aria-labelledby": _propTypes.default.string,
641
- isDisabled: _propTypes.default.bool,
642
657
  size: _propTypes.default.any,
643
658
  iconSize: _propTypes.default.any,
644
659
  isSelected: _propTypes.default.bool,
@@ -647,6 +662,8 @@ DataGridSortingControl.propTypes = {
647
662
  className: _propTypes.default.string,
648
663
  "data-test-subj": _propTypes.default.string,
649
664
  css: _propTypes.default.any,
665
+ isDisabled: _propTypes.default.bool,
666
+ hasAriaDisabled: _propTypes.default.bool,
650
667
  buttonRef: _propTypes.default.any
651
668
  }),
652
669
  onClick: _propTypes.default.func,
@@ -77,13 +77,6 @@ EuiDataGridToolbarControl.propTypes = {
77
77
  * Ensure the text of the button sits flush to the left, right, or both sides of its container
78
78
  */
79
79
  flush: _propTypes.default.any,
80
- /**
81
- * `disabled` is also allowed
82
- */
83
- /**
84
- * `disabled` is also allowed
85
- */
86
- isDisabled: _propTypes.default.bool,
87
80
  /**
88
81
  * Force disables the button and changes the icon to a loading spinner
89
82
  */
@@ -138,10 +131,23 @@ EuiDataGridToolbarControl.propTypes = {
138
131
  "data-text": _propTypes.default.string
139
132
  }).isRequired, _propTypes.default.oneOf([false])]),
140
133
  iconSize: _propTypes.default.any,
134
+ /**
135
+ * Controls the disabled behavior via the native `disabled` attribute.
136
+ */
137
+ isDisabled: _propTypes.default.bool,
141
138
  className: _propTypes.default.string,
142
139
  "aria-label": _propTypes.default.string,
143
140
  "data-test-subj": _propTypes.default.string,
144
141
  css: _propTypes.default.any,
142
+ /**
143
+ * NOTE: Beta feature, may be changed or removed in the future
144
+ *
145
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
146
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
147
+ *
148
+ * Use e.g. when a disabled button should have a tooltip.
149
+ */
150
+ hasAriaDisabled: _propTypes.default.bool,
145
151
  badgeContent: _propTypes.default.oneOfType([_propTypes.default.number.isRequired, _propTypes.default.string.isRequired])
146
152
  };
147
153
  var betterScreenReaderSlashes = function betterScreenReaderSlashes(badgeContent) {
@@ -164,7 +164,11 @@ var EuiDataGrid = exports.EuiDataGrid = /*#__PURE__*/(0, _react.memo)( /*#__PURE
164
164
  */
165
165
  var displayValues = (0, _react.useMemo)(function () {
166
166
  return columns.reduce(function (acc, column) {
167
- return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2.default)({}, column.id, column.displayAsText || column.id));
167
+ // prevent duplicate values
168
+ if (!acc[column.id]) {
169
+ return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2.default)({}, column.id, column.displayAsText || column.id));
170
+ }
171
+ return acc;
168
172
  }, {});
169
173
  }, [columns]);
170
174
  var _useDataGridDisplaySe = (0, _controls.useDataGridDisplaySelector)((0, _controls.checkOrDefaultToolBarDisplayOptions)(toolbarVisibility, 'showDisplaySelector'), gridStyleWithDefaults, _rowHeightsOptions),
@@ -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
  };