@elastic/eui 62.0.2 → 62.2.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 (313) hide show
  1. package/dist/eui_charts_theme.js +330 -330
  2. package/dist/eui_charts_theme.js.map +1 -1
  3. package/dist/eui_theme_dark.css +1 -783
  4. package/dist/eui_theme_dark.json +0 -57
  5. package/dist/eui_theme_dark.json.d.ts +0 -57
  6. package/dist/eui_theme_dark.min.css +1 -1
  7. package/dist/eui_theme_light.css +1 -783
  8. package/dist/eui_theme_light.json +0 -57
  9. package/dist/eui_theme_light.json.d.ts +0 -57
  10. package/dist/eui_theme_light.min.css +1 -1
  11. package/es/components/breadcrumbs/breadcrumb.js +199 -0
  12. package/es/components/breadcrumbs/breadcrumb.styles.js +61 -0
  13. package/es/components/breadcrumbs/breadcrumbs.js +115 -187
  14. package/es/components/breadcrumbs/breadcrumbs.styles.js +30 -0
  15. package/es/components/code/code_block.js +119 -107
  16. package/es/components/collapsible_nav/collapsible_nav.js +2 -2
  17. package/es/components/control_bar/control_bar.js +13 -0
  18. package/es/components/datagrid/body/data_grid_body.js +12 -2
  19. package/es/components/datagrid/body/data_grid_cell.js +31 -3
  20. package/es/components/datagrid/body/header/data_grid_header_row.js +1 -1
  21. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  22. package/es/components/datagrid/data_grid.js +10 -2
  23. package/es/components/datagrid/utils/row_heights.js +33 -4
  24. package/es/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  25. package/es/components/date_picker/super_date_picker/super_update_button.js +1 -1
  26. package/es/components/description_list/description_list.js +22 -26
  27. package/es/components/description_list/description_list.styles.js +25 -0
  28. package/es/components/description_list/description_list_context.js +14 -0
  29. package/es/components/description_list/description_list_description.js +43 -2
  30. package/es/components/description_list/description_list_description.styles.js +47 -0
  31. package/es/components/description_list/description_list_title.js +43 -2
  32. package/es/components/description_list/description_list_title.styles.js +37 -0
  33. package/es/components/description_list/description_list_types.js +10 -0
  34. package/es/components/header/header.js +1 -27
  35. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +22 -2
  36. package/es/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +15 -0
  37. package/es/components/header/header_links/header_links.js +9 -9
  38. package/es/components/icon/assets/tokenStruct.js +1 -1
  39. package/es/components/page/page_header/page_header.js +1 -0
  40. package/es/components/page/page_header/page_header_content.js +2 -1
  41. package/es/components/page/page_template.js +1 -0
  42. package/es/components/pagination/pagination.js +1 -1
  43. package/es/components/panel/split_panel/split_panel.js +2 -2
  44. package/es/components/popover/wrapping_popover.js +88 -45
  45. package/es/components/portal/portal.js +84 -38
  46. package/es/components/provider/provider.js +2 -2
  47. package/es/components/responsive/hide_for.js +6 -38
  48. package/es/components/responsive/show_for.js +6 -38
  49. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +17 -36
  50. package/es/components/side_nav/side_nav.js +1 -1
  51. package/es/components/table/table_row_cell.js +1 -2
  52. package/es/components/toast/global_toast_list.js +208 -241
  53. package/es/components/toast/global_toast_list.styles.js +38 -0
  54. package/es/components/toast/global_toast_list_item.js +12 -7
  55. package/es/components/toast/toast.js +25 -25
  56. package/es/components/toast/toast.styles.js +55 -0
  57. package/es/components/token/index.js +2 -1
  58. package/es/components/token/token.js +48 -112
  59. package/es/components/token/token.styles.js +93 -0
  60. package/es/components/token/token_map.js +6 -9
  61. package/es/components/token/token_types.js +11 -0
  62. package/es/global_styling/reset/global_styles.js +1 -1
  63. package/es/services/{breakpoint.js → breakpoint/breakpoint.js} +4 -9
  64. package/es/services/{hooks/useIsWithinBreakpoints.js → breakpoint/currentEuiBreakpoint.js} +36 -28
  65. package/es/services/breakpoint/index.js +10 -0
  66. package/es/services/breakpoint/useIsWithinBreakpoints.js +24 -0
  67. package/es/services/hooks/index.js +0 -1
  68. package/es/services/index.js +1 -1
  69. package/es/test/rtl/component_helpers.js +60 -1
  70. package/eui.d.ts +1787 -1550
  71. package/i18ntokens.json +36 -36
  72. package/lib/components/breadcrumbs/breadcrumb.js +225 -0
  73. package/lib/components/breadcrumbs/breadcrumb.styles.js +68 -0
  74. package/lib/components/breadcrumbs/breadcrumbs.js +125 -188
  75. package/lib/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  76. package/lib/components/code/code_block.js +118 -106
  77. package/lib/components/collapsible_nav/collapsible_nav.js +2 -2
  78. package/lib/components/control_bar/control_bar.js +13 -0
  79. package/lib/components/datagrid/body/data_grid_body.js +12 -2
  80. package/lib/components/datagrid/body/data_grid_cell.js +31 -3
  81. package/lib/components/datagrid/body/header/data_grid_header_row.js +1 -1
  82. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  83. package/lib/components/datagrid/data_grid.js +10 -2
  84. package/lib/components/datagrid/utils/row_heights.js +33 -4
  85. package/lib/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  86. package/lib/components/date_picker/super_date_picker/super_update_button.js +1 -1
  87. package/lib/components/description_list/description_list.js +25 -31
  88. package/lib/components/description_list/description_list.styles.js +36 -0
  89. package/lib/components/description_list/description_list_context.js +24 -0
  90. package/lib/components/description_list/description_list_description.js +52 -2
  91. package/lib/components/description_list/description_list_description.styles.js +51 -0
  92. package/lib/components/description_list/description_list_title.js +52 -2
  93. package/lib/components/description_list/description_list_title.styles.js +50 -0
  94. package/lib/components/description_list/description_list_types.js +20 -0
  95. package/lib/components/header/header.js +1 -27
  96. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +24 -2
  97. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  98. package/lib/components/header/header_links/header_links.js +8 -8
  99. package/lib/components/icon/assets/tokenStruct.js +1 -1
  100. package/lib/components/icon/svgs/tokens/tokenStruct.svg +1 -1
  101. package/lib/components/page/page_header/page_header.js +1 -0
  102. package/lib/components/page/page_header/page_header_content.js +3 -2
  103. package/lib/components/page/page_template.js +1 -0
  104. package/lib/components/pagination/pagination.js +1 -1
  105. package/lib/components/panel/split_panel/split_panel.js +3 -3
  106. package/lib/components/popover/wrapping_popover.js +85 -44
  107. package/lib/components/portal/portal.js +87 -39
  108. package/lib/components/provider/provider.js +1 -1
  109. package/lib/components/responsive/hide_for.js +12 -44
  110. package/lib/components/responsive/show_for.js +12 -44
  111. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +15 -35
  112. package/lib/components/side_nav/side_nav.js +1 -1
  113. package/lib/components/table/table_row_cell.js +1 -3
  114. package/lib/components/toast/global_toast_list.js +209 -238
  115. package/lib/components/toast/global_toast_list.styles.js +45 -0
  116. package/lib/components/toast/global_toast_list_item.js +14 -7
  117. package/lib/components/toast/toast.js +27 -25
  118. package/lib/components/toast/toast.styles.js +66 -0
  119. package/lib/components/token/index.js +5 -3
  120. package/lib/components/token/token.js +50 -120
  121. package/lib/components/token/token.styles.js +101 -0
  122. package/lib/components/token/token_map.js +6 -9
  123. package/lib/components/token/token_types.js +22 -0
  124. package/lib/global_styling/reset/global_styles.js +1 -1
  125. package/{test-env/services → lib/services/breakpoint}/breakpoint.js +5 -9
  126. package/lib/services/breakpoint/currentEuiBreakpoint.js +80 -0
  127. package/lib/services/breakpoint/index.js +44 -0
  128. package/lib/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  129. package/lib/services/hooks/index.js +0 -13
  130. package/lib/services/index.js +28 -0
  131. package/lib/test/rtl/component_helpers.js +69 -3
  132. package/optimize/es/components/breadcrumbs/breadcrumb.js +136 -0
  133. package/optimize/es/components/breadcrumbs/breadcrumb.styles.js +61 -0
  134. package/optimize/es/components/breadcrumbs/breadcrumbs.js +92 -165
  135. package/optimize/es/components/breadcrumbs/breadcrumbs.styles.js +30 -0
  136. package/optimize/es/components/code/code_block.js +106 -107
  137. package/optimize/es/components/datagrid/body/data_grid_body.js +2 -0
  138. package/optimize/es/components/datagrid/body/data_grid_cell.js +13 -1
  139. package/optimize/es/components/datagrid/utils/row_heights.js +33 -4
  140. package/optimize/es/components/description_list/description_list.js +20 -24
  141. package/optimize/es/components/description_list/description_list.styles.js +25 -0
  142. package/optimize/es/components/description_list/description_list_context.js +14 -0
  143. package/optimize/es/components/description_list/description_list_description.js +32 -2
  144. package/optimize/es/components/description_list/description_list_description.styles.js +47 -0
  145. package/optimize/es/components/description_list/description_list_title.js +32 -2
  146. package/optimize/es/components/description_list/description_list_title.styles.js +37 -0
  147. package/optimize/es/components/description_list/description_list_types.js +10 -0
  148. package/optimize/es/components/header/header_breadcrumbs/header_breadcrumbs.js +8 -1
  149. package/optimize/es/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +15 -0
  150. package/optimize/es/components/header/header_links/header_links.js +8 -8
  151. package/optimize/es/components/icon/assets/tokenStruct.js +1 -1
  152. package/optimize/es/components/page/page_header/page_header_content.js +1 -1
  153. package/optimize/es/components/panel/split_panel/split_panel.js +1 -1
  154. package/optimize/es/components/popover/wrapping_popover.js +79 -38
  155. package/optimize/es/components/portal/portal.js +66 -34
  156. package/optimize/es/components/provider/provider.js +2 -2
  157. package/optimize/es/components/responsive/hide_for.js +5 -27
  158. package/optimize/es/components/responsive/show_for.js +5 -27
  159. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -35
  160. package/optimize/es/components/table/table_row_cell.js +1 -2
  161. package/optimize/es/components/toast/global_toast_list.js +199 -230
  162. package/optimize/es/components/toast/global_toast_list.styles.js +38 -0
  163. package/optimize/es/components/toast/global_toast_list_item.js +11 -6
  164. package/optimize/es/components/toast/toast.js +24 -24
  165. package/optimize/es/components/toast/toast.styles.js +55 -0
  166. package/optimize/es/components/token/index.js +2 -1
  167. package/optimize/es/components/token/token.js +46 -69
  168. package/optimize/es/components/token/token.styles.js +83 -0
  169. package/optimize/es/components/token/token_map.js +6 -9
  170. package/optimize/es/components/token/token_types.js +11 -0
  171. package/optimize/es/global_styling/reset/global_styles.js +1 -1
  172. package/optimize/es/services/{breakpoint.js → breakpoint/breakpoint.js} +4 -9
  173. package/optimize/es/services/breakpoint/currentEuiBreakpoint.js +53 -0
  174. package/optimize/es/services/breakpoint/index.js +10 -0
  175. package/optimize/es/services/breakpoint/useIsWithinBreakpoints.js +24 -0
  176. package/optimize/es/services/hooks/index.js +0 -1
  177. package/optimize/es/services/index.js +1 -1
  178. package/optimize/es/test/rtl/component_helpers.js +60 -1
  179. package/optimize/lib/components/breadcrumbs/breadcrumb.js +162 -0
  180. package/optimize/lib/components/breadcrumbs/breadcrumb.styles.js +68 -0
  181. package/optimize/lib/components/breadcrumbs/breadcrumbs.js +99 -164
  182. package/optimize/lib/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  183. package/optimize/lib/components/code/code_block.js +105 -106
  184. package/optimize/lib/components/datagrid/body/data_grid_body.js +2 -0
  185. package/optimize/lib/components/datagrid/body/data_grid_cell.js +13 -1
  186. package/optimize/lib/components/datagrid/utils/row_heights.js +33 -4
  187. package/optimize/lib/components/description_list/description_list.js +23 -28
  188. package/optimize/lib/components/description_list/description_list.styles.js +36 -0
  189. package/optimize/lib/components/description_list/description_list_context.js +24 -0
  190. package/optimize/lib/components/description_list/description_list_description.js +43 -2
  191. package/optimize/lib/components/description_list/description_list_description.styles.js +51 -0
  192. package/optimize/lib/components/description_list/description_list_title.js +43 -2
  193. package/optimize/lib/components/description_list/description_list_title.styles.js +50 -0
  194. package/optimize/lib/components/description_list/description_list_types.js +20 -0
  195. package/optimize/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +10 -1
  196. package/optimize/lib/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  197. package/optimize/lib/components/header/header_links/header_links.js +7 -7
  198. package/optimize/lib/components/icon/assets/tokenStruct.js +1 -1
  199. package/optimize/lib/components/icon/svgs/tokens/tokenStruct.svg +1 -1
  200. package/optimize/lib/components/page/page_header/page_header_content.js +2 -2
  201. package/optimize/lib/components/panel/split_panel/split_panel.js +2 -2
  202. package/optimize/lib/components/popover/wrapping_popover.js +78 -38
  203. package/optimize/lib/components/portal/portal.js +65 -44
  204. package/optimize/lib/components/provider/provider.js +1 -1
  205. package/optimize/lib/components/responsive/hide_for.js +4 -33
  206. package/optimize/lib/components/responsive/show_for.js +4 -33
  207. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +14 -34
  208. package/optimize/lib/components/table/table_row_cell.js +1 -3
  209. package/optimize/lib/components/toast/global_toast_list.js +206 -220
  210. package/optimize/lib/components/toast/global_toast_list.styles.js +47 -0
  211. package/optimize/lib/components/toast/global_toast_list_item.js +14 -7
  212. package/optimize/lib/components/toast/toast.js +26 -24
  213. package/optimize/lib/components/toast/toast.styles.js +66 -0
  214. package/optimize/lib/components/token/index.js +5 -3
  215. package/optimize/lib/components/token/token.js +50 -76
  216. package/optimize/lib/components/token/token.styles.js +91 -0
  217. package/optimize/lib/components/token/token_map.js +6 -9
  218. package/optimize/lib/components/token/token_types.js +22 -0
  219. package/optimize/lib/global_styling/reset/global_styles.js +1 -1
  220. package/optimize/lib/services/{breakpoint.js → breakpoint/breakpoint.js} +5 -9
  221. package/optimize/lib/services/breakpoint/currentEuiBreakpoint.js +81 -0
  222. package/optimize/lib/services/breakpoint/index.js +44 -0
  223. package/optimize/lib/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  224. package/optimize/lib/services/hooks/index.js +0 -13
  225. package/optimize/lib/services/index.js +28 -0
  226. package/optimize/lib/test/rtl/component_helpers.js +69 -3
  227. package/package.json +2 -2
  228. package/src/components/control_bar/_control_bar.scss +1 -1
  229. package/src/components/header/_index.scss +0 -1
  230. package/src/components/index.scss +0 -5
  231. package/src/themes/amsterdam/overrides/_breadcrumbs.scss +0 -12
  232. package/src/themes/amsterdam/overrides/_index.scss +0 -4
  233. package/test-env/components/breadcrumbs/breadcrumb.js +211 -0
  234. package/test-env/components/breadcrumbs/breadcrumb.styles.js +68 -0
  235. package/test-env/components/breadcrumbs/breadcrumbs.js +122 -174
  236. package/test-env/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  237. package/test-env/components/collapsible_nav/collapsible_nav.js +2 -2
  238. package/test-env/components/control_bar/control_bar.js +13 -0
  239. package/test-env/components/datagrid/body/data_grid_body.js +12 -2
  240. package/test-env/components/datagrid/body/data_grid_cell.js +31 -3
  241. package/test-env/components/datagrid/body/header/data_grid_header_row.js +1 -1
  242. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  243. package/test-env/components/datagrid/data_grid.js +10 -2
  244. package/test-env/components/datagrid/utils/row_heights.js +33 -4
  245. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  246. package/test-env/components/date_picker/super_date_picker/super_update_button.js +1 -1
  247. package/test-env/components/description_list/description_list.js +25 -30
  248. package/test-env/components/description_list/description_list.styles.js +36 -0
  249. package/test-env/components/description_list/description_list_context.js +24 -0
  250. package/test-env/components/description_list/description_list_description.js +43 -2
  251. package/test-env/components/description_list/description_list_description.styles.js +51 -0
  252. package/test-env/components/description_list/description_list_title.js +43 -2
  253. package/test-env/components/description_list/description_list_title.styles.js +50 -0
  254. package/test-env/components/description_list/description_list_types.js +20 -0
  255. package/test-env/components/header/header.js +1 -27
  256. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.js +24 -2
  257. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  258. package/test-env/components/header/header_links/header_links.js +8 -8
  259. package/test-env/components/icon/assets/tokenStruct.js +1 -1
  260. package/test-env/components/observer/resize_observer/resize_observer.js +43 -126
  261. package/test-env/components/page/page_header/page_header.js +1 -0
  262. package/test-env/components/page/page_header/page_header_content.js +3 -2
  263. package/test-env/components/page/page_template.js +1 -0
  264. package/test-env/components/pagination/pagination.js +1 -1
  265. package/test-env/components/panel/split_panel/split_panel.js +3 -3
  266. package/test-env/components/popover/wrapping_popover.js +78 -38
  267. package/test-env/components/portal/portal.js +79 -45
  268. package/test-env/components/provider/provider.js +1 -1
  269. package/test-env/components/responsive/hide_for.js +5 -34
  270. package/test-env/components/responsive/show_for.js +5 -34
  271. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +15 -35
  272. package/test-env/components/side_nav/side_nav.js +1 -1
  273. package/test-env/components/table/table_row_cell.js +1 -3
  274. package/test-env/components/toast/global_toast_list.js +206 -220
  275. package/test-env/components/toast/global_toast_list.styles.js +47 -0
  276. package/test-env/components/toast/global_toast_list_item.js +14 -7
  277. package/test-env/components/toast/toast.js +27 -25
  278. package/test-env/components/toast/toast.styles.js +66 -0
  279. package/test-env/components/token/index.js +5 -3
  280. package/test-env/components/token/token.js +51 -120
  281. package/test-env/components/token/token.styles.js +91 -0
  282. package/test-env/components/token/token_map.js +6 -9
  283. package/test-env/components/token/token_types.js +22 -0
  284. package/test-env/global_styling/reset/global_styles.js +1 -1
  285. package/{lib/services → test-env/services/breakpoint}/breakpoint.js +5 -9
  286. package/test-env/services/breakpoint/currentEuiBreakpoint.js +37 -0
  287. package/test-env/services/breakpoint/index.js +44 -0
  288. package/test-env/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  289. package/test-env/services/hooks/index.js +0 -13
  290. package/test-env/services/index.js +28 -0
  291. package/test-env/test/rtl/component_helpers.js +69 -3
  292. package/lib/services/hooks/useIsWithinBreakpoints.js +0 -57
  293. package/optimize/es/services/hooks/useIsWithinBreakpoints.js +0 -46
  294. package/optimize/lib/services/hooks/useIsWithinBreakpoints.js +0 -57
  295. package/src/components/breadcrumbs/_breadcrumbs.scss +0 -79
  296. package/src/components/breadcrumbs/_index.scss +0 -2
  297. package/src/components/breadcrumbs/_variables.scss +0 -2
  298. package/src/components/description_list/_description_list.scss +0 -211
  299. package/src/components/description_list/_index.scss +0 -1
  300. package/src/components/header/header_breadcrumbs/_header_breadcrumbs.scss +0 -8
  301. package/src/components/header/header_breadcrumbs/_index.scss +0 -1
  302. package/src/components/portal/_index.scss +0 -1
  303. package/src/components/portal/_portal.scss +0 -6
  304. package/src/components/toast/_global_toast_list.scss +0 -90
  305. package/src/components/toast/_index.scss +0 -4
  306. package/src/components/toast/_toast.scss +0 -103
  307. package/src/components/token/_index.scss +0 -2
  308. package/src/components/token/_token.scss +0 -85
  309. package/src/components/token/_variables.scss +0 -13
  310. package/src/themes/amsterdam/overrides/_header_breadcrumbs.scss +0 -71
  311. package/src/themes/amsterdam/overrides/_toast.scss +0 -21
  312. package/src/themes/amsterdam/overrides/_token.scss +0 -4
  313. package/test-env/services/hooks/useIsWithinBreakpoints.js +0 -57
