@elastic/eui 109.0.0 → 109.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/es/components/accessibility/skip_link/skip_link.js +10 -1
  2. package/es/components/bottom_bar/bottom_bar.js +12 -2
  3. package/es/components/button/button.js +20 -25
  4. package/es/components/button/button_display/_button_display.js +32 -30
  5. package/es/components/button/button_display/_button_display.styles.js +4 -4
  6. package/es/components/button/button_empty/button_empty.js +32 -14
  7. package/es/components/button/button_group/button_group.js +49 -31
  8. package/es/components/button/button_group/button_group_button.js +14 -2
  9. package/es/components/button/button_group/button_group_button.styles.js +12 -8
  10. package/es/components/button/button_icon/button_icon.js +30 -6
  11. package/es/components/card/card.js +20 -25
  12. package/es/components/card/card_select/card_select.js +20 -25
  13. package/es/components/code/code_block_virtualized.js +9 -7
  14. package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  15. package/es/components/datagrid/body/cell/data_grid_cell.js +35 -12
  16. package/es/components/datagrid/body/data_grid_body.js +23 -6
  17. package/es/components/datagrid/body/data_grid_body_custom.js +23 -6
  18. package/es/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  19. package/es/components/datagrid/body/header/data_grid_header_cell.js +23 -6
  20. package/es/components/datagrid/controls/column_selector.js +36 -19
  21. package/es/components/datagrid/controls/column_sorting.js +23 -6
  22. package/es/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  23. package/es/components/datagrid/data_grid.js +5 -1
  24. package/es/components/datagrid/utils/in_memory.js +25 -7
  25. package/es/components/date_picker/auto_refresh/auto_refresh.js +11 -2
  26. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +31 -5
  27. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  28. package/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  29. package/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  30. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +98 -0
  31. package/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  32. package/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  33. package/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  34. package/es/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  35. package/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  36. package/es/components/facet/facet_button.js +9 -19
  37. package/es/components/filter_group/filter_button.js +14 -1
  38. package/es/components/flyout/flyout.js +27 -10
  39. package/es/components/form/form_control_button/form_control_button.js +13 -7
  40. package/es/components/header/header_links/header_link.js +13 -7
  41. package/es/components/header/header_section/header_section_item_button.js +13 -7
  42. package/es/components/icon/assets/boxes_vertical.js +1 -1
  43. package/es/components/icon/assets/checkInCircleFilled.js +1 -2
  44. package/es/components/icon/assets/errorFilled.js +1 -2
  45. package/es/components/icon/assets/warningFilled.js +1 -2
  46. package/es/components/icon/icon_map.js +3 -6
  47. package/es/components/list_group/list_group.js +13 -1
  48. package/es/components/list_group/list_group_item.js +13 -1
  49. package/es/components/list_group/list_group_item_extra_action.js +13 -1
  50. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  51. package/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  52. package/es/components/pagination/pagination_button.js +13 -7
  53. package/es/components/popover/popover.js +22 -16
  54. package/es/components/provider/component_defaults/component_defaults.js +22 -2
  55. package/es/components/table/table_row.styles.js +1 -1
  56. package/es/components/tool_tip/tool_tip.js +24 -24
  57. package/es/global_styling/index.js +2 -1
  58. package/es/global_styling/mixins/_button.js +1 -1
  59. package/es/global_styling/utility/selectors.js +9 -0
  60. package/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  61. package/es/services/focus_trap/index.js +9 -0
  62. package/es/services/hooks/index.js +2 -1
  63. package/es/services/hooks/useEuiDisabledElement.js +195 -0
  64. package/es/services/index.js +1 -0
  65. package/es/services/popover/reposition_on_scroll.js +61 -0
  66. package/es/test/cypress/index.d.ts +12 -0
  67. package/es/test/cypress/index.js +9 -0
  68. package/es/test/cypress/matchers.d.ts +20 -0
  69. package/es/test/cypress/matchers.js +54 -0
  70. package/es/test/cypress/test_reposition_on_scroll.js +66 -0
  71. package/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  72. package/es/test/enzyme/enzyme_matchers.js +43 -0
  73. package/es/test/enzyme/index.d.ts +14 -0
  74. package/es/test/enzyme/index.js +10 -0
  75. package/es/test/rtl/index.d.ts +9 -1
  76. package/es/test/rtl/index.js +2 -1
  77. package/es/test/rtl/matchers.d.ts +36 -0
  78. package/es/test/rtl/matchers.js +82 -0
  79. package/es/utils/element_can_be_disabled.js +16 -0
  80. package/es/utils/index.js +2 -1
  81. package/eui.d.ts +588 -180
  82. package/i18ntokens.json +1357 -1231
  83. package/lib/components/accessibility/skip_link/skip_link.js +10 -1
  84. package/lib/components/bottom_bar/bottom_bar.js +11 -1
  85. package/lib/components/button/button.js +21 -26
  86. package/lib/components/button/button_display/_button_display.js +31 -29
  87. package/lib/components/button/button_display/_button_display.styles.js +4 -4
  88. package/lib/components/button/button_empty/button_empty.js +31 -13
  89. package/lib/components/button/button_group/button_group.js +49 -31
  90. package/lib/components/button/button_group/button_group_button.js +14 -2
  91. package/lib/components/button/button_group/button_group_button.styles.js +10 -6
  92. package/lib/components/button/button_icon/button_icon.js +29 -5
  93. package/lib/components/card/card.js +21 -26
  94. package/lib/components/card/card_select/card_select.js +21 -26
  95. package/lib/components/code/code_block_virtualized.js +9 -7
  96. package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  97. package/lib/components/datagrid/body/cell/data_grid_cell.js +35 -12
  98. package/lib/components/datagrid/body/data_grid_body.js +23 -6
  99. package/lib/components/datagrid/body/data_grid_body_custom.js +23 -6
  100. package/lib/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  101. package/lib/components/datagrid/body/header/data_grid_header_cell.js +23 -6
  102. package/lib/components/datagrid/controls/column_selector.js +36 -19
  103. package/lib/components/datagrid/controls/column_sorting.js +23 -6
  104. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  105. package/lib/components/datagrid/data_grid.js +5 -1
  106. package/lib/components/datagrid/utils/in_memory.js +25 -7
  107. package/lib/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  108. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  109. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  110. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  111. package/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  112. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +104 -0
  113. package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  114. package/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  115. package/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  116. package/lib/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  117. package/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  118. package/lib/components/facet/facet_button.js +9 -19
  119. package/lib/components/filter_group/filter_button.js +14 -1
  120. package/lib/components/flyout/flyout.js +26 -9
  121. package/lib/components/form/form_control_button/form_control_button.js +13 -7
  122. package/lib/components/header/header_links/header_link.js +13 -7
  123. package/lib/components/header/header_section/header_section_item_button.js +13 -7
  124. package/lib/components/icon/assets/boxes_vertical.js +1 -1
  125. package/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  126. package/lib/components/icon/assets/errorFilled.js +1 -2
  127. package/lib/components/icon/assets/warningFilled.js +1 -2
  128. package/lib/components/icon/icon_map.js +3 -6
  129. package/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  130. package/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  131. package/lib/components/icon/svgs/errorFilled.svg +1 -1
  132. package/lib/components/icon/svgs/warningFilled.svg +1 -1
  133. package/lib/components/list_group/list_group.js +13 -1
  134. package/lib/components/list_group/list_group_item.js +13 -1
  135. package/lib/components/list_group/list_group_item_extra_action.js +13 -1
  136. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  137. package/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  138. package/lib/components/pagination/pagination_button.js +13 -7
  139. package/lib/components/popover/popover.js +21 -15
  140. package/lib/components/provider/component_defaults/component_defaults.js +22 -2
  141. package/lib/components/table/table_row.styles.js +1 -1
  142. package/lib/components/tool_tip/tool_tip.js +24 -24
  143. package/lib/global_styling/index.js +16 -1
  144. package/lib/global_styling/mixins/_button.js +1 -1
  145. package/lib/global_styling/utility/selectors.js +15 -0
  146. package/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  147. package/lib/services/focus_trap/index.js +12 -0
  148. package/lib/services/hooks/index.js +18 -1
  149. package/lib/services/hooks/useEuiDisabledElement.js +199 -0
  150. package/lib/services/index.js +8 -0
  151. package/lib/services/popover/reposition_on_scroll.js +67 -0
  152. package/lib/test/cypress/index.d.ts +12 -0
  153. package/lib/test/cypress/index.js +18 -0
  154. package/lib/test/cypress/matchers.d.ts +20 -0
  155. package/lib/test/cypress/matchers.js +61 -0
  156. package/lib/test/cypress/test_reposition_on_scroll.js +69 -0
  157. package/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  158. package/lib/test/enzyme/enzyme_matchers.js +49 -0
  159. package/lib/test/enzyme/index.d.ts +14 -0
  160. package/lib/test/enzyme/index.js +24 -0
  161. package/lib/test/rtl/index.d.ts +9 -1
  162. package/lib/test/rtl/index.js +24 -2
  163. package/lib/test/rtl/matchers.d.ts +36 -0
  164. package/lib/test/rtl/matchers.js +86 -0
  165. package/lib/utils/element_can_be_disabled.js +22 -0
  166. package/lib/utils/index.js +14 -1
  167. package/optimize/es/components/bottom_bar/bottom_bar.js +12 -2
  168. package/optimize/es/components/button/button_display/_button_display.js +24 -12
  169. package/optimize/es/components/button/button_display/_button_display.styles.js +4 -4
  170. package/optimize/es/components/button/button_empty/button_empty.js +18 -6
  171. package/optimize/es/components/button/button_group/button_group.js +10 -5
  172. package/optimize/es/components/button/button_group/button_group_button.js +1 -1
  173. package/optimize/es/components/button/button_group/button_group_button.styles.js +12 -8
  174. package/optimize/es/components/button/button_icon/button_icon.js +17 -5
  175. package/optimize/es/components/code/code_block_virtualized.js +9 -7
  176. package/optimize/es/components/datagrid/controls/column_selector.js +36 -19
  177. package/optimize/es/components/datagrid/data_grid.js +5 -1
  178. package/optimize/es/components/datagrid/utils/in_memory.js +2 -1
  179. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +12 -4
  180. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  181. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  182. package/optimize/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  183. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +97 -0
  184. package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
  185. package/optimize/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
  186. package/optimize/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
  187. package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  188. package/optimize/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
  189. package/optimize/es/components/flyout/flyout.js +27 -10
  190. package/optimize/es/components/icon/assets/boxes_vertical.js +1 -1
  191. package/optimize/es/components/icon/assets/checkInCircleFilled.js +1 -2
  192. package/optimize/es/components/icon/assets/errorFilled.js +1 -2
  193. package/optimize/es/components/icon/assets/warningFilled.js +1 -2
  194. package/optimize/es/components/icon/icon_map.js +3 -6
  195. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  196. package/optimize/es/components/popover/popover.js +22 -16
  197. package/optimize/es/components/table/table_row.styles.js +1 -1
  198. package/optimize/es/components/tool_tip/tool_tip.js +24 -24
  199. package/optimize/es/global_styling/index.js +2 -1
  200. package/optimize/es/global_styling/mixins/_button.js +1 -1
  201. package/optimize/es/global_styling/utility/selectors.js +9 -0
  202. package/optimize/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
  203. package/optimize/es/services/focus_trap/index.js +9 -0
  204. package/optimize/es/services/hooks/index.js +2 -1
  205. package/optimize/es/services/hooks/useEuiDisabledElement.js +192 -0
  206. package/optimize/es/services/index.js +1 -0
  207. package/optimize/es/services/popover/reposition_on_scroll.js +61 -0
  208. package/optimize/es/test/cypress/index.d.ts +12 -0
  209. package/optimize/es/test/cypress/index.js +9 -0
  210. package/optimize/es/test/cypress/matchers.d.ts +20 -0
  211. package/optimize/es/test/cypress/matchers.js +54 -0
  212. package/optimize/es/test/cypress/test_reposition_on_scroll.js +63 -0
  213. package/optimize/es/test/enzyme/enzyme_matchers.d.ts +36 -0
  214. package/optimize/es/test/enzyme/enzyme_matchers.js +43 -0
  215. package/optimize/es/test/enzyme/index.d.ts +14 -0
  216. package/optimize/es/test/enzyme/index.js +10 -0
  217. package/optimize/es/test/rtl/index.d.ts +9 -1
  218. package/optimize/es/test/rtl/index.js +2 -1
  219. package/optimize/es/test/rtl/matchers.d.ts +36 -0
  220. package/optimize/es/test/rtl/matchers.js +82 -0
  221. package/optimize/es/utils/element_can_be_disabled.js +16 -0
  222. package/optimize/es/utils/index.js +2 -1
  223. package/optimize/lib/components/bottom_bar/bottom_bar.js +11 -1
  224. package/optimize/lib/components/button/button_display/_button_display.js +23 -11
  225. package/optimize/lib/components/button/button_display/_button_display.styles.js +4 -4
  226. package/optimize/lib/components/button/button_empty/button_empty.js +17 -5
  227. package/optimize/lib/components/button/button_group/button_group.js +10 -5
  228. package/optimize/lib/components/button/button_group/button_group_button.js +1 -1
  229. package/optimize/lib/components/button/button_group/button_group_button.styles.js +10 -6
  230. package/optimize/lib/components/button/button_icon/button_icon.js +16 -4
  231. package/optimize/lib/components/code/code_block_virtualized.js +9 -7
  232. package/optimize/lib/components/datagrid/controls/column_selector.js +36 -19
  233. package/optimize/lib/components/datagrid/data_grid.js +5 -1
  234. package/optimize/lib/components/datagrid/utils/in_memory.js +2 -1
  235. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +11 -3
  236. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
  237. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
  238. package/optimize/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
  239. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  240. package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  241. package/optimize/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  242. package/optimize/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
  243. package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +49 -25
  244. package/optimize/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  245. package/optimize/lib/components/flyout/flyout.js +26 -9
  246. package/optimize/lib/components/icon/assets/boxes_vertical.js +1 -1
  247. package/optimize/lib/components/icon/assets/checkInCircleFilled.js +1 -2
  248. package/optimize/lib/components/icon/assets/errorFilled.js +1 -2
  249. package/optimize/lib/components/icon/assets/warningFilled.js +1 -2
  250. package/optimize/lib/components/icon/icon_map.js +3 -6
  251. package/optimize/lib/components/icon/svgs/boxes_vertical.svg +1 -1
  252. package/optimize/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
  253. package/optimize/lib/components/icon/svgs/errorFilled.svg +1 -1
  254. package/optimize/lib/components/icon/svgs/warningFilled.svg +1 -1
  255. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  256. package/optimize/lib/components/popover/popover.js +21 -15
  257. package/optimize/lib/components/table/table_row.styles.js +1 -1
  258. package/optimize/lib/components/tool_tip/tool_tip.js +24 -24
  259. package/optimize/lib/global_styling/index.js +16 -1
  260. package/optimize/lib/global_styling/mixins/_button.js +1 -1
  261. package/optimize/lib/global_styling/utility/selectors.js +15 -0
  262. package/optimize/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
  263. package/optimize/lib/services/focus_trap/index.js +12 -0
  264. package/optimize/lib/services/hooks/index.js +18 -1
  265. package/optimize/lib/services/hooks/useEuiDisabledElement.js +197 -0
  266. package/optimize/lib/services/index.js +8 -0
  267. package/optimize/lib/services/popover/reposition_on_scroll.js +67 -0
  268. package/optimize/lib/test/cypress/index.d.ts +12 -0
  269. package/optimize/lib/test/cypress/index.js +18 -0
  270. package/optimize/lib/test/cypress/matchers.d.ts +20 -0
  271. package/optimize/lib/test/cypress/matchers.js +61 -0
  272. package/optimize/lib/test/cypress/test_reposition_on_scroll.js +70 -0
  273. package/optimize/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
  274. package/optimize/lib/test/enzyme/enzyme_matchers.js +50 -0
  275. package/optimize/lib/test/enzyme/index.d.ts +14 -0
  276. package/optimize/lib/test/enzyme/index.js +24 -0
  277. package/optimize/lib/test/rtl/index.d.ts +9 -1
  278. package/optimize/lib/test/rtl/index.js +24 -2
  279. package/optimize/lib/test/rtl/matchers.d.ts +36 -0
  280. package/optimize/lib/test/rtl/matchers.js +86 -0
  281. package/optimize/lib/utils/element_can_be_disabled.js +22 -0
  282. package/optimize/lib/utils/index.js +14 -1
  283. package/package.json +1 -1
  284. package/test-env/components/accessibility/skip_link/skip_link.js +10 -1
  285. package/test-env/components/bottom_bar/bottom_bar.js +11 -1
  286. package/test-env/components/button/button.js +21 -26
  287. package/test-env/components/button/button_display/_button_display.js +31 -29
  288. package/test-env/components/button/button_display/_button_display.styles.js +4 -4
  289. package/test-env/components/button/button_empty/button_empty.js +31 -13
  290. package/test-env/components/button/button_group/button_group.js +49 -31
  291. package/test-env/components/button/button_group/button_group_button.js +14 -2
  292. package/test-env/components/button/button_group/button_group_button.styles.js +10 -6
  293. package/test-env/components/button/button_icon/button_icon.js +29 -5
  294. package/test-env/components/card/card.js +21 -26
  295. package/test-env/components/card/card_select/card_select.js +21 -26
  296. package/test-env/components/code/code_block_virtualized.js +9 -7
  297. package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
  298. package/test-env/components/datagrid/body/cell/data_grid_cell.js +35 -12
  299. package/test-env/components/datagrid/body/data_grid_body.js +23 -6
  300. package/test-env/components/datagrid/body/data_grid_body_custom.js +23 -6
  301. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +23 -6
  302. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +23 -6
  303. package/test-env/components/datagrid/controls/column_selector.js +36 -19
  304. package/test-env/components/datagrid/controls/column_sorting.js +23 -6
  305. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
  306. package/test-env/components/datagrid/data_grid.js +5 -1
  307. package/test-env/components/datagrid/utils/in_memory.js +25 -7
  308. package/test-env/components/date_picker/auto_refresh/auto_refresh.js +12 -3
  309. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
  310. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
  311. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
  312. package/test-env/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
  313. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
  314. package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
  315. package/test-env/components/date_picker/super_date_picker/pretty_duration.js +2 -9
  316. package/test-env/components/date_picker/super_date_picker/relative_utils.js +9 -0
  317. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +118 -26
  318. package/test-env/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
  319. package/test-env/components/facet/facet_button.js +9 -19
  320. package/test-env/components/filter_group/filter_button.js +14 -1
  321. package/test-env/components/form/form_control_button/form_control_button.js +13 -7
  322. package/test-env/components/header/header_links/header_link.js +13 -7
  323. package/test-env/components/header/header_section/header_section_item_button.js +13 -7
  324. package/test-env/components/icon/assets/boxes_vertical.js +1 -1
  325. package/test-env/components/icon/assets/checkInCircleFilled.js +1 -2
  326. package/test-env/components/icon/assets/errorFilled.js +1 -2
  327. package/test-env/components/icon/assets/warningFilled.js +1 -2
  328. package/test-env/components/icon/icon_map.js +3 -6
  329. package/test-env/components/list_group/list_group.js +13 -1
  330. package/test-env/components/list_group/list_group_item.js +13 -1
  331. package/test-env/components/list_group/list_group_item_extra_action.js +13 -1
  332. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
  333. package/test-env/components/overlay_mask/overlay_mask.styles.js +1 -1
  334. package/test-env/components/pagination/pagination_button.js +13 -7
  335. package/test-env/components/popover/popover.js +21 -15
  336. package/test-env/components/provider/component_defaults/component_defaults.js +22 -2
  337. package/test-env/components/table/table_row.styles.js +1 -1
  338. package/test-env/components/tool_tip/tool_tip.js +24 -24
  339. package/test-env/global_styling/index.js +16 -1
  340. package/test-env/global_styling/mixins/_button.js +1 -1
  341. package/test-env/global_styling/utility/selectors.js +15 -0
  342. package/test-env/services/focus_trap/focus_trap_pub_sub.js +80 -0
  343. package/test-env/services/focus_trap/index.js +12 -0
  344. package/test-env/services/hooks/index.js +18 -1
  345. package/test-env/services/hooks/useEuiDisabledElement.js +197 -0
  346. package/test-env/services/index.js +8 -0
  347. package/test-env/services/popover/reposition_on_scroll.js +67 -0
  348. package/test-env/test/cypress/index.js +18 -0
  349. package/test-env/test/cypress/matchers.js +61 -0
  350. package/test-env/test/cypress/test_reposition_on_scroll.js +70 -0
  351. package/test-env/test/enzyme/enzyme_matchers.js +50 -0
  352. package/test-env/test/enzyme/index.js +24 -0
  353. package/test-env/test/rtl/index.js +24 -2
  354. package/test-env/test/rtl/matchers.js +86 -0
  355. package/test-env/utils/element_can_be_disabled.js +22 -0
  356. package/test-env/utils/index.js +14 -1
