@elastic/eui 62.0.3 → 62.2.1

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 (306) hide show
  1. package/dist/eui_theme_dark.css +1 -783
  2. package/dist/eui_theme_dark.json +0 -57
  3. package/dist/eui_theme_dark.json.d.ts +0 -57
  4. package/dist/eui_theme_dark.min.css +1 -1
  5. package/dist/eui_theme_light.css +1 -783
  6. package/dist/eui_theme_light.json +0 -57
  7. package/dist/eui_theme_light.json.d.ts +0 -57
  8. package/dist/eui_theme_light.min.css +1 -1
  9. package/es/components/breadcrumbs/breadcrumb.js +199 -0
  10. package/es/components/breadcrumbs/breadcrumb.styles.js +61 -0
  11. package/es/components/breadcrumbs/breadcrumbs.js +115 -187
  12. package/es/components/breadcrumbs/breadcrumbs.styles.js +30 -0
  13. package/es/components/code/code_block.js +119 -107
  14. package/es/components/collapsible_nav/collapsible_nav.js +2 -2
  15. package/es/components/control_bar/control_bar.js +13 -0
  16. package/es/components/datagrid/body/data_grid_body.js +12 -2
  17. package/es/components/datagrid/body/data_grid_cell.js +31 -3
  18. package/es/components/datagrid/body/header/data_grid_header_row.js +1 -1
  19. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  20. package/es/components/datagrid/data_grid.js +10 -2
  21. package/es/components/datagrid/utils/row_heights.js +33 -4
  22. package/es/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  23. package/es/components/date_picker/super_date_picker/super_update_button.js +1 -1
  24. package/es/components/description_list/description_list.js +22 -26
  25. package/es/components/description_list/description_list.styles.js +25 -0
  26. package/es/components/description_list/description_list_context.js +14 -0
  27. package/es/components/description_list/description_list_description.js +43 -2
  28. package/es/components/description_list/description_list_description.styles.js +47 -0
  29. package/es/components/description_list/description_list_title.js +43 -2
  30. package/es/components/description_list/description_list_title.styles.js +37 -0
  31. package/es/components/description_list/description_list_types.js +10 -0
  32. package/es/components/header/header.js +1 -27
  33. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +22 -2
  34. package/es/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +15 -0
  35. package/es/components/header/header_links/header_links.js +9 -9
  36. package/es/components/icon/assets/tokenStruct.js +1 -1
  37. package/es/components/page/page_header/page_header.js +1 -0
  38. package/es/components/page/page_header/page_header_content.js +2 -1
  39. package/es/components/page/page_template.js +1 -0
  40. package/es/components/pagination/pagination.js +1 -1
  41. package/es/components/panel/split_panel/split_panel.js +2 -2
  42. package/es/components/provider/provider.js +2 -2
  43. package/es/components/responsive/hide_for.js +6 -38
  44. package/es/components/responsive/show_for.js +6 -38
  45. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +17 -36
  46. package/es/components/side_nav/side_nav.js +1 -1
  47. package/es/components/table/table_row_cell.js +1 -2
  48. package/es/components/toast/global_toast_list.js +208 -241
  49. package/es/components/toast/global_toast_list.styles.js +38 -0
  50. package/es/components/toast/global_toast_list_item.js +12 -7
  51. package/es/components/toast/toast.js +25 -25
  52. package/es/components/toast/toast.styles.js +55 -0
  53. package/es/components/token/index.js +2 -1
  54. package/es/components/token/token.js +48 -112
  55. package/es/components/token/token.styles.js +93 -0
  56. package/es/components/token/token_map.js +6 -9
  57. package/es/components/token/token_types.js +11 -0
  58. package/es/global_styling/reset/global_styles.js +1 -1
  59. package/es/services/{breakpoint.js → breakpoint/breakpoint.js} +4 -9
  60. package/es/services/{hooks/useIsWithinBreakpoints.js → breakpoint/current_breakpoint.js} +26 -28
  61. package/es/services/breakpoint/current_breakpoint_hook.js +20 -0
  62. package/es/services/breakpoint/index.js +11 -0
  63. package/es/services/breakpoint/useIsWithinBreakpoints.js +24 -0
  64. package/es/services/hooks/index.js +0 -1
  65. package/es/services/index.js +1 -1
  66. package/es/test/rtl/component_helpers.js +60 -1
  67. package/eui.d.ts +1704 -1475
  68. package/i18ntokens.json +36 -36
  69. package/lib/components/breadcrumbs/breadcrumb.js +225 -0
  70. package/lib/components/breadcrumbs/breadcrumb.styles.js +68 -0
  71. package/lib/components/breadcrumbs/breadcrumbs.js +125 -188
  72. package/lib/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  73. package/lib/components/code/code_block.js +118 -106
  74. package/lib/components/collapsible_nav/collapsible_nav.js +2 -2
  75. package/lib/components/control_bar/control_bar.js +13 -0
  76. package/lib/components/datagrid/body/data_grid_body.js +12 -2
  77. package/lib/components/datagrid/body/data_grid_cell.js +31 -3
  78. package/lib/components/datagrid/body/header/data_grid_header_row.js +1 -1
  79. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  80. package/lib/components/datagrid/data_grid.js +10 -2
  81. package/lib/components/datagrid/utils/row_heights.js +33 -4
  82. package/lib/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  83. package/lib/components/date_picker/super_date_picker/super_update_button.js +1 -1
  84. package/lib/components/description_list/description_list.js +25 -31
  85. package/lib/components/description_list/description_list.styles.js +36 -0
  86. package/lib/components/description_list/description_list_context.js +24 -0
  87. package/lib/components/description_list/description_list_description.js +52 -2
  88. package/lib/components/description_list/description_list_description.styles.js +51 -0
  89. package/lib/components/description_list/description_list_title.js +52 -2
  90. package/lib/components/description_list/description_list_title.styles.js +50 -0
  91. package/lib/components/description_list/description_list_types.js +20 -0
  92. package/lib/components/header/header.js +1 -27
  93. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +24 -2
  94. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  95. package/lib/components/header/header_links/header_links.js +8 -8
  96. package/lib/components/icon/assets/tokenStruct.js +1 -1
  97. package/lib/components/icon/svgs/tokens/tokenStruct.svg +1 -1
  98. package/lib/components/page/page_header/page_header.js +1 -0
  99. package/lib/components/page/page_header/page_header_content.js +3 -2
  100. package/lib/components/page/page_template.js +1 -0
  101. package/lib/components/pagination/pagination.js +1 -1
  102. package/lib/components/panel/split_panel/split_panel.js +3 -3
  103. package/lib/components/provider/provider.js +1 -1
  104. package/lib/components/responsive/hide_for.js +12 -44
  105. package/lib/components/responsive/show_for.js +12 -44
  106. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +15 -35
  107. package/lib/components/side_nav/side_nav.js +1 -1
  108. package/lib/components/table/table_row_cell.js +1 -3
  109. package/lib/components/toast/global_toast_list.js +209 -238
  110. package/lib/components/toast/global_toast_list.styles.js +45 -0
  111. package/lib/components/toast/global_toast_list_item.js +14 -7
  112. package/lib/components/toast/toast.js +27 -25
  113. package/lib/components/toast/toast.styles.js +66 -0
  114. package/lib/components/token/index.js +5 -3
  115. package/lib/components/token/token.js +50 -120
  116. package/lib/components/token/token.styles.js +101 -0
  117. package/lib/components/token/token_map.js +6 -9
  118. package/lib/components/token/token_types.js +22 -0
  119. package/lib/global_styling/reset/global_styles.js +1 -1
  120. package/{test-env/services → lib/services/breakpoint}/breakpoint.js +5 -9
  121. package/lib/services/breakpoint/current_breakpoint.js +69 -0
  122. package/lib/services/breakpoint/current_breakpoint_hook.js +31 -0
  123. package/lib/services/breakpoint/index.js +57 -0
  124. package/lib/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  125. package/lib/services/hooks/index.js +0 -13
  126. package/lib/services/index.js +28 -0
  127. package/lib/test/rtl/component_helpers.js +69 -3
  128. package/optimize/es/components/breadcrumbs/breadcrumb.js +136 -0
  129. package/optimize/es/components/breadcrumbs/breadcrumb.styles.js +61 -0
  130. package/optimize/es/components/breadcrumbs/breadcrumbs.js +92 -165
  131. package/optimize/es/components/breadcrumbs/breadcrumbs.styles.js +30 -0
  132. package/optimize/es/components/code/code_block.js +106 -107
  133. package/optimize/es/components/datagrid/body/data_grid_body.js +2 -0
  134. package/optimize/es/components/datagrid/body/data_grid_cell.js +13 -1
  135. package/optimize/es/components/datagrid/utils/row_heights.js +33 -4
  136. package/optimize/es/components/description_list/description_list.js +20 -24
  137. package/optimize/es/components/description_list/description_list.styles.js +25 -0
  138. package/optimize/es/components/description_list/description_list_context.js +14 -0
  139. package/optimize/es/components/description_list/description_list_description.js +32 -2
  140. package/optimize/es/components/description_list/description_list_description.styles.js +47 -0
  141. package/optimize/es/components/description_list/description_list_title.js +32 -2
  142. package/optimize/es/components/description_list/description_list_title.styles.js +37 -0
  143. package/optimize/es/components/description_list/description_list_types.js +10 -0
  144. package/optimize/es/components/header/header_breadcrumbs/header_breadcrumbs.js +8 -1
  145. package/optimize/es/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +15 -0
  146. package/optimize/es/components/header/header_links/header_links.js +8 -8
  147. package/optimize/es/components/icon/assets/tokenStruct.js +1 -1
  148. package/optimize/es/components/page/page_header/page_header_content.js +1 -1
  149. package/optimize/es/components/panel/split_panel/split_panel.js +1 -1
  150. package/optimize/es/components/provider/provider.js +2 -2
  151. package/optimize/es/components/responsive/hide_for.js +5 -27
  152. package/optimize/es/components/responsive/show_for.js +5 -27
  153. package/optimize/es/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -35
  154. package/optimize/es/components/table/table_row_cell.js +1 -2
  155. package/optimize/es/components/toast/global_toast_list.js +199 -230
  156. package/optimize/es/components/toast/global_toast_list.styles.js +38 -0
  157. package/optimize/es/components/toast/global_toast_list_item.js +11 -6
  158. package/optimize/es/components/toast/toast.js +24 -24
  159. package/optimize/es/components/toast/toast.styles.js +55 -0
  160. package/optimize/es/components/token/index.js +2 -1
  161. package/optimize/es/components/token/token.js +46 -69
  162. package/optimize/es/components/token/token.styles.js +83 -0
  163. package/optimize/es/components/token/token_map.js +6 -9
  164. package/optimize/es/components/token/token_types.js +11 -0
  165. package/optimize/es/global_styling/reset/global_styles.js +1 -1
  166. package/optimize/es/services/{breakpoint.js → breakpoint/breakpoint.js} +4 -9
  167. package/optimize/es/services/breakpoint/current_breakpoint.js +44 -0
  168. package/optimize/es/services/breakpoint/current_breakpoint_hook.js +20 -0
  169. package/optimize/es/services/breakpoint/index.js +11 -0
  170. package/optimize/es/services/breakpoint/useIsWithinBreakpoints.js +24 -0
  171. package/optimize/es/services/hooks/index.js +0 -1
  172. package/optimize/es/services/index.js +1 -1
  173. package/optimize/es/test/rtl/component_helpers.js +60 -1
  174. package/optimize/lib/components/breadcrumbs/breadcrumb.js +162 -0
  175. package/optimize/lib/components/breadcrumbs/breadcrumb.styles.js +68 -0
  176. package/optimize/lib/components/breadcrumbs/breadcrumbs.js +99 -164
  177. package/optimize/lib/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  178. package/optimize/lib/components/code/code_block.js +105 -106
  179. package/optimize/lib/components/datagrid/body/data_grid_body.js +2 -0
  180. package/optimize/lib/components/datagrid/body/data_grid_cell.js +13 -1
  181. package/optimize/lib/components/datagrid/utils/row_heights.js +33 -4
  182. package/optimize/lib/components/description_list/description_list.js +23 -28
  183. package/optimize/lib/components/description_list/description_list.styles.js +36 -0
  184. package/optimize/lib/components/description_list/description_list_context.js +24 -0
  185. package/optimize/lib/components/description_list/description_list_description.js +43 -2
  186. package/optimize/lib/components/description_list/description_list_description.styles.js +51 -0
  187. package/optimize/lib/components/description_list/description_list_title.js +43 -2
  188. package/optimize/lib/components/description_list/description_list_title.styles.js +50 -0
  189. package/optimize/lib/components/description_list/description_list_types.js +20 -0
  190. package/optimize/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +10 -1
  191. package/optimize/lib/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  192. package/optimize/lib/components/header/header_links/header_links.js +7 -7
  193. package/optimize/lib/components/icon/assets/tokenStruct.js +1 -1
  194. package/optimize/lib/components/icon/svgs/tokens/tokenStruct.svg +1 -1
  195. package/optimize/lib/components/page/page_header/page_header_content.js +2 -2
  196. package/optimize/lib/components/panel/split_panel/split_panel.js +2 -2
  197. package/optimize/lib/components/provider/provider.js +1 -1
  198. package/optimize/lib/components/responsive/hide_for.js +4 -33
  199. package/optimize/lib/components/responsive/show_for.js +4 -33
  200. package/optimize/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +14 -34
  201. package/optimize/lib/components/table/table_row_cell.js +1 -3
  202. package/optimize/lib/components/toast/global_toast_list.js +206 -220
  203. package/optimize/lib/components/toast/global_toast_list.styles.js +47 -0
  204. package/optimize/lib/components/toast/global_toast_list_item.js +14 -7
  205. package/optimize/lib/components/toast/toast.js +26 -24
  206. package/optimize/lib/components/toast/toast.styles.js +66 -0
  207. package/optimize/lib/components/token/index.js +5 -3
  208. package/optimize/lib/components/token/token.js +50 -76
  209. package/optimize/lib/components/token/token.styles.js +91 -0
  210. package/optimize/lib/components/token/token_map.js +6 -9
  211. package/optimize/lib/components/token/token_types.js +22 -0
  212. package/optimize/lib/global_styling/reset/global_styles.js +1 -1
  213. package/optimize/lib/services/{breakpoint.js → breakpoint/breakpoint.js} +5 -9
  214. package/optimize/lib/services/breakpoint/current_breakpoint.js +68 -0
  215. package/optimize/lib/services/breakpoint/current_breakpoint_hook.js +31 -0
  216. package/optimize/lib/services/breakpoint/index.js +57 -0
  217. package/optimize/lib/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  218. package/optimize/lib/services/hooks/index.js +0 -13
  219. package/optimize/lib/services/index.js +28 -0
  220. package/optimize/lib/test/rtl/component_helpers.js +69 -3
  221. package/package.json +2 -2
  222. package/src/components/control_bar/_control_bar.scss +1 -1
  223. package/src/components/header/_index.scss +0 -1
  224. package/src/components/index.scss +0 -5
  225. package/src/themes/amsterdam/overrides/_breadcrumbs.scss +0 -12
  226. package/src/themes/amsterdam/overrides/_index.scss +0 -4
  227. package/test-env/components/breadcrumbs/breadcrumb.js +211 -0
  228. package/test-env/components/breadcrumbs/breadcrumb.styles.js +68 -0
  229. package/test-env/components/breadcrumbs/breadcrumbs.js +122 -174
  230. package/test-env/components/breadcrumbs/breadcrumbs.styles.js +33 -0
  231. package/test-env/components/collapsible_nav/collapsible_nav.js +2 -2
  232. package/test-env/components/control_bar/control_bar.js +13 -0
  233. package/test-env/components/datagrid/body/data_grid_body.js +12 -2
  234. package/test-env/components/datagrid/body/data_grid_cell.js +31 -3
  235. package/test-env/components/datagrid/body/header/data_grid_header_row.js +1 -1
  236. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  237. package/test-env/components/datagrid/data_grid.js +10 -2
  238. package/test-env/components/datagrid/utils/row_heights.js +33 -4
  239. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +2 -2
  240. package/test-env/components/date_picker/super_date_picker/super_update_button.js +1 -1
  241. package/test-env/components/description_list/description_list.js +25 -30
  242. package/test-env/components/description_list/description_list.styles.js +36 -0
  243. package/test-env/components/description_list/description_list_context.js +24 -0
  244. package/test-env/components/description_list/description_list_description.js +43 -2
  245. package/test-env/components/description_list/description_list_description.styles.js +51 -0
  246. package/test-env/components/description_list/description_list_title.js +43 -2
  247. package/test-env/components/description_list/description_list_title.styles.js +50 -0
  248. package/test-env/components/description_list/description_list_types.js +20 -0
  249. package/test-env/components/header/header.js +1 -27
  250. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.js +24 -2
  251. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.styles.js +26 -0
  252. package/test-env/components/header/header_links/header_links.js +8 -8
  253. package/test-env/components/icon/assets/tokenStruct.js +1 -1
  254. package/test-env/components/observer/resize_observer/resize_observer.js +43 -126
  255. package/test-env/components/page/page_header/page_header.js +1 -0
  256. package/test-env/components/page/page_header/page_header_content.js +3 -2
  257. package/test-env/components/page/page_template.js +1 -0
  258. package/test-env/components/pagination/pagination.js +1 -1
  259. package/test-env/components/panel/split_panel/split_panel.js +3 -3
  260. package/test-env/components/provider/provider.js +1 -1
  261. package/test-env/components/responsive/hide_for.js +5 -34
  262. package/test-env/components/responsive/show_for.js +5 -34
  263. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +15 -35
  264. package/test-env/components/side_nav/side_nav.js +1 -1
  265. package/test-env/components/table/table_row_cell.js +1 -3
  266. package/test-env/components/toast/global_toast_list.js +206 -220
  267. package/test-env/components/toast/global_toast_list.styles.js +47 -0
  268. package/test-env/components/toast/global_toast_list_item.js +14 -7
  269. package/test-env/components/toast/toast.js +27 -25
  270. package/test-env/components/toast/toast.styles.js +66 -0
  271. package/test-env/components/token/index.js +5 -3
  272. package/test-env/components/token/token.js +51 -120
  273. package/test-env/components/token/token.styles.js +91 -0
  274. package/test-env/components/token/token_map.js +6 -9
  275. package/test-env/components/token/token_types.js +22 -0
  276. package/test-env/global_styling/reset/global_styles.js +1 -1
  277. package/{lib/services → test-env/services/breakpoint}/breakpoint.js +5 -9
  278. package/test-env/services/breakpoint/current_breakpoint.js +68 -0
  279. package/test-env/services/breakpoint/current_breakpoint_hook.js +33 -0
  280. package/test-env/services/breakpoint/index.js +57 -0
  281. package/test-env/services/breakpoint/useIsWithinBreakpoints.js +34 -0
  282. package/test-env/services/hooks/index.js +0 -13
  283. package/test-env/services/index.js +28 -0
  284. package/test-env/test/rtl/component_helpers.js +69 -3
  285. package/lib/services/hooks/useIsWithinBreakpoints.js +0 -57
  286. package/optimize/es/services/hooks/useIsWithinBreakpoints.js +0 -46
  287. package/optimize/lib/services/hooks/useIsWithinBreakpoints.js +0 -57
  288. package/src/components/breadcrumbs/_breadcrumbs.scss +0 -79
  289. package/src/components/breadcrumbs/_index.scss +0 -2
  290. package/src/components/breadcrumbs/_variables.scss +0 -2
  291. package/src/components/description_list/_description_list.scss +0 -211
  292. package/src/components/description_list/_index.scss +0 -1
  293. package/src/components/header/header_breadcrumbs/_header_breadcrumbs.scss +0 -8
  294. package/src/components/header/header_breadcrumbs/_index.scss +0 -1
  295. package/src/components/portal/_index.scss +0 -1
  296. package/src/components/portal/_portal.scss +0 -6
  297. package/src/components/toast/_global_toast_list.scss +0 -90
  298. package/src/components/toast/_index.scss +0 -4
  299. package/src/components/toast/_toast.scss +0 -103
  300. package/src/components/token/_index.scss +0 -2
  301. package/src/components/token/_token.scss +0 -85
  302. package/src/components/token/_variables.scss +0 -13
  303. package/src/themes/amsterdam/overrides/_header_breadcrumbs.scss +0 -71
  304. package/src/themes/amsterdam/overrides/_toast.scss +0 -21
  305. package/src/themes/amsterdam/overrides/_token.scss +0 -4
  306. package/test-env/services/hooks/useIsWithinBreakpoints.js +0 -57
