@elastic/eui 88.1.0 → 88.3.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 (456) hide show
  1. package/dist/eui_charts_theme.js.map +1 -1
  2. package/dist/eui_theme_dark.css +9 -61
  3. package/dist/eui_theme_dark.min.css +1 -1
  4. package/dist/eui_theme_light.css +9 -61
  5. package/dist/eui_theme_light.min.css +1 -1
  6. package/es/components/accordion/accordion.js +50 -198
  7. package/es/components/accordion/accordion.styles.js +11 -83
  8. package/es/components/accordion/accordion_children/accordion_children.js +101 -0
  9. package/es/components/accordion/accordion_children/accordion_children.styles.js +39 -0
  10. package/es/components/accordion/accordion_children/accordion_children_loading.js +31 -0
  11. package/es/components/accordion/accordion_children/index.js +9 -0
  12. package/es/components/accordion/accordion_trigger/accordion_arrow.js +41 -0
  13. package/es/components/accordion/accordion_trigger/accordion_arrow.styles.js +46 -0
  14. package/es/components/accordion/accordion_trigger/accordion_button.js +51 -0
  15. package/es/components/accordion/accordion_trigger/accordion_button.styles.js +26 -0
  16. package/es/components/accordion/accordion_trigger/accordion_trigger.js +87 -0
  17. package/es/components/accordion/accordion_trigger/index.js +9 -0
  18. package/es/components/avatar/avatar.js +1 -1
  19. package/es/components/badge/badge.js +1 -1
  20. package/es/components/badge/beta_badge/beta_badge.js +1 -1
  21. package/es/components/basic_table/basic_table.js +1 -1
  22. package/es/components/basic_table/collapsed_item_actions.js +1 -1
  23. package/es/components/basic_table/in_memory_table.js +1 -1
  24. package/es/components/button/button_display/_button_display.js +1 -1
  25. package/es/components/button/button_display/_button_display_content.js +1 -1
  26. package/es/components/button/button_empty/button_empty.js +1 -1
  27. package/es/components/button/button_group/button_group.js +1 -1
  28. package/es/components/button/button_group/button_group_button.js +1 -1
  29. package/es/components/button/button_icon/button_icon.js +1 -1
  30. package/es/components/call_out/call_out.js +1 -1
  31. package/es/components/card/card.js +1 -1
  32. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +11 -3
  33. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.styles.js +1 -1
  34. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  35. package/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  36. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +2 -2
  37. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  38. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +3 -3
  39. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +2 -2
  40. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  41. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +3 -3
  42. package/es/components/comment_list/comment.js +2 -2
  43. package/es/components/comment_list/comment_event.js +1 -1
  44. package/es/components/comment_list/comment_list.js +2 -2
  45. package/es/components/comment_list/comment_timeline.js +1 -1
  46. package/es/components/datagrid/body/data_grid_body.js +13 -13
  47. package/es/components/datagrid/body/data_grid_body_custom.js +13 -13
  48. package/es/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  49. package/es/components/datagrid/body/data_grid_cell.js +24 -24
  50. package/es/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  51. package/es/components/datagrid/body/header/data_grid_header_row.js +13 -13
  52. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  53. package/es/components/datagrid/data_grid.js +13 -13
  54. package/es/components/datagrid/utils/in_memory.js +12 -12
  55. package/es/components/date_picker/date_picker.js +2 -2
  56. package/es/components/date_picker/date_picker_range.js +1 -1
  57. package/es/components/empty_prompt/empty_prompt.js +1 -1
  58. package/es/components/facet/facet_button.js +1 -1
  59. package/es/components/flyout/flyout.styles.js +1 -1
  60. package/es/components/form/field_number/field_number.js +1 -1
  61. package/es/components/form/field_text/field_text.js +2 -2
  62. package/es/components/form/form_control_layout/form_control_layout.js +2 -2
  63. package/es/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  64. package/es/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  65. package/es/components/header/header.js +120 -25
  66. package/es/components/header/header.styles.js +1 -1
  67. package/es/components/header/header_links/header_link.js +1 -1
  68. package/es/components/header/header_links/header_links.js +1 -1
  69. package/es/components/header/header_logo/header_logo.js +1 -1
  70. package/es/components/header/header_section/header_section_item_button.js +1 -1
  71. package/es/components/icon/assets/grabOmnidirectional.js +33 -0
  72. package/es/components/icon/assets/transitionLeftIn.js +36 -0
  73. package/es/components/icon/assets/transitionLeftOut.js +36 -0
  74. package/es/components/icon/assets/transitionTopIn.js +36 -0
  75. package/es/components/icon/assets/transitionTopOut.js +36 -0
  76. package/es/components/icon/icon.js +1 -1
  77. package/es/components/icon/icon_map.js +5 -0
  78. package/es/components/index.js +1 -0
  79. package/es/components/inline_edit/inline_edit_form.js +49 -13
  80. package/es/components/inline_edit/inline_edit_text.js +22 -23
  81. package/es/components/inline_edit/inline_edit_title.js +22 -23
  82. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -1
  83. package/es/components/list_group/list_group.js +2 -2
  84. package/es/components/list_group/list_group_item.js +3 -3
  85. package/es/components/list_group/list_group_item_extra_action.js +1 -1
  86. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  87. package/es/components/loading/loading_logo.js +1 -1
  88. package/es/components/markdown_editor/markdown_editor.js +1 -1
  89. package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  90. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  91. package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  92. package/es/components/notification/notification_event.js +2 -2
  93. package/es/components/notification/notification_event_meta.js +1 -1
  94. package/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  95. package/es/components/page/page_header/page_header_content.js +1 -1
  96. package/es/components/page/page_sidebar/page_sidebar.js +2 -4
  97. package/es/components/page_template/page_template.js +4 -31
  98. package/es/components/pagination/pagination_button.js +1 -1
  99. package/es/components/panel/split_panel/split_panel.js +9 -7
  100. package/es/components/panel/split_panel/split_panel.styles.js +40 -0
  101. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  102. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  103. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  104. package/es/components/suggest/suggest.js +1 -1
  105. package/es/components/suggest/suggest_item.js +1 -1
  106. package/es/components/table/table_header_button.js +1 -1
  107. package/es/components/text_truncate/index.js +10 -0
  108. package/es/components/text_truncate/text_truncate.js +232 -0
  109. package/es/components/text_truncate/text_truncate.styles.js +49 -0
  110. package/es/components/text_truncate/utils.js +348 -0
  111. package/es/components/timeline/timeline_item_icon.js +1 -1
  112. package/es/components/toast/global_toast_list.js +51 -3
  113. package/es/components/toast/global_toast_list.styles.js +3 -2
  114. package/es/components/toast/toast.js +1 -1
  115. package/es/components/tool_tip/icon_tip.js +1 -1
  116. package/es/services/theme/context.js +3 -1
  117. package/es/services/theme/hooks.js +19 -1
  118. package/es/services/theme/index.js +1 -1
  119. package/es/services/theme/provider.js +37 -8
  120. package/eui.d.ts +432 -53
  121. package/i18ntokens.json +64 -28
  122. package/lib/components/accordion/accordion.js +49 -197
  123. package/lib/components/accordion/accordion.styles.js +20 -96
  124. package/lib/components/accordion/accordion_children/accordion_children.js +111 -0
  125. package/lib/components/accordion/accordion_children/accordion_children.styles.js +45 -0
  126. package/lib/components/accordion/accordion_children/accordion_children_loading.js +38 -0
  127. package/lib/components/accordion/accordion_children/index.js +12 -0
  128. package/lib/components/accordion/accordion_trigger/accordion_arrow.js +48 -0
  129. package/lib/components/accordion/accordion_trigger/accordion_arrow.styles.js +51 -0
  130. package/lib/components/accordion/accordion_trigger/accordion_button.js +58 -0
  131. package/lib/components/accordion/accordion_trigger/accordion_button.styles.js +33 -0
  132. package/lib/components/accordion/accordion_trigger/accordion_trigger.js +93 -0
  133. package/lib/components/accordion/accordion_trigger/index.js +12 -0
  134. package/lib/components/avatar/avatar.js +1 -1
  135. package/lib/components/badge/badge.js +1 -1
  136. package/lib/components/badge/beta_badge/beta_badge.js +1 -1
  137. package/lib/components/basic_table/basic_table.js +1 -1
  138. package/lib/components/basic_table/collapsed_item_actions.js +1 -1
  139. package/lib/components/basic_table/in_memory_table.js +1 -1
  140. package/lib/components/button/button_display/_button_display.js +1 -1
  141. package/lib/components/button/button_display/_button_display_content.js +1 -1
  142. package/lib/components/button/button_empty/button_empty.js +1 -1
  143. package/lib/components/button/button_group/button_group.js +1 -1
  144. package/lib/components/button/button_group/button_group_button.js +1 -1
  145. package/lib/components/button/button_icon/button_icon.js +1 -1
  146. package/lib/components/call_out/call_out.js +1 -1
  147. package/lib/components/card/card.js +1 -1
  148. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +11 -3
  149. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.styles.js +1 -1
  150. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  151. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  152. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +2 -2
  153. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  154. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +3 -3
  155. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +2 -2
  156. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  157. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +3 -3
  158. package/lib/components/comment_list/comment.js +2 -2
  159. package/lib/components/comment_list/comment_event.js +1 -1
  160. package/lib/components/comment_list/comment_list.js +2 -2
  161. package/lib/components/comment_list/comment_timeline.js +1 -1
  162. package/lib/components/datagrid/body/data_grid_body.js +13 -13
  163. package/lib/components/datagrid/body/data_grid_body_custom.js +13 -13
  164. package/lib/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  165. package/lib/components/datagrid/body/data_grid_cell.js +24 -24
  166. package/lib/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  167. package/lib/components/datagrid/body/header/data_grid_header_row.js +13 -13
  168. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  169. package/lib/components/datagrid/data_grid.js +13 -13
  170. package/lib/components/datagrid/utils/in_memory.js +12 -12
  171. package/lib/components/date_picker/date_picker.js +2 -2
  172. package/lib/components/date_picker/date_picker_range.js +1 -1
  173. package/lib/components/empty_prompt/empty_prompt.js +1 -1
  174. package/lib/components/facet/facet_button.js +1 -1
  175. package/lib/components/flyout/flyout.styles.js +1 -1
  176. package/lib/components/form/field_number/field_number.js +1 -1
  177. package/lib/components/form/field_text/field_text.js +2 -2
  178. package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
  179. package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  180. package/lib/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  181. package/lib/components/header/header.js +120 -23
  182. package/lib/components/header/header.styles.js +1 -1
  183. package/lib/components/header/header_links/header_link.js +1 -1
  184. package/lib/components/header/header_links/header_links.js +1 -1
  185. package/lib/components/header/header_logo/header_logo.js +1 -1
  186. package/lib/components/header/header_section/header_section_item_button.js +1 -1
  187. package/lib/components/icon/assets/grabOmnidirectional.js +41 -0
  188. package/lib/components/icon/assets/transitionLeftIn.js +44 -0
  189. package/lib/components/icon/assets/transitionLeftOut.js +44 -0
  190. package/lib/components/icon/assets/transitionTopIn.js +44 -0
  191. package/lib/components/icon/assets/transitionTopOut.js +44 -0
  192. package/lib/components/icon/icon.js +1 -1
  193. package/lib/components/icon/icon_map.js +5 -0
  194. package/lib/components/icon/svgs/grabOmnidirectional.svg +3 -0
  195. package/lib/components/icon/svgs/transitionLeftIn.svg +4 -0
  196. package/lib/components/icon/svgs/transitionLeftOut.svg +4 -0
  197. package/lib/components/icon/svgs/transitionTopIn.svg +4 -0
  198. package/lib/components/icon/svgs/transitionTopOut.svg +4 -0
  199. package/lib/components/index.js +11 -0
  200. package/lib/components/inline_edit/inline_edit_form.js +58 -20
  201. package/lib/components/inline_edit/inline_edit_text.js +22 -23
  202. package/lib/components/inline_edit/inline_edit_title.js +22 -23
  203. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -1
  204. package/lib/components/list_group/list_group.js +2 -2
  205. package/lib/components/list_group/list_group_item.js +3 -3
  206. package/lib/components/list_group/list_group_item_extra_action.js +1 -1
  207. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  208. package/lib/components/loading/loading_logo.js +1 -1
  209. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  210. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  211. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  212. package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  213. package/lib/components/notification/notification_event.js +2 -2
  214. package/lib/components/notification/notification_event_meta.js +1 -1
  215. package/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  216. package/lib/components/page/page_header/page_header_content.js +1 -1
  217. package/lib/components/page/page_sidebar/page_sidebar.js +2 -4
  218. package/lib/components/page_template/page_template.js +2 -29
  219. package/lib/components/panel/split_panel/split_panel.js +9 -7
  220. package/lib/components/panel/split_panel/split_panel.styles.js +46 -0
  221. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  222. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  223. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  224. package/lib/components/suggest/suggest.js +1 -1
  225. package/lib/components/suggest/suggest_item.js +1 -1
  226. package/lib/components/table/table_header_button.js +1 -1
  227. package/lib/components/text_truncate/index.js +25 -0
  228. package/lib/components/text_truncate/text_truncate.js +242 -0
  229. package/lib/components/text_truncate/text_truncate.styles.js +54 -0
  230. package/lib/components/text_truncate/utils.js +352 -0
  231. package/lib/components/timeline/timeline_item_icon.js +1 -1
  232. package/lib/components/toast/global_toast_list.js +53 -4
  233. package/lib/components/toast/global_toast_list.styles.js +3 -2
  234. package/lib/components/toast/toast.js +1 -1
  235. package/lib/components/tool_tip/icon_tip.js +1 -1
  236. package/lib/services/theme/context.js +3 -1
  237. package/lib/services/theme/hooks.js +21 -2
  238. package/lib/services/theme/index.js +6 -0
  239. package/lib/services/theme/provider.js +62 -35
  240. package/optimize/es/components/accordion/accordion.js +40 -196
  241. package/optimize/es/components/accordion/accordion.styles.js +11 -83
  242. package/optimize/es/components/accordion/accordion_children/accordion_children.js +91 -0
  243. package/optimize/es/components/accordion/accordion_children/accordion_children.styles.js +39 -0
  244. package/optimize/es/components/accordion/accordion_children/accordion_children_loading.js +31 -0
  245. package/optimize/es/components/accordion/accordion_children/index.js +9 -0
  246. package/optimize/es/components/accordion/accordion_trigger/accordion_arrow.js +36 -0
  247. package/optimize/es/components/accordion/accordion_trigger/accordion_arrow.styles.js +46 -0
  248. package/optimize/es/components/accordion/accordion_trigger/accordion_button.js +45 -0
  249. package/optimize/es/components/accordion/accordion_trigger/accordion_button.styles.js +26 -0
  250. package/optimize/es/components/accordion/accordion_trigger/accordion_trigger.js +80 -0
  251. package/optimize/es/components/accordion/accordion_trigger/index.js +9 -0
  252. package/optimize/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.styles.js +1 -1
  253. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  254. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  255. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  256. package/optimize/es/components/flyout/flyout.styles.js +1 -1
  257. package/optimize/es/components/header/header.js +75 -25
  258. package/optimize/es/components/header/header.styles.js +1 -1
  259. package/optimize/es/components/icon/assets/grabOmnidirectional.js +32 -0
  260. package/optimize/es/components/icon/assets/transitionLeftIn.js +35 -0
  261. package/optimize/es/components/icon/assets/transitionLeftOut.js +35 -0
  262. package/optimize/es/components/icon/assets/transitionTopIn.js +35 -0
  263. package/optimize/es/components/icon/assets/transitionTopOut.js +35 -0
  264. package/optimize/es/components/icon/icon_map.js +5 -0
  265. package/optimize/es/components/index.js +1 -0
  266. package/optimize/es/components/inline_edit/inline_edit_form.js +32 -12
  267. package/optimize/es/components/inline_edit/inline_edit_text.js +6 -22
  268. package/optimize/es/components/inline_edit/inline_edit_title.js +6 -22
  269. package/optimize/es/components/list_group/list_group_item.js +1 -1
  270. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  271. package/optimize/es/components/page/page_sidebar/page_sidebar.js +2 -4
  272. package/optimize/es/components/page_template/page_template.js +4 -26
  273. package/optimize/es/components/panel/split_panel/split_panel.js +9 -7
  274. package/optimize/es/components/panel/split_panel/split_panel.styles.js +40 -0
  275. package/optimize/es/components/text_truncate/index.js +10 -0
  276. package/optimize/es/components/text_truncate/text_truncate.js +148 -0
  277. package/optimize/es/components/text_truncate/text_truncate.styles.js +49 -0
  278. package/optimize/es/components/text_truncate/utils.js +337 -0
  279. package/optimize/es/components/toast/global_toast_list.js +39 -2
  280. package/optimize/es/components/toast/global_toast_list.styles.js +3 -2
  281. package/optimize/es/services/theme/context.js +3 -1
  282. package/optimize/es/services/theme/hooks.js +19 -1
  283. package/optimize/es/services/theme/index.js +1 -1
  284. package/optimize/es/services/theme/provider.js +37 -8
  285. package/optimize/lib/components/accordion/accordion.js +39 -195
  286. package/optimize/lib/components/accordion/accordion.styles.js +20 -96
  287. package/optimize/lib/components/accordion/accordion_children/accordion_children.js +101 -0
  288. package/optimize/lib/components/accordion/accordion_children/accordion_children.styles.js +45 -0
  289. package/optimize/lib/components/accordion/accordion_children/accordion_children_loading.js +38 -0
  290. package/optimize/lib/components/accordion/accordion_children/index.js +12 -0
  291. package/optimize/lib/components/accordion/accordion_trigger/accordion_arrow.js +43 -0
  292. package/optimize/lib/components/accordion/accordion_trigger/accordion_arrow.styles.js +51 -0
  293. package/optimize/lib/components/accordion/accordion_trigger/accordion_button.js +52 -0
  294. package/optimize/lib/components/accordion/accordion_trigger/accordion_button.styles.js +33 -0
  295. package/optimize/lib/components/accordion/accordion_trigger/accordion_trigger.js +86 -0
  296. package/optimize/lib/components/accordion/accordion_trigger/index.js +12 -0
  297. package/optimize/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.styles.js +1 -1
  298. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  299. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  300. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  301. package/optimize/lib/components/flyout/flyout.styles.js +1 -1
  302. package/optimize/lib/components/header/header.js +77 -24
  303. package/optimize/lib/components/header/header.styles.js +1 -1
  304. package/optimize/lib/components/icon/assets/grabOmnidirectional.js +41 -0
  305. package/optimize/lib/components/icon/assets/transitionLeftIn.js +44 -0
  306. package/optimize/lib/components/icon/assets/transitionLeftOut.js +44 -0
  307. package/optimize/lib/components/icon/assets/transitionTopIn.js +44 -0
  308. package/optimize/lib/components/icon/assets/transitionTopOut.js +44 -0
  309. package/optimize/lib/components/icon/icon_map.js +5 -0
  310. package/optimize/lib/components/icon/svgs/grabOmnidirectional.svg +3 -0
  311. package/optimize/lib/components/icon/svgs/transitionLeftIn.svg +4 -0
  312. package/optimize/lib/components/icon/svgs/transitionLeftOut.svg +4 -0
  313. package/optimize/lib/components/icon/svgs/transitionTopIn.svg +4 -0
  314. package/optimize/lib/components/icon/svgs/transitionTopOut.svg +4 -0
  315. package/optimize/lib/components/index.js +11 -0
  316. package/optimize/lib/components/inline_edit/inline_edit_form.js +33 -16
  317. package/optimize/lib/components/inline_edit/inline_edit_text.js +6 -22
  318. package/optimize/lib/components/inline_edit/inline_edit_title.js +6 -22
  319. package/optimize/lib/components/list_group/list_group_item.js +1 -1
  320. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  321. package/optimize/lib/components/page/page_sidebar/page_sidebar.js +2 -4
  322. package/optimize/lib/components/page_template/page_template.js +2 -24
  323. package/optimize/lib/components/panel/split_panel/split_panel.js +9 -7
  324. package/optimize/lib/components/panel/split_panel/split_panel.styles.js +46 -0
  325. package/optimize/lib/components/text_truncate/index.js +25 -0
  326. package/optimize/lib/components/text_truncate/text_truncate.js +158 -0
  327. package/optimize/lib/components/text_truncate/text_truncate.styles.js +54 -0
  328. package/optimize/lib/components/text_truncate/utils.js +342 -0
  329. package/optimize/lib/components/toast/global_toast_list.js +41 -3
  330. package/optimize/lib/components/toast/global_toast_list.styles.js +3 -2
  331. package/optimize/lib/services/theme/context.js +3 -1
  332. package/optimize/lib/services/theme/hooks.js +21 -2
  333. package/optimize/lib/services/theme/index.js +6 -0
  334. package/optimize/lib/services/theme/provider.js +62 -35
  335. package/package.json +3 -3
  336. package/src/components/datagrid/_data_grid.scss +13 -2
  337. package/src/components/index.scss +0 -2
  338. package/src/global_styling/mixins/_header.scss +2 -0
  339. package/test-env/components/accordion/accordion.js +49 -197
  340. package/test-env/components/accordion/accordion.styles.js +20 -96
  341. package/test-env/components/accordion/accordion_children/accordion_children.js +105 -0
  342. package/test-env/components/accordion/accordion_children/accordion_children.styles.js +45 -0
  343. package/test-env/components/accordion/accordion_children/accordion_children_loading.js +38 -0
  344. package/test-env/components/accordion/accordion_children/index.js +12 -0
  345. package/test-env/components/accordion/accordion_trigger/accordion_arrow.js +47 -0
  346. package/test-env/components/accordion/accordion_trigger/accordion_arrow.styles.js +51 -0
  347. package/test-env/components/accordion/accordion_trigger/accordion_button.js +52 -0
  348. package/test-env/components/accordion/accordion_trigger/accordion_button.styles.js +33 -0
  349. package/test-env/components/accordion/accordion_trigger/accordion_trigger.js +93 -0
  350. package/test-env/components/accordion/accordion_trigger/index.js +12 -0
  351. package/test-env/components/avatar/avatar.js +1 -1
  352. package/test-env/components/badge/badge.js +1 -1
  353. package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
  354. package/test-env/components/basic_table/basic_table.js +1 -1
  355. package/test-env/components/basic_table/collapsed_item_actions.js +1 -1
  356. package/test-env/components/basic_table/in_memory_table.js +1 -1
  357. package/test-env/components/button/button_display/_button_display.js +1 -1
  358. package/test-env/components/button/button_display/_button_display_content.js +1 -1
  359. package/test-env/components/button/button_empty/button_empty.js +1 -1
  360. package/test-env/components/button/button_group/button_group.js +1 -1
  361. package/test-env/components/button/button_group/button_group_button.js +1 -1
  362. package/test-env/components/button/button_icon/button_icon.js +1 -1
  363. package/test-env/components/call_out/call_out.js +1 -1
  364. package/test-env/components/card/card.js +1 -1
  365. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +11 -3
  366. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.styles.js +1 -1
  367. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  368. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  369. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +2 -2
  370. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  371. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +3 -3
  372. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +2 -2
  373. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -1
  374. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +3 -3
  375. package/test-env/components/comment_list/comment.js +2 -2
  376. package/test-env/components/comment_list/comment_event.js +1 -1
  377. package/test-env/components/comment_list/comment_list.js +2 -2
  378. package/test-env/components/comment_list/comment_timeline.js +1 -1
  379. package/test-env/components/datagrid/body/data_grid_body.js +13 -13
  380. package/test-env/components/datagrid/body/data_grid_body_custom.js +13 -13
  381. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +13 -13
  382. package/test-env/components/datagrid/body/data_grid_cell.js +24 -24
  383. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  384. package/test-env/components/datagrid/body/header/data_grid_header_row.js +13 -13
  385. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  386. package/test-env/components/datagrid/data_grid.js +13 -13
  387. package/test-env/components/datagrid/utils/in_memory.js +12 -12
  388. package/test-env/components/date_picker/date_picker.js +2 -2
  389. package/test-env/components/date_picker/date_picker_range.js +1 -1
  390. package/test-env/components/empty_prompt/empty_prompt.js +1 -1
  391. package/test-env/components/facet/facet_button.js +1 -1
  392. package/test-env/components/flyout/flyout.styles.js +1 -1
  393. package/test-env/components/form/field_number/field_number.js +1 -1
  394. package/test-env/components/form/field_text/field_text.js +2 -2
  395. package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
  396. package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  397. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  398. package/test-env/components/header/header.js +113 -23
  399. package/test-env/components/header/header.styles.js +1 -1
  400. package/test-env/components/header/header_links/header_link.js +1 -1
  401. package/test-env/components/header/header_links/header_links.js +1 -1
  402. package/test-env/components/header/header_logo/header_logo.js +1 -1
  403. package/test-env/components/header/header_section/header_section_item_button.js +1 -1
  404. package/test-env/components/icon/assets/grabOmnidirectional.js +41 -0
  405. package/test-env/components/icon/assets/transitionLeftIn.js +44 -0
  406. package/test-env/components/icon/assets/transitionLeftOut.js +44 -0
  407. package/test-env/components/icon/assets/transitionTopIn.js +44 -0
  408. package/test-env/components/icon/assets/transitionTopOut.js +44 -0
  409. package/test-env/components/icon/icon_map.js +5 -0
  410. package/test-env/components/index.js +11 -0
  411. package/test-env/components/inline_edit/inline_edit_form.js +49 -17
  412. package/test-env/components/inline_edit/inline_edit_text.js +22 -23
  413. package/test-env/components/inline_edit/inline_edit_title.js +22 -23
  414. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -1
  415. package/test-env/components/list_group/list_group.js +2 -2
  416. package/test-env/components/list_group/list_group_item.js +3 -3
  417. package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
  418. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  419. package/test-env/components/loading/loading_logo.js +1 -1
  420. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  421. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  422. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  423. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  424. package/test-env/components/notification/notification_event.js +2 -2
  425. package/test-env/components/notification/notification_event_meta.js +1 -1
  426. package/test-env/components/overlay_mask/overlay_mask.styles.js +1 -1
  427. package/test-env/components/page/page_header/page_header_content.js +1 -1
  428. package/test-env/components/page/page_sidebar/page_sidebar.js +2 -4
  429. package/test-env/components/page_template/page_template.js +2 -24
  430. package/test-env/components/panel/split_panel/split_panel.js +9 -7
  431. package/test-env/components/panel/split_panel/split_panel.styles.js +46 -0
  432. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  433. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  434. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  435. package/test-env/components/suggest/suggest.js +1 -1
  436. package/test-env/components/suggest/suggest_item.js +1 -1
  437. package/test-env/components/table/table_header_button.js +1 -1
  438. package/test-env/components/text_truncate/index.js +25 -0
  439. package/test-env/components/text_truncate/text_truncate.js +236 -0
  440. package/test-env/components/text_truncate/text_truncate.styles.js +54 -0
  441. package/test-env/components/text_truncate/utils.js +342 -0
  442. package/test-env/components/timeline/timeline_item_icon.js +1 -1
  443. package/test-env/components/toast/global_toast_list.js +53 -4
  444. package/test-env/components/toast/global_toast_list.styles.js +3 -2
  445. package/test-env/components/toast/toast.js +1 -1
  446. package/test-env/components/tool_tip/icon_tip.js +1 -1
  447. package/test-env/services/theme/context.js +3 -1
  448. package/test-env/services/theme/hooks.js +21 -2
  449. package/test-env/services/theme/index.js +6 -0
  450. package/test-env/services/theme/provider.js +62 -35
  451. package/src/components/accordion/_accordion_form.scss +0 -40
  452. package/src/components/accordion/_index.scss +0 -1
  453. package/src/components/panel/_index.scss +0 -1
  454. package/src/components/panel/_panel.scss +0 -9
  455. package/src/components/panel/split_panel/_index.scss +0 -1
  456. package/src/components/panel/split_panel/_split_panel.scss +0 -21
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TruncationUtilsWithDOM = exports.TruncationUtilsWithCanvas = void 0;
8
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
10
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
11
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+ var _excluded = ["container"],
18
+ _excluded2 = ["font", "container"];
19
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
20
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
21
+ /*
22
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
23
+ * or more contributor license agreements. Licensed under the Elastic License
24
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
25
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
26
+ * Side Public License, v 1.
27
+ */
28
+ /**
29
+ * This internal shared/base class contains the actual logic for truncating text
30
+ * (as well as a few handy utilities for checking whether truncation is possible
31
+ * or even necessary).
32
+ *
33
+ * How the underlying mechanism works: the full text is rendered, and then
34
+ * characters are removed one by one until the width of the text fits within
35
+ * the specified available width.
36
+ *
37
+ * Side note: The exception to this is the `truncateStartEndAtPosition` method,
38
+ * which works by building up from an empty string / by adding characters
39
+ * instead of removing them.
40
+ */
41
+ var _TruncationUtils = /*#__PURE__*/(0, _createClass2.default)(function _TruncationUtils(_ref) {
42
+ var _this = this;
43
+ var fullText = _ref.fullText,
44
+ ellipsis = _ref.ellipsis,
45
+ availableWidth = _ref.availableWidth;
46
+ (0, _classCallCheck2.default)(this, _TruncationUtils);
47
+ (0, _defineProperty2.default)(this, "fullText", void 0);
48
+ (0, _defineProperty2.default)(this, "ellipsis", void 0);
49
+ (0, _defineProperty2.default)(this, "availableWidth", void 0);
50
+ /**
51
+ * Early return checks
52
+ */
53
+ (0, _defineProperty2.default)(this, "checkIfTruncationIsNeeded", function () {
54
+ _this.setTextToCheck(_this.fullText);
55
+ if (_this.availableWidth >= _this.textWidth) {
56
+ return false;
57
+ }
58
+ });
59
+ (0, _defineProperty2.default)(this, "checkSufficientEllipsisWidth", function (truncation) {
60
+ var textToCheck = truncation === 'startEnd' ? "".concat(_this.ellipsis, " ").concat(_this.ellipsis) // startEnd needs a little more space
61
+ : _this.ellipsis;
62
+ _this.setTextToCheck(textToCheck);
63
+ if (_this.textWidth >= _this.availableWidth * 0.9) {
64
+ console.error('The truncation ellipsis is larger than the available width. No text can be rendered.');
65
+ return false;
66
+ }
67
+ });
68
+ (0, _defineProperty2.default)(this, "checkTruncationOffsetWidth", function (text) {
69
+ _this.setTextToCheck(text);
70
+ if (_this.textWidth > _this.availableWidth) {
71
+ console.error("The passed truncationOffset is too large for the available width. Truncating the offset instead.");
72
+ return false;
73
+ }
74
+ });
75
+ /**
76
+ * Truncation types logic. This is where the magic happens
77
+ */
78
+ (0, _defineProperty2.default)(this, "truncateStart", function (truncationOffset) {
79
+ var truncatedText = _this.fullText;
80
+ var leadingText = '';
81
+ var combinedText = function combinedText() {
82
+ return "".concat(leadingText).concat(truncatedText);
83
+ };
84
+ if (truncationOffset) {
85
+ var _splitText$at = splitText(_this.fullText).at(truncationOffset);
86
+ var _splitText$at2 = (0, _slicedToArray2.default)(_splitText$at, 2);
87
+ leadingText = _splitText$at2[0];
88
+ truncatedText = _splitText$at2[1];
89
+ var widthCheck = "".concat(leadingText).concat(_this.ellipsis);
90
+ if (_this.checkTruncationOffsetWidth(widthCheck) === false) {
91
+ truncatedText = leadingText;
92
+ leadingText = '';
93
+ }
94
+ }
95
+ leadingText += _this.ellipsis;
96
+ _this.setTextToCheck(combinedText());
97
+ while (_this.textWidth > _this.availableWidth) {
98
+ truncatedText = removeFirstCharacter(truncatedText);
99
+ _this.setTextToCheck(combinedText());
100
+ }
101
+ return combinedText();
102
+ });
103
+ (0, _defineProperty2.default)(this, "truncateEnd", function (truncationOffset) {
104
+ var truncatedText = _this.fullText;
105
+ var trailingText = '';
106
+ var combinedText = function combinedText() {
107
+ return "".concat(truncatedText).concat(trailingText);
108
+ };
109
+ if (truncationOffset) {
110
+ var index = _this.fullText.length - truncationOffset;
111
+ var _splitText$at3 = splitText(_this.fullText).at(index);
112
+ var _splitText$at4 = (0, _slicedToArray2.default)(_splitText$at3, 2);
113
+ truncatedText = _splitText$at4[0];
114
+ trailingText = _splitText$at4[1];
115
+ var widthCheck = "".concat(_this.ellipsis).concat(trailingText);
116
+ if (_this.checkTruncationOffsetWidth(widthCheck) === false) {
117
+ truncatedText = trailingText;
118
+ trailingText = '';
119
+ }
120
+ }
121
+ trailingText = _this.ellipsis + trailingText;
122
+ _this.setTextToCheck(combinedText());
123
+ while (_this.textWidth > _this.availableWidth) {
124
+ truncatedText = removeLastCharacter(truncatedText);
125
+ _this.setTextToCheck(combinedText());
126
+ }
127
+ return combinedText();
128
+ });
129
+ (0, _defineProperty2.default)(this, "truncateStartEndAtPosition", function (truncationPosition) {
130
+ // If using a non-centered startEnd anchor position, we need to *build*
131
+ // the string from scratch instead of *removing* from the full text string,
132
+ // to make sure we don't go past the beginning or end of the text
133
+ var truncatedText = '';
134
+ _this.setTextToCheck(truncatedText);
135
+
136
+ // Ellipses are conditional - if the anchor is towards the beginning or end,
137
+ // it's possible they shouldn't render
138
+ var startingEllipsis = _this.ellipsis;
139
+ var endingEllipsis = _this.ellipsis;
140
+
141
+ // Split the text into two at the anchor position
142
+ var _splitText$at5 = splitText(_this.fullText).at(truncationPosition),
143
+ _splitText$at6 = (0, _slicedToArray2.default)(_splitText$at5, 2),
144
+ firstPart = _splitText$at6[0],
145
+ secondPart = _splitText$at6[1];
146
+ var combinedText = function combinedText() {
147
+ return "".concat(startingEllipsis).concat(truncatedText).concat(endingEllipsis);
148
+ };
149
+ while (_this.textWidth <= _this.availableWidth) {
150
+ if (firstPart.length > 0) {
151
+ truncatedText = "".concat(getLastCharacter(firstPart)).concat(truncatedText);
152
+ firstPart = removeLastCharacter(firstPart);
153
+ } else {
154
+ startingEllipsis = '';
155
+ }
156
+ if (secondPart.length > 0) {
157
+ truncatedText = "".concat(truncatedText).concat(getFirstCharacter(secondPart));
158
+ secondPart = removeFirstCharacter(secondPart);
159
+ } else {
160
+ endingEllipsis = '';
161
+ }
162
+ _this.setTextToCheck(combinedText());
163
+ }
164
+
165
+ // Because this logic builds text outwards vs. removing inwards, the final
166
+ // text width ends up a little larger than the container, and we need to
167
+ // remove the last added character(s)
168
+ if (!startingEllipsis) {
169
+ truncatedText = removeLastCharacter(truncatedText);
170
+ } else if (!endingEllipsis) {
171
+ truncatedText = removeFirstCharacter(truncatedText);
172
+ } else {
173
+ truncatedText = removeFirstAndLastCharacters(truncatedText);
174
+ }
175
+ return combinedText();
176
+ });
177
+ (0, _defineProperty2.default)(this, "truncateStartEndAtMiddle", function () {
178
+ var truncatedText = _this.fullText;
179
+ _this.setTextToCheck(truncatedText);
180
+ var combinedText = function combinedText() {
181
+ return "".concat(_this.ellipsis).concat(truncatedText).concat(_this.ellipsis);
182
+ };
183
+ while (_this.textWidth > _this.availableWidth) {
184
+ truncatedText = removeFirstAndLastCharacters(truncatedText);
185
+ _this.setTextToCheck(combinedText());
186
+ }
187
+ return combinedText();
188
+ });
189
+ (0, _defineProperty2.default)(this, "truncateMiddle", function () {
190
+ var middlePosition = Math.floor(_this.fullText.length / 2);
191
+ var _splitText$at7 = splitText(_this.fullText).at(middlePosition),
192
+ _splitText$at8 = (0, _slicedToArray2.default)(_splitText$at7, 2),
193
+ firstHalf = _splitText$at8[0],
194
+ secondHalf = _splitText$at8[1];
195
+ var trimfirstHalf;
196
+ var combinedText = function combinedText() {
197
+ return "".concat(firstHalf).concat(_this.ellipsis).concat(secondHalf);
198
+ };
199
+ _this.setTextToCheck(combinedText());
200
+ while (_this.textWidth > _this.availableWidth) {
201
+ trimfirstHalf = !trimfirstHalf;
202
+ if (trimfirstHalf) {
203
+ firstHalf = removeLastCharacter(firstHalf);
204
+ } else {
205
+ secondHalf = removeFirstCharacter(secondHalf);
206
+ }
207
+ _this.setTextToCheck(combinedText());
208
+ }
209
+ return combinedText();
210
+ });
211
+ this.fullText = fullText;
212
+ this.ellipsis = ellipsis;
213
+ this.availableWidth = availableWidth;
214
+ }
215
+
216
+ /**
217
+ * Internal measurement utils which will be overridden depending on the
218
+ * rendering approach used (e.g. DOM vs Canvas).
219
+ */);
220
+ /**
221
+ * Creates a temporary vanilla JS DOM element for manipulating text and
222
+ * determining text width.
223
+ *
224
+ * Requires passing in a container element to which the temporary element
225
+ * will be appended. Any CSS/font styles that need to be accounted for should
226
+ * be automatically inherited from the container.
227
+ *
228
+ * NOTE: The consumer is responsible for calling the `cleanup()` method manually
229
+ * to remove the temporary DOM node once their usage of this utility is complete.
230
+ */
231
+ var TruncationUtilsWithDOM = /*#__PURE__*/function (_TruncationUtils2) {
232
+ (0, _inherits2.default)(TruncationUtilsWithDOM, _TruncationUtils2);
233
+ var _super = _createSuper(TruncationUtilsWithDOM);
234
+ function TruncationUtilsWithDOM(_ref2) {
235
+ var _this2;
236
+ var container = _ref2.container,
237
+ rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
238
+ (0, _classCallCheck2.default)(this, TruncationUtilsWithDOM);
239
+ _this2 = _super.call(this, rest);
240
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "container", void 0);
241
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "span", void 0);
242
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "setTextToCheck", function (text) {
243
+ _this2.span.textContent = text;
244
+ });
245
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "cleanup", function () {
246
+ _this2.container.removeChild(_this2.span);
247
+ });
248
+ _this2.container = container;
249
+ _this2.span = document.createElement('span');
250
+ _this2.span.style.position = 'absolute'; // Prevent page reflow/repaint for performance
251
+ _this2.span.style.whiteSpace = 'nowrap'; // EuiTextTruncate already sets this on the parent, but we'll set it here as well for consumers who use this util standalone
252
+ _this2.container.appendChild(_this2.span);
253
+ return _this2;
254
+ }
255
+ (0, _createClass2.default)(TruncationUtilsWithDOM, [{
256
+ key: "textWidth",
257
+ get: function get() {
258
+ return this.span.offsetWidth;
259
+ }
260
+ }]);
261
+ return TruncationUtilsWithDOM;
262
+ }(_TruncationUtils);
263
+ /**
264
+ * Creates a temporary Canvas element for manipulating text & determining
265
+ * text width. This method is compatible with charts or other canvas-rendered
266
+ * frameworks, and requires no cleanup method.
267
+ *
268
+ * To accurately measure text, canvas rendering requires either a container to
269
+ * compute/derive font styles from, or a static font string (useful for usage
270
+ * outside the DOM). Particular care should be applied when fallback fonts are
271
+ * used, as more fallback fonts can lead to less precision.
272
+ *
273
+ * Please note that while canvas is more performant than DOM measurement, there
274
+ * are subpixel to single digit pixel differences between DOM and canvas
275
+ * measurement due to the different rendering engines used.
276
+ */
277
+ exports.TruncationUtilsWithDOM = TruncationUtilsWithDOM;
278
+ var TruncationUtilsWithCanvas = /*#__PURE__*/function (_TruncationUtils3) {
279
+ (0, _inherits2.default)(TruncationUtilsWithCanvas, _TruncationUtils3);
280
+ var _super2 = _createSuper(TruncationUtilsWithCanvas);
281
+ function TruncationUtilsWithCanvas(_ref3) {
282
+ var _this3;
283
+ var font = _ref3.font,
284
+ container = _ref3.container,
285
+ rest = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
286
+ (0, _classCallCheck2.default)(this, TruncationUtilsWithCanvas);
287
+ _this3 = _super2.call(this, rest);
288
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "context", void 0);
289
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "currentText", '');
290
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "computeFontFromElement", function (element) {
291
+ var computedStyles = window.getComputedStyle(element);
292
+ return ['font-style', 'font-variant', 'font-weight', 'font-size', 'font-family'].map(function (prop) {
293
+ return computedStyles.getPropertyValue(prop);
294
+ }).join(' ').trim();
295
+ });
296
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this3), "setTextToCheck", function (text) {
297
+ _this3.currentText = text;
298
+ });
299
+ _this3.context = document.createElement('canvas').getContext('2d');
300
+
301
+ // Set the canvas font to ensure text width calculations are correct
302
+ if (font) {
303
+ _this3.context.font = font;
304
+ } else if (container) {
305
+ _this3.context.font = _this3.computeFontFromElement(container);
306
+ }
307
+ return _this3;
308
+ }
309
+ (0, _createClass2.default)(TruncationUtilsWithCanvas, [{
310
+ key: "textWidth",
311
+ get: function get() {
312
+ return this.context.measureText(this.currentText).width;
313
+ }
314
+ }]);
315
+ return TruncationUtilsWithCanvas;
316
+ }(_TruncationUtils);
317
+ /**
318
+ * DRY character/substring utils
319
+ */
320
+ exports.TruncationUtilsWithCanvas = TruncationUtilsWithCanvas;
321
+ var removeLastCharacter = function removeLastCharacter(text) {
322
+ return text.substring(0, text.length - 1);
323
+ };
324
+ var getLastCharacter = function getLastCharacter(text) {
325
+ return text.substring(text.length - 1);
326
+ };
327
+ var removeFirstCharacter = function removeFirstCharacter(text) {
328
+ return text.substring(1);
329
+ };
330
+ var getFirstCharacter = function getFirstCharacter(text) {
331
+ return text.substring(0, 1);
332
+ };
333
+ var removeFirstAndLastCharacters = function removeFirstAndLastCharacters(text) {
334
+ return text.substring(1, text.length - 1);
335
+ };
336
+ var splitText = function splitText(text) {
337
+ return {
338
+ at: function at(index) {
339
+ return [text.substring(0, index), text.substring(index)];
340
+ }
341
+ };
342
+ };
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.TOAST_FADE_OUT_MS = exports.SIDES = exports.EuiGlobalToastList = void 0;
8
+ exports.TOAST_FADE_OUT_MS = exports.SIDES = exports.EuiGlobalToastList = exports.CLEAR_ALL_TOASTS_THRESHOLD_DEFAULT = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -18,8 +18,10 @@ var _time = require("../../services/time");
18
18
  var _global_toast_list_item = require("./global_toast_list_item");