@@ -7,7 +7,7 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.EuiBreadcrumbs = void 0;
10
+ exports.useResponsiveMax = exports.limitBreadcrumbs = exports.EuiBreadcrumbs = void 0;
11
11
 
12
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
@@ -15,118 +15,34 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
15
15
 
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
 
18
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
18
+ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
- var _react = _interopRequireWildcard(require("react"));
23
-
24
22
  var _classnames = _interopRequireDefault(require("classnames"));
25
23
 
26
24
  var _i18n = require("../i18n");
27
25
 
28
- var _inner_text = require("../inner_text");
29
-
30
- var _link = require("../link");
31
-
32
- var _popover = require("../popover");
33
-
34
- var _icon = require("../icon");
35
-
36
26
  var _services = require("../../services");
37
27
 
38
- var _breakpoint = require("../../services/breakpoint");
28
+ var _breadcrumb = require("./breadcrumb");
29
+
30
+ var _breadcrumbs = require("./breadcrumbs.styles");
39
31
 
40
32
  var _react2 = require("@emotion/react");
41
33
 
42
- var _excluded = ["breadcrumbs", "className", "responsive", "truncate", "max"],
43
- _excluded2 = ["text", "href", "onClick", "truncate", "className"];
34
+ var _excluded = ["breadcrumbs", "className", "responsive", "truncate", "max", "type", "lastBreadcrumbIsCurrentPage"];
44
35
 