@@ -0,0 +1,199 @@
1
+ var _excluded = ["children", "className", "type", "truncate"],
2
+ _excluded2 = ["text", "truncate", "type", "href", "rel", "onClick", "className", "color", "isFirstBreadcrumb", "isLastBreadcrumb", "isOnlyBreadcrumb", "highlightLastBreadcrumb"];
3
+
4
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
5
+
6
+ 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."); }
7
+
8
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
+
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
11
+
12
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
13
+
14
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
+
16
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+
18
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
19
+
20
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
21
+
22
+ /*
23
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
24
+ * or more contributor license agreements. Licensed under the Elastic License
25
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
26
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
27
+ * Side Public License, v 1.
28
+ */
29
+ import React, { useState } from 'react';
30
+ import PropTypes from "prop-types";
31
+ import classNames from 'classnames';
32
+ import { useEuiTheme } from '../../services';
33
+ import { EuiInnerText } from '../inner_text';
34
+ import { EuiTextColor } from '../text';
35
+ import { EuiLink } from '../link';
36
+ import { EuiPopover } from '../popover';
37
+ import { EuiIcon } from '../icon';
38
+ import { useEuiI18n } from '../i18n';
39
+ import { euiBreadcrumbStyles, euiBreadcrumbContentStyles } from './breadcrumb.styles';
40
+ import { jsx as ___EmotionJSX } from "@emotion/react";
41
+ export var EuiBreadcrumb = function EuiBreadcrumb(_ref) {
42
+ var children = _ref.children,
43
+ className = _ref.className,
44
+ type = _ref.type,
45
+ truncate = _ref.truncate,
46
+ rest = _objectWithoutProperties(_ref, _excluded);
47
+
48
+ var classes = classNames('euiBreadcrumb', className);
49
+ var euiTheme = useEuiTheme();
50
+ var styles = euiBreadcrumbStyles(euiTheme);
51
+ var cssStyles = [styles.euiBreadcrumb, styles[type], truncate && styles.isTruncated];
52
+ return ___EmotionJSX("li", _extends({
53
+ className: classes,
54
+ css: cssStyles
55
+ }, rest), children);
56
+ };
57
+ EuiBreadcrumb.propTypes = {
58
+ type: PropTypes.oneOf(["page", "application"]).isRequired,
59
+ isFirstBreadcrumb: PropTypes.bool,
60
+ isLastBreadcrumb: PropTypes.bool,
61
+ isOnlyBreadcrumb: PropTypes.bool,
62
+ highlightLastBreadcrumb: PropTypes.bool
63
+ };
64
+ export var EuiBreadcrumbContent = function EuiBreadcrumbContent(_ref2) {
65
+ var text = _ref2.text,
66
+ truncate = _ref2.truncate,
67
+ type = _ref2.type,
68
+ href = _ref2.href,
69
+ rel = _ref2.rel,
70
+ onClick = _ref2.onClick,
71
+ className = _ref2.className,
72
+ color = _ref2.color,
73
+ isFirstBreadcrumb = _ref2.isFirstBreadcrumb,
74
+ isLastBreadcrumb = _ref2.isLastBreadcrumb,
75
+ isOnlyBreadcrumb = _ref2.isOnlyBreadcrumb,
76
+ highlightLastBreadcrumb = _ref2.highlightLastBreadcrumb,
77
+ rest = _objectWithoutProperties(_ref2, _excluded2);
78
+
79
+ var classes = classNames('euiBreadcrumb__content', className);
80
+ var euiTheme = useEuiTheme();
81
+ var styles = euiBreadcrumbContentStyles(euiTheme);
82
+ var cssStyles = [styles.euiBreadcrumb__content, styles[type], truncate && (isLastBreadcrumb ? styles.isTruncatedLast : styles.isTruncated)];
83
+
84
+ if (type === 'application') {
85
+ if (isOnlyBreadcrumb) {
86
+ cssStyles.push(styles.applicationStyles.onlyChild);
87
+ } else if (isFirstBreadcrumb) {
88
+ cssStyles.push(styles.applicationStyles.firstChild);
89
+ } else if (isLastBreadcrumb) {
90
+ cssStyles.push(styles.applicationStyles.lastChild);
91
+ }
92
+ }
93
+
94
+ var ariaCurrent = highlightLastBreadcrumb ? 'page' : undefined;
95
+ return ___EmotionJSX(EuiInnerText, null, function (ref, innerText) {
96
+ var title = innerText === '' ? undefined : innerText;
97
+ return !href && !onClick ? ___EmotionJSX(EuiTextColor, {
98
+ color: highlightLastBreadcrumb ? 'default' : 'subdued',
99
+ cloneElement: true
100
+ }, ___EmotionJSX("span", _extends({
101
+ ref: ref,
102
+ title: title,
103
+ "aria-current": ariaCurrent,
104
+ className: classes,
105
+ css: cssStyles
106
+ }, rest), text)) : ___EmotionJSX(EuiLink, _extends({
107
+ ref: ref,
108
+ title: title,
109
+ "aria-current": ariaCurrent,
110
+ className: classes,
111
+ css: cssStyles,
112
+ color: color || (highlightLastBreadcrumb ? 'text' : 'subdued'),
113
+ onClick: onClick,
114
+ href: href,
115
+ rel: rel
116
+ }, rest), text);
117
+ });
118
+ };
119
+ EuiBreadcrumbContent.propTypes = {
120
+ className: PropTypes.string,
121
+ "aria-label": PropTypes.string,
122
+ "data-test-subj": PropTypes.string,
123
+ href: PropTypes.string,
124
+ rel: PropTypes.string,
125
+ onClick: PropTypes.func,
126
+
127
+ /**
128
+ * Visible label of the breadcrumb
129
+ */
130
+ text: PropTypes.node.isRequired,
131
+
132
+ /**
133
+ * Force a max-width on the breadcrumb text
134
+ */
135
+ truncate: PropTypes.bool,
136
+
137
+ /**
138
+ * Accepts any EuiLink `color` when rendered as one (has `href` or `onClick`)
139
+ */
140
+ color: PropTypes.any,
141
+
142
+ /**
143
+ * Override the existing `aria-current` which defaults to `page` for the last breadcrumb
144
+ */
145
+ "aria-current": PropTypes.any,
146
+ type: PropTypes.oneOf(["page", "application"]).isRequired,
147
+ isFirstBreadcrumb: PropTypes.bool,
148
+ isLastBreadcrumb: PropTypes.bool,
149
+ isOnlyBreadcrumb: PropTypes.bool,
150
+ highlightLastBreadcrumb: PropTypes.bool
151
+ };
152
+ export var EuiBreadcrumbCollapsed = function EuiBreadcrumbCollapsed(_ref3) {
153
+ var children = _ref3.children,
154
+ isFirstBreadcrumb = _ref3.isFirstBreadcrumb,
155
+ type = _ref3.type;
156
+
157
+ var _useState = useState(false),
158
+ _useState2 = _slicedToArray(_useState, 2),
159
+ isPopoverOpen = _useState2[0],
160
+ setIsPopoverOpen = _useState2[1];
161
+
162
+ var euiTheme = useEuiTheme();
163
+ var styles = euiBreadcrumbStyles(euiTheme);
164
+ var cssStyles = [styles.isCollapsed];
165
+ var ariaLabel = useEuiI18n('euiBreadcrumb.collapsedBadge.ariaLabel', 'See collapsed breadcrumbs');
166
+
167
+ var ellipsisButton = ___EmotionJSX(EuiBreadcrumbContent, {
168
+ "aria-label": ariaLabel,
169
+ title: ariaLabel,
170
+ onClick: function onClick() {
171
+ return setIsPopoverOpen(!isPopoverOpen);
172
+ },
173
+ truncate: false,
174
+ text: ___EmotionJSX(React.Fragment, null, "\u2026 ", ___EmotionJSX(EuiIcon, {
175
+ type: "arrowDown",
176
+ size: "s"
177
+ })),
178
+ isFirstBreadcrumb: isFirstBreadcrumb,
179
+ type: type
180
+ });
181
+
182
+ return ___EmotionJSX(EuiBreadcrumb, {
183
+ css: cssStyles,
184
+ type: type
185
+ }, ___EmotionJSX(EuiPopover, {
186
+ button: ellipsisButton,
187
+ isOpen: isPopoverOpen,
188
+ closePopover: function closePopover() {
189
+ return setIsPopoverOpen(false);
190
+ }
191
+ }, children));
192
+ };
193
+ EuiBreadcrumbCollapsed.propTypes = {
194
+ type: PropTypes.oneOf(["page", "application"]).isRequired,
195
+ isFirstBreadcrumb: PropTypes.bool,
196
+ isLastBreadcrumb: PropTypes.bool,
197
+ isOnlyBreadcrumb: PropTypes.bool,
198
+ highlightLastBreadcrumb: PropTypes.bool
199
+ };
@@ -0,0 +1,61 @@
1
+ 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)."; }
2
+
3
+ /*
4
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
5
+ * or more contributor license agreements. Licensed under the Elastic License
6
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
7
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
8
+ * Side Public License, v 1.
9
+ */
10
+ import { css } from '@emotion/react';
11
+ import { transparentize } from '../../services/color';
12
+ import { euiFontSize, euiTextTruncate, euiFocusRing, logicalCSS } from '../../global_styling';
13
+
14
+ var _ref = process.env.NODE_ENV === "production" ? {
15
+ name: "1k7t4ns-isCollapsed",
16
+ styles: "flex-shrink:0;label:isCollapsed;"
17
+ } : {
18
+ name: "1k7t4ns-isCollapsed",
19
+ styles: "flex-shrink:0;label:isCollapsed;",
20
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
21
+ };
22
+
23
+ var _ref2 = process.env.NODE_ENV === "production" ? {
24
+ name: "p0bcva-isTruncated",
25
+ styles: "overflow:hidden;label:isTruncated;"
26
+ } : {
27
+ name: "p0bcva-isTruncated",
28
+ styles: "overflow:hidden;label:isTruncated;",
29
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
30
+ };
31
+
32
+ export var euiBreadcrumbStyles = function euiBreadcrumbStyles(euiThemeContext) {
33
+ // Styles cast to <li> element
34
+ var euiTheme = euiThemeContext.euiTheme;
35
+ return {
36
+ euiBreadcrumb: /*#__PURE__*/css("align-items:center;display:flex;", logicalCSS( // See .euiBreadcrumbs__list's negative margin-bottom
37
+ 'margin-bottom', euiTheme.size.xs), ";;label:euiBreadcrumb;"),
38
+ isTruncated: _ref2,
39
+ isCollapsed: _ref,
40
+ // Types
41
+ page: /*#__PURE__*/css("&:not(:last-of-type){&:after{background:", euiTheme.colors.lightShade, ";content:'';flex-shrink:0;", logicalCSS('margin-top', euiTheme.size.xs), " ", logicalCSS('margin-bottom', 0), " ", logicalCSS('margin-horizontal', euiTheme.size.s), " ", logicalCSS('height', euiTheme.size.base), " ", logicalCSS('width', '1px'), " transform:translateY(-1px) rotate(15deg);}};label:page;"),
42
+ application: /*#__PURE__*/css("&:not(:last-of-type){", logicalCSS('margin-right', "-".concat(euiTheme.size.xs)), ";};label:application;")
43
+ };
44
+ };
45
+ export var euiBreadcrumbContentStyles = function euiBreadcrumbContentStyles(euiThemeContext) {
46
+ // Styles cast to <a>, <span>, or collapsed <button> elements
47
+ var euiTheme = euiThemeContext.euiTheme;
48
+ return {
49
+ euiBreadcrumb__content: /*#__PURE__*/css("font-weight:", euiTheme.font.weight.medium, ";text-align:center;vertical-align:baseline;;label:euiBreadcrumb__content;"),
50
+ isTruncated: /*#__PURE__*/css(euiTextTruncate("".concat(parseFloat(euiTheme.size.base) * 10, "px")), ";;label:isTruncated;"),
51
+ isTruncatedLast: /*#__PURE__*/css(euiTextTruncate('none'), ";;label:isTruncatedLast;"),
52
+ // Types
53
+ page: /*#__PURE__*/css("&:is(a):focus{", euiFocusRing(euiTheme, 'inset'), ";}&:is(button):focus{", euiFocusRing(euiTheme, 'center'), ";};label:page;"),
54
+ application: /*#__PURE__*/css(euiFontSize(euiThemeContext, 'xs'), ";background-color:", transparentize(euiTheme.colors.darkestShade, 0.2), ";clip-path:polygon(\n 0 0,\n calc(100% - ", euiTheme.size.s, ") 0,\n 100% 50%,\n calc(100% - ", euiTheme.size.s, ") 100%,\n 0 100%,\n ", euiTheme.size.s, " 50%\n );color:", euiTheme.colors.darkestShade, ";line-height:", euiTheme.size.base, ";", logicalCSS('padding-vertical', euiTheme.size.xs), " ", logicalCSS('padding-horizontal', euiTheme.size.base), " &:is(a),&:is(button){background-color:", transparentize(euiTheme.colors.primary, 0.2), ";color:", euiTheme.colors.link, ";:focus{", euiFocusRing(euiTheme, 'inset'), ";:focus-visible{border-radius:", euiTheme.border.radius.medium, ";clip-path:none;}}};label:application;"),
55
+ applicationStyles: {
56
+ onlyChild: /*#__PURE__*/css("border-radius:", euiTheme.border.radius.medium, ";clip-path:none;", logicalCSS('padding-horizontal', euiTheme.size.m), ",;;label:onlyChild;"),
57
+ firstChild: /*#__PURE__*/css("border-radius:", euiTheme.border.radius.medium, " 0 0 ", euiTheme.border.radius.medium, ";clip-path:polygon(\n 0 0,\n calc(100% - ", euiTheme.size.s, ") 0,\n 100% 50%,\n calc(100% - ", euiTheme.size.s, ") 100%,\n 0 100%\n );", logicalCSS('padding-left', euiTheme.size.m), ",;;label:firstChild;"),
58
+ lastChild: /*#__PURE__*/css("border-radius:0 ", euiTheme.border.radius.medium, " ", euiTheme.border.radius.medium, " 0;clip-path:polygon(\n 0 0,\n 100% 0,\n 100% 100%,\n 0 100%,\n ", euiTheme.size.s, " 50%\n );", logicalCSS('padding-right', euiTheme.size.m), ",;;label:lastChild;")
59
+ }
60
+ };
61
+ };
@@ -1,5 +1,4 @@
1
- var _excluded = ["breadcrumbs", "className", "responsive", "truncate", "max"],
2
- _excluded2 = ["text", "href", "onClick", "truncate", "className"];
1
+ var _excluded = ["breadcrumbs", "className", "responsive", "truncate", "max", "type", "lastBreadcrumbIsCurrentPage"];
3
2
 
