@elastic/eui 93.1.1 → 93.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 (483) hide show
  1. package/dist/eui_theme_dark.css +3 -311
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +3 -311
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/avatar/avatar.js +1 -1
  6. package/es/components/badge/badge.js +1 -1
  7. package/es/components/badge/beta_badge/beta_badge.js +1 -1
  8. package/es/components/basic_table/basic_table.js +1 -1
  9. package/es/components/basic_table/in_memory_table.js +1 -1
  10. package/es/components/beacon/beacon.js +2 -3
  11. package/es/components/breadcrumbs/breadcrumb.js +9 -6
  12. package/es/components/breadcrumbs/breadcrumbs.js +4 -2
  13. package/es/components/button/button.js +1 -1
  14. package/es/components/button/button_display/_button_display.js +3 -4
  15. package/es/components/button/button_display/_button_display_content.js +1 -1
  16. package/es/components/button/button_empty/button_empty.js +3 -4
  17. package/es/components/button/button_group/button_group.js +4 -6
  18. package/es/components/button/button_group/button_group.styles.js +10 -13
  19. package/es/components/button/button_group/button_group_button.js +1 -1
  20. package/es/components/button/button_icon/button_icon.js +5 -6
  21. package/es/components/button/button_icon/button_icon.styles.js +11 -3
  22. package/es/components/call_out/call_out.js +1 -1
  23. package/es/components/card/card.js +2 -2
  24. package/es/components/card/card_select/card_select.js +1 -1
  25. package/es/components/code/code.js +2 -3
  26. package/es/components/code/code.styles.js +4 -2
  27. package/es/components/code/code_block.js +10 -12
  28. package/es/components/code/code_block.styles.js +6 -4
  29. package/es/components/code/code_block_controls.js +2 -3
  30. package/es/components/code/code_block_controls.styles.js +4 -2
  31. package/es/components/code/code_block_full_screen.js +2 -3
  32. package/es/components/code/code_syntax.styles.js +33 -38
  33. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  34. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  35. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  36. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  37. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  38. package/es/components/comment_list/comment.js +2 -2
  39. package/es/components/comment_list/comment_event.js +1 -1
  40. package/es/components/comment_list/comment_list.js +2 -2
  41. package/es/components/comment_list/comment_timeline.js +1 -1
  42. package/es/components/datagrid/body/cell/data_grid_cell.js +31 -27
  43. package/es/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  44. package/es/components/datagrid/body/data_grid_body.js +14 -13
  45. package/es/components/datagrid/body/data_grid_body_custom.js +16 -13
  46. package/es/components/datagrid/body/data_grid_body_virtualized.js +16 -13
  47. package/es/components/datagrid/body/data_grid_row_manager.js +1 -1
  48. package/es/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  49. package/es/components/datagrid/body/header/data_grid_header_row.js +13 -13
  50. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  51. package/es/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  52. package/es/components/datagrid/data_grid.js +3 -1
  53. package/es/components/datagrid/utils/grid_height_width.js +4 -1
  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/facet/facet_button.styles.js +1 -2
  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/form/text_area/text_area.js +2 -2
  66. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +4 -2
  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/diff.js +33 -0
  72. package/es/components/icon/assets/new_chat.js +37 -0
  73. package/es/components/icon/icon.js +14 -17
  74. package/es/components/icon/icon.styles.js +6 -9
  75. package/es/components/icon/icon_map.js +2 -0
  76. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -1
  77. package/es/components/link/external_link_icon.js +11 -8
  78. package/es/components/link/link.js +2 -3
  79. package/es/components/link/link.styles.js +4 -10
  80. package/es/components/list_group/list_group.js +2 -2
  81. package/es/components/list_group/list_group_item.js +2 -2
  82. package/es/components/list_group/list_group_item_extra_action.js +1 -1
  83. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  84. package/es/components/loading/loading_logo.js +1 -1
  85. package/es/components/markdown_editor/markdown_editor.js +1 -1
  86. package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  87. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  88. package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  89. package/es/components/page/page_header/page_header_content.js +5 -3
  90. package/es/components/page/page_sidebar/page_sidebar.js +8 -2
  91. package/es/components/page/page_sidebar/page_sidebar.styles.js +5 -1
  92. package/es/components/page_template/page_template.js +1 -1
  93. package/es/components/pagination/pagination_button.js +1 -1
  94. package/es/components/progress/progress.styles.js +2 -2
  95. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  96. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  97. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  98. package/es/components/side_nav/_side_nav_heading.js +61 -0
  99. package/es/components/side_nav/side_nav.js +63 -88
  100. package/es/components/side_nav/side_nav.styles.js +35 -0
  101. package/es/components/side_nav/side_nav_item.js +51 -50
  102. package/es/components/side_nav/side_nav_item.styles.js +72 -0
  103. package/es/components/skeleton/skeleton_circle.js +2 -3
  104. package/es/components/skeleton/skeleton_rectangle.js +2 -3
  105. package/es/components/skeleton/skeleton_text.js +16 -12
  106. package/es/components/skeleton/skeleton_title.js +2 -3
  107. package/es/components/table/table_header_button.js +1 -1
  108. package/es/components/text/text.js +2 -3
  109. package/es/components/text/text_align.js +1 -2
  110. package/es/components/text/text_align.styles.js +5 -7
  111. package/es/components/text/text_color.js +2 -3
  112. package/es/components/timeline/timeline_item_icon.js +1 -1
  113. package/es/components/title/title.js +2 -3
  114. package/es/components/title/title.styles.js +0 -7
  115. package/es/components/toast/global_toast_list.js +1 -1
  116. package/es/components/toast/toast.js +1 -1
  117. package/es/components/tool_tip/icon_tip.js +1 -1
  118. package/es/global_styling/mixins/_typography.js +17 -6
  119. package/es/services/theme/index.js +1 -0
  120. package/es/services/theme/provider.js +2 -1
  121. package/es/services/theme/style_memoization.js +98 -0
  122. package/es/themes/amsterdam/global_styling/mixins/button.js +47 -24
  123. package/eui.d.ts +238 -112
  124. package/i18ntokens.json +62 -44
  125. package/lib/components/avatar/avatar.js +1 -1
  126. package/lib/components/badge/badge.js +1 -1
  127. package/lib/components/badge/beta_badge/beta_badge.js +1 -1
  128. package/lib/components/basic_table/basic_table.js +1 -1
  129. package/lib/components/basic_table/in_memory_table.js +1 -1
  130. package/lib/components/beacon/beacon.js +1 -2
  131. package/lib/components/breadcrumbs/breadcrumb.js +9 -6
  132. package/lib/components/breadcrumbs/breadcrumbs.js +4 -2
  133. package/lib/components/button/button.js +1 -1
  134. package/lib/components/button/button_display/_button_display.js +2 -3
  135. package/lib/components/button/button_display/_button_display_content.js +1 -1
  136. package/lib/components/button/button_empty/button_empty.js +2 -3
  137. package/lib/components/button/button_group/button_group.js +3 -5
  138. package/lib/components/button/button_group/button_group.styles.js +10 -13
  139. package/lib/components/button/button_group/button_group_button.js +1 -1
  140. package/lib/components/button/button_icon/button_icon.js +4 -5
  141. package/lib/components/button/button_icon/button_icon.styles.js +10 -2
  142. package/lib/components/call_out/call_out.js +1 -1
  143. package/lib/components/card/card.js +2 -2
  144. package/lib/components/card/card_select/card_select.js +1 -1
  145. package/lib/components/code/code.js +1 -2
  146. package/lib/components/code/code.styles.js +4 -2
  147. package/lib/components/code/code_block.js +9 -11
  148. package/lib/components/code/code_block.styles.js +6 -4
  149. package/lib/components/code/code_block_controls.js +1 -2
  150. package/lib/components/code/code_block_controls.styles.js +4 -2
  151. package/lib/components/code/code_block_full_screen.js +1 -2
  152. package/lib/components/code/code_syntax.styles.js +34 -39
  153. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  154. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  155. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  156. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  157. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  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/cell/data_grid_cell.js +31 -27
  163. package/lib/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  164. package/lib/components/datagrid/body/data_grid_body.js +14 -13
  165. package/lib/components/datagrid/body/data_grid_body_custom.js +16 -13
  166. package/lib/components/datagrid/body/data_grid_body_virtualized.js +16 -13
  167. package/lib/components/datagrid/body/data_grid_row_manager.js +1 -1
  168. package/lib/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  169. package/lib/components/datagrid/body/header/data_grid_header_row.js +13 -13
  170. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  171. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  172. package/lib/components/datagrid/data_grid.js +3 -1
  173. package/lib/components/datagrid/utils/grid_height_width.js +4 -1
  174. package/lib/components/datagrid/utils/in_memory.js +12 -12
  175. package/lib/components/date_picker/date_picker.js +2 -2
  176. package/lib/components/date_picker/date_picker_range.js +1 -1
  177. package/lib/components/empty_prompt/empty_prompt.js +1 -1
  178. package/lib/components/facet/facet_button.js +1 -1
  179. package/lib/components/facet/facet_button.styles.js +1 -2
  180. package/lib/components/form/field_number/field_number.js +1 -1
  181. package/lib/components/form/field_text/field_text.js +2 -2
  182. package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
  183. package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  184. package/lib/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  185. package/lib/components/form/text_area/text_area.js +2 -2
  186. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +4 -2
  187. package/lib/components/header/header_links/header_link.js +1 -1
  188. package/lib/components/header/header_links/header_links.js +1 -1
  189. package/lib/components/header/header_logo/header_logo.js +1 -1
  190. package/lib/components/header/header_section/header_section_item_button.js +1 -1
  191. package/lib/components/icon/assets/diff.js +41 -0
  192. package/lib/components/icon/assets/new_chat.js +45 -0
  193. package/lib/components/icon/icon.js +13 -16
  194. package/lib/components/icon/icon.styles.js +5 -8
  195. package/lib/components/icon/icon_map.js +2 -0
  196. package/lib/components/icon/svgs/diff.svg +1 -0
  197. package/lib/components/icon/svgs/new_chat.svg +4 -0
  198. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -1
  199. package/lib/components/link/external_link_icon.js +10 -7
  200. package/lib/components/link/link.js +1 -2
  201. package/lib/components/link/link.styles.js +6 -14
  202. package/lib/components/list_group/list_group.js +2 -2
  203. package/lib/components/list_group/list_group_item.js +2 -2
  204. package/lib/components/list_group/list_group_item_extra_action.js +1 -1
  205. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  206. package/lib/components/loading/loading_logo.js +1 -1
  207. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  208. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  209. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  210. package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  211. package/lib/components/page/page_header/page_header_content.js +5 -3
  212. package/lib/components/page/page_sidebar/page_sidebar.js +8 -2
  213. package/lib/components/page/page_sidebar/page_sidebar.styles.js +5 -1
  214. package/lib/components/page_template/page_template.js +1 -1
  215. package/lib/components/pagination/pagination_button.js +1 -1
  216. package/lib/components/progress/progress.styles.js +1 -1
  217. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  218. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  219. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  220. package/lib/components/side_nav/_side_nav_heading.js +67 -0
  221. package/lib/components/side_nav/side_nav.js +65 -89
  222. package/lib/components/side_nav/side_nav.styles.js +40 -0
  223. package/lib/components/side_nav/side_nav_item.js +51 -49
  224. package/lib/components/side_nav/side_nav_item.styles.js +78 -0
  225. package/lib/components/skeleton/skeleton_circle.js +1 -2
  226. package/lib/components/skeleton/skeleton_rectangle.js +1 -2
  227. package/lib/components/skeleton/skeleton_text.js +18 -11
  228. package/lib/components/skeleton/skeleton_title.js +1 -2
  229. package/lib/components/table/table_header_button.js +1 -1
  230. package/lib/components/text/text.js +1 -2
  231. package/lib/components/text/text_align.js +1 -2
  232. package/lib/components/text/text_align.styles.js +5 -7
  233. package/lib/components/text/text_color.js +1 -2
  234. package/lib/components/timeline/timeline_item_icon.js +1 -1
  235. package/lib/components/title/title.js +1 -2
  236. package/lib/components/title/title.styles.js +2 -10
  237. package/lib/components/toast/global_toast_list.js +1 -1
  238. package/lib/components/toast/toast.js +1 -1
  239. package/lib/components/tool_tip/icon_tip.js +1 -1
  240. package/lib/global_styling/mixins/_typography.js +27 -19
  241. package/lib/services/theme/index.js +13 -0
  242. package/lib/services/theme/provider.js +2 -1
  243. package/lib/services/theme/style_memoization.js +106 -0
  244. package/lib/themes/amsterdam/global_styling/mixins/button.js +49 -25
  245. package/optimize/es/components/beacon/beacon.js +2 -3
  246. package/optimize/es/components/breadcrumbs/breadcrumb.js +5 -4
  247. package/optimize/es/components/button/button_display/_button_display.js +2 -3
  248. package/optimize/es/components/button/button_empty/button_empty.js +2 -3
  249. package/optimize/es/components/button/button_group/button_group.js +3 -5
  250. package/optimize/es/components/button/button_group/button_group.styles.js +10 -13
  251. package/optimize/es/components/button/button_icon/button_icon.js +4 -5
  252. package/optimize/es/components/button/button_icon/button_icon.styles.js +8 -3
  253. package/optimize/es/components/code/code.js +2 -3
  254. package/optimize/es/components/code/code.styles.js +4 -2
  255. package/optimize/es/components/code/code_block.js +10 -12
  256. package/optimize/es/components/code/code_block.styles.js +6 -4
  257. package/optimize/es/components/code/code_block_controls.js +2 -3
  258. package/optimize/es/components/code/code_block_controls.styles.js +4 -2
  259. package/optimize/es/components/code/code_block_full_screen.js +2 -3
  260. package/optimize/es/components/code/code_syntax.styles.js +33 -38
  261. package/optimize/es/components/datagrid/body/cell/data_grid_cell.js +5 -3
  262. package/optimize/es/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  263. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +2 -0
  264. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +2 -0
  265. package/optimize/es/components/datagrid/body/data_grid_row_manager.js +1 -1
  266. package/optimize/es/components/datagrid/data_grid.js +3 -1
  267. package/optimize/es/components/datagrid/utils/grid_height_width.js +4 -1
  268. package/optimize/es/components/facet/facet_button.styles.js +1 -2
  269. package/optimize/es/components/icon/assets/diff.js +32 -0
  270. package/optimize/es/components/icon/assets/new_chat.js +36 -0
  271. package/optimize/es/components/icon/icon.js +13 -16
  272. package/optimize/es/components/icon/icon.styles.js +6 -9
  273. package/optimize/es/components/icon/icon_map.js +2 -0
  274. package/optimize/es/components/link/external_link_icon.js +11 -8
  275. package/optimize/es/components/link/link.js +2 -3
  276. package/optimize/es/components/link/link.styles.js +4 -10
  277. package/optimize/es/components/page/page_sidebar/page_sidebar.js +4 -2
  278. package/optimize/es/components/page/page_sidebar/page_sidebar.styles.js +5 -1
  279. package/optimize/es/components/page_template/page_template.js +1 -1
  280. package/optimize/es/components/progress/progress.styles.js +2 -2
  281. package/optimize/es/components/side_nav/_side_nav_heading.js +47 -0
  282. package/optimize/es/components/side_nav/side_nav.js +61 -72
  283. package/optimize/es/components/side_nav/side_nav.styles.js +35 -0
  284. package/optimize/es/components/side_nav/side_nav_item.js +51 -50
  285. package/optimize/es/components/side_nav/side_nav_item.styles.js +69 -0
  286. package/optimize/es/components/skeleton/skeleton_circle.js +2 -3
  287. package/optimize/es/components/skeleton/skeleton_rectangle.js +2 -3
  288. package/optimize/es/components/skeleton/skeleton_text.js +16 -12
  289. package/optimize/es/components/skeleton/skeleton_title.js +2 -3
  290. package/optimize/es/components/text/text.js +2 -3
  291. package/optimize/es/components/text/text_align.js +1 -2
  292. package/optimize/es/components/text/text_align.styles.js +5 -7
  293. package/optimize/es/components/text/text_color.js +2 -3
  294. package/optimize/es/components/title/title.js +2 -3
  295. package/optimize/es/components/title/title.styles.js +0 -7
  296. package/optimize/es/global_styling/mixins/_typography.js +14 -6
  297. package/optimize/es/services/theme/index.js +1 -0
  298. package/optimize/es/services/theme/provider.js +2 -1
  299. package/optimize/es/services/theme/style_memoization.js +93 -0
  300. package/optimize/es/themes/amsterdam/global_styling/mixins/button.js +47 -24
  301. package/optimize/lib/components/beacon/beacon.js +1 -2
  302. package/optimize/lib/components/breadcrumbs/breadcrumb.js +5 -4
  303. package/optimize/lib/components/button/button_display/_button_display.js +1 -2
  304. package/optimize/lib/components/button/button_empty/button_empty.js +1 -2
  305. package/optimize/lib/components/button/button_group/button_group.js +2 -4
  306. package/optimize/lib/components/button/button_group/button_group.styles.js +10 -13
  307. package/optimize/lib/components/button/button_icon/button_icon.js +3 -4
  308. package/optimize/lib/components/button/button_icon/button_icon.styles.js +8 -2
  309. package/optimize/lib/components/code/code.js +1 -2
  310. package/optimize/lib/components/code/code.styles.js +4 -2
  311. package/optimize/lib/components/code/code_block.js +9 -11
  312. package/optimize/lib/components/code/code_block.styles.js +6 -4
  313. package/optimize/lib/components/code/code_block_controls.js +1 -2
  314. package/optimize/lib/components/code/code_block_controls.styles.js +4 -2
  315. package/optimize/lib/components/code/code_block_full_screen.js +1 -2
  316. package/optimize/lib/components/code/code_syntax.styles.js +34 -39
  317. package/optimize/lib/components/datagrid/body/cell/data_grid_cell.js +5 -3
  318. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  319. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +2 -0
  320. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +2 -0
  321. package/optimize/lib/components/datagrid/body/data_grid_row_manager.js +1 -1
  322. package/optimize/lib/components/datagrid/data_grid.js +3 -1
  323. package/optimize/lib/components/datagrid/utils/grid_height_width.js +4 -1
  324. package/optimize/lib/components/facet/facet_button.styles.js +1 -2
  325. package/optimize/lib/components/icon/assets/diff.js +41 -0
  326. package/optimize/lib/components/icon/assets/new_chat.js +45 -0
  327. package/optimize/lib/components/icon/icon.js +12 -15
  328. package/optimize/lib/components/icon/icon.styles.js +5 -8
  329. package/optimize/lib/components/icon/icon_map.js +2 -0
  330. package/optimize/lib/components/icon/svgs/diff.svg +1 -0
  331. package/optimize/lib/components/icon/svgs/new_chat.svg +4 -0
  332. package/optimize/lib/components/link/external_link_icon.js +10 -7
  333. package/optimize/lib/components/link/link.js +1 -2
  334. package/optimize/lib/components/link/link.styles.js +6 -14
  335. package/optimize/lib/components/page/page_sidebar/page_sidebar.js +4 -2
  336. package/optimize/lib/components/page/page_sidebar/page_sidebar.styles.js +5 -1
  337. package/optimize/lib/components/page_template/page_template.js +1 -1
  338. package/optimize/lib/components/progress/progress.styles.js +1 -1
  339. package/optimize/lib/components/side_nav/_side_nav_heading.js +53 -0
  340. package/optimize/lib/components/side_nav/side_nav.js +63 -73
  341. package/optimize/lib/components/side_nav/side_nav.styles.js +40 -0
  342. package/optimize/lib/components/side_nav/side_nav_item.js +51 -49
  343. package/optimize/lib/components/side_nav/side_nav_item.styles.js +76 -0
  344. package/optimize/lib/components/skeleton/skeleton_circle.js +1 -2
  345. package/optimize/lib/components/skeleton/skeleton_rectangle.js +1 -2
  346. package/optimize/lib/components/skeleton/skeleton_text.js +18 -11
  347. package/optimize/lib/components/skeleton/skeleton_title.js +1 -2
  348. package/optimize/lib/components/text/text.js +1 -2
  349. package/optimize/lib/components/text/text_align.js +1 -2
  350. package/optimize/lib/components/text/text_align.styles.js +5 -7
  351. package/optimize/lib/components/text/text_color.js +1 -2
  352. package/optimize/lib/components/title/title.js +1 -2
  353. package/optimize/lib/components/title/title.styles.js +2 -10
  354. package/optimize/lib/global_styling/mixins/_typography.js +25 -19
  355. package/optimize/lib/services/theme/index.js +13 -0
  356. package/optimize/lib/services/theme/provider.js +2 -1
  357. package/optimize/lib/services/theme/style_memoization.js +106 -0
  358. package/optimize/lib/themes/amsterdam/global_styling/mixins/button.js +49 -26
  359. package/package.json +3 -3
  360. package/src/components/datagrid/_data_grid_data_row.scss +4 -0
  361. package/src/components/index.scss +0 -1
  362. package/src/themes/amsterdam/overrides/_index.scss +0 -1
  363. package/test-env/components/avatar/avatar.js +1 -1
  364. package/test-env/components/badge/badge.js +1 -1
  365. package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
  366. package/test-env/components/basic_table/basic_table.js +1 -1
  367. package/test-env/components/basic_table/in_memory_table.js +1 -1
  368. package/test-env/components/beacon/beacon.js +1 -2
  369. package/test-env/components/breadcrumbs/breadcrumb.js +9 -6
  370. package/test-env/components/breadcrumbs/breadcrumbs.js +4 -2
  371. package/test-env/components/button/button.js +1 -1
  372. package/test-env/components/button/button_display/_button_display.js +2 -3
  373. package/test-env/components/button/button_display/_button_display_content.js +1 -1
  374. package/test-env/components/button/button_empty/button_empty.js +2 -3
  375. package/test-env/components/button/button_group/button_group.js +3 -5
  376. package/test-env/components/button/button_group/button_group.styles.js +10 -13
  377. package/test-env/components/button/button_group/button_group_button.js +1 -1
  378. package/test-env/components/button/button_icon/button_icon.js +4 -5
  379. package/test-env/components/button/button_icon/button_icon.styles.js +8 -2
  380. package/test-env/components/call_out/call_out.js +1 -1
  381. package/test-env/components/card/card.js +2 -2
  382. package/test-env/components/card/card_select/card_select.js +1 -1
  383. package/test-env/components/code/code.styles.js +4 -2
  384. package/test-env/components/code/code_block.styles.js +6 -4
  385. package/test-env/components/code/code_block_controls.js +1 -2
  386. package/test-env/components/code/code_block_controls.styles.js +4 -2
  387. package/test-env/components/code/code_block_full_screen.js +1 -2
  388. package/test-env/components/code/code_syntax.styles.js +34 -39
  389. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  390. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  391. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  392. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  393. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  394. package/test-env/components/comment_list/comment.js +2 -2
  395. package/test-env/components/comment_list/comment_event.js +1 -1
  396. package/test-env/components/comment_list/comment_list.js +2 -2
  397. package/test-env/components/comment_list/comment_timeline.js +1 -1
  398. package/test-env/components/datagrid/body/cell/data_grid_cell.js +31 -27
  399. package/test-env/components/datagrid/body/cell/data_grid_cell_wrapper.js +4 -2
  400. package/test-env/components/datagrid/body/data_grid_body.js +14 -13
  401. package/test-env/components/datagrid/body/data_grid_body_custom.js +16 -13
  402. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +16 -13
  403. package/test-env/components/datagrid/body/data_grid_row_manager.js +1 -1
  404. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +12 -12
  405. package/test-env/components/datagrid/body/header/data_grid_header_row.js +13 -13
  406. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  407. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  408. package/test-env/components/datagrid/data_grid.js +3 -1
  409. package/test-env/components/datagrid/utils/grid_height_width.js +4 -1
  410. package/test-env/components/datagrid/utils/in_memory.js +12 -12
  411. package/test-env/components/date_picker/date_picker.js +2 -2
  412. package/test-env/components/date_picker/date_picker_range.js +1 -1
  413. package/test-env/components/empty_prompt/empty_prompt.js +1 -1
  414. package/test-env/components/facet/facet_button.js +1 -1
  415. package/test-env/components/facet/facet_button.styles.js +1 -2
  416. package/test-env/components/form/field_number/field_number.js +1 -1
  417. package/test-env/components/form/field_text/field_text.js +2 -2
  418. package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
  419. package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  420. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  421. package/test-env/components/form/text_area/text_area.js +2 -2
  422. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.js +4 -2
  423. package/test-env/components/header/header_links/header_link.js +1 -1
  424. package/test-env/components/header/header_links/header_links.js +1 -1
  425. package/test-env/components/header/header_logo/header_logo.js +1 -1
  426. package/test-env/components/header/header_section/header_section_item_button.js +1 -1
  427. package/test-env/components/icon/assets/diff.js +41 -0
  428. package/test-env/components/icon/assets/new_chat.js +45 -0
  429. package/test-env/components/icon/icon.styles.js +5 -8
  430. package/test-env/components/icon/icon_map.js +2 -0
  431. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -1
  432. package/test-env/components/link/external_link_icon.js +10 -7
  433. package/test-env/components/link/link.js +1 -2
  434. package/test-env/components/link/link.styles.js +6 -14
  435. package/test-env/components/list_group/list_group.js +2 -2
  436. package/test-env/components/list_group/list_group_item.js +2 -2
  437. package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
  438. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  439. package/test-env/components/loading/loading_logo.js +1 -1
  440. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  441. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  442. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  443. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  444. package/test-env/components/page/page_header/page_header_content.js +5 -3
  445. package/test-env/components/page/page_sidebar/page_sidebar.js +8 -2
  446. package/test-env/components/page/page_sidebar/page_sidebar.styles.js +5 -1
  447. package/test-env/components/page_template/page_template.js +1 -1
  448. package/test-env/components/pagination/pagination_button.js +1 -1
  449. package/test-env/components/progress/progress.styles.js +1 -1
  450. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  451. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  452. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  453. package/test-env/components/side_nav/_side_nav_heading.js +66 -0
  454. package/test-env/components/side_nav/side_nav.js +65 -89
  455. package/test-env/components/side_nav/side_nav.styles.js +40 -0
  456. package/test-env/components/side_nav/side_nav_item.js +51 -49
  457. package/test-env/components/side_nav/side_nav_item.styles.js +76 -0
  458. package/test-env/components/skeleton/skeleton_circle.js +1 -2
  459. package/test-env/components/skeleton/skeleton_rectangle.js +1 -2
  460. package/test-env/components/skeleton/skeleton_text.js +18 -11
  461. package/test-env/components/skeleton/skeleton_title.js +1 -2
  462. package/test-env/components/table/table_header_button.js +1 -1
  463. package/test-env/components/text/text.js +1 -2
  464. package/test-env/components/text/text_align.js +1 -2
  465. package/test-env/components/text/text_align.styles.js +5 -7
  466. package/test-env/components/text/text_color.js +1 -2
  467. package/test-env/components/timeline/timeline_item_icon.js +1 -1
  468. package/test-env/components/title/title.js +1 -2
  469. package/test-env/components/title/title.styles.js +2 -10
  470. package/test-env/components/toast/global_toast_list.js +1 -1
  471. package/test-env/components/toast/toast.js +1 -1
  472. package/test-env/components/tool_tip/icon_tip.js +1 -1
  473. package/test-env/global_styling/mixins/_typography.js +25 -19
  474. package/test-env/services/theme/index.js +13 -0
  475. package/test-env/services/theme/provider.js +2 -1
  476. package/test-env/services/theme/style_memoization.js +106 -0
  477. package/test-env/themes/amsterdam/global_styling/mixins/button.js +49 -26
  478. package/src/components/side_nav/_index.scss +0 -5
  479. package/src/components/side_nav/_mixins.scss +0 -7
  480. package/src/components/side_nav/_side_nav.scss +0 -47
  481. package/src/components/side_nav/_side_nav_item.scss +0 -181
  482. package/src/components/side_nav/_variables.scss +0 -15
  483. package/src/themes/amsterdam/overrides/_side_nav.scss +0 -17