45
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
46
37
 
47
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
48
39
 
49
- var CONTENT_CLASSNAME = 'euiBreadcrumb__content';
50
40
  var responsiveDefault = {
51
41
  xs: 1,
52
42
  s: 2,
53
43
  m: 4
54
44
  };
55
45
 
56
- var limitBreadcrumbs = function limitBreadcrumbs(breadcrumbs, max, allBreadcrumbs) {
57
- var breadcrumbsAtStart = [];
58
- var breadcrumbsAtEnd = [];
59
- var limit = Math.min(max, breadcrumbs.length);
60
- var start = Math.floor(limit / 2);
61
- var overflowBreadcrumbs = allBreadcrumbs.slice(start, start + breadcrumbs.length - limit);
62
-
63
- if (overflowBreadcrumbs.length) {
64
- overflowBreadcrumbs[overflowBreadcrumbs.length - 1]['aria-current'] = 'false';
65
- }
66
-
67
- for (var i = 0; i < limit; i++) {
68
- // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased
69
- // towards breadcrumbs the end so that if max is an odd number, we'll have one more
70
- // breadcrumb visible at the end than at the beginning.
71
- var isEven = i % 2 === 0; // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a
72
- // half-iteration.
73
-
74
- var normalizedIndex = Math.floor(i * 0.5);
75
- var indexOfBreadcrumb = isEven ? breadcrumbs.length - 1 - normalizedIndex : normalizedIndex;
76
- var breadcrumb = breadcrumbs[indexOfBreadcrumb];
77
-
78
- if (isEven) {
79
- breadcrumbsAtEnd.unshift(breadcrumb);
80
- } else {
81
- breadcrumbsAtStart.push(breadcrumb);
82
- }
83
- }
84
-
85
- var EuiBreadcrumbCollapsed = function EuiBreadcrumbCollapsed() {
86
- var _useState = (0, _react.useState)(false),
87
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
88
- isPopoverOpen = _useState2[0],
89
- setIsPopoverOpen = _useState2[1];
90
-
91
- var ariaLabel = (0, _i18n.useEuiI18n)('euiBreadcrumbs.collapsedBadge.ariaLabel', 'See collapsed breadcrumbs');
92
- var ellipsisButton = (0, _react2.jsx)(_link.EuiLink, {
93
- className: CONTENT_CLASSNAME,
94
- color: "subdued",
95
- "aria-label": ariaLabel,
96
- title: ariaLabel,
97
- onClick: function onClick() {
98
- return setIsPopoverOpen(!isPopoverOpen);
99
- }
100
- }, "\u2026 ", (0, _react2.jsx)(_icon.EuiIcon, {
101
- type: "arrowDown",
102
- size: "s"
103
- }));
104
- return (0, _react2.jsx)("li", {
105
- className: "euiBreadcrumb euiBreadcrumb--collapsed"
106
- }, (0, _react2.jsx)(_popover.EuiPopover, {
107
- button: ellipsisButton,
108
- isOpen: isPopoverOpen,
109
- closePopover: function closePopover() {
110
- return setIsPopoverOpen(false);
111
- }
112
- }, (0, _react2.jsx)(EuiBreadcrumbs, {
113
- className: "euiBreadcrumbs__inPopover",
114
- breadcrumbs: overflowBreadcrumbs,
115
- responsive: false,
116
- truncate: false,
117
- max: 0
118
- })));
119
- };
120
-
121
- if (max < breadcrumbs.length) {
122
- breadcrumbsAtStart.push((0, _react2.jsx)(EuiBreadcrumbCollapsed, {
123
- key: "collapsed"
124
- }));
125
- }
126
-
127
- return [].concat(breadcrumbsAtStart, breadcrumbsAtEnd);
128
- };
129
-
130
46
  var EuiBreadcrumbs = function EuiBreadcrumbs(_ref) {
131
47
  var breadcrumbs = _ref.breadcrumbs,
132
48
  className = _ref.className,
@@ -136,94 +52,56 @@ var EuiBreadcrumbs = function EuiBreadcrumbs(_ref) {
136
52
  truncate = _ref$truncate === void 0 ? true : _ref$truncate,
137
53
  _ref$max = _ref.max,
138
54
  max = _ref$max === void 0 ? 5 : _ref$max,
55
+ _ref$type = _ref.type,
56
+ type = _ref$type === void 0 ? 'page' : _ref$type,
57
+ _ref$lastBreadcrumbIs = _ref.lastBreadcrumbIsCurrentPage,
58
+ lastBreadcrumbIsCurrentPage = _ref$lastBreadcrumbIs === void 0 ? true : _ref$lastBreadcrumbIs,
139
59
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
140
60
  var ariaLabel = (0, _i18n.useEuiI18n)('euiBreadcrumbs.nav.ariaLabel', 'Breadcrumbs');
141
-
142
- var _useState3 = (0, _react.useState)((0, _breakpoint.getBreakpoint)(typeof window === 'undefined' ? -Infinity : window.innerWidth)),
143
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
144
- currentBreakpoint = _useState4[0],
145
- setCurrentBreakpoint = _useState4[1];
146
-
147
- var functionToCallOnWindowResize = (0, _services.throttle)(function () {
148
- var newBreakpoint = (0, _breakpoint.getBreakpoint)(window.innerWidth);
149
-
150
- if (newBreakpoint !== currentBreakpoint) {
151
- setCurrentBreakpoint(newBreakpoint);
152
- } // reacts every 50ms to resize changes and always gets the final update
153
-
154
- }, 50); // Add window resize handlers
155
-
156
- (0, _react.useEffect)(function () {
157
- window.addEventListener('resize', functionToCallOnWindowResize);
158
- return function () {
159
- window.removeEventListener('resize', functionToCallOnWindowResize);
160
- };
161
- }, [responsive, functionToCallOnWindowResize]);
162
- var breadcrumbElements = breadcrumbs.map(function (breadcrumb, index) {
163
- var text = breadcrumb.text,
164
- href = breadcrumb.href,
165
- onClick = breadcrumb.onClick,
166
- truncate = breadcrumb.truncate,
167
- breadcrumbClassName = breadcrumb.className,
168
- breadcrumbRest = (0, _objectWithoutProperties2.default)(breadcrumb, _excluded2);
169
- var isLastBreadcrumb = index === breadcrumbs.length - 1;
170
- var className = (0, _classnames.default)('euiBreadcrumb', {
171
- 'euiBreadcrumb--last': isLastBreadcrumb,
172
- 'euiBreadcrumb--truncate': truncate
173
- });
174
- var linkProps = {
175
- className: (0, _classnames.default)(CONTENT_CLASSNAME, breadcrumbClassName),
176
- 'aria-current': isLastBreadcrumb ? 'page' : undefined
177
- };
178
- var link = (0, _react2.jsx)(_inner_text.EuiInnerText, null, function (ref, innerText) {
179
- var title = innerText === '' ? undefined : innerText;
180
-
181
- if (!href && !onClick) {
182
- return (0, _react2.jsx)("span", (0, _extends2.default)({
183
- ref: ref,
184
- title: title
185
- }, linkProps, breadcrumbRest), text);
186
- }
187
-
188
- return (0, _react2.jsx)(_link.EuiLink, (0, _extends2.default)({
189
- ref: ref,
190
- color: isLastBreadcrumb ? 'text' : 'subdued',
191
- onClick: onClick,
192
- href: href,
193
- title: title
194
- }, linkProps, breadcrumbRest), text);
61
+ var euiTheme = (0, _services.useEuiTheme)();
62
+ var breadcrumbsListStyles = (0, _breadcrumbs.euiBreadcrumbsListStyles)(euiTheme);
63
+ var cssBreadcrumbsListStyles = [breadcrumbsListStyles.euiBreadcrumbs__list, truncate && breadcrumbsListStyles.isTruncated];
64
+ var responsiveMax = useResponsiveMax(responsive, max);
65
+ var visibleBreadcrumbs = (0, _react.useMemo)(function () {
66
+ var shouldCollapseBreadcrumbs = responsiveMax && breadcrumbs.length > responsiveMax;
67
+ return shouldCollapseBreadcrumbs ? limitBreadcrumbs(breadcrumbs, responsiveMax) : breadcrumbs;
68
+ }, [breadcrumbs, responsiveMax]);
69
+ var breadcrumbChildren = (0, _react.useMemo)(function () {
70
+ return visibleBreadcrumbs.map(function (breadcrumb, index) {
71
+ var isFirstBreadcrumb = index === 0;
72
+ var isLastBreadcrumb = index === visibleBreadcrumbs.length - 1;
73
+ var isOnlyBreadcrumb = visibleBreadcrumbs.length === 1;
74
+ var sharedProps = {
75
+ type: type,
76
+ truncate: truncate
77
+ };
78
+ return breadcrumb.isCollapsedButton ? (0, _react2.jsx)(_breadcrumb.EuiBreadcrumbCollapsed, (0, _extends2.default)({
79
+ key: "collapsed"
80
+ }, sharedProps, {
81
+ isFirstBreadcrumb: isFirstBreadcrumb
82
+ }), (0, _react2.jsx)(EuiBreadcrumbs, {
83
+ breadcrumbs: breadcrumb.overflowBreadcrumbs,
84
+ lastBreadcrumbIsCurrentPage: false,
85
+ responsive: false,
86
+ truncate: false,
87
+ max: 0
88
+ })) : (0, _react2.jsx)(_breadcrumb.EuiBreadcrumb, (0, _extends2.default)({
89
+ key: index
90
+ }, sharedProps), (0, _react2.jsx)(_breadcrumb.EuiBreadcrumbContent, (0, _extends2.default)({
91
+ isFirstBreadcrumb: isFirstBreadcrumb,
92
+ isLastBreadcrumb: isLastBreadcrumb,
93
+ isOnlyBreadcrumb: isOnlyBreadcrumb,
94
+ highlightLastBreadcrumb: isLastBreadcrumb && lastBreadcrumbIsCurrentPage
95
+ }, sharedProps, breadcrumb)));
195
96
  });
196
- return (0, _react2.jsx)("li", {
197
- className: className,
198
- key: index
199
- }, link);
200
- }); // Use the default object if they simply passed `true` for responsive
201
-
202
- var responsiveObject = (0, _typeof2.default)(responsive) === 'object' ? responsive : responsiveDefault; // The max property collapses any breadcrumbs past the max quantity.
203
- // This is the same behavior we want for responsiveness.
204
- // So calculate the max value based on the combination of `max` and `responsive`
205
-
206
- var calculatedMax = max; // Set the calculated max to the number associated with the currentBreakpoint key if it exists
207
-
208
- if (responsive && responsiveObject[currentBreakpoint]) {
209
- calculatedMax = responsiveObject[currentBreakpoint];
210
- } // Final check is to make sure max is used over a larger breakpoint value
211
-
212
-
213
- if (max && calculatedMax) {
214
- calculatedMax = max < calculatedMax ? max : calculatedMax;
215
- }
216
-
217
- var limitedBreadcrumbs = calculatedMax ? limitBreadcrumbs(breadcrumbElements, calculatedMax, breadcrumbs) : breadcrumbElements;
218
- var classes = (0, _classnames.default)('euiBreadcrumbs', className, {
219
- 'euiBreadcrumbs--truncate': truncate
220
- });
97
+ }, [visibleBreadcrumbs, truncate, type, lastBreadcrumbIsCurrentPage]);
221
98
  return (0, _react2.jsx)("nav", (0, _extends2.default)({
222
99
  "aria-label": ariaLabel,
223
- className: classes
100
+ className: (0, _classnames.default)('euiBreadcrumbs', className)
224
101
  }, rest), (0, _react2.jsx)("ol", {
225
- className: "euiBreadcrumbs__list"
226
- }, limitedBreadcrumbs));
102
+ className: "euiBreadcrumbs__list",
103
+ css: cssBreadcrumbsListStyles
104
+ }, breadcrumbChildren));
227
105
  };