4
3
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5
4
 
@@ -9,20 +8,6 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
9
8
 
10
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
11
10
 
12
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
-
14
- import PropTypes from "prop-types";
15
-
16
- 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."); }
17
-
18
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
-
20
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
21
-
22
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
23
-
24
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
-
26
11
  /*
27
12
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
28
13
  * or more contributor license agreements. Licensed under the Elastic License
@@ -30,99 +15,19 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
30
15
  * in compliance with, at your election, the Elastic License 2.0 or the Server
31
16
  * Side Public License, v 1.
32
17
  */
33
- import React, { useEffect, useState } from 'react';
18
+ import React, { useMemo } from 'react';
19
+ import PropTypes from "prop-types";
34
20
  import classNames from 'classnames';
35
21
  import { useEuiI18n } from '../i18n';
36
- import { EuiInnerText } from '../inner_text';
37
- import { EuiLink } from '../link';
38
- import { EuiPopover } from '../popover';
39
- import { EuiIcon } from '../icon';
40
- import { throttle } from '../../services';
41
- import { getBreakpoint } from '../../services/breakpoint';
22
+ import { useEuiTheme, useCurrentEuiBreakpoint } from '../../services';
23
+ import { EuiBreadcrumb, EuiBreadcrumbContent, EuiBreadcrumbCollapsed } from './breadcrumb';
24
+ import { euiBreadcrumbsListStyles } from './breadcrumbs.styles';
42
25
  import { jsx as ___EmotionJSX } from "@emotion/react";
