@elastic/eui 93.2.0 → 93.4.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 (418) hide show
  1. package/dist/eui_charts_theme.d.ts +9 -0
  2. package/dist/eui_charts_theme.js +56 -14
  3. package/dist/eui_charts_theme.js.map +1 -1
  4. package/dist/eui_theme_dark.css +3 -0
  5. package/dist/eui_theme_dark.min.css +1 -1
  6. package/dist/eui_theme_light.css +3 -0
  7. package/dist/eui_theme_light.min.css +1 -1
  8. package/es/components/breadcrumbs/_breadcrumb_content.js +362 -0
  9. package/es/components/breadcrumbs/_breadcrumb_content.styles.js +48 -0
  10. package/es/components/breadcrumbs/breadcrumb.js +10 -324
  11. package/es/components/breadcrumbs/breadcrumb.styles.js +5 -27
  12. package/es/components/breadcrumbs/breadcrumbs.js +8 -6
  13. package/es/components/breadcrumbs/types.js +1 -0
  14. package/es/components/button/button_display/_button_display.js +2 -3
  15. package/es/components/button/button_empty/button_empty.js +2 -3
  16. package/es/components/button/button_group/button_group.js +19 -7
  17. package/es/components/button/button_group/button_group.styles.js +11 -14
  18. package/es/components/button/button_group/button_group_button.js +59 -5
  19. package/es/components/button/button_group/button_group_button.styles.js +39 -3
  20. package/es/components/button/button_icon/button_icon.js +4 -5
  21. package/es/components/button/button_icon/button_icon.styles.js +11 -3
  22. package/es/components/datagrid/body/cell/data_grid_cell.js +102 -59
  23. package/es/components/datagrid/body/cell/data_grid_cell_actions.js +24 -18
  24. package/es/components/datagrid/body/cell/data_grid_cell_popover.js +64 -56
  25. package/es/components/datagrid/body/cell/data_grid_cell_wrapper.js +34 -31
  26. package/es/components/datagrid/body/cell/index.js +1 -1
  27. package/es/components/datagrid/body/data_grid_body.js +14 -0
  28. package/es/components/datagrid/body/data_grid_body_custom.js +54 -35
  29. package/es/components/datagrid/body/data_grid_body_virtualized.js +87 -56
  30. package/es/components/datagrid/body/data_grid_row_manager.js +7 -5
  31. package/es/components/datagrid/body/footer/use_data_grid_footer.js +1 -2
  32. package/es/components/datagrid/body/header/data_grid_control_header_cell.js +5 -4
  33. package/es/components/datagrid/body/header/data_grid_header_cell.js +73 -53
  34. package/es/components/datagrid/body/header/data_grid_header_row.js +15 -551
  35. package/es/components/datagrid/body/header/use_data_grid_header.js +7 -6
  36. package/es/components/datagrid/controls/column_selector.js +126 -123
  37. package/es/components/datagrid/controls/column_sorting.js +605 -103
  38. package/es/components/datagrid/controls/column_sorting_draggable.js +24 -22
  39. package/es/components/datagrid/controls/display_selector.js +109 -107
  40. package/es/components/datagrid/data_grid.a11y.js +13 -12
  41. package/es/components/datagrid/data_grid.js +47 -22
  42. package/es/components/datagrid/utils/col_widths.js +12 -8
  43. package/es/components/datagrid/utils/focus.js +10 -8
  44. package/es/components/datagrid/utils/grid_height_width.js +31 -30
  45. package/es/components/datagrid/utils/ref.js +1 -1
  46. package/es/components/datagrid/utils/row_heights.js +2 -2
  47. package/es/components/datagrid/utils/sorting.js +29 -27
  48. package/es/components/date_picker/super_date_picker/super_date_picker.js +9 -0
  49. package/es/components/date_picker/super_date_picker/super_update_button.js +57 -29
  50. package/es/components/facet/facet_button.styles.js +1 -2
  51. package/es/components/flex/flex_grid.js +22 -8
  52. package/es/components/flex/flex_grid.styles.js +13 -6
  53. package/es/components/flex/flex_group.js +10 -11
  54. package/es/components/flex/flex_item.js +9 -11
  55. package/es/components/flex/flex_item.styles.js +107 -122
  56. package/es/components/flyout/flyout.js +16 -18
  57. package/es/components/header/header_breadcrumbs/header_breadcrumbs.js +7 -7
  58. package/es/components/icon/icon.js +13 -16
  59. package/es/components/icon/icon.styles.js +6 -9
  60. package/es/components/link/external_link_icon.js +11 -8
  61. package/es/components/link/link.js +2 -3
  62. package/es/components/link/link.styles.js +4 -10
  63. package/es/components/modal/confirm_modal.js +2 -1
  64. package/es/components/modal/modal.js +12 -3
  65. package/es/components/observer/resize_observer/resize_observer.js +15 -24
  66. package/es/components/page/page_header/page_header_content.js +4 -2
  67. package/es/components/progress/progress.styles.js +2 -2
  68. package/es/components/skeleton/skeleton_circle.js +2 -3
  69. package/es/components/skeleton/skeleton_rectangle.js +2 -3
  70. package/es/components/skeleton/skeleton_text.js +16 -12
  71. package/es/components/skeleton/skeleton_title.js +2 -3
  72. package/es/components/spacer/spacer.js +2 -3
  73. package/es/components/text/text.js +2 -3
  74. package/es/components/text/text_align.js +1 -2
  75. package/es/components/text/text_align.styles.js +5 -7
  76. package/es/components/text/text_color.js +2 -3
  77. package/es/components/title/title.js +2 -3
  78. package/es/components/title/title.styles.js +0 -7
  79. package/es/components/toast/global_toast_list.js +70 -73
  80. package/es/components/toast/toast.js +27 -42
  81. package/es/components/toast/toast.styles.js +2 -17
  82. package/es/global_styling/mixins/_typography.js +17 -6
  83. package/es/services/color/eui_palettes.js +21 -13
  84. package/es/services/color/index.js +1 -1
  85. package/es/services/hooks/index.js +1 -0
  86. package/es/services/hooks/useDeepEqual.js +23 -0
  87. package/es/services/index.js +1 -1
  88. package/es/services/theme/index.js +1 -1
  89. package/es/services/theme/style_memoization.js +47 -14
  90. package/es/themes/amsterdam/global_styling/mixins/button.js +47 -24
  91. package/eui.d.ts +2862 -2748
  92. package/i18ntokens.json +267 -267
  93. package/lib/components/breadcrumbs/_breadcrumb_content.js +372 -0
  94. package/lib/components/breadcrumbs/_breadcrumb_content.styles.js +55 -0
  95. package/lib/components/breadcrumbs/breadcrumb.js +11 -328
  96. package/lib/components/breadcrumbs/breadcrumb.styles.js +5 -29
  97. package/lib/components/breadcrumbs/breadcrumbs.js +7 -5
  98. package/lib/components/breadcrumbs/types.js +5 -0
  99. package/lib/components/button/button_display/_button_display.js +1 -2
  100. package/lib/components/button/button_empty/button_empty.js +1 -2
  101. package/lib/components/button/button_group/button_group.js +18 -6
  102. package/lib/components/button/button_group/button_group.styles.js +11 -14
  103. package/lib/components/button/button_group/button_group_button.js +59 -5
  104. package/lib/components/button/button_group/button_group_button.styles.js +45 -11
  105. package/lib/components/button/button_icon/button_icon.js +3 -4
  106. package/lib/components/button/button_icon/button_icon.styles.js +10 -2
  107. package/lib/components/datagrid/body/cell/data_grid_cell.js +100 -58
  108. package/lib/components/datagrid/body/cell/data_grid_cell_actions.js +24 -18
  109. package/lib/components/datagrid/body/cell/data_grid_cell_popover.js +63 -55
  110. package/lib/components/datagrid/body/cell/data_grid_cell_wrapper.js +34 -31
  111. package/lib/components/datagrid/body/cell/index.js +2 -2
  112. package/lib/components/datagrid/body/data_grid_body.js +14 -0
  113. package/lib/components/datagrid/body/data_grid_body_custom.js +53 -34
  114. package/lib/components/datagrid/body/data_grid_body_virtualized.js +86 -55
  115. package/lib/components/datagrid/body/data_grid_row_manager.js +6 -4
  116. package/lib/components/datagrid/body/footer/use_data_grid_footer.js +1 -2
  117. package/lib/components/datagrid/body/header/data_grid_control_header_cell.js +8 -4
  118. package/lib/components/datagrid/body/header/data_grid_header_cell.js +72 -52
  119. package/lib/components/datagrid/body/header/data_grid_header_row.js +14 -550
  120. package/lib/components/datagrid/body/header/use_data_grid_header.js +7 -6
  121. package/lib/components/datagrid/controls/column_selector.js +126 -123
  122. package/lib/components/datagrid/controls/column_sorting.js +615 -110
  123. package/lib/components/datagrid/controls/column_sorting_draggable.js +27 -22
  124. package/lib/components/datagrid/controls/display_selector.js +109 -107
  125. package/lib/components/datagrid/data_grid.a11y.js +13 -12
  126. package/lib/components/datagrid/data_grid.js +45 -20
  127. package/lib/components/datagrid/utils/col_widths.js +12 -8
  128. package/lib/components/datagrid/utils/focus.js +10 -8
  129. package/lib/components/datagrid/utils/grid_height_width.js +29 -28
  130. package/lib/components/datagrid/utils/ref.js +1 -1
  131. package/lib/components/datagrid/utils/row_heights.js +1 -1
  132. package/lib/components/datagrid/utils/sorting.js +31 -29
  133. package/lib/components/date_picker/super_date_picker/super_date_picker.js +9 -0
  134. package/lib/components/date_picker/super_date_picker/super_update_button.js +57 -29
  135. package/lib/components/facet/facet_button.styles.js +1 -2
  136. package/lib/components/flex/flex_grid.js +23 -7
  137. package/lib/components/flex/flex_grid.styles.js +13 -6
  138. package/lib/components/flex/flex_group.js +10 -10
  139. package/lib/components/flex/flex_item.js +13 -13
  140. package/lib/components/flex/flex_item.styles.js +107 -122
  141. package/lib/components/flyout/flyout.js +16 -18
  142. package/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +7 -7
  143. package/lib/components/icon/icon.js +12 -15
  144. package/lib/components/icon/icon.styles.js +5 -8
  145. package/lib/components/link/external_link_icon.js +10 -7
  146. package/lib/components/link/link.js +1 -2
  147. package/lib/components/link/link.styles.js +6 -14
  148. package/lib/components/modal/confirm_modal.js +2 -1
  149. package/lib/components/modal/modal.js +12 -3
  150. package/lib/components/observer/resize_observer/resize_observer.js +15 -24
  151. package/lib/components/page/page_header/page_header_content.js +4 -2
  152. package/lib/components/progress/progress.styles.js +1 -1
  153. package/lib/components/skeleton/skeleton_circle.js +1 -2
  154. package/lib/components/skeleton/skeleton_rectangle.js +1 -2
  155. package/lib/components/skeleton/skeleton_text.js +18 -11
  156. package/lib/components/skeleton/skeleton_title.js +1 -2
  157. package/lib/components/spacer/spacer.js +1 -2
  158. package/lib/components/text/text.js +1 -2
  159. package/lib/components/text/text_align.js +1 -2
  160. package/lib/components/text/text_align.styles.js +5 -7
  161. package/lib/components/text/text_color.js +1 -2
  162. package/lib/components/title/title.js +1 -2
  163. package/lib/components/title/title.styles.js +2 -10
  164. package/lib/components/toast/global_toast_list.js +68 -71
  165. package/lib/components/toast/toast.js +25 -40
  166. package/lib/components/toast/toast.styles.js +11 -25
  167. package/lib/global_styling/mixins/_typography.js +27 -19
  168. package/lib/services/color/eui_palettes.js +24 -14
  169. package/lib/services/color/index.js +14 -0
  170. package/lib/services/hooks/index.js +11 -0
  171. package/lib/services/hooks/useDeepEqual.js +30 -0
  172. package/lib/services/index.js +15 -1
  173. package/lib/services/theme/index.js +6 -0
  174. package/lib/services/theme/style_memoization.js +49 -16
  175. package/lib/themes/amsterdam/global_styling/mixins/button.js +49 -25
  176. package/optimize/es/components/breadcrumbs/_breadcrumb_content.js +153 -0
  177. package/optimize/es/components/breadcrumbs/_breadcrumb_content.styles.js +48 -0
  178. package/optimize/es/components/breadcrumbs/breadcrumb.js +10 -109
  179. package/optimize/es/components/breadcrumbs/breadcrumb.styles.js +5 -27
  180. package/optimize/es/components/breadcrumbs/breadcrumbs.js +4 -4
  181. package/optimize/es/components/breadcrumbs/types.js +1 -0
  182. package/optimize/es/components/button/button_display/_button_display.js +2 -3
  183. package/optimize/es/components/button/button_empty/button_empty.js +2 -3
  184. package/optimize/es/components/button/button_group/button_group.js +5 -7
  185. package/optimize/es/components/button/button_group/button_group.styles.js +11 -14
  186. package/optimize/es/components/button/button_group/button_group_button.js +36 -4
  187. package/optimize/es/components/button/button_group/button_group_button.styles.js +39 -3
  188. package/optimize/es/components/button/button_icon/button_icon.js +4 -5
  189. package/optimize/es/components/button/button_icon/button_icon.styles.js +8 -3
  190. package/optimize/es/components/datagrid/body/cell/data_grid_cell.js +83 -56
  191. package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.js +24 -18
  192. package/optimize/es/components/datagrid/body/cell/data_grid_cell_popover.js +64 -56
  193. package/optimize/es/components/datagrid/body/cell/data_grid_cell_wrapper.js +34 -31
  194. package/optimize/es/components/datagrid/body/cell/index.js +1 -1
  195. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +40 -35
  196. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +71 -49
  197. package/optimize/es/components/datagrid/body/data_grid_row_manager.js +7 -5
  198. package/optimize/es/components/datagrid/body/footer/use_data_grid_footer.js +1 -2
  199. package/optimize/es/components/datagrid/body/header/data_grid_control_header_cell.js +4 -3
  200. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +65 -49
  201. package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +15 -13
  202. package/optimize/es/components/datagrid/body/header/use_data_grid_header.js +7 -6
  203. package/optimize/es/components/datagrid/controls/column_selector.js +126 -123
  204. package/optimize/es/components/datagrid/controls/column_sorting.js +121 -103
  205. package/optimize/es/components/datagrid/controls/column_sorting_draggable.js +24 -22
  206. package/optimize/es/components/datagrid/controls/display_selector.js +109 -107
  207. package/optimize/es/components/datagrid/data_grid.a11y.js +13 -12
  208. package/optimize/es/components/datagrid/data_grid.js +47 -22
  209. package/optimize/es/components/datagrid/utils/col_widths.js +9 -5
  210. package/optimize/es/components/datagrid/utils/focus.js +10 -8
  211. package/optimize/es/components/datagrid/utils/grid_height_width.js +31 -30
  212. package/optimize/es/components/datagrid/utils/ref.js +1 -1
  213. package/optimize/es/components/datagrid/utils/row_heights.js +2 -2
  214. package/optimize/es/components/datagrid/utils/sorting.js +29 -27
  215. package/optimize/es/components/date_picker/super_date_picker/super_update_button.js +49 -29
  216. package/optimize/es/components/facet/facet_button.styles.js +1 -2
  217. package/optimize/es/components/flex/flex_grid.js +19 -8
  218. package/optimize/es/components/flex/flex_grid.styles.js +13 -6
  219. package/optimize/es/components/flex/flex_group.js +9 -10
  220. package/optimize/es/components/flex/flex_item.js +9 -11
  221. package/optimize/es/components/flex/flex_item.styles.js +107 -122
  222. package/optimize/es/components/flyout/flyout.js +16 -18
  223. package/optimize/es/components/header/header_breadcrumbs/header_breadcrumbs.js +3 -5
  224. package/optimize/es/components/icon/icon.js +13 -16
  225. package/optimize/es/components/icon/icon.styles.js +6 -9
  226. package/optimize/es/components/link/external_link_icon.js +11 -8
  227. package/optimize/es/components/link/link.js +2 -3
  228. package/optimize/es/components/link/link.styles.js +4 -10
  229. package/optimize/es/components/modal/confirm_modal.js +2 -1
  230. package/optimize/es/components/modal/modal.js +6 -2
  231. package/optimize/es/components/observer/resize_observer/resize_observer.js +15 -24
  232. package/optimize/es/components/progress/progress.styles.js +2 -2
  233. package/optimize/es/components/skeleton/skeleton_circle.js +2 -3
  234. package/optimize/es/components/skeleton/skeleton_rectangle.js +2 -3
  235. package/optimize/es/components/skeleton/skeleton_text.js +16 -12
  236. package/optimize/es/components/skeleton/skeleton_title.js +2 -3
  237. package/optimize/es/components/spacer/spacer.js +2 -3
  238. package/optimize/es/components/text/text.js +2 -3
  239. package/optimize/es/components/text/text_align.js +1 -2
  240. package/optimize/es/components/text/text_align.styles.js +5 -7
  241. package/optimize/es/components/text/text_color.js +2 -3
  242. package/optimize/es/components/title/title.js +2 -3
  243. package/optimize/es/components/title/title.styles.js +0 -7
  244. package/optimize/es/components/toast/global_toast_list.js +70 -73
  245. package/optimize/es/components/toast/toast.js +27 -42
  246. package/optimize/es/components/toast/toast.styles.js +2 -17
  247. package/optimize/es/global_styling/mixins/_typography.js +14 -6
  248. package/optimize/es/services/color/eui_palettes.js +21 -13
  249. package/optimize/es/services/color/index.js +1 -1
  250. package/optimize/es/services/hooks/index.js +1 -0
  251. package/optimize/es/services/hooks/useDeepEqual.js +23 -0
  252. package/optimize/es/services/index.js +1 -1
  253. package/optimize/es/services/theme/index.js +1 -1
  254. package/optimize/es/services/theme/style_memoization.js +47 -14
  255. package/optimize/es/themes/amsterdam/global_styling/mixins/button.js +47 -24
  256. package/optimize/lib/components/breadcrumbs/_breadcrumb_content.js +163 -0
  257. package/optimize/lib/components/breadcrumbs/_breadcrumb_content.styles.js +55 -0
  258. package/optimize/lib/components/breadcrumbs/breadcrumb.js +10 -112
  259. package/optimize/lib/components/breadcrumbs/breadcrumb.styles.js +5 -29
  260. package/optimize/lib/components/breadcrumbs/breadcrumbs.js +3 -3
  261. package/optimize/lib/components/breadcrumbs/types.js +5 -0
  262. package/optimize/lib/components/button/button_display/_button_display.js +1 -2
  263. package/optimize/lib/components/button/button_empty/button_empty.js +1 -2
  264. package/optimize/lib/components/button/button_group/button_group.js +4 -6
  265. package/optimize/lib/components/button/button_group/button_group.styles.js +11 -14
  266. package/optimize/lib/components/button/button_group/button_group_button.js +37 -5
  267. package/optimize/lib/components/button/button_group/button_group_button.styles.js +45 -11
  268. package/optimize/lib/components/button/button_icon/button_icon.js +3 -4
  269. package/optimize/lib/components/button/button_icon/button_icon.styles.js +8 -2
  270. package/optimize/lib/components/datagrid/body/cell/data_grid_cell.js +81 -55
  271. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.js +24 -18
  272. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_popover.js +63 -55
  273. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_wrapper.js +34 -31
  274. package/optimize/lib/components/datagrid/body/cell/index.js +2 -2
  275. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +39 -34
  276. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +72 -50
  277. package/optimize/lib/components/datagrid/body/data_grid_row_manager.js +6 -4
  278. package/optimize/lib/components/datagrid/body/footer/use_data_grid_footer.js +1 -2
  279. package/optimize/lib/components/datagrid/body/header/data_grid_control_header_cell.js +8 -4
  280. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +65 -49
  281. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +14 -12
  282. package/optimize/lib/components/datagrid/body/header/use_data_grid_header.js +7 -6
  283. package/optimize/lib/components/datagrid/controls/column_selector.js +126 -123
  284. package/optimize/lib/components/datagrid/controls/column_sorting.js +125 -107
  285. package/optimize/lib/components/datagrid/controls/column_sorting_draggable.js +27 -22
  286. package/optimize/lib/components/datagrid/controls/display_selector.js +109 -107
  287. package/optimize/lib/components/datagrid/data_grid.a11y.js +13 -12
  288. package/optimize/lib/components/datagrid/data_grid.js +45 -20
  289. package/optimize/lib/components/datagrid/utils/col_widths.js +9 -5
  290. package/optimize/lib/components/datagrid/utils/focus.js +10 -8
  291. package/optimize/lib/components/datagrid/utils/grid_height_width.js +29 -28
  292. package/optimize/lib/components/datagrid/utils/ref.js +1 -1
  293. package/optimize/lib/components/datagrid/utils/row_heights.js +1 -1
  294. package/optimize/lib/components/datagrid/utils/sorting.js +31 -29
  295. package/optimize/lib/components/date_picker/super_date_picker/super_update_button.js +49 -29
  296. package/optimize/lib/components/facet/facet_button.styles.js +1 -2
  297. package/optimize/lib/components/flex/flex_grid.js +21 -7
  298. package/optimize/lib/components/flex/flex_grid.styles.js +13 -6
  299. package/optimize/lib/components/flex/flex_group.js +9 -9
  300. package/optimize/lib/components/flex/flex_item.js +13 -13
  301. package/optimize/lib/components/flex/flex_item.styles.js +107 -122
  302. package/optimize/lib/components/flyout/flyout.js +16 -18
  303. package/optimize/lib/components/header/header_breadcrumbs/header_breadcrumbs.js +3 -5
  304. package/optimize/lib/components/icon/icon.js +12 -15
  305. package/optimize/lib/components/icon/icon.styles.js +5 -8
  306. package/optimize/lib/components/link/external_link_icon.js +10 -7
  307. package/optimize/lib/components/link/link.js +1 -2
  308. package/optimize/lib/components/link/link.styles.js +6 -14
  309. package/optimize/lib/components/modal/confirm_modal.js +2 -1
  310. package/optimize/lib/components/modal/modal.js +6 -2
  311. package/optimize/lib/components/observer/resize_observer/resize_observer.js +15 -24
  312. package/optimize/lib/components/progress/progress.styles.js +1 -1
  313. package/optimize/lib/components/skeleton/skeleton_circle.js +1 -2
  314. package/optimize/lib/components/skeleton/skeleton_rectangle.js +1 -2
  315. package/optimize/lib/components/skeleton/skeleton_text.js +18 -11
  316. package/optimize/lib/components/skeleton/skeleton_title.js +1 -2
  317. package/optimize/lib/components/spacer/spacer.js +1 -2
  318. package/optimize/lib/components/text/text.js +1 -2
  319. package/optimize/lib/components/text/text_align.js +1 -2
  320. package/optimize/lib/components/text/text_align.styles.js +5 -7
  321. package/optimize/lib/components/text/text_color.js +1 -2
  322. package/optimize/lib/components/title/title.js +1 -2
  323. package/optimize/lib/components/title/title.styles.js +2 -10
  324. package/optimize/lib/components/toast/global_toast_list.js +68 -71
  325. package/optimize/lib/components/toast/toast.js +25 -40
  326. package/optimize/lib/components/toast/toast.styles.js +11 -25
  327. package/optimize/lib/global_styling/mixins/_typography.js +25 -19
  328. package/optimize/lib/services/color/eui_palettes.js +24 -14
  329. package/optimize/lib/services/color/index.js +14 -0
  330. package/optimize/lib/services/hooks/index.js +11 -0
  331. package/optimize/lib/services/hooks/useDeepEqual.js +30 -0
  332. package/optimize/lib/services/index.js +15 -1
  333. package/optimize/lib/services/theme/index.js +6 -0
  334. package/optimize/lib/services/theme/style_memoization.js +49 -16
  335. package/optimize/lib/themes/amsterdam/global_styling/mixins/button.js +49 -26
  336. package/package.json +3 -3
  337. package/src/components/datagrid/_data_grid_data_row.scss +4 -0
  338. package/test-env/components/breadcrumbs/_breadcrumb_content.js +363 -0
  339. package/test-env/components/breadcrumbs/_breadcrumb_content.styles.js +55 -0
  340. package/test-env/components/breadcrumbs/breadcrumb.js +11 -323
  341. package/test-env/components/breadcrumbs/breadcrumb.styles.js +5 -29
  342. package/test-env/components/breadcrumbs/breadcrumbs.js +7 -5
  343. package/test-env/components/breadcrumbs/types.js +5 -0
  344. package/test-env/components/button/button_display/_button_display.js +1 -2
  345. package/test-env/components/button/button_empty/button_empty.js +1 -2
  346. package/test-env/components/button/button_group/button_group.js +18 -6
  347. package/test-env/components/button/button_group/button_group.styles.js +11 -14
  348. package/test-env/components/button/button_group/button_group_button.js +56 -5
  349. package/test-env/components/button/button_group/button_group_button.styles.js +45 -11
  350. package/test-env/components/button/button_icon/button_icon.js +3 -4
  351. package/test-env/components/button/button_icon/button_icon.styles.js +8 -2
  352. package/test-env/components/datagrid/body/cell/data_grid_cell.js +100 -58
  353. package/test-env/components/datagrid/body/cell/data_grid_cell_actions.js +24 -18
  354. package/test-env/components/datagrid/body/cell/data_grid_cell_popover.js +63 -55
  355. package/test-env/components/datagrid/body/cell/data_grid_cell_wrapper.js +34 -31
  356. package/test-env/components/datagrid/body/cell/index.js +2 -2
  357. package/test-env/components/datagrid/body/data_grid_body.js +14 -0
  358. package/test-env/components/datagrid/body/data_grid_body_custom.js +53 -34
  359. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +86 -55
  360. package/test-env/components/datagrid/body/data_grid_row_manager.js +6 -4
  361. package/test-env/components/datagrid/body/footer/use_data_grid_footer.js +1 -2
  362. package/test-env/components/datagrid/body/header/data_grid_control_header_cell.js +8 -4
  363. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +72 -52
  364. package/test-env/components/datagrid/body/header/data_grid_header_row.js +14 -550
  365. package/test-env/components/datagrid/body/header/use_data_grid_header.js +7 -6
  366. package/test-env/components/datagrid/controls/column_selector.js +126 -123
  367. package/test-env/components/datagrid/controls/column_sorting.js +607 -106
  368. package/test-env/components/datagrid/controls/column_sorting_draggable.js +27 -22
  369. package/test-env/components/datagrid/controls/display_selector.js +109 -107
  370. package/test-env/components/datagrid/data_grid.a11y.js +13 -12
  371. package/test-env/components/datagrid/data_grid.js +45 -20
  372. package/test-env/components/datagrid/utils/col_widths.js +9 -5
  373. package/test-env/components/datagrid/utils/focus.js +10 -8
  374. package/test-env/components/datagrid/utils/grid_height_width.js +29 -28
  375. package/test-env/components/datagrid/utils/ref.js +1 -1
  376. package/test-env/components/datagrid/utils/row_heights.js +1 -1
  377. package/test-env/components/datagrid/utils/sorting.js +31 -29
  378. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +9 -0
  379. package/test-env/components/date_picker/super_date_picker/super_update_button.js +57 -29
  380. package/test-env/components/facet/facet_button.styles.js +1 -2
  381. package/test-env/components/flex/flex_grid.js +21 -7
  382. package/test-env/components/flex/flex_grid.styles.js +13 -6
  383. package/test-env/components/flex/flex_group.js +10 -10
  384. package/test-env/components/flex/flex_item.js +13 -13
  385. package/test-env/components/flex/flex_item.styles.js +107 -122
  386. package/test-env/components/header/header_breadcrumbs/header_breadcrumbs.js +7 -7
  387. package/test-env/components/icon/icon.styles.js +5 -8
  388. package/test-env/components/link/external_link_icon.js +10 -7
  389. package/test-env/components/link/link.js +1 -2
  390. package/test-env/components/link/link.styles.js +6 -14
  391. package/test-env/components/modal/confirm_modal.js +2 -1
  392. package/test-env/components/modal/modal.js +12 -3
  393. package/test-env/components/page/page_header/page_header_content.js +4 -2
  394. package/test-env/components/progress/progress.styles.js +1 -1
  395. package/test-env/components/skeleton/skeleton_circle.js +1 -2
  396. package/test-env/components/skeleton/skeleton_rectangle.js +1 -2
  397. package/test-env/components/skeleton/skeleton_text.js +18 -11
  398. package/test-env/components/skeleton/skeleton_title.js +1 -2
  399. package/test-env/components/spacer/spacer.js +1 -2
  400. package/test-env/components/text/text.js +1 -2
  401. package/test-env/components/text/text_align.js +1 -2
  402. package/test-env/components/text/text_align.styles.js +5 -7
  403. package/test-env/components/text/text_color.js +1 -2
  404. package/test-env/components/title/title.js +1 -2
  405. package/test-env/components/title/title.styles.js +2 -10
  406. package/test-env/components/toast/global_toast_list.js +68 -71
  407. package/test-env/components/toast/toast.js +25 -40
  408. package/test-env/components/toast/toast.styles.js +11 -25
  409. package/test-env/global_styling/mixins/_typography.js +25 -19
  410. package/test-env/services/color/eui_palettes.js +24 -14
  411. package/test-env/services/color/index.js +14 -0
  412. package/test-env/services/hooks/index.js +11 -0
  413. package/test-env/services/hooks/useDeepEqual.js +30 -0
  414. package/test-env/services/index.js +15 -1
  415. package/test-env/services/theme/index.js +6 -0
  416. package/test-env/services/theme/style_memoization.js +49 -16
  417. package/test-env/themes/amsterdam/global_styling/mixins/button.js +49 -26
  418. package/src/themes/charts/theme.scss +0 -5