19
19
  var _toast = require("./toast");
20
20
  var _global_toast_list = require("./global_toast_list.styles");
21
+ var _button = require("../button");
22
+ var _i18n = require("../i18n");
21
23
  var _react2 = require("@emotion/react");
22
- var _excluded = ["className", "toasts", "dismissToast", "toastLifeTimeMs", "side"],
24
+ var _excluded = ["className", "toasts", "dismissToast", "toastLifeTimeMs", "onClearAllToasts", "side", "showClearAllButtonAt"],
23
25
  _excluded2 = ["text", "toastLifeTimeMs"];
24
26
  /*
25
27
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -40,14 +42,19 @@ var SIDES = (0, _common.keysOf)(sideToClassNameMap);
40
42
  exports.SIDES = SIDES;
41
43
  var TOAST_FADE_OUT_MS = 250;
42
44
  exports.TOAST_FADE_OUT_MS = TOAST_FADE_OUT_MS;
45
+ var CLEAR_ALL_TOASTS_THRESHOLD_DEFAULT = 3;
46
+ exports.CLEAR_ALL_TOASTS_THRESHOLD_DEFAULT = CLEAR_ALL_TOASTS_THRESHOLD_DEFAULT;
43
47
  var EuiGlobalToastList = function EuiGlobalToastList(_ref) {
44
48
  var className = _ref.className,
45
49
  _ref$toasts = _ref.toasts,
46
50
  toasts = _ref$toasts === void 0 ? [] : _ref$toasts,
47
51
  dismissToastProp = _ref.dismissToast,
48
52
  toastLifeTimeMs = _ref.toastLifeTimeMs,
53
+ onClearAllToasts = _ref.onClearAllToasts,
49
54
  _ref$side = _ref.side,
50
55
  side = _ref$side === void 0 ? 'right' : _ref$side,
56
+ _ref$showClearAllButt = _ref.showClearAllButtonAt,
57
+ showClearAllButtonAt = _ref$showClearAllButt === void 0 ? CLEAR_ALL_TOASTS_THRESHOLD_DEFAULT : _ref$showClearAllButt,
51
58
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
52
59
  var _useState = (0, _react.useState)({}),
53
60
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -120,7 +127,11 @@ var EuiGlobalToastList = function EuiGlobalToastList(_ref) {
120
127
  }
121
128
  };
122
129
  var onScroll = function onScroll() {
123
- if (listElement.current) {
130
+ // Given that this method also gets invoked by the synthetic scroll that happens when a new toast gets added,
131
+ // we want to evaluate if the scroll bottom has been reached only when the user is interacting with the toast,
132
+ // this way we always retain the scroll position the user has set despite adding in new toasts.
133
+ // User interaction is determined through the handler registered for mouseEnter and mouseLeave events.
134
+ if (listElement.current && isUserInteracting.current) {
124
135
  isScrolledToBottom.current = listElement.current.scrollHeight - listElement.current.scrollTop === listElement.current.clientHeight;
125
136
  }
126
137
  };
@@ -234,6 +245,33 @@ var EuiGlobalToastList = function EuiGlobalToastList(_ref) {
234
245
  onBlur: onMouseLeave
235
246
  }, rest), text));
236
247
  });
248
+ if (showClearAllButtonAt && toasts.length >= showClearAllButtonAt) {
249
+ var dismissAllToasts = function dismissAllToasts() {
250
+ toasts.forEach(function (toast) {
251
+ return dismissToastProp(toast);
252
+ });
253
+ onClearAllToasts === null || onClearAllToasts === void 0 ? void 0 : onClearAllToasts();
254
+ };
255
+ renderedToasts.push((0, _react2.jsx)(_i18n.EuiI18n, {
256
+ key: "euiClearAllToasts",
257
+ tokens: ['euiGlobalToastList.clearAllToastsButtonAriaLabel', 'euiGlobalToastList.clearAllToastsButtonDisplayText'],
258
+ defaults: ['Clear all toast notifications', 'Clear all']
259
+ }, function (_ref2) {
260
+ var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
261
+ clearAllToastsButtonAriaLabel = _ref3[0],
262
+ clearAllToastsButtonDisplayText = _ref3[1];
263
+ return (0, _react2.jsx)(_global_toast_list_item.EuiGlobalToastListItem, {
264
+ isDismissed: false
265
+ }, (0, _react2.jsx)(_button.EuiButton, {
266
+ fill: true,
267
+ color: "text",
268
+ onClick: dismissAllToasts,
269
+ css: [styles.euiGlobalToastListDismissButton, ";label:EuiGlobalToastList;"],
270
+ "aria-label": clearAllToastsButtonAriaLabel,
271
+ "data-test-subj": "euiClearAllToastsButton"
272
+ }, clearAllToastsButtonDisplayText));
273
+ }));
274
+ }
237
275
  var classes = (0, _classnames.default)('euiGlobalToastList', className);
238
276
  return (0, _react2.jsx)("div", (0, _extends2.default)({
239
277
  "aria-live": "polite",
@@ -28,7 +28,8 @@ var euiGlobalToastListStyles = function euiGlobalToastListStyles(euiThemeContext
28
28
  euiGlobalToastList: /*#__PURE__*/(0, _react.css)((0, _global_styling.euiScrollBarStyles)(euiThemeContext), " display:flex;flex-direction:column;align-items:stretch;position:fixed;z-index:", euiTheme.levels.toast, ";", (0, _global_styling.logicalCSS)('bottom', 0), " ", (0, _global_styling.logicalCSS)('width', "".concat(euiToastWidth, "px")), (0, _global_styling.logicalCSS)('max-height', '100vh'), (0, _global_styling.logicalCSSWithFallback)('overflow-y', 'auto'), "scrollbar-width:none;&::-webkit-scrollbar{", (0, _global_styling.logicalSizeCSS)(0, 0), ";}&:not(:empty){", (0, _global_styling.logicalCSS)('padding-left', euiTheme.size.base), " ", (0, _global_styling.logicalCSS)('padding-right', euiTheme.size.base), " ", (0, _global_styling.logicalCSS)('padding-vertical', euiTheme.size.base), ";}", (0, _global_styling.euiMaxBreakpoint)(euiThemeContext, 'm'), "{&:not(:empty){", (0, _global_styling.logicalCSS)('left', 0), " ", (0, _global_styling.logicalCSS)('width', '100%'), ";}};label:euiGlobalToastList;"),