43
- var CONTENT_CLASSNAME = 'euiBreadcrumb__content';
44
26
  var responsiveDefault = {
45
27
  xs: 1,
46
28
  s: 2,
47
29
  m: 4
48
30
  };
49
-
50
- var limitBreadcrumbs = function limitBreadcrumbs(breadcrumbs, max, allBreadcrumbs) {
51
- var breadcrumbsAtStart = [];
52
- var breadcrumbsAtEnd = [];
53
- var limit = Math.min(max, breadcrumbs.length);
54
- var start = Math.floor(limit / 2);
55
- var overflowBreadcrumbs = allBreadcrumbs.slice(start, start + breadcrumbs.length - limit);
56
-
57
- if (overflowBreadcrumbs.length) {
58
- overflowBreadcrumbs[overflowBreadcrumbs.length - 1]['aria-current'] = 'false';
59
- }
60
-
61
- for (var i = 0; i < limit; i++) {
62
- // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased
63
- // towards breadcrumbs the end so that if max is an odd number, we'll have one more
64
- // breadcrumb visible at the end than at the beginning.
65
- var isEven = i % 2 === 0; // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a
66
- // half-iteration.
67
-
68
- var normalizedIndex = Math.floor(i * 0.5);
69
- var indexOfBreadcrumb = isEven ? breadcrumbs.length - 1 - normalizedIndex : normalizedIndex;
70
- var breadcrumb = breadcrumbs[indexOfBreadcrumb];
71
-
72
- if (isEven) {
73
- breadcrumbsAtEnd.unshift(breadcrumb);
74
- } else {
75
- breadcrumbsAtStart.push(breadcrumb);
76
- }
77
- }
78
-
79
- var EuiBreadcrumbCollapsed = function EuiBreadcrumbCollapsed() {
80
- var _useState = useState(false),
81
- _useState2 = _slicedToArray(_useState, 2),
82
- isPopoverOpen = _useState2[0],
83
- setIsPopoverOpen = _useState2[1];
84
-
85
- var ariaLabel = useEuiI18n('euiBreadcrumbs.collapsedBadge.ariaLabel', 'See collapsed breadcrumbs');
86
-
87
- var ellipsisButton = ___EmotionJSX(EuiLink, {
88
- className: CONTENT_CLASSNAME,
89
- color: "subdued",
90
- "aria-label": ariaLabel,
91
- title: ariaLabel,
92
- onClick: function onClick() {
93
- return setIsPopoverOpen(!isPopoverOpen);
94
- }
95
- }, "\u2026 ", ___EmotionJSX(EuiIcon, {
96
- type: "arrowDown",
97
- size: "s"
98
- }));
99
-
100
- return ___EmotionJSX("li", {
101
- className: "euiBreadcrumb euiBreadcrumb--collapsed"
102
- }, ___EmotionJSX(EuiPopover, {
103
- button: ellipsisButton,
104
- isOpen: isPopoverOpen,
105
- closePopover: function closePopover() {
106
- return setIsPopoverOpen(false);
107
- }
108
- }, ___EmotionJSX(EuiBreadcrumbs, {
109
- className: "euiBreadcrumbs__inPopover",
110
- breadcrumbs: overflowBreadcrumbs,
111
- responsive: false,
112
- truncate: false,
113
- max: 0
114
- })));
115
- };
116
-
117
- if (max < breadcrumbs.length) {
118
- breadcrumbsAtStart.push(___EmotionJSX(EuiBreadcrumbCollapsed, {
119
- key: "collapsed"
120
- }));
121
- }
122
-
123
- return [].concat(breadcrumbsAtStart, breadcrumbsAtEnd);
124
- };
125
-
126
31
  export var EuiBreadcrumbs = function EuiBreadcrumbs(_ref) {
127
32
  var breadcrumbs = _ref.breadcrumbs,
128
33
  className = _ref.className,
@@ -132,98 +37,57 @@ export var EuiBreadcrumbs = function EuiBreadcrumbs(_ref) {
132
37
  truncate = _ref$truncate === void 0 ? true : _ref$truncate,
133
38
  _ref$max = _ref.max,
134
39
  max = _ref$max === void 0 ? 5 : _ref$max,
40
+ _ref$type = _ref.type,
41
+ type = _ref$type === void 0 ? 'page' : _ref$type,
42
+ _ref$lastBreadcrumbIs = _ref.lastBreadcrumbIsCurrentPage,
43
+ lastBreadcrumbIsCurrentPage = _ref$lastBreadcrumbIs === void 0 ? true : _ref$lastBreadcrumbIs,
135
44
  rest = _objectWithoutProperties(_ref, _excluded);
136
45
 
137
46
  var ariaLabel = useEuiI18n('euiBreadcrumbs.nav.ariaLabel', 'Breadcrumbs');
138
-
139
- var _useState3 = useState(getBreakpoint(typeof window === 'undefined' ? -Infinity : window.innerWidth)),
140
- _useState4 = _slicedToArray(_useState3, 2),
141
- currentBreakpoint = _useState4[0],
142
- setCurrentBreakpoint = _useState4[1];
143
-
144
- var functionToCallOnWindowResize = throttle(function () {
145
- var newBreakpoint = getBreakpoint(window.innerWidth);
146
-
147
- if (newBreakpoint !== currentBreakpoint) {
148
- setCurrentBreakpoint(newBreakpoint);
149
- } // reacts every 50ms to resize changes and always gets the final update
150
-
151
- }, 50); // Add window resize handlers
152
-
153
- useEffect(function () {
154
- window.addEventListener('resize', functionToCallOnWindowResize);
155
- return function () {
156
- window.removeEventListener('resize', functionToCallOnWindowResize);
157
- };
158
- }, [responsive, functionToCallOnWindowResize]);
159
- var breadcrumbElements = breadcrumbs.map(function (breadcrumb, index) {
160
- var text = breadcrumb.text,
161
- href = breadcrumb.href,
162
- onClick = breadcrumb.onClick,
163
- truncate = breadcrumb.truncate,
164
- breadcrumbClassName = breadcrumb.className,
165
- breadcrumbRest = _objectWithoutProperties(breadcrumb, _excluded2);
166
-
167
- var isLastBreadcrumb = index === breadcrumbs.length - 1;
168
- var className = classNames('euiBreadcrumb', {
169
- 'euiBreadcrumb--last': isLastBreadcrumb,
170
- 'euiBreadcrumb--truncate': truncate
171
- });
172
- var linkProps = {
173
- className: classNames(CONTENT_CLASSNAME, breadcrumbClassName),
174
- 'aria-current': isLastBreadcrumb ? 'page' : undefined
175
- };
176
-
177
- var link = ___EmotionJSX(EuiInnerText, null, function (ref, innerText) {
178
- var title = innerText === '' ? undefined : innerText;
179
-
180
- if (!href && !onClick) {
181
- return ___EmotionJSX("span", _extends({
182
- ref: ref,
183
- title: title
184
- }, linkProps, breadcrumbRest), text);
185
- }
186
-
187
- return ___EmotionJSX(EuiLink, _extends({
188
- ref: ref,
189
- color: isLastBreadcrumb ? 'text' : 'subdued',
190
- onClick: onClick,
191
- href: href,
192
- title: title
193
- }, linkProps, breadcrumbRest), text);
47
+ var euiTheme = useEuiTheme();
48
+ var breadcrumbsListStyles = euiBreadcrumbsListStyles(euiTheme);
49
+ var cssBreadcrumbsListStyles = [breadcrumbsListStyles.euiBreadcrumbs__list, truncate && breadcrumbsListStyles.isTruncated];
50
+ var responsiveMax = useResponsiveMax(responsive, max);
51
+ var visibleBreadcrumbs = useMemo(function () {
52
+ var shouldCollapseBreadcrumbs = responsiveMax && breadcrumbs.length > responsiveMax;
53
+ return shouldCollapseBreadcrumbs ? limitBreadcrumbs(breadcrumbs, responsiveMax) : breadcrumbs;
54
+ }, [breadcrumbs, responsiveMax]);
55
+ var breadcrumbChildren = useMemo(function () {
56
+ return visibleBreadcrumbs.map(function (breadcrumb, index) {
57
+ var isFirstBreadcrumb = index === 0;
58
+ var isLastBreadcrumb = index === visibleBreadcrumbs.length - 1;
59
+ var isOnlyBreadcrumb = visibleBreadcrumbs.length === 1;
60
+ var sharedProps = {
61
+ type: type,
62
+ truncate: truncate
63
+ };
64
+ return breadcrumb.isCollapsedButton ? ___EmotionJSX(EuiBreadcrumbCollapsed, _extends({
65
+ key: "collapsed"
66
+ }, sharedProps, {
67
+ isFirstBreadcrumb: isFirstBreadcrumb
68
+ }), ___EmotionJSX(EuiBreadcrumbs, {
69
+ breadcrumbs: breadcrumb.overflowBreadcrumbs,
70
+ lastBreadcrumbIsCurrentPage: false,
71
+ responsive: false,
72
+ truncate: false,
73
+ max: 0
74
+ })) : ___EmotionJSX(EuiBreadcrumb, _extends({
75
+ key: index
76
+ }, sharedProps), ___EmotionJSX(EuiBreadcrumbContent, _extends({
77
+ isFirstBreadcrumb: isFirstBreadcrumb,
78
+ isLastBreadcrumb: isLastBreadcrumb,
79
+ isOnlyBreadcrumb: isOnlyBreadcrumb,
80
+ highlightLastBreadcrumb: isLastBreadcrumb && lastBreadcrumbIsCurrentPage
81
+ }, sharedProps, breadcrumb)));
194
82
  });
195
-
196
- return ___EmotionJSX("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 = _typeof(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 = classNames('euiBreadcrumbs', className, {
219
- 'euiBreadcrumbs--truncate': truncate
220
- });
83
+ }, [visibleBreadcrumbs, truncate, type, lastBreadcrumbIsCurrentPage]);
221
84
  return ___EmotionJSX("nav", _extends({
222
85
  "aria-label": ariaLabel,
223
- className: classes
86
+ className: classNames('euiBreadcrumbs', className)
224
87
  }, rest), ___EmotionJSX("ol", {
225
- className: "euiBreadcrumbs__list"
226
- }, limitedBreadcrumbs));
88
+ className: "euiBreadcrumbs__list",
89
+ css: cssBreadcrumbsListStyles
90
+ }, breadcrumbChildren));
227
91
  };
228
92
  EuiBreadcrumbs.propTypes = {
229
93
  className: PropTypes.string,
@@ -262,6 +126,7 @@ EuiBreadcrumbs.propTypes = {
262
126
  "aria-label": PropTypes.string,
263
127
  "data-test-subj": PropTypes.string,
264
128
  href: PropTypes.string,
129
+ rel: PropTypes.string,
265
130
  onClick: PropTypes.func,
266
131
 
267
132
  /**
@@ -283,5 +148,68 @@ EuiBreadcrumbs.propTypes = {
283
148
  * Override the existing `aria-current` which defaults to `page` for the last breadcrumb
284
149
  */
285
150
  "aria-current": PropTypes.any
286
- }).isRequired).isRequired
151
+ }).isRequired).isRequired,
152
+
153
+ /**
154
+ * Determines breadcrumbs appearance, with `page` being the default styling.
155
+ * Application breadcrumbs should only be once per page, in (e.g.) EuiHeader
156
+ */
157
+ type: PropTypes.oneOf(["page", "application"]),
158
+
159
+ /**
160
+ * Whether the last breadcrumb should visually (and accessibly, to screen readers)
161
+ * be highlighted as the current page. Defaults to true.
162
+ */
163
+ lastBreadcrumbIsCurrentPage: PropTypes.bool
164
+ };
165
+ export var useResponsiveMax = function useResponsiveMax(responsive, max) {
166
+ // Use the default object if they simply passed `true` for responsive
167
+ var responsiveObject = _typeof(responsive) === 'object' ? responsive : responsiveDefault; // The max property collapses any breadcrumbs past the max quantity.
168
+ // This is the same behavior we want for responsiveness.
169
+ // So calculate the max value based on the combination of `max` and `responsive`
170
+
171
+ var responsiveMax = max; // Set the calculated max to the number associated with the currentBreakpoint key if it exists
172
+
173
+ var currentBreakpoint = useCurrentEuiBreakpoint();
174
+
175
+ if (responsive && currentBreakpoint && responsiveObject[currentBreakpoint]) {
176
+ responsiveMax = responsiveObject[currentBreakpoint];
177
+ } // Final check is to make sure max is used over a larger breakpoint value
178
+
179
+
180
+ if (max && responsiveMax) {
181
+ responsiveMax = max < responsiveMax ? max : responsiveMax;
182
+ }
183
+
184
+ return responsiveMax;
185
+ };
186
+ export var limitBreadcrumbs = function limitBreadcrumbs(breadcrumbs, max) {
187
+ var breadcrumbsAtStart = [];
188
+ var breadcrumbsAtEnd = [];
189
+ var limit = Math.min(max, breadcrumbs.length);
190
+ var start = Math.floor(limit / 2);
191
+ var overflowBreadcrumbs = breadcrumbs.slice(start, start + breadcrumbs.length - limit);
192
+
193
+ for (var i = 0; i < limit; i++) {
194
+ // We'll alternate with displaying breadcrumbs at the end and at the start, but be biased
195
+ // towards breadcrumbs the end so that if max is an odd number, we'll have one more
196
+ // breadcrumb visible at the end than at the beginning.
197
+ var isEven = i % 2 === 0; // We're picking breadcrumbs from the front AND the back, so we treat each iteration as a
198
+ // half-iteration.
199
+
200
+ var normalizedIndex = Math.floor(i * 0.5);
201
+ var indexOfBreadcrumb = isEven ? breadcrumbs.length - 1 - normalizedIndex : normalizedIndex;
202
+ var breadcrumb = breadcrumbs[indexOfBreadcrumb];
203
+
204
+ if (isEven) {
205
+ breadcrumbsAtEnd.unshift(breadcrumb);
206
+ } else {
207
+ breadcrumbsAtStart.push(breadcrumb);
208
+ }
209
+ }
210
+
211
+ return [].concat(breadcrumbsAtStart, [{
212
+ isCollapsedButton: true,
213
+ overflowBreadcrumbs: overflowBreadcrumbs
214
+ }], breadcrumbsAtEnd);
287
215
  };