@@ -11,13 +11,13 @@ var _excluded = ["title", "color", "iconType", "onClose", "children", "className
11
11
 
12
12
  import React from 'react';
13
13
  import classNames from 'classnames';
14
- import { useEuiTheme } from '../../services';
14
+ import { useEuiMemoizedStyles } from '../../services';
15
15
  import { EuiScreenReaderOnly } from '../accessibility';
16
16
  import { EuiButtonIcon } from '../button';
17
17
  import { EuiI18n } from '../i18n';
18
18
  import { EuiIcon } from '../icon';
19
19
  import { EuiText } from '../text';
20
- import { euiToastStyles, euiToastBodyStyles, euiToastHeaderStyles } from './toast.styles';
20
+ import { euiToastStyles, euiToastHeaderStyles } from './toast.styles';
21
21
  import { jsx as ___EmotionJSX } from "@emotion/react";
22
22
  export var COLORS = ['primary', 'success', 'warning', 'danger'];
23
23
  export var EuiToast = function EuiToast(_ref) {
@@ -28,47 +28,11 @@ export var EuiToast = function EuiToast(_ref) {
28
28
  children = _ref.children,
29
29
  className = _ref.className,
30
30
  rest = _objectWithoutProperties(_ref, _excluded);
31
- var euiTheme = useEuiTheme();
32
- var baseStyles = euiToastStyles(euiTheme);
31
+ var baseStyles = useEuiMemoizedStyles(euiToastStyles);
33
32
  var baseCss = [baseStyles.euiToast, color && baseStyles[color]];
34
- var bodyStyles = euiToastBodyStyles();
35
- var headerStyles = euiToastHeaderStyles(euiTheme);
33
+ var headerStyles = useEuiMemoizedStyles(euiToastHeaderStyles);
36
34
  var headerCss = [headerStyles.euiToastHeader, children && headerStyles.withBody];
37
35
  var classes = classNames('euiToast', className);
38
- var headerIcon;
39
- if (iconType) {
40
- headerIcon = ___EmotionJSX(EuiIcon, {
41
- css: headerStyles.euiToastHeader__icon,
42
- type: iconType,
43
- size: "m",
44
- "aria-hidden": "true"
45
- });
46
- }
47
- var closeButton;
48
- if (onClose) {
49
- closeButton = ___EmotionJSX(EuiI18n, {
50
- token: "euiToast.dismissToast",
51
- default: "Dismiss toast"
52
- }, function (dismissToast) {
53
- return ___EmotionJSX(EuiButtonIcon, {
54
- css: baseStyles.euiToast__closeButton,
55
- iconType: "cross",
56
- color: "text",
57
- size: "xs",
58
- "aria-label": dismissToast,
59
- onClick: onClose,
60
- "data-test-subj": "toastCloseButton"
61
- });
62
- });
63
- }
64
- var optionalBody;
65
- if (children) {
66
- optionalBody = ___EmotionJSX(EuiText, {
67
- css: bodyStyles.euiToastBody,
68
- size: "s",
69
- "data-test-subj": "euiToastBody"
70
- }, children);
71
- }
72
36
  return ___EmotionJSX("div", _extends({
73
37
  css: baseCss,
74
38
  className: classes
@@ -83,9 +47,30 @@ export var EuiToast = function EuiToast(_ref) {
83
47
  css: headerCss,
84
48
  "aria-label": notification,
85
49
  "data-test-subj": "euiToastHeader"
86
- }, headerIcon, ___EmotionJSX("span", {
50
+ }, iconType && ___EmotionJSX(EuiIcon, {
51
+ css: headerStyles.euiToastHeader__icon,
52
+ type: iconType,
53
+ size: "m",
54
+ "aria-hidden": "true"
55
+ }), ___EmotionJSX("span", {
87
56
  css: headerStyles.euiToastHeader__title,
88
57
  "data-test-subj": "euiToastHeader__title"
89
58
  }, title));
90
- }), closeButton, optionalBody);
59
+ }), onClose && ___EmotionJSX(EuiI18n, {
60
+ token: "euiToast.dismissToast",
61
+ default: "Dismiss toast"
62
+ }, function (dismissToast) {
63
+ return ___EmotionJSX(EuiButtonIcon, {
64
+ css: baseStyles.euiToast__closeButton,
65
+ iconType: "cross",
66
+ color: "text",
67
+ size: "xs",
68
+ "aria-label": dismissToast,
69
+ onClick: onClose,
70
+ "data-test-subj": "toastCloseButton"
71
+ });
72
+ }), children && ___EmotionJSX(EuiText, {
73
+ size: "s",
74
+ "data-test-subj": "euiToastBody"
75
+ }, children));
91
76
  };