29
29
  // Variants
30
30
  right: /*#__PURE__*/(0, _react.css)("&:not(:empty){", (0, _global_styling.logicalCSS)('right', 0), ";", (0, _global_styling.euiMinBreakpoint)(euiThemeContext, 'm'), "{", (0, _global_styling.logicalCSS)('padding-left', "".concat(euiTheme.base * 4, "px")), ";}};label:right;"),
31
- left: /*#__PURE__*/(0, _react.css)("&:not(:empty){", (0, _global_styling.logicalCSS)('left', 0), ";", (0, _global_styling.euiMinBreakpoint)(euiThemeContext, 'm'), "{", (0, _global_styling.logicalCSS)('padding-right', "".concat(euiTheme.base * 4, "px")), ";}};label:left;")
31
+ left: /*#__PURE__*/(0, _react.css)("&:not(:empty){", (0, _global_styling.logicalCSS)('left', 0), ";", (0, _global_styling.euiMinBreakpoint)(euiThemeContext, 'm'), "{", (0, _global_styling.logicalCSS)('padding-right', "".concat(euiTheme.base * 4, "px")), ";}};label:left;"),
32
+ euiGlobalToastListDismissButton: /*#__PURE__*/(0, _react.css)("position:sticky;", (0, _global_styling.logicalCSS)('bottom', '0%'), ";;label:euiGlobalToastListDismissButton;")
32
33
  };