@@ -1,20 +1,23 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.useEuiNumberFormat = exports.useEuiFontSize = exports.euiTextTruncate = exports.euiTextBreakWord = exports.euiNumberFormat = exports.euiFontSize = void 0;
7
+ exports.useEuiFontSize = exports.euiTextTruncate = exports.euiTextBreakWord = exports.euiNumberFormat = exports.euiFontSize = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
9
  var _typography = require("../functions/typography");
8
- var _hooks = require("../../services/theme/hooks");
10
+ var _theme = require("../../services/theme");
11
+ var _typography2 = require("../variables/typography");
9
12
  var _functions = require("../functions");
10
- /*
11
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
12
- * or more contributor license agreements. Licensed under the Elastic License
13
- * 2.0 and the Server Side Public License, v 1; you may not use this file except
14
- * in compliance with, at your election, the Elastic License 2.0 or the Server
15
- * Side Public License, v 1.
16
- */
17
-
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } /*
15
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
16
+ * or more contributor license agreements. Licensed under the Elastic License
17
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
18
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
19
+ * Side Public License, v 1.
20
+ */
18
21
  /**
19
22
  * Returns font-size and line-height
20
23
  */
@@ -27,15 +30,23 @@ var euiFontSize = function euiFontSize(_ref, scale, options) {
27
30
  };