@@ -0,0 +1,30 @@
1
+ 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)."; }
2
+
3
+ /*
4
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
5
+ * or more contributor license agreements. Licensed under the Elastic License
6
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
7
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
8
+ * Side Public License, v 1.
9
+ */
10
+ import { css } from '@emotion/react';
11
+ import { euiFontSize, logicalCSS } from '../../global_styling';
12
+
13
+ var _ref = process.env.NODE_ENV === "production" ? {
14
+ name: "1bwn7gf-isTruncated",
15
+ styles: "flex-wrap:nowrap;white-space:nowrap;label:isTruncated;"
16
+ } : {
17
+ name: "1bwn7gf-isTruncated",
18
+ styles: "flex-wrap:nowrap;white-space:nowrap;label:isTruncated;",
19
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
20
+ };
21
+
22
+ export var euiBreadcrumbsListStyles = function euiBreadcrumbsListStyles(euiThemeContext) {
23
+ // Styles cast to the <ol> element
24
+ var euiTheme = euiThemeContext.euiTheme;
25
+ return {
26
+ euiBreadcrumbs__list: /*#__PURE__*/css(euiFontSize(euiThemeContext, 's'), ";align-items:center;display:flex;flex-wrap:wrap;line-height:", euiTheme.size.l, ";", logicalCSS( // Add vertical space between breadcrumbs, but make sure the whole breadcrumb set doesn't add space below itself
27
+ 'margin-bottom', "-".concat(euiTheme.size.xs)), " ", logicalCSS('min-width', 0), ";;label:euiBreadcrumbs__list;"),
28
+ isTruncated: _ref
29
+ };
30
+ };