33
34
  };
34
35
  exports.euiGlobalToastListStyles = euiGlobalToastListStyles;
@@ -37,7 +38,7 @@ var euiGlobalToastListItemStyles = function euiGlobalToastListItemStyles(_ref) {
37
38
  var euiShowToast = (0, _react.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n from {\n transform: translateY(", ") scale(.9);\n opacity: 0;\n }\n\n to {\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n"])), euiTheme.size.l);
38
39
  return {
39
40
  // Base
40
- euiGlobalToastListItem: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-bottom', euiTheme.size.base), " animation:", euiTheme.animation.normal, " ", euiShowToast, " ", euiTheme.animation.resistance, ";opacity:1;&:first-child{", (0, _global_styling.logicalCSS)('margin-top', 'auto'), ";}&:last-child{", (0, _global_styling.logicalCSS)('margin-bottom', 0), ";};label:euiGlobalToastListItem;"),
41
+ euiGlobalToastListItem: /*#__PURE__*/(0, _react.css)("flex-shrink:0;", (0, _global_styling.logicalCSS)('margin-bottom', euiTheme.size.base), " animation:", euiTheme.animation.normal, " ", euiShowToast, " ", euiTheme.animation.resistance, ";opacity:1;&:first-child{", (0, _global_styling.logicalCSS)('margin-top', 'auto'), ";}&:last-child{", (0, _global_styling.logicalCSS)('margin-bottom', 0), ";};label:euiGlobalToastListItem;"),
41
42
  // States
42
43
  dismissed: /*#__PURE__*/(0, _react.css)("transition:opacity ", euiTheme.animation.normal, ";opacity:0;;label:dismissed;")
43
44
  };
@@ -29,6 +29,8 @@ var EuiNestedThemeContext = /*#__PURE__*/(0, _react.createContext)({
29
29
  isGlobalTheme: true,
30
30
  hasDifferentColorFromGlobalTheme: false,
31
31
  bodyColor: '',
32
- colorClassName: ''
32
+ colorClassName: '',
33
+ setGlobalCSSVariables: function setGlobalCSSVariables() {},
34
+ setNearestThemeCSSVariables: function setNearestThemeCSSVariables() {}
33
35
  });
34
36
  exports.EuiNestedThemeContext = EuiNestedThemeContext;
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.withEuiTheme = exports.useEuiTheme = exports.RenderWithEuiTheme = void 0;
8
+ exports.withEuiTheme = exports.useEuiThemeCSSVariables = exports.useEuiTheme = exports.RenderWithEuiTheme = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _context = require("./context");
@@ -75,4 +75,23 @@ var RenderWithEuiTheme = function RenderWithEuiTheme(_ref) {
75
75
  var theme = useEuiTheme();
76
76
  return children(theme);
77
77
  };
78
- exports.RenderWithEuiTheme = RenderWithEuiTheme;
78
+
79
+ /**
80
+ * Minor syntactical sugar hook for theme CSS variables.
81
+ * Primarily meant for internal EUI usage.
82
+ */
83
+ exports.RenderWithEuiTheme = RenderWithEuiTheme;
84
+ var useEuiThemeCSSVariables = function useEuiThemeCSSVariables() {
85
+ var _useContext = (0, _react.useContext)(_context.EuiNestedThemeContext),
86
+ setGlobalCSSVariables = _useContext.setGlobalCSSVariables,
87
+ globalCSSVariables = _useContext.globalCSSVariables,
88
+ setNearestThemeCSSVariables = _useContext.setNearestThemeCSSVariables,
89
+ themeCSSVariables = _useContext.themeCSSVariables;
90
+ return {
91
+ setGlobalCSSVariables: setGlobalCSSVariables,
92
+ globalCSSVariables: globalCSSVariables,
93
+ setNearestThemeCSSVariables: setNearestThemeCSSVariables,
94
+ themeCSSVariables: themeCSSVariables
95
+ };
96
+ };
97
+ exports.useEuiThemeCSSVariables = useEuiThemeCSSVariables;
@@ -123,6 +123,12 @@ Object.defineProperty(exports, "useEuiTheme", {
123
123
  return _hooks.useEuiTheme;
124
124
  }
125
125
  });
126
+ Object.defineProperty(exports, "useEuiThemeCSSVariables", {
127
+ enumerable: true,
128
+ get: function get() {
129
+ return _hooks.useEuiThemeCSSVariables;
130
+ }
131
+ });
126
132
  Object.defineProperty(exports, "withEuiTheme", {
127
133
  enumerable: true,
128
134
  get: function get() {