28
31
  exports.euiFontSize = euiFontSize;
29
32
  var useEuiFontSize = function useEuiFontSize(scale, options) {
30
- var euiTheme = (0, _hooks.useEuiTheme)();
31
- return euiFontSize(euiTheme, scale, options);
33
+ var euiTheme = (0, _theme.useEuiTheme)();
34
+ var memoizedFontSizes = (0, _theme.useEuiMemoizedStyles)(euiFontSizes);
35
+ return !options ? memoizedFontSizes[scale] : euiFontSize(euiTheme, scale, options);
36
+ };
37
+ // Memomize a basic set of font sizes. We unfortunately can't
38
+ // memoize all possible options, there's too many permutations
39
+ exports.useEuiFontSize = useEuiFontSize;
40
+ var euiFontSizes = function euiFontSizes(euiThemeContext) {
41
+ return _typography2.EuiThemeFontScales.reduce(function (map, scale) {
42
+ return _objectSpread(_objectSpread({}, map), {}, (0, _defineProperty2.default)({}, scale, euiFontSize(euiThemeContext, scale)));
43
+ }, {});
32
44
  };
33
45
 
34
46
  /**
35
47
  * Force text to wrap on natural word breaks (e.g. spaces & hyphens)
36
48
  * https://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/
37
49
  */