@@ -385,7 +385,6 @@ EuiDataGridBodyCustomRender.propTypes = {
385
385
  color: _propTypes.default.any,
386
386
  "aria-label": _propTypes.default.string,
387
387
  "aria-labelledby": _propTypes.default.string,
388
- isDisabled: _propTypes.default.bool,
389
388
  /**
390
389
  * Overall size of button.
391
390
  * Matches the sizes of other EuiButtons
@@ -415,6 +414,19 @@ EuiDataGridBodyCustomRender.propTypes = {
415
414
  className: _propTypes.default.string,
416
415
  "data-test-subj": _propTypes.default.string,
417
416
  css: _propTypes.default.any,
417
+ /**
418
+ * Controls the disabled behavior via the native `disabled` attribute.
419
+ */
420
+ isDisabled: _propTypes.default.bool,
421
+ /**
422
+ * NOTE: Beta feature, may be changed or removed in the future
423
+ *
424
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
425
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
426
+ *
427
+ * Use e.g. when a disabled button should have a tooltip.
428
+ */
429
+ hasAriaDisabled: _propTypes.default.bool,
418
430
  buttonRef: _propTypes.default.any
419
431
  }),
420
432
  /**
@@ -468,7 +480,6 @@ EuiDataGridBodyCustomRender.propTypes = {
468
480
  color: _propTypes.default.any,
469
481
  "aria-label": _propTypes.default.string,
470
482
  "aria-labelledby": _propTypes.default.string,
471
- isDisabled: _propTypes.default.bool,
472
483
  size: _propTypes.default.any,
473
484
  iconSize: _propTypes.default.any,
474
485
  isSelected: _propTypes.default.bool,
@@ -477,6 +488,8 @@ EuiDataGridBodyCustomRender.propTypes = {
477
488
  className: _propTypes.default.string,
478
489
  "data-test-subj": _propTypes.default.string,
479
490
  css: _propTypes.default.any,
491
+ isDisabled: _propTypes.default.bool,
492
+ hasAriaDisabled: _propTypes.default.bool,
480
493
  buttonRef: _propTypes.default.any
481
494
  }),
482
495
  onClick: _propTypes.default.func,
@@ -511,7 +524,6 @@ EuiDataGridBodyCustomRender.propTypes = {
511
524
  color: _propTypes.default.any,
512
525
  "aria-label": _propTypes.default.string,
513
526
  "aria-labelledby": _propTypes.default.string,
514
- isDisabled: _propTypes.default.bool,
515
527
  size: _propTypes.default.any,
516
528
  iconSize: _propTypes.default.any,
517
529
  isSelected: _propTypes.default.bool,
@@ -520,6 +532,8 @@ EuiDataGridBodyCustomRender.propTypes = {
520
532
  className: _propTypes.default.string,
521
533
  "data-test-subj": _propTypes.default.string,
522
534
  css: _propTypes.default.any,
535
+ isDisabled: _propTypes.default.bool,
536
+ hasAriaDisabled: _propTypes.default.bool,
523
537
  buttonRef: _propTypes.default.any
524
538
  }),
525
539
  onClick: _propTypes.default.func,
@@ -554,7 +568,6 @@ EuiDataGridBodyCustomRender.propTypes = {
554
568
  color: _propTypes.default.any,
555
569
  "aria-label": _propTypes.default.string,
556
570
  "aria-labelledby": _propTypes.default.string,
557
- isDisabled: _propTypes.default.bool,
558
571
  size: _propTypes.default.any,
559
572
  iconSize: _propTypes.default.any,
560
573
  isSelected: _propTypes.default.bool,
@@ -563,6 +576,8 @@ EuiDataGridBodyCustomRender.propTypes = {
563
576
  className: _propTypes.default.string,
564
577
  "data-test-subj": _propTypes.default.string,
565
578
  css: _propTypes.default.any,
579
+ isDisabled: _propTypes.default.bool,
580
+ hasAriaDisabled: _propTypes.default.bool,
566
581
  buttonRef: _propTypes.default.any
567
582
  }),
568
583
  onClick: _propTypes.default.func,
@@ -597,7 +612,6 @@ EuiDataGridBodyCustomRender.propTypes = {
597
612
  color: _propTypes.default.any,
598
613
  "aria-label": _propTypes.default.string,
599
614
  "aria-labelledby": _propTypes.default.string,
600
- isDisabled: _propTypes.default.bool,
601
615
  size: _propTypes.default.any,
602
616
  iconSize: _propTypes.default.any,
603
617
  isSelected: _propTypes.default.bool,
@@ -606,6 +620,8 @@ EuiDataGridBodyCustomRender.propTypes = {
606
620
  className: _propTypes.default.string,
607
621
  "data-test-subj": _propTypes.default.string,
608
622
  css: _propTypes.default.any,
623
+ isDisabled: _propTypes.default.bool,
624
+ hasAriaDisabled: _propTypes.default.bool,
609
625
  buttonRef: _propTypes.default.any
610
626
  }),
611
627
  onClick: _propTypes.default.func,
@@ -640,7 +656,6 @@ EuiDataGridBodyCustomRender.propTypes = {
640
656
  color: _propTypes.default.any,
641
657
  "aria-label": _propTypes.default.string,
642
658
  "aria-labelledby": _propTypes.default.string,
643
- isDisabled: _propTypes.default.bool,
644
659
  size: _propTypes.default.any,
645
660
  iconSize: _propTypes.default.any,
646
661
  isSelected: _propTypes.default.bool,
@@ -649,6 +664,8 @@ EuiDataGridBodyCustomRender.propTypes = {
649
664
  className: _propTypes.default.string,
650
665
  "data-test-subj": _propTypes.default.string,
651
666
  css: _propTypes.default.any,
667
+ isDisabled: _propTypes.default.bool,
668
+ hasAriaDisabled: _propTypes.default.bool,
652
669
  buttonRef: _propTypes.default.any
653
670
  }),
654
671
  onClick: _propTypes.default.func,
@@ -553,7 +553,6 @@ EuiDataGridBodyVirtualized.propTypes = {
553
553
  color: _propTypes.default.any,
554
554
  "aria-label": _propTypes.default.string,
555
555
  "aria-labelledby": _propTypes.default.string,
556
- isDisabled: _propTypes.default.bool,
557
556
  /**
558
557
  * Overall size of button.
559
558
  * Matches the sizes of other EuiButtons
@@ -583,6 +582,19 @@ EuiDataGridBodyVirtualized.propTypes = {
583
582
  className: _propTypes.default.string,
584
583
  "data-test-subj": _propTypes.default.string,
585
584
  css: _propTypes.default.any,
585
+ /**
586
+ * Controls the disabled behavior via the native `disabled` attribute.
587
+ */
588
+ isDisabled: _propTypes.default.bool,
589
+ /**
590
+ * NOTE: Beta feature, may be changed or removed in the future
591
+ *
592
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
593
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
594
+ *
595
+ * Use e.g. when a disabled button should have a tooltip.
596
+ */
597
+ hasAriaDisabled: _propTypes.default.bool,
586
598
  buttonRef: _propTypes.default.any