@@ -1,4 +1,3 @@
1
- function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
2
1
  /*
3
2
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
3
  * or more contributor license agreements. Licensed under the Elastic License
@@ -8,14 +7,14 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
8
7
  */
9
8
 
10
9
  import { css } from '@emotion/react';
11
- import { logicalCSS } from '../../global_styling';
10
+ import { euiTextBreakWord, logicalCSS } from '../../global_styling';
12
11
  import { euiShadowLarge } from '../../themes/amsterdam';
13
12
  import { euiTitle } from '../title/title.styles';
14
13
  export var euiToastStyles = function euiToastStyles(euiThemeContext) {
15
14
  var euiTheme = euiThemeContext.euiTheme;
16
15
  return {
17
16
  // Base
18
- euiToast: /*#__PURE__*/css("border-radius:", euiTheme.border.radius.medium, ";", euiShadowLarge(euiThemeContext), " position:relative;", logicalCSS('padding-horizontal', euiTheme.size.base), " ", logicalCSS('padding-vertical', euiTheme.size.base), " background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('width', '100%'), " &:hover,&:focus{[class*='euiToast__closeButton']{opacity:1;}};label:euiToast;"),
17
+ euiToast: /*#__PURE__*/css("border-radius:", euiTheme.border.radius.medium, ";", euiShadowLarge(euiThemeContext), " position:relative;", logicalCSS('padding-horizontal', euiTheme.size.base), " ", logicalCSS('padding-vertical', euiTheme.size.base), " background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('width', '100%'), " ", euiTextBreakWord(), "&:hover,&:focus{[class*='euiToast__closeButton']{opacity:1;}};label:euiToast;"),
19
18
  // Elements
20
19
  euiToast__closeButton: /*#__PURE__*/css("position:absolute;", logicalCSS('top', euiTheme.size.base), " ", logicalCSS('right', euiTheme.size.base), ";;label:euiToast__closeButton;"),
21
20
  // Variants
@@ -36,18 +35,4 @@ export var euiToastHeaderStyles = function euiToastHeaderStyles(euiThemeContext)
36
35
  // Variants
37
36
  withBody: /*#__PURE__*/css(logicalCSS('margin-bottom', euiTheme.size.s), ";;label:withBody;")
38
37
  };
39
- };
40
- var _ref = process.env.NODE_ENV === "production" ? {
41
- name: "1xv63y1-euiToastBody",
42
- styles: "word-wrap:break-word;label:euiToastBody;"
43
- } : {
44
- name: "1xv63y1-euiToastBody",
45
- styles: "word-wrap:break-word;label:euiToastBody;",
46
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
47
- };
48
- export var euiToastBodyStyles = function euiToastBodyStyles() {
49
- return {
50
- // Base
51
- euiToastBody: _ref
52
- };
53
38
  };
@@ -1,3 +1,6 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ 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; }
3
+ 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) { _defineProperty(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; }
1
4
  /*
2
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -7,7 +10,8 @@
7
10
  */
8
11
 
9
12
  import { euiLineHeightFromBaseline, euiFontSizeFromScale } from '../functions/typography';
10
- import { useEuiTheme } from '../../services/theme/hooks';
13
+ import { useEuiMemoizedStyles, useEuiTheme } from '../../services/theme';
14
+ import { EuiThemeFontScales } from '../variables/typography';
11
15
  import { logicalCSS } from '../functions';
12
16
  /**
13
17
  * Returns font-size and line-height
@@ -21,7 +25,15 @@ export var euiFontSize = function euiFontSize(_ref, scale, options) {
21
25
  };
22
26
  export var useEuiFontSize = function useEuiFontSize(scale, options) {
23
27
  var euiTheme = useEuiTheme();
24
- return euiFontSize(euiTheme, scale, options);
28
+ var memoizedFontSizes = useEuiMemoizedStyles(euiFontSizes);
29
+ return !options ? memoizedFontSizes[scale] : euiFontSize(euiTheme, scale, options);
30
+ };
31
+ // Memomize a basic set of font sizes. We unfortunately can't
32
+ // memoize all possible options, there's too many permutations
33
+ var euiFontSizes = function euiFontSizes(euiThemeContext) {
34
+ return EuiThemeFontScales.reduce(function (map, scale) {
35
+ return _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, scale, euiFontSize(euiThemeContext, scale)));
36
+ }, {});
25
37
  };
26
38
 
27
39
  /**
@@ -47,8 +59,4 @@ export var euiTextTruncate = function euiTextTruncate() {
47
59
  export var euiNumberFormat = function euiNumberFormat(_ref2) {
48
60
  var euiTheme = _ref2.euiTheme;
49
61
  return "\n font-feature-settings: ".concat(euiTheme.font.featureSettings, ", 'tnum' 1;\n");
50
- };
51
- export var useEuiNumberFormat = function useEuiNumberFormat() {
52
- var euiTheme = useEuiTheme();
53
- return euiNumberFormat(euiTheme);
54
62
  };
@@ -118,19 +118,19 @@ export var euiPaletteForLightBackground = function euiPaletteForLightBackground(
118
118
  export var euiPaletteForDarkBackground = function euiPaletteForDarkBackground() {
119
119
  return ['#1BA9F5', '#7DE2D1', '#F990C0', '#F66', '#FFCE7A'];
120
120
  };
121
- var positiveColor = '#209280';
122
- var negativeColor = '#CC5642';
123
- var lightNegativeColor = euiPaletteColorBlind()[9];
121
+ var greenColor = '#209280';
122
+ var redColor = '#CC5642';
123
+ var lightRedColor = euiPaletteColorBlind()[9];
124
124
  var coolArray = [euiPaletteColorBlind()[1], '#6092C0'];
125
125
  var warmArray = [euiPaletteColorBlind()[7], euiPaletteColorBlind()[9]];
126
126
  export var euiPaletteForStatus = function euiPaletteForStatus(steps) {
127
127
  if (steps === 1) {
128
- return [positiveColor];
128
+ return [greenColor];
129
129
  }
130
130
  if (steps <= 3) {
131
- return euiPalette([positiveColor, euiPaletteColorBlind()[5], negativeColor], steps, true);
131
+ return euiPalette([greenColor, euiPaletteColorBlind()[5], redColor], steps, true);
132
132
  }
133
- return euiPalette([positiveColor, euiPaletteColorBlind()[0], euiPaletteColorBlind()[5], lightNegativeColor, negativeColor], steps, true);
133
+ return euiPalette([greenColor, euiPaletteColorBlind()[0], euiPaletteColorBlind()[5], lightRedColor, redColor], steps, true);
134
134
  };
135
135
  export var euiPaletteForTemperature = function euiPaletteForTemperature(steps) {
136
136
  var cools = colorPalette([].concat(_toConsumableArray(coolArray.slice().reverse()), ['#EBEFF5']), 3);
@@ -138,7 +138,7 @@ export var euiPaletteForTemperature = function euiPaletteForTemperature(steps) {
138
138
  if (steps === 1) {
139
139
  return [cools[0]];
140
140
  } else if (steps <= 3) {
141
- return euiPalette([cools[0], lightNegativeColor], steps, true);
141
+ return euiPalette([cools[0], lightRedColor], steps, true);
142
142
  }
143
143
  return euiPalette([].concat(_toConsumableArray(cools), _toConsumableArray(warms)), steps, true);
144
144
  };
@@ -148,18 +148,26 @@ export var euiPaletteComplementary = function euiPaletteComplementary(steps) {
148
148
  }
149
149
  return euiPalette([euiPaletteColorBlind()[1], euiPaletteColorBlind()[7]], steps, true);
150
150
  };
151
- export var euiPaletteNegative = function euiPaletteNegative(steps) {
151
+ export var euiPaletteRed = function euiPaletteRed(steps) {
152
152
  if (steps === 1) {
153
- return [lightNegativeColor];
153
+ return [lightRedColor];
154
154
  }
155
- return euiPalette(['white', negativeColor], steps);
155
+ return euiPalette(['white', redColor], steps);
156
156
  };
157
- export var euiPalettePositive = function euiPalettePositive(steps) {
157
+ /**
158
+ * @deprecated - use `euiPaletteRed` instead
159
+ */
160
+ export var euiPaletteNegative = euiPaletteRed;
161
+ export var euiPaletteGreen = function euiPaletteGreen(steps) {
158
162
  if (steps === 1) {
159
163
  return [euiPaletteColorBlind()[0]];
160
164
  }
161
- return euiPalette(['white', positiveColor], steps);
165
+ return euiPalette(['white', greenColor], steps);
162
166
  };
167
+ /**
168
+ * @deprecated - use `euiPaletteGreen` instead
169
+ */
170
+ export var euiPalettePositive = euiPaletteGreen;
163
171
  export var euiPaletteCool = function euiPaletteCool(steps) {
164
172
  if (steps === 1) {
165
173
  return [coolArray[1]];
@@ -168,7 +176,7 @@ export var euiPaletteCool = function euiPaletteCool(steps) {
168
176
  };
169
177
  export var euiPaletteWarm = function euiPaletteWarm(steps) {
170
178
  if (steps === 1) {
171
- return [lightNegativeColor];
179
+ return [lightRedColor];
172
180
  }
173
181
  return euiPalette(['#FBFBDC'].concat(warmArray), steps);
174
182
  };
@@ -17,7 +17,7 @@ export { rgbToHsv } from './rgb_to_hsv';
17
17
  export { calculateContrast, calculateLuminance } from './luminance_and_contrast';
18
18
  export { VISUALIZATION_COLORS, DEFAULT_VISUALIZATION_COLOR } from './visualization_colors';
19
19
  export { colorPalette } from './color_palette';
20
- export { euiPaletteForLightBackground, euiPaletteForDarkBackground, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteComplementary, euiPaletteNegative, euiPalettePositive, euiPaletteCool, euiPaletteWarm, euiPaletteGray } from './eui_palettes';
20
+ export { euiPaletteForLightBackground, euiPaletteForDarkBackground, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteComplementary, euiPaletteRed, euiPaletteGreen, euiPaletteNegative, euiPalettePositive, euiPaletteCool, euiPaletteWarm, euiPaletteGray } from './eui_palettes';
21
21
  export { getSteppedGradient } from './stepped_gradient';
22
22
  export * from './manipulation';
23
23
  export * from './contrast';
@@ -10,5 +10,6 @@ export * from './useDependentState';
10
10
  export * from './useCombinedRefs';
11
11
  export * from './useForceRender';
12
12
  export * from './useLatest';
13
+ export * from './useDeepEqual';
13
14
  export * from './useMouseMove';
14
15
  export * from './useUpdateEffect';
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { useRef } from 'react';
10
+ import isEqual from 'lodash/isEqual';
11
+
12
+ /**
13
+ * This hook is mostly a performance concern for third-party objs/arrays that EUI
14
+ * has no control over and may not be correctly memoized (i.e., will create a new
15
+ * reference on every rerender unless passed through this hook).
16
+ */
17
+ export var useDeepEqual = function useDeepEqual(object) {
18
+ var ref = useRef(object);
19
+ if (!isEqual(object, ref.current)) {
20
+ ref.current = object;
21
+ }
22
+ return ref.current;
23
+ };
@@ -12,7 +12,7 @@ export { htmlIdGenerator, useGeneratedHtmlId } from './accessibility';
12
12
  export { CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT } from './alignment';
13
13
  export { CurrentEuiBreakpointContext, CurrentEuiBreakpointProvider, useCurrentEuiBreakpoint, useIsWithinBreakpoints, useIsWithinMaxBreakpoint, useIsWithinMinBreakpoint } from './breakpoint';
14
14
  export { CanvasTextUtils } from './canvas';
15
- export { brighten, calculateContrast, calculateLuminance, colorPalette, darken, DEFAULT_VISUALIZATION_COLOR, desaturate, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteComplementary, euiPaletteCool, euiPaletteForDarkBackground, euiPaletteForLightBackground, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteGray, euiPaletteNegative, euiPalettePositive, euiPaletteWarm, getSteppedGradient, hexToHsv, hexToRgb, hsvToHex, hsvToRgb, isColorDark, isValidHex, lightness, makeDisabledContrastColor, makeHighContrastColor, rgbToHex, rgbToHsv, saturate, shade, shadeOrTint, tint, tintOrShade, transparentize, VISUALIZATION_COLORS, wcagContrastMin } from './color';
15
+ export { brighten, calculateContrast, calculateLuminance, colorPalette, darken, DEFAULT_VISUALIZATION_COLOR, desaturate, euiPaletteColorBlind, euiPaletteColorBlindBehindText, euiPaletteComplementary, euiPaletteCool, euiPaletteForDarkBackground, euiPaletteForLightBackground, euiPaletteForStatus, euiPaletteForTemperature, euiPaletteGray, euiPaletteRed, euiPaletteGreen, euiPalettePositive, euiPaletteNegative, euiPaletteWarm, getSteppedGradient, hexToHsv, hexToRgb, hsvToHex, hsvToRgb, isColorDark, isValidHex, lightness, makeDisabledContrastColor, makeHighContrastColor, rgbToHex, rgbToHsv, saturate, shade, shadeOrTint, tint, tintOrShade, transparentize, VISUALIZATION_COLORS, wcagContrastMin } from './color';
16
16
  export { useColorPickerState, useColorStopsState } from './color_picker';
17
17
  export * from './console';
18
18
  export { copyToClipboard } from './copy_to_clipboard';
@@ -9,7 +9,7 @@
9
9
  export { EuiSystemContext, EuiThemeContext, EuiNestedThemeContext, EuiModificationsContext, EuiColorModeContext } from './context';
10
10
  export { useEuiTheme, withEuiTheme, RenderWithEuiTheme, useEuiThemeCSSVariables } from './hooks';
11
11
  export { EuiThemeProvider } from './provider';
12
- export { useEuiMemoizedStyles } from './style_memoization';
12
+ export { useEuiMemoizedStyles, withEuiStylesMemoizer } from './style_memoization';
13
13
  export { getEuiDevProviderWarning, setEuiDevProviderWarning } from './warning';
14
14
  export { buildTheme, computed, isInverseColorMode, getColorMode, getComputed, getOn, mergeDeep, setOn, Computed } from './utils';
15
15
  export { COLOR_MODES_STANDARD } from './types';
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  /*
3
4
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -7,7 +8,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
7
8
  * Side Public License, v 1.
8
9
  */
9
10
 
10
- import React, { createContext, useContext, useState, useMemo } from 'react';
11
+ import React, { createContext, useContext, useState, useMemo, useCallback, forwardRef } from 'react';
11
12
  import { useUpdateEffect } from '../hooks';
12
13
  import { useEuiTheme } from './hooks';
13
14
 
@@ -36,25 +37,57 @@ export var EuiThemeMemoizedStylesProvider = function EuiThemeMemoizedStylesProvi
36
37
  }, children);
37
38
  };