38
- exports.useEuiFontSize = useEuiFontSize;
39
50
  var euiTextBreakWord = function euiTextBreakWord() {
40
51
  return "\n overflow-wrap: break-word !important; // makes sure the long string will wrap and not bust out of the container\n word-break: break-word;\n";
41
52
  };
@@ -58,9 +69,4 @@ var euiNumberFormat = function euiNumberFormat(_ref2) {
58
69
  var euiTheme = _ref2.euiTheme;
59
70
  return "\n font-feature-settings: ".concat(euiTheme.font.featureSettings, ", 'tnum' 1;\n");
60
71
  };
61
- exports.euiNumberFormat = euiNumberFormat;
62
- var useEuiNumberFormat = function useEuiNumberFormat() {
63
- var euiTheme = (0, _hooks.useEuiTheme)();
64
- return euiNumberFormat(euiTheme);
65
- };
66
- exports.useEuiNumberFormat = useEuiNumberFormat;
72
+ exports.euiNumberFormat = euiNumberFormat;
@@ -117,6 +117,12 @@ Object.defineProperty(exports, "setOn", {
117
117
  return _utils.setOn;
118
118
  }
119
119
  });
120
+ Object.defineProperty(exports, "useEuiMemoizedStyles", {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _style_memoization.useEuiMemoizedStyles;
124
+ }
125
+ });
120
126
  Object.defineProperty(exports, "useEuiTheme", {
121
127
  enumerable: true,
122
128
  get: function get() {
@@ -129,6 +135,12 @@ Object.defineProperty(exports, "useEuiThemeCSSVariables", {
129
135
  return _hooks.useEuiThemeCSSVariables;
130
136
  }
131
137
  });
138
+ Object.defineProperty(exports, "withEuiStylesMemoizer", {
139
+ enumerable: true,
140
+ get: function get() {
141
+ return _style_memoization.withEuiStylesMemoizer;
142
+ }
143
+ });
132
144
  Object.defineProperty(exports, "withEuiTheme", {
133
145
  enumerable: true,
134
146
  get: function get() {
@@ -138,6 +150,7 @@ Object.defineProperty(exports, "withEuiTheme", {
138
150
  var _context = require("./context");
139
151
  var _hooks = require("./hooks");
140
152
  var _provider = require("./provider");
153
+ var _style_memoization = require("./style_memoization");
141
154
  var _warning = require("./warning");
142
155
  var _utils = require("./utils");
143
156
  var _types = require("./types");
@@ -18,6 +18,7 @@ var _emotion = require("../emotion");
18
18
  var _css2 = require("../emotion/css");
19
19
  var _context = require("./context");
20
20
  var _emotion2 = require("./emotion");
21
+ var _style_memoization = require("./style_memoization");
21
22
  var _utils = require("./utils");
22
23
  var _excluded = ["cloneElement", "className"];
23
24
  var _templateObject;
@@ -161,6 +162,6 @@ var EuiThemeProvider = function EuiThemeProvider(_ref) {
161
162
  value: theme
162
163
  }, (0, _react.jsx)(_context.EuiNestedThemeContext.Provider, {
163
164
  value: nestedThemeContext
164
- }, (0, _react.jsx)(_emotion2.EuiEmotionThemeProvider, null, renderedChildren)))))));
165
+ }, (0, _react.jsx)(_style_memoization.EuiThemeMemoizedStylesProvider, null, (0, _react.jsx)(_emotion2.EuiEmotionThemeProvider, null, renderedChildren))))))));
165
166
  };