587
599
  }),
588
600
  /**
@@ -636,7 +648,6 @@ EuiDataGridBodyVirtualized.propTypes = {
636
648
  color: _propTypes.default.any,
637
649
  "aria-label": _propTypes.default.string,
638
650
  "aria-labelledby": _propTypes.default.string,
639
- isDisabled: _propTypes.default.bool,
640
651
  size: _propTypes.default.any,
641
652
  iconSize: _propTypes.default.any,
642
653
  isSelected: _propTypes.default.bool,
@@ -645,6 +656,8 @@ EuiDataGridBodyVirtualized.propTypes = {
645
656
  className: _propTypes.default.string,
646
657
  "data-test-subj": _propTypes.default.string,
647
658
  css: _propTypes.default.any,
659
+ isDisabled: _propTypes.default.bool,
660
+ hasAriaDisabled: _propTypes.default.bool,
648
661
  buttonRef: _propTypes.default.any
649
662
  }),
650
663
  onClick: _propTypes.default.func,
@@ -679,7 +692,6 @@ EuiDataGridBodyVirtualized.propTypes = {
679
692
  color: _propTypes.default.any,
680
693
  "aria-label": _propTypes.default.string,
681
694
  "aria-labelledby": _propTypes.default.string,
682
- isDisabled: _propTypes.default.bool,
683
695
  size: _propTypes.default.any,
684
696
  iconSize: _propTypes.default.any,
685
697
  isSelected: _propTypes.default.bool,
@@ -688,6 +700,8 @@ EuiDataGridBodyVirtualized.propTypes = {
688
700
  className: _propTypes.default.string,
689
701
  "data-test-subj": _propTypes.default.string,
690
702
  css: _propTypes.default.any,
703
+ isDisabled: _propTypes.default.bool,
704
+ hasAriaDisabled: _propTypes.default.bool,
691
705
  buttonRef: _propTypes.default.any
692
706
  }),
693
707
  onClick: _propTypes.default.func,
@@ -722,7 +736,6 @@ EuiDataGridBodyVirtualized.propTypes = {
722
736
  color: _propTypes.default.any,
723
737
  "aria-label": _propTypes.default.string,
724
738
  "aria-labelledby": _propTypes.default.string,
725
- isDisabled: _propTypes.default.bool,
726
739
  size: _propTypes.default.any,
727
740
  iconSize: _propTypes.default.any,
728
741
  isSelected: _propTypes.default.bool,
@@ -731,6 +744,8 @@ EuiDataGridBodyVirtualized.propTypes = {
731
744
  className: _propTypes.default.string,
732
745
  "data-test-subj": _propTypes.default.string,
733
746
  css: _propTypes.default.any,
747
+ isDisabled: _propTypes.default.bool,
748
+ hasAriaDisabled: _propTypes.default.bool,
734
749
  buttonRef: _propTypes.default.any
735
750
  }),
736
751
  onClick: _propTypes.default.func,
@@ -765,7 +780,6 @@ EuiDataGridBodyVirtualized.propTypes = {
765
780
  color: _propTypes.default.any,
766
781
  "aria-label": _propTypes.default.string,
767
782
  "aria-labelledby": _propTypes.default.string,
768
- isDisabled: _propTypes.default.bool,
769
783
  size: _propTypes.default.any,
770
784
  iconSize: _propTypes.default.any,
771
785
  isSelected: _propTypes.default.bool,
@@ -774,6 +788,8 @@ EuiDataGridBodyVirtualized.propTypes = {
774
788
  className: _propTypes.default.string,
775
789
  "data-test-subj": _propTypes.default.string,
776
790
  css: _propTypes.default.any,
791
+ isDisabled: _propTypes.default.bool,
792
+ hasAriaDisabled: _propTypes.default.bool,
777
793
  buttonRef: _propTypes.default.any
778
794
  }),
779
795
  onClick: _propTypes.default.func,
@@ -808,7 +824,6 @@ EuiDataGridBodyVirtualized.propTypes = {
808
824
  color: _propTypes.default.any,
809
825
  "aria-label": _propTypes.default.string,
810
826
  "aria-labelledby": _propTypes.default.string,
811
- isDisabled: _propTypes.default.bool,
812
827
  size: _propTypes.default.any,
813
828
  iconSize: _propTypes.default.any,
814
829
  isSelected: _propTypes.default.bool,
@@ -817,6 +832,8 @@ EuiDataGridBodyVirtualized.propTypes = {
817
832
  className: _propTypes.default.string,
818
833
  "data-test-subj": _propTypes.default.string,
819
834
  css: _propTypes.default.any,
835
+ isDisabled: _propTypes.default.bool,
836
+ hasAriaDisabled: _propTypes.default.bool,
820
837
  buttonRef: _propTypes.default.any
821
838
  }),
822
839
  onClick: _propTypes.default.func,
@@ -260,7 +260,6 @@ EuiDataGridHeaderCell.propTypes = {
260
260
  color: _propTypes.default.any,
261
261
  "aria-label": _propTypes.default.string,
262
262
  "aria-labelledby": _propTypes.default.string,
263
- isDisabled: _propTypes.default.bool,
264
263
  /**
265
264
  * Overall size of button.
266
265
  * Matches the sizes of other EuiButtons
@@ -290,6 +289,19 @@ EuiDataGridHeaderCell.propTypes = {
290
289
  className: _propTypes.default.string,
291
290
  "data-test-subj": _propTypes.default.string,
292
291
  css: _propTypes.default.any,
292
+ /**
293
+ * Controls the disabled behavior via the native `disabled` attribute.
294
+ */
295
+ isDisabled: _propTypes.default.bool,
296
+ /**
297
+ * NOTE: Beta feature, may be changed or removed in the future
298
+ *
299
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
300
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
301
+ *
302
+ * Use e.g. when a disabled button should have a tooltip.
303
+ */
304
+ hasAriaDisabled: _propTypes.default.bool,
293
305
  buttonRef: _propTypes.default.any