228
106
 
229
107
  exports.EuiBreadcrumbs = EuiBreadcrumbs;
@@ -264,6 +142,7 @@ EuiBreadcrumbs.propTypes = {
264
142
  "aria-label": _propTypes.default.string,
265
143
  "data-test-subj": _propTypes.default.string,
266
144
  href: _propTypes.default.string,
145
+ rel: _propTypes.default.string,
267
146
  onClick: _propTypes.default.func,
268
147
 
269
148
  /**
@@ -285,5 +164,74 @@ EuiBreadcrumbs.propTypes = {
285
164
  * Override the existing `aria-current` which defaults to `page` for the last breadcrumb
286
165
  */
287
166
  "aria-current": _propTypes.default.any
288
- }).isRequired).isRequired
289
- };
167
+ }).isRequired).isRequired,
168
+
169
+ /**
170
+ * Determines breadcrumbs appearance, with `page` being the default styling.
171
+ * Application breadcrumbs should only be once per page, in (e.g.) EuiHeader
172
+ */
173
+ type: _propTypes.default.oneOf(["page", "application"]),
174
+
175
+ /**
176
+ * Whether the last breadcrumb should visually (and accessibly, to screen readers)
177
+ * be highlighted as the current page. Defaults to true.
178
+ */
179
+ lastBreadcrumbIsCurrentPage: _propTypes.default.bool
180
+ };
181
+
182
+ var useResponsiveMax = function useResponsiveMax(responsive, max) {
183
+ // Use the default object if they simply passed `true` for responsive
184
+ var responsiveObject = (0, _typeof2.default)(responsive) === 'object' ? responsive : responsiveDefault; // The max property collapses any breadcrumbs past the max quantity.
185
+ // This is the same behavior we want for responsiveness.
186
+ // So calculate the max value based on the combination of `max` and `responsive`
187
+
188
+ var responsiveMax = max; // Set the calculated max to the number associated with the currentBreakpoint key if it exists
189
+
190
+ var currentBreakpoint = (0, _services.useCurrentEuiBreakpoint)();
191
+
192
+ if (responsive && currentBreakpoint && responsiveObject[currentBreakpoint]) {
193
+ responsiveMax = responsiveObject[currentBreakpoint];
194
+ } // Final check is to make sure max is used over a larger breakpoint value
195
+
196
+
197
+ if (max && responsiveMax) {
198
+ responsiveMax = max < responsiveMax ? max : responsiveMax;
199
+ }
200
+
201
+ return responsiveMax;
202
+ };
203
+
204
+ exports.useResponsiveMax = useResponsiveMax;
205
+
206
+ var limitBreadcrumbs = function limitBreadcrumbs(breadcrumbs, max) {
207
+ var breadcrumbsAtStart = [];
208
+ var breadcrumbsAtEnd = [];
209
+ var limit = Math.min(max, breadcrumbs.length);
210
+ var start = Math.floor(limit / 2);
211
+ var overflowBreadcrumbs = breadcrumbs.slice(start, start + breadcrumbs.length - limit);
212
+
213
+ for (var i = 0; i < limit; i++) {
214
+ // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased
215
+ // towards breadcrumbs the end so that if max is an odd number, we'll have one more
216
+ // breadcrumb visible at the end than at the beginning.
217
+ var isEven = i % 2 === 0; // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a
218
+ // half-iteration.
219
+
220
+ var normalizedIndex = Math.floor(i * 0.5);
221
+ var indexOfBreadcrumb = isEven ? breadcrumbs.length - 1 - normalizedIndex : normalizedIndex;
222
+ var breadcrumb = breadcrumbs[indexOfBreadcrumb];
223
+
224
+ if (isEven) {
225
+ breadcrumbsAtEnd.unshift(breadcrumb);
226
+ } else {
227
+ breadcrumbsAtStart.push(breadcrumb);
228
+ }
229
+ }
230
+
231
+ return [].concat(breadcrumbsAtStart, [{
232
+ isCollapsedButton: true,
233
+ overflowBreadcrumbs: overflowBreadcrumbs
234
+ }], breadcrumbsAtEnd);
235
+ };
236
+
237
+ exports.limitBreadcrumbs = limitBreadcrumbs;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.euiBreadcrumbsListStyles = void 0;
7
+
8
+ var _react = require("@emotion/react");
9
+
10
+ var _global_styling = require("../../global_styling");
11
+
12
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
13
+
14
+ var _ref = process.env.NODE_ENV === "production" ? {
15
+ name: "1bwn7gf-isTruncated",
16
+ styles: "flex-wrap:nowrap;white-space:nowrap;label:isTruncated;"
17
+ } : {
18
+ name: "1bwn7gf-isTruncated",
19
+ styles: "flex-wrap:nowrap;white-space:nowrap;label:isTruncated;",
20
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
21
+ };
22
+
23
+ var euiBreadcrumbsListStyles = function euiBreadcrumbsListStyles(euiThemeContext) {
24
+ // Styles cast to the <ol> element
25
+ var euiTheme = euiThemeContext.euiTheme;
26
+ return {
27
+ euiBreadcrumbs__list: /*#__PURE__*/(0, _react.css)((0, _global_styling.euiFontSize)(euiThemeContext, 's'), ";align-items:center;display:flex;flex-wrap:wrap;line-height:", euiTheme.size.l, ";", (0, _global_styling.logicalCSS)( // Add vertical space between breadcrumbs, but make sure the whole breadcrumb set doesn't add space below itself
28
+ 'margin-bottom', "-".concat(euiTheme.size.xs)), " ", (0, _global_styling.logicalCSS)('min-width', 0), ";;label:euiBreadcrumbs__list;"),
29
+ isTruncated: _ref
30
+ };
31
+ };
32
+
33
+ exports.euiBreadcrumbsListStyles = euiBreadcrumbsListStyles;
@@ -263,7 +263,7 @@ EuiCollapsibleNav.propTypes = {
263
263
  /**
264
264
  * Named breakpoint or pixel value for customizing the minimum window width to enable docking
265
265
  */
266
- pushMinBreakpoint: _propTypes.default.oneOfType([_propTypes.default.oneOf(["xs", "s", "m", "l", "xl"]).isRequired, _propTypes.default.number.isRequired]),
266
+ pushMinBreakpoint: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.number.isRequired]),
267
267
  style: _propTypes.default.any,