166
167
  exports.EuiThemeProvider = EuiThemeProvider;
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.withEuiStylesMemoizer = exports.useEuiMemoizedStyles = exports.EuiThemeMemoizedStylesProvider = exports.EuiThemeMemoizedStylesContext = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _hooks = require("../hooks");
13
+ var _hooks2 = require("./hooks");
14
+ var _react2 = require("@emotion/react");
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ /*
18
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
19
+ * or more contributor license agreements. Licensed under the Elastic License
20
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
21
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
22
+ * Side Public License, v 1.
23
+ */
24
+
25
+ // NOTE: We're specifically using a WeakMap instead of a Map in order to allow
26
+ // unmounted components to have their styles garbage-collected by the browser
27
+ // @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
28
+
29
+ var EuiThemeMemoizedStylesContext = /*#__PURE__*/(0, _react.createContext)(new WeakMap());
30
+ exports.EuiThemeMemoizedStylesContext = EuiThemeMemoizedStylesContext;
31
+ var EuiThemeMemoizedStylesProvider = function EuiThemeMemoizedStylesProvider(_ref) {
32
+ var children = _ref.children;
33
+ // Note: we *should not* use `useMemo` instead of `useState` here, as useMemo is not guaranteed
34
+ // and its cache can get thrown away by React (https://react.dev/reference/react/useMemo#caveats)
35
+ var _useState = (0, _react.useState)(new WeakMap()),
36
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
37
+ componentStyles = _useState2[0],
38
+ rerenderStyles = _useState2[1];
39
+
40
+ // On theme update, wipe the map, which causes the below hook to recompute all styles
41
+ var _useEuiTheme = (0, _hooks2.useEuiTheme)(),
42
+ euiTheme = _useEuiTheme.euiTheme;
43
+ (0, _hooks.useUpdateEffect)(function () {
44
+ rerenderStyles(new WeakMap());
45
+ }, [euiTheme]);
46
+ return (0, _react2.jsx)(EuiThemeMemoizedStylesContext.Provider, {
47
+ value: componentStyles
48
+ }, children);
49
+ };
50
+
51
+ /**
52
+ * Internal util primarily responsible for getting the memoized styles (if they exist)
53
+ * and if not, generating and setting the styles. DRYed out to facilitate usage
54
+ * between both hook/function components and HOC/class components
55
+ */
56
+ exports.EuiThemeMemoizedStylesProvider = EuiThemeMemoizedStylesProvider;
57
+ var getMemoizedStyles = function getMemoizedStyles(stylesGenerator, stylesMap, euiThemeContext) {
58
+ if (!stylesGenerator.name) {
59
+ throw new Error('Styles are memoized per function. Your style functions must be statically defined in order to not create a new map entry every rerender.');
60
+ }
61
+ var existingStyles = stylesMap.get(stylesGenerator);
62
+ if (existingStyles) {
63
+ return existingStyles;
64
+ } else {
65
+ var generatedStyles = stylesGenerator(euiThemeContext);
66
+ stylesMap.set(stylesGenerator, generatedStyles);
67
+ return generatedStyles;
68
+ }
69
+ };
70
+
71
+ /**
72
+ * Hook that memoizes the returned values of components style fns/generators
73
+ * per-theme
74
+ */
75
+ var useEuiMemoizedStyles = function useEuiMemoizedStyles(stylesGenerator) {
76
+ var memoizedStyles = (0, _react.useContext)(EuiThemeMemoizedStylesContext);
77
+ var euiThemeContext = (0, _hooks2.useEuiTheme)();
78
+ var memoizedComponentStyles = (0, _react.useMemo)(function () {
79
+ return getMemoizedStyles(stylesGenerator, memoizedStyles, euiThemeContext);
80
+ }, [stylesGenerator, memoizedStyles, euiThemeContext]);
81
+ return memoizedComponentStyles;
82
+ };
83
+
84
+ /**
85
+ * HOC for class components
86
+ * Syntax is mostly copied from withEuiTheme HOC
87
+ */
88
+ exports.useEuiMemoizedStyles = useEuiMemoizedStyles;
89
+ var withEuiStylesMemoizer = function withEuiStylesMemoizer(Component) {
90
+ var componentName = Component.displayName || Component.name || 'ComponentWithStylesMemoizer';
91
+ var Render = function Render(props, ref) {
92
+ var memoizedStyles = (0, _react.useContext)(EuiThemeMemoizedStylesContext);
93
+ var euiThemeContext = (0, _hooks2.useEuiTheme)();
94
+ var stylesMemoizer = (0, _react.useCallback)(function (stylesGenerator) {
95
+ return getMemoizedStyles(stylesGenerator, memoizedStyles, euiThemeContext);
96
+ }, [memoizedStyles, euiThemeContext]);
97
+ return (0, _react2.jsx)(Component, (0, _extends2.default)({
98
+ stylesMemoizer: stylesMemoizer,
99
+ ref: ref
100
+ }, props));
101
+ };
102
+ var WithEuiStylesMemoizer = /*#__PURE__*/(0, _react.forwardRef)(Render);
103
+ WithEuiStylesMemoizer.displayName = componentName;
104
+ return WithEuiStylesMemoizer;
105
+ };
106
+ exports.withEuiStylesMemoizer = withEuiStylesMemoizer;
@@ -4,11 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.useEuiButtonFocusCSS = exports.useEuiButtonColorCSS = exports.euiButtonSizeMap = exports.euiButtonFillColor = exports.euiButtonEmptyColor = exports.euiButtonColor = exports.BUTTON_COLORS = void 0;
7
+ exports.useEuiButtonFocusCSS = exports.useEuiButtonColorCSS = exports.euiButtonSizeMap = exports.euiButtonFillColor = exports.euiButtonEmptyColor = exports.euiButtonColor = exports.BUTTON_DISPLAYS = exports.BUTTON_COLORS = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
8
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
10
  var _react = require("@emotion/react");