38
39
 
40
+ /**
41
+ * Internal util primarily responsible for getting the memoized styles (if they exist)
42
+ * and if not, generating and setting the styles. DRYed out to facilitate usage
43
+ * between both hook/function components and HOC/class components
44
+ */
45
+ var getMemoizedStyles = function getMemoizedStyles(stylesGenerator, stylesMap, euiThemeContext) {
46
+ if (!stylesGenerator.name) {
47
+ 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.');
48
+ }
49
+ var existingStyles = stylesMap.get(stylesGenerator);
50
+ if (existingStyles) {
51
+ return existingStyles;
52
+ } else {
53
+ var generatedStyles = stylesGenerator(euiThemeContext);
54
+ stylesMap.set(stylesGenerator, generatedStyles);
55
+ return generatedStyles;
56
+ }
57
+ };
58
+
39
59
  /**
40
60
  * Hook that memoizes the returned values of components style fns/generators
41
61
  * per-theme
42
62
  */
43
- export var useEuiMemoizedStyles = function useEuiMemoizedStyles(styleGenerator) {
63
+ export var useEuiMemoizedStyles = function useEuiMemoizedStyles(stylesGenerator) {
44
64
  var memoizedStyles = useContext(EuiThemeMemoizedStylesContext);
45
65
  var euiThemeContext = useEuiTheme();
46
66
  var memoizedComponentStyles = useMemo(function () {
47
- if (!styleGenerator.name) {
48
- 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.');
49
- }
50
- var existingStyles = memoizedStyles.get(styleGenerator);
51
- if (existingStyles) {
52
- return existingStyles;
53
- } else {
54
- var generatedStyles = styleGenerator(euiThemeContext);
55
- memoizedStyles.set(styleGenerator, generatedStyles);
56
- return generatedStyles;
57
- }
58
- }, [styleGenerator, memoizedStyles, euiThemeContext]);
67
+ return getMemoizedStyles(stylesGenerator, memoizedStyles, euiThemeContext);
68
+ }, [stylesGenerator, memoizedStyles, euiThemeContext]);
59
69
  return memoizedComponentStyles;