268
268
 
269
269
  /**
@@ -287,7 +287,7 @@ EuiCollapsibleNav.propTypes = {
287
287
  * Keeps navigation flyout visible and push `<body>` content via padding
288
288
  */
289
289
  isDocked: _propTypes.default.bool,
290
- dockedBreakpoint: _propTypes.default.oneOfType([_propTypes.default.oneOf(["xs", "s", "m", "l", "xl"]).isRequired, _propTypes.default.number.isRequired]),
290
+ dockedBreakpoint: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.number.isRequired]),
291
291
 
292
292
  /**
293
293
  * Button for controlling visible state of the nav
@@ -371,6 +371,7 @@ EuiControlBar.propTypes = {
371
371
  "aria-label": _propTypes.default.string,
372
372
  "data-test-subj": _propTypes.default.string,
373
373
  href: _propTypes.default.string,
374
+ rel: _propTypes.default.string,
374
375
  onClick: _propTypes.default.func,
375
376
 
376
377
  /**
@@ -393,6 +394,18 @@ EuiControlBar.propTypes = {
393
394
  */
394
395
  "aria-current": _propTypes.default.any
395
396
  }).isRequired),
397
+
398
+ /**
399
+ * Determines breadcrumbs appearance, with `page` being the default styling.
400
+ * Application breadcrumbs should only be once per page, in (e.g.) EuiHeader
401
+ */
402
+ type: _propTypes.default.oneOf(["page", "application"]),
403
+
404
+ /**
405
+ * Whether the last breadcrumb should visually (and accessibly, to screen readers)
406
+ * be highlighted as the current page. Defaults to true.
407
+ */
408
+ lastBreadcrumbIsCurrentPage: _propTypes.default.bool,
396
409
  text: _propTypes.default.node,