10
11
  var _global_styling = require("../../../../global_styling");
11
12
  var _services = require("../../../../services");
13
+ var _templateObject;
12
14
  /*
13
15
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
16
  * or more contributor license agreements. Licensed under the Elastic License
@@ -16,9 +18,10 @@ var _services = require("../../../../services");
16
18
  * in compliance with, at your election, the Elastic License 2.0 or the Server
17
19
  * Side Public License, v 1.
18
20
  */
19
-
20
21
  var BUTTON_COLORS = ['text', 'accent', 'primary', 'success', 'warning', 'danger'];
21
22
  exports.BUTTON_COLORS = BUTTON_COLORS;
23
+ var BUTTON_DISPLAYS = ['base', 'fill', 'empty'];
24
+ exports.BUTTON_DISPLAYS = BUTTON_DISPLAYS;
22
25
  /**
23
26
  * Creates the `base` version of button styles with proper text contrast.
24
27
  * @param euiThemeContext
@@ -139,43 +142,63 @@ var euiButtonEmptyColor = function euiButtonEmptyColor(euiThemeContext, color) {
139
142
  exports.euiButtonEmptyColor = euiButtonEmptyColor;
140
143
  var useEuiButtonColorCSS = function useEuiButtonColorCSS() {
141
144
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
142
- var euiThemeContext = (0, _services.useEuiTheme)();
143
- function stylesByDisplay(color) {
144
- return {
145
- base: /*#__PURE__*/(0, _react.css)(euiButtonColor(euiThemeContext, color), ";;label:base;"),
146
- fill: /*#__PURE__*/(0, _react.css)(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : euiThemeContext.euiTheme.colors.fullShade, ";;label:fill;"),
147
- empty: /*#__PURE__*/(0, _react.css)("color:", euiButtonEmptyColor(euiThemeContext, color).color, ";&:focus,&:active{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";};label:empty;")
148
- };
149
- }
150
- return {
151
- text: /*#__PURE__*/(0, _react.css)(stylesByDisplay('text')[options.display || 'base'], ";label:text;"),
152
- accent: /*#__PURE__*/(0, _react.css)(stylesByDisplay('accent')[options.display || 'base'], ";label:accent;"),
153
- primary: /*#__PURE__*/(0, _react.css)(stylesByDisplay('primary')[options.display || 'base'], ";label:primary;"),
154
- success: /*#__PURE__*/(0, _react.css)(stylesByDisplay('success')[options.display || 'base'], ";label:success;"),
155
- warning: /*#__PURE__*/(0, _react.css)(stylesByDisplay('warning')[options.display || 'base'], ";label:warning;"),
156
- danger: /*#__PURE__*/(0, _react.css)(stylesByDisplay('danger')[options.display || 'base'], ";label:danger;"),
157
- disabled: /*#__PURE__*/(0, _react.css)(stylesByDisplay('disabled')[options.display || 'base'], ";label:disabled;")
158
- };
145
+ var _options$display = options.display,
146
+ display = _options$display === void 0 ? 'base' : _options$display;
147
+ var colorsDisplaysMap = (0, _services.useEuiMemoizedStyles)(euiButtonDisplaysColors);
148
+ return colorsDisplaysMap[display];
149
+ };
150
+ exports.useEuiButtonColorCSS = useEuiButtonColorCSS;
151
+ var euiButtonDisplaysColors = function euiButtonDisplaysColors(euiThemeContext) {
152
+ var COLORS = [].concat(BUTTON_COLORS, ['disabled']);
153
+ var displaysColorsMap = {};
154
+ BUTTON_DISPLAYS.forEach(function (display) {
155
+ displaysColorsMap[display] = {};
156
+ COLORS.forEach(function (color) {
157
+ switch (display) {
158
+ case 'base':
159
+ displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)(euiButtonColor(euiThemeContext, color), ";;label:displaysColorsMap-display-color;");
160
+ break;
161
+ case 'fill':
162
+ displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : euiThemeContext.euiTheme.colors.fullShade, ";;label:displaysColorsMap-display-color;");
163
+ break;
164
+ case 'empty':
165
+ displaysColorsMap[display][color] = /*#__PURE__*/(0, _react.css)("color:", euiButtonEmptyColor(euiThemeContext, color).color, ";&:focus,&:active{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";};label:displaysColorsMap-display-color;");
166
+ break;
167
+ }
168
+
169
+ // Tweak auto-generated Emotion label/className output
170
+ var emotionOutput = displaysColorsMap[display][color];
171
+ emotionOutput.styles = emotionOutput.styles.replace('label:displaysColorsMap-display-color;', "label:".concat(display, "-").concat(color, ";"));
172
+ });
173
+ });
174
+ return displaysColorsMap;
159
175
  };