70
+ };
71
+
72
+ /**
73
+ * HOC for class components
74
+ * Syntax is mostly copied from withEuiTheme HOC
75
+ */
76
+
77
+ export var withEuiStylesMemoizer = function withEuiStylesMemoizer(Component) {
78
+ var componentName = Component.displayName || Component.name || 'ComponentWithStylesMemoizer';
79
+ var Render = function Render(props, ref) {
80
+ var memoizedStyles = useContext(EuiThemeMemoizedStylesContext);
81
+ var euiThemeContext = useEuiTheme();
82
+ var stylesMemoizer = useCallback(function (stylesGenerator) {
83
+ return getMemoizedStyles(stylesGenerator, memoizedStyles, euiThemeContext);
84
+ }, [memoizedStyles, euiThemeContext]);
85
+ return ___EmotionJSX(Component, _extends({
86
+ stylesMemoizer: stylesMemoizer,
87
+ ref: ref
88
+ }, props));
89
+ };
90
+ var WithEuiStylesMemoizer = /*#__PURE__*/forwardRef(Render);
91
+ WithEuiStylesMemoizer.displayName = componentName;
92
+ return WithEuiStylesMemoizer;
60
93
  };
@@ -1,4 +1,6 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
1
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ var _templateObject;
2
4
  /*
3
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -7,10 +9,11 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
7
9
  * Side Public License, v 1.
8
10
  */