397
410
  iconType: _propTypes.default.string
398
411
  }).isRequired).isRequired,
@@ -361,6 +361,8 @@ var EuiDataGridBody = function EuiDataGridBody(props) {
361
361
 
362
362
  var rowHeightUtils = (0, _row_heights.useRowHeightUtils)({
363
363
  gridRef: gridRef,
364
+ outerGridElementRef: outerGridRef,
365
+ gridItemsRenderedRef: gridItemsRendered,
364
366
  gridStyles: gridStyles,
365
367
  columns: columns,
366
368
  rowHeightsOptions: rowHeightsOptions
@@ -947,7 +949,7 @@ EuiDataGridBody.propTypes = {
947
949
  /**
948
950
  * The color associated with this data type; it's used to color the icon token
949
951
  */
950
- color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.oneOf(["euiColorVis0", "euiColorVis1", "euiColorVis2", "euiColorVis3", "euiColorVis4", "euiColorVis5", "euiColorVis6", "euiColorVis7", "euiColorVis8", "euiColorVis9", "gray"]).isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
952
+ color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
951
953
 
952
954
  /**
953
955
  * Text for how to represent an ascending sort of this data type, e.g. 'A -> Z'
@@ -1045,7 +1047,15 @@ EuiDataGridBody.propTypes = {
1045
1047
  * Optional callback returning the current `rowHeightsOptions` when changes occur from user input (e.g. toolbar display controls).
1046
1048
  * Can be used for, e.g. storing user `rowHeightsOptions` in a local storage object.
1047
1049
  */
1048
- onChange: _propTypes.default.func
1050
+ onChange: _propTypes.default.func,
1051
+
1052
+ /**
1053
+ * Optional indicator of the row that should be used as an anchor for vertical layout shift compensation.
1054
+ * When set to 'start' or 'center', the topmost or middle visible row will try
1055
+ * to compensate for changes in their top offsets by adjusting the grid's scroll
1056
+ * position.
1057
+ */
1058
+ scrollAnchorRow: _propTypes.default.oneOf(["start", "center", undefined])
1049
1059
  }),
1050
1060
  isFullScreen: _propTypes.default.bool.isRequired,
1051
1061
  gridStyles: _propTypes.default.shape({
@@ -558,7 +558,15 @@ EuiDataGridCellContent.propTypes = {
558
558
  * Optional callback returning the current `rowHeightsOptions` when changes occur from user input (e.g. toolbar display controls).
559
559
  * Can be used for, e.g. storing user `rowHeightsOptions` in a local storage object.
560
560
  */
561
- onChange: _propTypes.default.func
561
+ onChange: _propTypes.default.func,
562
+
563
+ /**
564
+ * Optional indicator of the row that should be used as an anchor for vertical layout shift compensation.
565
+ * When set to 'start' or 'center', the topmost or middle visible row will try
566
+ * to compensate for changes in their top offsets by adjusting the grid's scroll
567
+ * position.
568
+ */
569
+ scrollAnchorRow: _propTypes.default.oneOf(["start", "center", undefined])
562
570
  }),
563
571
  rowHeightUtils: _propTypes.default.any,
564
572
  pagination: _propTypes.default.shape({
@@ -904,7 +912,7 @@ var EuiDataGridCell = /*#__PURE__*/function (_Component) {
904
912
  }, {
905
913
  key: "componentDidUpdate",
906
914
  value: function componentDidUpdate(prevProps) {
907
- var _this$props$rowHeight, _prevProps$rowHeights;
915
+ var _this$props$rowHeight, _prevProps$rowHeights, _this$props$rowHeight2, _this$props$style, _prevProps$style;
908
916
 
909
917
  this.recalculateAutoHeight();
910
918
 
@@ -912,6 +920,18 @@ var EuiDataGridCell = /*#__PURE__*/function (_Component) {
912
920
  this.recalculateLineHeight();
913
921
  }
914
922
 
923
+ if ((_this$props$rowHeight2 = this.props.rowHeightsOptions) !== null && _this$props$rowHeight2 !== void 0 && _this$props$rowHeight2.scrollAnchorRow && this.props.colIndex === 0 && // once per row
924
+ this.props.columnId === prevProps.columnId && // if this is still the same column
925
+ this.props.rowIndex === prevProps.rowIndex && // if this is still the same row
926
+ ((_this$props$style = this.props.style) === null || _this$props$style === void 0 ? void 0 : _this$props$style.top) !== ((_prevProps$style = prevProps.style) === null || _prevProps$style === void 0 ? void 0 : _prevProps$style.top) // if the top position has changed
927
+ ) {
928
+ var _prevProps$style2, _this$props$style2, _this$props$rowHeight3, _this$props$rowHeight4;
929
+
930
+ var previousTop = parseFloat((_prevProps$style2 = prevProps.style) === null || _prevProps$style2 === void 0 ? void 0 : _prevProps$style2.top);
931
+ var currentTop = parseFloat((_this$props$style2 = this.props.style) === null || _this$props$style2 === void 0 ? void 0 : _this$props$style2.top);
932
+ (_this$props$rowHeight3 = this.props.rowHeightUtils) === null || _this$props$rowHeight3 === void 0 ? void 0 : _this$props$rowHeight3.compensateForLayoutShift(this.props.rowIndex, currentTop - previousTop, (_this$props$rowHeight4 = this.props.rowHeightsOptions) === null || _this$props$rowHeight4 === void 0 ? void 0 : _this$props$rowHeight4.scrollAnchorRow);
933
+ }
934
+
915
935
  if (this.props.popoverContext.popoverIsOpen !== prevProps.popoverContext.popoverIsOpen || this.props.popoverContext.cellLocation !== prevProps.popoverContext.cellLocation || this.props.renderCellPopover !== prevProps.renderCellPopover) {
916
936
  this.handleCellPopover();
917
937
  }
@@ -1555,7 +1575,15 @@ EuiDataGridCell.propTypes = {
1555
1575
  * Optional callback returning the current `rowHeightsOptions` when changes occur from user input (e.g. toolbar display controls).
1556
1576
  * Can be used for, e.g. storing user `rowHeightsOptions` in a local storage object.
1557
1577
  */
1558
- onChange: _propTypes.default.func
1578
+ onChange: _propTypes.default.func,
1579
+
1580
+ /**
1581
+ * Optional indicator of the row that should be used as an anchor for vertical layout shift compensation.
1582
+ * When set to 'start' or 'center', the topmost or middle visible row will try
1583
+ * to compensate for changes in their top offsets by adjusting the grid's scroll
1584
+ * position.
1585
+ */
1586
+ scrollAnchorRow: _propTypes.default.oneOf(["start", "center", undefined])
1559
1587
  }),
1560
1588
  rowHeightUtils: _propTypes.default.any,
1561
1589
  rowManager: _propTypes.default.shape({
@@ -571,7 +571,7 @@ EuiDataGridHeaderRow.propTypes = {
571
571
  /**
572
572
  * The color associated with this data type; it's used to color the icon token
573
573
  */
574
- color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.oneOf(["euiColorVis0", "euiColorVis1", "euiColorVis2", "euiColorVis3", "euiColorVis4", "euiColorVis5", "euiColorVis6", "euiColorVis7", "euiColorVis8", "euiColorVis9", "gray"]).isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
574
+ color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
575
575
 
576
576
  /**
577
577
  * Text for how to represent an ascending sort of this data type, e.g. 'A -> Z'
@@ -210,7 +210,7 @@ EuiDataGridColumnSortingDraggable.propTypes = {
210
210
  /**
211
211
  * The color associated with this data type; it's used to color the icon token
212
212
  */
213
- color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.oneOf(["euiColorVis0", "euiColorVis1", "euiColorVis2", "euiColorVis3", "euiColorVis4", "euiColorVis5", "euiColorVis6", "euiColorVis7", "euiColorVis8", "euiColorVis9", "gray"]).isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
213
+ color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
214
214
 
215
215
  /**
216
216
  * Text for how to represent an ascending sort of this data type, e.g. 'A -> Z'
@@ -932,7 +932,7 @@ EuiDataGrid.propTypes = {
932
932
  /**
933
933
  * The color associated with this data type; it's used to color the icon token
934
934
  */
935
- color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.oneOf(["euiColorVis0", "euiColorVis1", "euiColorVis2", "euiColorVis3", "euiColorVis4", "euiColorVis5", "euiColorVis6", "euiColorVis7", "euiColorVis8", "euiColorVis9", "gray"]).isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
935
+ color: _propTypes.default.oneOfType([_propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.string.isRequired]).isRequired, _propTypes.default.string.isRequired]),
936
936
 
937
937
  /**
938
938
  * Text for how to represent an ascending sort of this data type, e.g. 'A -> Z'
@@ -1263,7 +1263,15 @@ EuiDataGrid.propTypes = {
1263
1263
  * Optional callback returning the current `rowHeightsOptions` when changes occur from user input (e.g. toolbar display controls).
1264
1264
  * Can be used for, e.g. storing user `rowHeightsOptions` in a local storage object.
1265
1265
  */
1266
- onChange: _propTypes.default.func
1266
+ onChange: _propTypes.default.func,
1267
+
1268
+ /**
1269
+ * Optional indicator of the row that should be used as an anchor for vertical layout shift compensation.
1270
+ * When set to 'start' or 'center', the topmost or middle visible row will try
1271
+ * to compensate for changes in their top offsets by adjusting the grid's scroll
1272
+ * position.
1273
+ */
1274
+ scrollAnchorRow: _propTypes.default.oneOf(["start", "center", undefined])
1267
1275
  })
1268
1276
  };
1269
1277
  EuiDataGrid.displayName = 'EuiDataGrid';
@@ -19,10 +19,10 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
19
19
 
20
20
  var _react = require("react");
21
21
 
22
- var _predicate = require("../../../services/predicate");
23
-
24
22
  var _services = require("../../../services");
25
23
 
24
+ var _predicate = require("../../../services/predicate");
25
+
26
26
  var _sorting = require("./sorting");
27
27
 
28
28
  /*
@@ -45,11 +45,13 @@ var DEFAULT_ROW_HEIGHT = 34;
45
45
  exports.DEFAULT_ROW_HEIGHT = DEFAULT_ROW_HEIGHT;
46
46
 
47
47
  var RowHeightUtils = /*#__PURE__*/function () {
48
- function RowHeightUtils(gridRef, rerenderGridBodyRef) {
48
+ function RowHeightUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, rerenderGridBodyRef) {
49
49
  var _this = this;
50
50
 
51
51
  (0, _classCallCheck2.default)(this, RowHeightUtils);
52
52
  this.gridRef = gridRef;
53
+ this.outerGridElementRef = outerGridElementRef;
54
+ this.gridItemsRenderedRef = gridItemsRenderedRef;
53
55
  this.rerenderGridBodyRef = rerenderGridBodyRef;
54
56
  (0, _defineProperty2.default)(this, "styles", {
55
57
  paddingTop: 0,
@@ -240,6 +242,31 @@ var RowHeightUtils = /*#__PURE__*/function () {
240
242
  (_this$gridRef$current = this.gridRef.current) === null || _this$gridRef$current === void 0 ? void 0 : _this$gridRef$current.resetAfterRowIndex(this.lastUpdatedRow);
241
243
  this.lastUpdatedRow = Infinity;
242
244
  }
245
+ }, {
246
+ key: "compensateForLayoutShift",
247
+ value: function compensateForLayoutShift(rowIndex, verticalLayoutShift, anchorRow) {
248
+ var grid = this.gridRef.current;
249
+ var outerGridElement = this.outerGridElementRef.current;
250
+ var renderedItems = this.gridItemsRenderedRef.current;
251
+
252
+ if (grid == null || outerGridElement == null || renderedItems == null || anchorRow == null || !Number.isFinite(verticalLayoutShift)) {
253
+ return;
254
+ } // skip if the start row is the anchor row but it hasn't shifted
255
+
256
+
257
+ if (anchorRow === 'start' && renderedItems.visibleRowStartIndex !== rowIndex) {
258
+ return;
259
+ } // skip if the center row is the anchor row but it hasn't shifted
260
+
261
+
262
+ if (anchorRow === 'center' && Math.floor((renderedItems.visibleRowStopIndex - renderedItems.visibleRowStartIndex) / 2) !== rowIndex) {
263
+ return;
264
+ }
265
+
266
+ grid.scrollTo({
267
+ scrollTop: outerGridElement.scrollTop + verticalLayoutShift
268
+ });
269
+ }
243
270
  }]);
244
271
  return RowHeightUtils;
245
272
  }();
@@ -253,13 +280,15 @@ exports.RowHeightUtils = RowHeightUtils;
253
280
 
254
281
  var useRowHeightUtils = function useRowHeightUtils(_ref2) {
255
282
  var gridRef = _ref2.gridRef,
283
+ outerGridElementRef = _ref2.outerGridElementRef,
284
+ gridItemsRenderedRef = _ref2.gridItemsRenderedRef,
256
285
  gridStyles = _ref2.gridStyles,
257
286
  columns = _ref2.columns,
258
287
  rowHeightsOptions = _ref2.rowHeightsOptions;
259
288
  var forceRenderRef = (0, _services.useLatest)((0, _services.useForceRender)());
260
289
 
261
290
  var _useState = (0, _react.useState)(function () {
262
- return new RowHeightUtils(gridRef, forceRenderRef);
291
+ return new RowHeightUtils(gridRef, outerGridElementRef, gridItemsRenderedRef, forceRenderRef);
263
292
  }),
264
293
  _useState2 = (0, _slicedToArray2.default)(_useState, 1),
265
294
  rowHeightUtils = _useState2[0]; // Forces a rerender whenever the row heights change, as this can cause the