294
306
  }),
295
307
  /**
@@ -343,7 +355,6 @@ EuiDataGridHeaderCell.propTypes = {
343
355
  color: _propTypes.default.any,
344
356
  "aria-label": _propTypes.default.string,
345
357
  "aria-labelledby": _propTypes.default.string,
346
- isDisabled: _propTypes.default.bool,
347
358
  size: _propTypes.default.any,
348
359
  iconSize: _propTypes.default.any,
349
360
  isSelected: _propTypes.default.bool,
@@ -352,6 +363,8 @@ EuiDataGridHeaderCell.propTypes = {
352
363
  className: _propTypes.default.string,
353
364
  "data-test-subj": _propTypes.default.string,
354
365
  css: _propTypes.default.any,
366
+ isDisabled: _propTypes.default.bool,
367
+ hasAriaDisabled: _propTypes.default.bool,
355
368
  buttonRef: _propTypes.default.any
356
369
  }),
357
370
  onClick: _propTypes.default.func,
@@ -386,7 +399,6 @@ EuiDataGridHeaderCell.propTypes = {
386
399
  color: _propTypes.default.any,
387
400
  "aria-label": _propTypes.default.string,
388
401
  "aria-labelledby": _propTypes.default.string,
389
- isDisabled: _propTypes.default.bool,
390
402
  size: _propTypes.default.any,
391
403
  iconSize: _propTypes.default.any,
392
404
  isSelected: _propTypes.default.bool,
@@ -395,6 +407,8 @@ EuiDataGridHeaderCell.propTypes = {
395
407
  className: _propTypes.default.string,
396
408
  "data-test-subj": _propTypes.default.string,
397
409
  css: _propTypes.default.any,
410
+ isDisabled: _propTypes.default.bool,
411
+ hasAriaDisabled: _propTypes.default.bool,
398
412
  buttonRef: _propTypes.default.any
399
413
  }),
400
414
  onClick: _propTypes.default.func,
@@ -429,7 +443,6 @@ EuiDataGridHeaderCell.propTypes = {
429
443
  color: _propTypes.default.any,
430
444
  "aria-label": _propTypes.default.string,
431
445
  "aria-labelledby": _propTypes.default.string,
432
- isDisabled: _propTypes.default.bool,
433
446
  size: _propTypes.default.any,
434
447
  iconSize: _propTypes.default.any,
435
448
  isSelected: _propTypes.default.bool,
@@ -438,6 +451,8 @@ EuiDataGridHeaderCell.propTypes = {
438
451
  className: _propTypes.default.string,
439
452
  "data-test-subj": _propTypes.default.string,
440
453
  css: _propTypes.default.any,
454
+ isDisabled: _propTypes.default.bool,
455
+ hasAriaDisabled: _propTypes.default.bool,
441
456
  buttonRef: _propTypes.default.any
442
457
  }),
443
458
  onClick: _propTypes.default.func,
@@ -472,7 +487,6 @@ EuiDataGridHeaderCell.propTypes = {
472
487
  color: _propTypes.default.any,
473
488
  "aria-label": _propTypes.default.string,
474
489
  "aria-labelledby": _propTypes.default.string,
475
- isDisabled: _propTypes.default.bool,
476
490
  size: _propTypes.default.any,
477
491
  iconSize: _propTypes.default.any,
478
492
  isSelected: _propTypes.default.bool,
@@ -481,6 +495,8 @@ EuiDataGridHeaderCell.propTypes = {
481
495
  className: _propTypes.default.string,
482
496
  "data-test-subj": _propTypes.default.string,
483
497
  css: _propTypes.default.any,
498
+ isDisabled: _propTypes.default.bool,
499
+ hasAriaDisabled: _propTypes.default.bool,
484
500
  buttonRef: _propTypes.default.any
485
501
  }),
486
502
  onClick: _propTypes.default.func,
@@ -515,7 +531,6 @@ EuiDataGridHeaderCell.propTypes = {
515
531
  color: _propTypes.default.any,
516
532
  "aria-label": _propTypes.default.string,
517
533
  "aria-labelledby": _propTypes.default.string,
518
- isDisabled: _propTypes.default.bool,
519
534
  size: _propTypes.default.any,
520
535
  iconSize: _propTypes.default.any,
521
536
  isSelected: _propTypes.default.bool,
@@ -524,6 +539,8 @@ EuiDataGridHeaderCell.propTypes = {
524
539
  className: _propTypes.default.string,
525
540
  "data-test-subj": _propTypes.default.string,
526
541
  css: _propTypes.default.any,
542
+ isDisabled: _propTypes.default.bool,
543
+ hasAriaDisabled: _propTypes.default.bool,
527
544
  buttonRef: _propTypes.default.any
528
545
  }),
529
546
  onClick: _propTypes.default.func,
@@ -23,11 +23,11 @@ var _react2 = require("@emotion/react");
23
23
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
26
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
26
27
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
27
28
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
28
29
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
29
30
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
30
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
31
31
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
32
32
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
33
33
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -51,31 +51,48 @@ var useDataGridColumnSelector = exports.useDataGridColumnSelector = function use
51
51
  var id = _ref.id;
52
52
  return id;
53
53
  });
54
- var availableSet = new Set(availableColumnIds);
55
- // Filter visibleColumns to only include existing columns
54
+ // remove duplicate columns to ensure unique columns
55
+ var availableColumnIdsSet = new Set(availableColumnIds);
56
+ if (process.env.NODE_ENV === 'development') {
57
+ if (availableColumnIds.length > availableColumnIdsSet.size) {
58
+ var duplicateIds = [];
59
+ var _iterator = _createForOfIteratorHelper(availableColumnIds),
60
+ _step;
61
+ try {
62
+ var _loop = function _loop() {
63
+ var id = _step.value;
64
+ if (!duplicateIds.includes(id) && availableColumnIds.filter(function (_id) {
65
+ return _id === id;
66
+ }).length > 1) {
67
+ duplicateIds.push(id);
68
+ }
69
+ };
70
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
71
+ _loop();
72
+ }
73
+ } catch (err) {
74
+ _iterator.e(err);
75
+ } finally {
76
+ _iterator.f();
77
+ }
78
+ 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.');
79
+ }
80
+ }
56
81
  var validVisibleColumns = visibleColumns.filter(function (id) {
57
- return availableSet.has(id);
82
+ return availableColumnIdsSet.has(id);
58
83
  });
59
84
  var visibleSet = new Set(validVisibleColumns);
60
85
  var result = [];
61
86
  var visibleIndex = 0;
62
- var _iterator = _createForOfIteratorHelper(availableColumnIds),
63
- _step;
64
- try {
65
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
66
- var columnId = _step.value;
67
- if (visibleSet.has(columnId)) {
68
- // Replace with next visible column in order
87
+ for (var _i = 0, _arr = _toConsumableArray(availableColumnIdsSet); _i < _arr.length; _i++) {
88
+ var columnId = _arr[_i];
89
+ if (visibleSet.has(columnId)) {
90
+ if (visibleIndex < validVisibleColumns.length) {
69
91
  result.push(validVisibleColumns[visibleIndex++]);
70
- } else {
71
- // Keep hidden column in original position
72
- result.push(columnId);
73
92
  }
93
+ } else {
94
+ result.push(columnId);
74
95
  }
75
- } catch (err) {
76
- _iterator.e(err);
77
- } finally {
78
- _iterator.f();
79
96
  }
80
97
  return result;
81
98
  // doesn't depend on visibleColumns on purpose to keep it an initial state
@@ -140,7 +157,7 @@ var useDataGridColumnSelector = exports.useDataGridColumnSelector = function use
140
157
  anchorPosition: "downLeft",
141
158
  panelPaddingSize: "none",
142
159
  button: (0, _react2.jsx)(_data_grid_toolbar_control.EuiDataGridToolbarControl, {
143
- badgeContent: numberOfHiddenFields > 0 ? "".concat(orderedVisibleColumns.length, "/").concat(availableColumns.length) : availableColumns.length,
160
+ badgeContent: numberOfHiddenFields > 0 ? "".concat(orderedVisibleColumns.length, "/").concat(sortedColumns.length) : sortedColumns.length,
144
161
  iconType: "tableDensityNormal",
145
162
  "data-test-subj": "dataGridColumnSelectorButton",
146
163
  onClick: function onClick() {
@@ -392,7 +392,6 @@ DataGridSortingControl.propTypes = {
392
392
  color: _propTypes.default.any,
393
393
  "aria-label": _propTypes.default.string,
394
394
  "aria-labelledby": _propTypes.default.string,
395
- isDisabled: _propTypes.default.bool,
396
395
  /**
397
396
  * Overall size of button.
398
397
  * Matches the sizes of other EuiButtons
@@ -422,6 +421,19 @@ DataGridSortingControl.propTypes = {
422
421
  className: _propTypes.default.string,
423
422
  "data-test-subj": _propTypes.default.string,
424
423
  css: _propTypes.default.any,
424
+ /**
425
+ * Controls the disabled behavior via the native `disabled` attribute.
426
+ */
427
+ isDisabled: _propTypes.default.bool,
428
+ /**
429
+ * NOTE: Beta feature, may be changed or removed in the future
430
+ *
431
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
432
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
433
+ *
434
+ * Use e.g. when a disabled button should have a tooltip.
435
+ */
436
+ hasAriaDisabled: _propTypes.default.bool,
425
437
  buttonRef: _propTypes.default.any