9
11
 
10
- import { css } from '@emotion/react';
12
+ import { css, keyframes } from '@emotion/react';
11
13
  import { euiBackgroundColor, euiCanAnimate } from '../../../../global_styling';
12
- import { hexToRgb, isColorDark, makeHighContrastColor, shade, tint, transparentize, useEuiTheme } from '../../../../services';
14
+ import { hexToRgb, isColorDark, makeHighContrastColor, shade, tint, transparentize, useEuiMemoizedStyles } from '../../../../services';
13
15
  export var BUTTON_COLORS = ['text', 'accent', 'primary', 'success', 'warning', 'danger'];
16
+ export var BUTTON_DISPLAYS = ['base', 'fill', 'empty'];
14
17
  /**
15
18
  * Creates the `base` version of button styles with proper text contrast.
16
19
  * @param euiThemeContext
@@ -128,23 +131,35 @@ export var euiButtonEmptyColor = function euiButtonEmptyColor(euiThemeContext, c
128
131
  */
129
132
  export var useEuiButtonColorCSS = function useEuiButtonColorCSS() {
130
133
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
131
- var euiThemeContext = useEuiTheme();
132
- function stylesByDisplay(color) {
133
- return {
134
- base: /*#__PURE__*/css(euiButtonColor(euiThemeContext, color), ";;label:base;"),
135
- fill: /*#__PURE__*/css(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : euiThemeContext.euiTheme.colors.fullShade, ";;label:fill;"),
136
- empty: /*#__PURE__*/css("color:", euiButtonEmptyColor(euiThemeContext, color).color, ";&:focus,&:active{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";};label:empty;")
137
- };
138
- }
139
- return {
140
- text: /*#__PURE__*/css(stylesByDisplay('text')[options.display || 'base'], ";label:text;"),
141
- accent: /*#__PURE__*/css(stylesByDisplay('accent')[options.display || 'base'], ";label:accent;"),
142
- primary: /*#__PURE__*/css(stylesByDisplay('primary')[options.display || 'base'], ";label:primary;"),
143
- success: /*#__PURE__*/css(stylesByDisplay('success')[options.display || 'base'], ";label:success;"),
144
- warning: /*#__PURE__*/css(stylesByDisplay('warning')[options.display || 'base'], ";label:warning;"),
145
- danger: /*#__PURE__*/css(stylesByDisplay('danger')[options.display || 'base'], ";label:danger;"),
146
- disabled: /*#__PURE__*/css(stylesByDisplay('disabled')[options.display || 'base'], ";label:disabled;")
147
- };
134
+ var _options$display = options.display,
135
+ display = _options$display === void 0 ? 'base' : _options$display;
136
+ var colorsDisplaysMap = useEuiMemoizedStyles(euiButtonDisplaysColors);
137
+ return colorsDisplaysMap[display];
138
+ };
139
+ var euiButtonDisplaysColors = function euiButtonDisplaysColors(euiThemeContext) {
140
+ var COLORS = [].concat(BUTTON_COLORS, ['disabled']);
141
+ var displaysColorsMap = {};
142
+ BUTTON_DISPLAYS.forEach(function (display) {
143
+ displaysColorsMap[display] = {};
144
+ COLORS.forEach(function (color) {
145
+ switch (display) {
146
+ case 'base':
147
+ displaysColorsMap[display][color] = /*#__PURE__*/css(euiButtonColor(euiThemeContext, color), ";;label:displaysColorsMap-display-color;");
148
+ break;
149
+ case 'fill':
150
+ displaysColorsMap[display][color] = /*#__PURE__*/css(euiButtonFillColor(euiThemeContext, color), "outline-color:", euiThemeContext.colorMode === 'DARK' && color === 'text' ? 'currentColor' : euiThemeContext.euiTheme.colors.fullShade, ";;label:displaysColorsMap-display-color;");
151
+ break;
152
+ case 'empty':
153
+ displaysColorsMap[display][color] = /*#__PURE__*/css("color:", euiButtonEmptyColor(euiThemeContext, color).color, ";&:focus,&:active{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";};label:displaysColorsMap-display-color;");
154
+ break;
155
+ }
156
+
157
+ // Tweak auto-generated Emotion label/className output
158
+ var emotionOutput = displaysColorsMap[display][color];
159
+ emotionOutput.styles = emotionOutput.styles.replace('label:displaysColorsMap-display-color;', "label:".concat(display, "-").concat(color, ";"));
160
+ });
161
+ });
162
+ return displaysColorsMap;
148
163
  };