160
176
 
161
177
  /**
162
178
  * Creates the translate animation when button is in focus.
163
179
  * @returns string
164
180
  */
165
- exports.useEuiButtonColorCSS = useEuiButtonColorCSS;
166
181
  var useEuiButtonFocusCSS = function useEuiButtonFocusCSS() {
167
- var _useEuiTheme = (0, _services.useEuiTheme)(),
168
- euiTheme = _useEuiTheme.euiTheme;
169
- return "\n ".concat(_global_styling.euiCanAnimate, " {\n transition: transform ").concat(euiTheme.animation.normal, " ease-in-out,\n background-color ").concat(euiTheme.animation.normal, " ease-in-out;\n\n &:hover:not(:disabled) {\n transform: translateY(-1px);\n }\n\n &:focus {\n animation: euiButtonActive ").concat(euiTheme.animation.normal, "\n ").concat(euiTheme.animation.bounce, ";\n }\n\n &:active:not(:disabled) {\n transform: translateY(1px);\n }\n }\n ");
182
+ return (0, _services.useEuiMemoizedStyles)(euiButtonFocusCSS);
183
+ };
184
+ exports.useEuiButtonFocusCSS = useEuiButtonFocusCSS;
185
+ var euiButtonFocusAnimation = (0, _react.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n 50% {\n transform: translateY(1px);\n }\n"])));
186
+ var euiButtonFocusCSS = function euiButtonFocusCSS(_ref) {
187
+ var euiTheme = _ref.euiTheme;
188
+ var focusCSS = /*#__PURE__*/(0, _react.css)(_global_styling.euiCanAnimate, "{transition:transform ", euiTheme.animation.normal, " ease-in-out,background-color ", euiTheme.animation.normal, " ease-in-out;&:hover:not(:disabled){transform:translateY(-1px);}&:focus{animation:", euiButtonFocusAnimation, " ", euiTheme.animation.normal, " ", euiTheme.animation.bounce, ";}&:active:not(:disabled){transform:translateY(1px);}};label:focusCSS;");
189
+ // Remove the auto-generated label.
190
+ // We could typically avoid a label by using a plain string `` instead of css``,
191
+ // but we need css`` for keyframes`` to work for the focus animation
192
+ focusCSS.styles = focusCSS.styles.replace('label:focusCSS;', '');
193
+ return focusCSS;
170
194
  };
171
195
 
172
196
  /**
173
197
  * Map of `size` props to various sizings/scales
174
198
  * that should remain consistent across all buttons
175
199
  */
176
- exports.useEuiButtonFocusCSS = useEuiButtonFocusCSS;
177
- var euiButtonSizeMap = function euiButtonSizeMap(_ref) {
178
- var euiTheme = _ref.euiTheme;
200
+ var euiButtonSizeMap = function euiButtonSizeMap(_ref2) {
201
+ var euiTheme = _ref2.euiTheme;
179
202
  return {
180
203
  xs: {
181
204
  height: euiTheme.size.l,
@@ -1,5 +0,0 @@
1
- @import 'variables';
2
- @import 'mixins';
3
-
4
- @import 'side_nav';
5
- @import 'side_nav_item';
@@ -1,7 +0,0 @@
1
- // stylelint-disable color-named
2
-
3
- @mixin euiSideNavEmbellish {
4
- background:
5
- linear-gradient(160deg, $euiSideNavEmphasizedBackgroundColor 0, $euiSideNavEmphasizedBackgroundColor $euiSizeXL, rgba(red, 0) 0),
6
- linear-gradient(175deg, $euiSideNavEmphasizedBackgroundColor 0, $euiSideNavEmphasizedBackgroundColor $euiSize, rgba(red, 0) 0);
7
- }
@@ -1,47 +0,0 @@
1
- // These mobile children are hidden in everything but mobile view.
2
- .euiSideNav__mobileToggle {
3
- height: auto;
4
- border-bottom: $euiBorderThin;
5
- width: 100%;
6
- text-align: left;
7
- border-radius: 0 !important; // stylelint-disable-line declaration-no-important
8
- font-size: $euiFontSizeM;
9
- padding: 0 $euiSize; // This plus the inner padding is equal to paddingSize large for EuiPage
10
-
11
- .euiSideNav__mobileToggleText {
12
- padding: $euiSize 0;
13
- }
14
-
15
- .euiSideNav__mobileToggleContent {
16
- justify-content: space-between;
17
- }
18
- }
19
-
20
- .euiSideNav__heading {
21
- margin-bottom: $euiSizeL;
22
- }
23
-
24
- // Loop through the breakpoints and apply mobile styles only to the right className
25
- // stylelint-disable max-nesting-depth
26
- @each $breakpoint in $euiBreakpointKeys {
27
- @include euiBreakpoint($breakpoint) {
28
- .euiSideNav__contentMobile-#{$breakpoint} {
29
- overflow: hidden;
30
- visibility: hidden;
31
- opacity: 0;
32
- max-height: 0;
33
- padding: 0 $euiSizeL;
34
-
35
- .euiSideNav-isOpenMobile & {
36
- visibility: visible;
37
- opacity: 1;
38
- padding: $euiSizeL;
39
- max-height: 5000px; /* 1 */
40
-
41
- @include euiCanAnimate {
42
- transition: all $euiAnimSpeedNormal $euiAnimSlightResistance;
43
- }
44
- }
45
- }
46
- }
47
- }
@@ -1,181 +0,0 @@
1
- /**
2
- * 1. Text-align defaults to center, so we have to override that.
3
- * 2. Color the text at the item level and then have the button inherit so overrides are easier
4
- * 3. Enable ellipsis overflow to work (https://css-tricks.com/flexbox-truncated-text/)
5
- * 4. Restrict the underline to the button __label so it doesn't affect other components that might live within
6
- */
7
-
8
- .euiSideNavItemButton {
9
- @include euiFontSizeS;
10
- text-align: left; /* 1 */
11
- display: block;
12
- width: 100%;
13
- padding: ($euiSizeXS / 2) 0;
14
- color: inherit; /* 2 */
15
-
16
- &.euiSideNavItemButton--isClickable:not(:disabled) {
17
- &:hover {
18
- cursor: pointer;
19
- }
20
-
21
- &:hover,
22
- &:focus {
23
- .euiSideNavItemButton__label {
24
- // A lingering focus will stay underlined even if it doesn't get the `isSelected` prop
25
- text-decoration: underline; /* 4 */
26
- }
27
- }
28
- }
29
-
30
- &.euiSideNavItemButton-isSelected {
31
- color: $euiSideNavSelectedTextcolor;
32
- font-weight: $euiFontWeightBold;
33
-
34
- .euiSideNavItemButton__label {
35
- text-decoration: underline; /* 4 */
36
- }
37
- }
38
-
39
- &:disabled {
40
- @include euiDisabledState($euiSideNavDisabledTextcolor);
41
- }
42
- }
43
-
44
- .euiSideNavItemButton__content {
45
- display: flex;
46
- align-items: center;
47
- }
48
-
49
- .euiSideNavItemButton__icon {
50
- margin-right: $euiSizeS;
51
- }
52
-
53
- .euiSideNavItemButton__labelContainer {
54
- min-width: 0; /* 3 */
55
- }
56
-
57
- .euiSideNavItemButton__label {
58
- flex-grow: 1;
59
- }
60
-
61
- .euiSideNavItemButton__label--truncated {
62
- @include euiTextTruncate;
63
- }
64
-
65
- .euiSideNavItem--root {
66
- &.euiSideNavItem--rootIcon > .euiSideNavItem__items {
67
- margin-left: $euiSizeL;
68
- }
69
-
70
- /**
71
- * 1. Create padding around focus area without indenting the item itself.
72
- */
73
- & > .euiSideNavItemButton {
74
- margin-bottom: $euiSizeS;
75
- padding: 0;
76
- padding-left: $euiSizeS; /* 1 */
77
- padding-right: $euiSizeS; /* 1 */
78
- margin-left: -$euiSizeS; /* 1 */
79
- width: calc(100% + #{$euiSizeS * 2}); /* 1 */
80
-
81
- .euiSideNavItemButton__label {
82
- @include euiTitle('xs');
83
- color: inherit;
84
- }
85
- }
86
-
87
- & > .euiSideNavItem__items {
88
- position: static;
89
- margin-left: 0;
90
-
91
- &::after {
92
- display: none;
93
- }
94
- }
95
-
96
- & + & {
97
- margin-top: $euiSizeXL;
98
- }
99
- }
100
-
101
- .euiSideNavItem--trunk {
102
- color: $euiSideNavRootTextcolor; /* 2 */
103
-
104
- /**
105
- * 1. Create padding around focus area without indenting the item itself.
106
- */
107
- & > .euiSideNavItemButton {
108
- padding-left: $euiSizeS; /* 1 */
109
- padding-right: $euiSizeS; /* 1 */
110
- margin-left: -$euiSizeS; /* 1 */
111
- width: calc(100% + #{$euiSizeS * 2}); /* 1 */
112
- }
113
-
114
- & > .euiSideNavItem__items {
115
- margin-left: $euiSizeS;
116
- width: 100%;
117
- }
118
- }
119
-
120
- .euiSideNavItem--branch {
121
- /**
122
- * 1. Draw the vertical line to group an expanded item's child items together.
123
- */
124
- position: relative;
125
- color: $euiSideNavBranchTextcolor; /* 2 */
126
-
127
- &::after { /* 1 */
128
- position: absolute;
129
- content: '';
130
- top: 0;
131
- bottom: 0;
132
- width: 1px;
133
- background: $euiBorderColor;
134
- left: 0;
135
- }
136
-
137
- // If this is actually the last item, we don't want the vertical line to stretch all the way down
138
- &:last-of-type::after {
139
- height: $euiSizeM;
140
- }
141
-
142
- /**
143
- * 2. Absolutely position the horizontal tick connecting the item to the vertical line.
144
- */
145
- & > .euiSideNavItemButton {
146
- position: relative; /* 2 */
147
- padding-left: $euiSizeS;
148
- padding-right: $euiSizeS; /* 2 */
149
-
150
- &::after {
151
- position: absolute; /* 2 */
152
- content: '';
153
- top: $euiSizeM;
154
- left: 0;
155
- width: $euiSizeXS;
156
- height: 1px;
157
- background: $euiBorderColor;
158
- }
159
- }
160
-
161
- & > .euiSideNavItem__items {
162
- margin-left: $euiSize;
163
- }
164
- }
165
-
166
- .euiSideNavItem--emphasized {
167
- background: $euiSideNavEmphasizedBackgroundColor;
168
- color: $euiSideNavRootTextcolor;
169
- // The large y values allow the shadow to stretch beyond the side nav bounds to it's parents container
170
- box-shadow: 100px 0 0 0 $euiSideNavEmphasizedBackgroundColor, -100px 0 0 0 $euiSideNavEmphasizedBackgroundColor;
171
-
172
- > .euiSideNavItemButton {
173
- font-weight: $euiFontWeightBold;
174
- }
175
-
176
- // Remove any extra box-shadows from nested emphasized items
177
- .euiSideNavItem--emphasized {
178
- background: transparent;
179
- box-shadow: none;
180
- }
181
- }
@@ -1,15 +0,0 @@
1
- $euiSideNavEmphasizedBackgroundColor: transparentize($euiColorLightShade, .7);
2
-
3
- // Simulates the transparent backround on top of the page background to get an opaque color
4
- // in order to get the right contrast for text
5
- @function euiSideNavEmphasizedContrast($textColor, $ratio: $euiContrastRatioText) {
6
- $backgroundColorSimulated: mix($euiPageBackgroundColor, $euiColorLightShade, 70%);
7
- $color: makeHighContrastColor($textColor, $backgroundColorSimulated, $ratio);
8
- @return $color;
9
- }
10
-
11
- // Ensure all the possible text color have proper contrast when "emphasized"
12
- $euiSideNavRootTextcolor: euiSideNavEmphasizedContrast($euiTitleColor);
13
- $euiSideNavBranchTextcolor: euiSideNavEmphasizedContrast($euiTextSubduedColor);
14
- $euiSideNavSelectedTextcolor: euiSideNavEmphasizedContrast($euiColorPrimary);
15
- $euiSideNavDisabledTextcolor: euiSideNavEmphasizedContrast($euiButtonColorDisabledText, $euiContrastRatioDisabled);
@@ -1,17 +0,0 @@
1
- .euiSideNavItem--root {
2
- padding-bottom: $euiSizeS;
3
-
4
- & + & {
5
- padding-top: $euiSizeS;
6
- margin-top: $euiSizeS;
7
- }
8
-
9
- & > .euiSideNavItemButton {
10
- margin-bottom: $euiSizeXS;
11
-
12
- .euiSideNavItemButton__label {
13
- @include euiTitle('xxs');
14
- color: inherit;
15
- }
16
- }
17
- }