426
438
  }),
427
439
  /**
@@ -475,7 +487,6 @@ DataGridSortingControl.propTypes = {
475
487
  color: _propTypes.default.any,
476
488
  "aria-label": _propTypes.default.string,
477
489
  "aria-labelledby": _propTypes.default.string,
478
- isDisabled: _propTypes.default.bool,
479
490
  size: _propTypes.default.any,
480
491
  iconSize: _propTypes.default.any,
481
492
  isSelected: _propTypes.default.bool,
@@ -484,6 +495,8 @@ DataGridSortingControl.propTypes = {
484
495
  className: _propTypes.default.string,
485
496
  "data-test-subj": _propTypes.default.string,
486
497
  css: _propTypes.default.any,
498
+ isDisabled: _propTypes.default.bool,
499
+ hasAriaDisabled: _propTypes.default.bool,
487
500
  buttonRef: _propTypes.default.any
488
501
  }),
489
502
  onClick: _propTypes.default.func,
@@ -518,7 +531,6 @@ DataGridSortingControl.propTypes = {
518
531
  color: _propTypes.default.any,
519
532
  "aria-label": _propTypes.default.string,
520
533
  "aria-labelledby": _propTypes.default.string,
521
- isDisabled: _propTypes.default.bool,
522
534
  size: _propTypes.default.any,
523
535
  iconSize: _propTypes.default.any,
524
536
  isSelected: _propTypes.default.bool,
@@ -527,6 +539,8 @@ DataGridSortingControl.propTypes = {
527
539
  className: _propTypes.default.string,
528
540
  "data-test-subj": _propTypes.default.string,
529
541
  css: _propTypes.default.any,
542
+ isDisabled: _propTypes.default.bool,
543
+ hasAriaDisabled: _propTypes.default.bool,
530
544
  buttonRef: _propTypes.default.any
531
545
  }),
532
546
  onClick: _propTypes.default.func,
@@ -561,7 +575,6 @@ DataGridSortingControl.propTypes = {
561
575
  color: _propTypes.default.any,
562
576
  "aria-label": _propTypes.default.string,
563
577
  "aria-labelledby": _propTypes.default.string,
564
- isDisabled: _propTypes.default.bool,
565
578
  size: _propTypes.default.any,
566
579
  iconSize: _propTypes.default.any,
567
580
  isSelected: _propTypes.default.bool,
@@ -570,6 +583,8 @@ DataGridSortingControl.propTypes = {
570
583
  className: _propTypes.default.string,
571
584
  "data-test-subj": _propTypes.default.string,
572
585
  css: _propTypes.default.any,
586
+ isDisabled: _propTypes.default.bool,
587
+ hasAriaDisabled: _propTypes.default.bool,
573
588
  buttonRef: _propTypes.default.any
574
589
  }),
575
590
  onClick: _propTypes.default.func,
@@ -604,7 +619,6 @@ DataGridSortingControl.propTypes = {
604
619
  color: _propTypes.default.any,
605
620
  "aria-label": _propTypes.default.string,
606
621
  "aria-labelledby": _propTypes.default.string,
607
- isDisabled: _propTypes.default.bool,
608
622
  size: _propTypes.default.any,
609
623
  iconSize: _propTypes.default.any,
610
624
  isSelected: _propTypes.default.bool,
@@ -613,6 +627,8 @@ DataGridSortingControl.propTypes = {
613
627
  className: _propTypes.default.string,
614
628
  "data-test-subj": _propTypes.default.string,
615
629
  css: _propTypes.default.any,
630
+ isDisabled: _propTypes.default.bool,
631
+ hasAriaDisabled: _propTypes.default.bool,
616
632
  buttonRef: _propTypes.default.any
617
633
  }),
618
634
  onClick: _propTypes.default.func,
@@ -647,7 +663,6 @@ DataGridSortingControl.propTypes = {
647
663
  color: _propTypes.default.any,
648
664
  "aria-label": _propTypes.default.string,
649
665
  "aria-labelledby": _propTypes.default.string,
650
- isDisabled: _propTypes.default.bool,
651
666
  size: _propTypes.default.any,
652
667
  iconSize: _propTypes.default.any,
653
668
  isSelected: _propTypes.default.bool,
@@ -656,6 +671,8 @@ DataGridSortingControl.propTypes = {
656
671
  className: _propTypes.default.string,
657
672
  "data-test-subj": _propTypes.default.string,
658
673
  css: _propTypes.default.any,
674
+ isDisabled: _propTypes.default.bool,
675
+ hasAriaDisabled: _propTypes.default.bool,
659
676
  buttonRef: _propTypes.default.any
660
677
  }),
661
678
  onClick: _propTypes.default.func,
@@ -78,13 +78,6 @@ EuiDataGridToolbarControl.propTypes = {
78
78
  * Ensure the text of the button sits flush to the left, right, or both sides of its container
79
79
  */