149
164
 
150
165
  /**
@@ -152,17 +167,25 @@ export var useEuiButtonColorCSS = function useEuiButtonColorCSS() {
152
167
  * @returns string
153
168
  */
154
169
  export var useEuiButtonFocusCSS = function useEuiButtonFocusCSS() {
155
- var _useEuiTheme = useEuiTheme(),
156
- euiTheme = _useEuiTheme.euiTheme;
157
- return "\n ".concat(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 ");
170
+ return useEuiMemoizedStyles(euiButtonFocusCSS);
171
+ };
172
+ var euiButtonFocusAnimation = keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 50% {\n transform: translateY(1px);\n }\n"])));
173
+ var euiButtonFocusCSS = function euiButtonFocusCSS(_ref) {
174
+ var euiTheme = _ref.euiTheme;
175
+ var focusCSS = /*#__PURE__*/css(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;");
176
+ // Remove the auto-generated label.
177
+ // We could typically avoid a label by using a plain string `` instead of css``,
178
+ // but we need css`` for keyframes`` to work for the focus animation
179
+ focusCSS.styles = focusCSS.styles.replace('label:focusCSS;', '');
180
+ return focusCSS;
158
181
  };
159
182
 
160
183
  /**
161
184
  * Map of `size` props to various sizings/scales
162
185
  * that should remain consistent across all buttons
163
186
  */
164
- export var euiButtonSizeMap = function euiButtonSizeMap(_ref) {
165
- var euiTheme = _ref.euiTheme;
187
+ export var euiButtonSizeMap = function euiButtonSizeMap(_ref2) {
188
+ var euiTheme = _ref2.euiTheme;
166
189
  return {
167
190
  xs: {
168
191
  height: euiTheme.size.l,