80
80
  flush: _propTypes.default.any,
81
- /**
82
- * `disabled` is also allowed
83
- */
84
- /**
85
- * `disabled` is also allowed
86
- */
87
- isDisabled: _propTypes.default.bool,
88
81
  /**
89
82
  * Force disables the button and changes the icon to a loading spinner
90
83
  */
@@ -139,10 +132,23 @@ EuiDataGridToolbarControl.propTypes = {
139
132
  "data-text": _propTypes.default.string
140
133
  }).isRequired, _propTypes.default.oneOf([false])]),
141
134
  iconSize: _propTypes.default.any,
135
+ /**
136
+ * Controls the disabled behavior via the native `disabled` attribute.
137
+ */
138
+ isDisabled: _propTypes.default.bool,
142
139
  className: _propTypes.default.string,
143
140
  "aria-label": _propTypes.default.string,
144
141
  "data-test-subj": _propTypes.default.string,
145
142
  css: _propTypes.default.any,
143
+ /**
144
+ * NOTE: Beta feature, may be changed or removed in the future
145
+ *
146
+ * Changes the native `disabled` attribute to `aria-disabled` to preserve focusability.
147
+ * This results in a semantically disabled button without the default browser handling of the disabled state.
148
+ *
149
+ * Use e.g. when a disabled button should have a tooltip.
150
+ */
151
+ hasAriaDisabled: _propTypes.default.bool,
146
152
  badgeContent: _propTypes.default.oneOfType([_propTypes.default.number.isRequired, _propTypes.default.string.isRequired])
147
153
  };
148
154
  var betterScreenReaderSlashes = function betterScreenReaderSlashes(badgeContent) {
@@ -175,7 +175,11 @@ var EuiDataGrid = exports.EuiDataGrid = /*#__PURE__*/(0, _react.memo)( /*#__PURE
175
175
  */
176
176
  var displayValues = (0, _react.useMemo)(function () {
177
177
  return columns.reduce(function (acc, column) {
178
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, column.id, column.displayAsText || column.id));
178
+ // prevent duplicate values
179
+ if (!acc[column.id]) {
180
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, column.id, column.displayAsText || column.id));
181
+ }
182
+ return acc;
179
183
  }, {});
180
184
  }, [columns]);
181
185
  var _useDataGridDisplaySe = (0, _controls.useDataGridDisplaySelector)((0, _controls.checkOrDefaultToolBarDisplayOptions)(toolbarVisibility, 'showDisplaySelector'), gridStyleWithDefaults, _rowHeightsOptions),