@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
@@ -1,3 +1,4 @@
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)."; }
1
2
  /*
2
3
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
4
  * or more contributor license agreements. Licensed under the Elastic License
@@ -12,6 +13,22 @@ import { mathWithUnits, logicalCSS, logicalShorthandCSS, euiTextShift, euiOutlin
12
13
  import { euiButtonFillColor } from '../../../themes/amsterdam/global_styling/mixins/button';
13
14
  import { euiScreenReaderOnly } from '../../accessibility';
14
15
  import { euiFormVariables } from '../../form/form.styles';
16
+ var _ref = process.env.NODE_ENV === "production" ? {
17
+ name: "nwv4a2-tooltipWrapper",
18
+ styles: "overflow:hidden;label:tooltipWrapper;"
19
+ } : {
20
+ name: "nwv4a2-tooltipWrapper",
21
+ styles: "overflow:hidden;label:tooltipWrapper;",
22
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
23
+ };
24
+ var _ref2 = process.env.NODE_ENV === "production" ? {
25
+ name: "1u3o7zy-hasToolTip",
26
+ styles: "border-radius:inherit;label:hasToolTip;"
27
+ } : {
28
+ name: "1u3o7zy-hasToolTip",
29
+ styles: "border-radius:inherit;label:hasToolTip;",
30
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
31
+ };
15
32
  export var euiButtonGroupButtonStyles = function euiButtonGroupButtonStyles(euiThemeContext) {
16
33
  var euiTheme = euiThemeContext.euiTheme;
17
34
  var _euiFormVariables = euiFormVariables(euiThemeContext),
@@ -28,9 +45,26 @@ export var euiButtonGroupButtonStyles = function euiButtonGroupButtonStyles(euiT
28
45
  euiButtonGroupButton: /*#__PURE__*/css(logicalCSS('min-width', 0), " flex-shrink:1;flex-grow:0;", euiCanAnimate, "{transition:background-color ", euiTheme.animation.normal, " ease-in-out,color ", euiTheme.animation.normal, " ease-in-out;};label:euiButtonGroupButton;"),
29
46
  iconOnly: /*#__PURE__*/css("padding-inline:", euiTheme.size.s, ";;label:iconOnly;"),
30
47
  // Sizes
31
- s: /*#__PURE__*/css(uncompressedBorderRadii(euiTheme.border.radius.small), ";;label:s;"),
32
- m: /*#__PURE__*/css(uncompressedBorderRadii(euiTheme.border.radius.medium), ";;label:m;"),
33
- uncompressed: /*#__PURE__*/css("&:is(.euiButtonGroupButton-isSelected){font-weight:", euiTheme.font.weight.bold, ";}&:not(.euiButtonGroupButton-isSelected)+.euiButtonGroupButton:not(.euiButtonGroupButton-isSelected){box-shadow:-", euiTheme.border.width.thin, " 0 0 0 ", transparentize(euiTheme.colors.fullShade, 0.1), ";}&:is(.euiButtonGroupButton-isSelected)+.euiButtonGroupButton-isSelected{box-shadow:-", euiTheme.border.width.thin, " 0 0 0 ", transparentize(euiTheme.colors.emptyShade, 0.2), ";};label:uncompressed;"),
48
+ uncompressed: {
49
+ uncompressed: /*#__PURE__*/css("&:is(.euiButtonGroupButton-isSelected){font-weight:", euiTheme.font.weight.bold, ";};label:uncompressed;"),
50
+ get borders() {
51
+ var selectors = '.euiButtonGroupButton-isSelected, .euiButtonGroup__tooltipWrapper-isSelected';
52
+ var selectedColor = transparentize(euiTheme.colors.emptyShade, 0.2);
53
+ var unselectedColor = transparentize(euiTheme.colors.fullShade, 0.1);
54
+ var borderWidth = euiTheme.border.width.thin;
55
+
56
+ // "Borders" between buttons should be present between two of the same colored buttons,
57
+ // and absent between selected vs non-selected buttons (different colors)
58
+ return "\n &:not(".concat(selectors, ") + *:not(").concat(selectors, ") {\n box-shadow: -").concat(borderWidth, " 0 0 0 ").concat(unselectedColor, ";\n }\n &:is(").concat(selectors, ") + *:is(").concat(selectors, ") {\n box-shadow: -").concat(borderWidth, " 0 0 0 ").concat(selectedColor, ";\n }\n ");
59
+ },
60
+ get s() {
61
+ return /*#__PURE__*/css(this.borders, " ", uncompressedBorderRadii(euiTheme.border.radius.small), ";;label:s;");
62
+ },
63
+ get m() {
64
+ return /*#__PURE__*/css(this.borders, " ", uncompressedBorderRadii(euiTheme.border.radius.medium), ";;label:m;");
65
+ },
66
+ hasToolTip: _ref2
67
+ },
34
68
  compressed: /*#__PURE__*/css(logicalCSS('height', compressedButtonHeight), " line-height:", compressedButtonHeight, ";padding:", mathWithUnits(euiTheme.border.width.thin, function (x) {
35
69
  return x * 2;
36
70
  }), ";background-clip:content-box;border-radius:", mathWithUnits([controlCompressedBorderRadius, euiTheme.border.width.thin], function (x, y) {
@@ -38,6 +72,8 @@ export var euiButtonGroupButtonStyles = function euiButtonGroupButtonStyles(euiT
38
72
  }), ";font-weight:", euiTheme.font.weight.regular, ";&:is(.euiButtonGroupButton-isSelected){font-weight:", euiTheme.font.weight.semiBold, ";};label:compressed;"),
39
73
  // States
40
74
  disabledAndSelected: /*#__PURE__*/css("color:", makeDisabledContrastColor(euiTheme.colors.disabledText)(euiTheme.colors.disabled), ";background-color:", euiTheme.colors.disabled, ";;label:disabledAndSelected;"),
75
+ // Tooltip anchor wrapper
76
+ tooltipWrapper: _ref,
41
77
  // Content wrapper
42
78
  content: {
43
79
  euiButtonGroupButton__content: /*#__PURE__*/css(";label:euiButtonGroupButton__content;"),
@@ -11,7 +11,7 @@ var _excluded = ["className", "iconType", "iconSize", "color", "isDisabled", "di
11
11
 
12
12
  import React from 'react';
13
13
  import classNames from 'classnames';
14
- import { getSecureRelForTarget, useEuiTheme } from '../../../services';
14
+ import { getSecureRelForTarget, useEuiMemoizedStyles } from '../../../services';
15
15
  import { EuiIcon } from '../../icon';
16
16
  import { EuiLoadingSpinner } from '../../loading';
17
17
  import { useEuiButtonColorCSS, useEuiButtonFocusCSS } from '../../../themes/amsterdam/global_styling/mixins/button';
@@ -42,7 +42,6 @@ export var EuiButtonIcon = function EuiButtonIcon(_ref) {
42
42
  isSelected = _ref.isSelected,
43
43
  isLoading = _ref.isLoading,
44
44
  rest = _objectWithoutProperties(_ref, _excluded);
45
- var euiThemeContext = useEuiTheme();
46
45
  var isDisabled = isButtonDisabled({
47
46
  isDisabled: _isDisabled || disabled,
48
47
  href: href,
@@ -57,9 +56,9 @@ export var EuiButtonIcon = function EuiButtonIcon(_ref) {
57
56
  display: display
58
57
  });
59
58
  var buttonFocusStyle = useEuiButtonFocusCSS();
60
- var emptyHoverStyles = display === 'empty' && !isDisabled && _emptyHoverStyles(euiThemeContext, color);
61
- var styles = euiButtonIconStyles(euiThemeContext);
62
- var cssStyles = [styles.euiButtonIcon, styles[size], buttonColorStyles[isDisabled ? 'disabled' : color], buttonFocusStyle, emptyHoverStyles, isDisabled && styles.isDisabled];
59
+ var emptyHoverStyles = useEuiMemoizedStyles(_emptyHoverStyles);
60
+ var styles = useEuiMemoizedStyles(euiButtonIconStyles);
61
+ var cssStyles = [styles.euiButtonIcon, styles[size], buttonColorStyles[isDisabled ? 'disabled' : color], buttonFocusStyle, display === 'empty' && !isDisabled && emptyHoverStyles[color], isDisabled && styles.isDisabled];
63
62
  var classes = classNames('euiButtonIcon', className);
64
63
 
65
64
  // Add an icon to the button if one exists.
@@ -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
  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
5
  /*
3
6
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -9,7 +12,7 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
9
12
 
10
13
  import { css } from '@emotion/react';
11
14
  import { logicalSizeCSS } from '../../../global_styling';
12
- import { euiButtonEmptyColor, euiButtonSizeMap } from '../../../themes/amsterdam/global_styling/mixins/button';
15
+ import { BUTTON_COLORS, euiButtonEmptyColor, euiButtonSizeMap } from '../../../themes/amsterdam/global_styling/mixins/button';
13
16
  import { euiButtonBaseCSS } from '../button_display/_button_display.styles';
14
17
  var _ref = process.env.NODE_ENV === "production" ? {
15
18
  name: "8595p9-isDisabled",
@@ -30,6 +33,8 @@ export var euiButtonIconStyles = function euiButtonIconStyles(euiThemeContext) {
30
33
  m: /*#__PURE__*/css(logicalSizeCSS(sizes.m.height), " border-radius:", sizes.m.radius, ";;label:m;")
31
34
  };
32
35
  };
33
- export var _emptyHoverStyles = function _emptyHoverStyles(euiThemeContext, color) {
34
- return /*#__PURE__*/css("&:hover{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";}");
36
+ export var _emptyHoverStyles = function _emptyHoverStyles(euiThemeContext) {
37
+ return BUTTON_COLORS.reduce(function (styles, color) {
38
+ return _objectSpread(_objectSpread({}, styles), {}, _defineProperty({}, color, /*#__PURE__*/css("&:hover{background-color:", euiButtonEmptyColor(euiThemeContext, color).backgroundColor, ";}")));
39
+ }, {});
35
40
  };
@@ -7,7 +7,7 @@ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
7
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
8
  import _extends from "@babel/runtime/helpers/extends";
9
9
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
10
- var _excluded = ["renderCellValue", "column", "setCellContentsRef", "rowIndex", "colIndex", "ariaRowIndex", "rowHeight", "rowHeightUtils", "isControlColumn", "isFocused", "cellActions"],
10
+ var _excluded = ["renderCellValue", "cellContext", "column", "setCellContentsRef", "rowIndex", "colIndex", "ariaRowIndex", "rowHeight", "rowHeightUtils", "isControlColumn", "isFocused", "showCellActions", "onExpandClick", "popoverAnchorRef"],
11
11
  _excluded2 = ["width", "popoverContext", "interactiveCellId", "columnType", "className", "column", "style", "rowHeightUtils", "rowHeightsOptions", "rowManager", "pagination"],
12
12
  _excluded3 = ["isExpandable", "style", "className", "data-test-subj"];
13
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; }
@@ -23,7 +23,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
23
23
  */
24
24
 
25
25
  import classNames from 'classnames';
26
- import React, { Component, createRef, memo } from 'react';
26
+ import React, { Component, createRef, memo, useMemo } from 'react';
27
27
  import { createPortal } from 'react-dom';
28
28
  import { IS_JEST_ENVIRONMENT } from '../../../../utils';
29
29
  import { keys } from '../../../../services';
@@ -38,6 +38,7 @@ import { HandleInteractiveChildren } from './focus_utils';
38
38
  import { jsx as ___EmotionJSX } from "@emotion/react";
39
39
  var EuiDataGridCellContent = /*#__PURE__*/memo(function (_ref) {
40
40
  var renderCellValue = _ref.renderCellValue,
41
+ cellContext = _ref.cellContext,
41
42
  column = _ref.column,
42
43
  setCellContentsRef = _ref.setCellContentsRef,
43
44
  rowIndex = _ref.rowIndex,
@@ -47,16 +48,25 @@ var EuiDataGridCellContent = /*#__PURE__*/memo(function (_ref) {
47
48
  rowHeightUtils = _ref.rowHeightUtils,
48
49
  isControlColumn = _ref.isControlColumn,
49
50
  isFocused = _ref.isFocused,
50
- cellActions = _ref.cellActions,
51
+ showCellActions = _ref.showCellActions,
52
+ onExpandClick = _ref.onExpandClick,
53
+ popoverAnchorRef = _ref.popoverAnchorRef,
51
54
  rest = _objectWithoutProperties(_ref, _excluded);
52
- // React is more permissible than the TS types indicate
55
+ // React is more permissive than the TS types indicate
53
56
  var CellElement = renderCellValue;
54
- var cellHeightType = (rowHeightUtils === null || rowHeightUtils === void 0 ? void 0 : rowHeightUtils.getHeightType(rowHeight)) || 'default';
55
- var classes = classNames('euiDataGridRowCell__content', "euiDataGridRowCell__content--".concat(cellHeightType, "Height"), !isControlColumn && {
56
- 'eui-textBreakWord': cellHeightType !== 'default',
57
- 'eui-textTruncate': cellHeightType === 'default'
58
- });
59
- var cellContent = ___EmotionJSX("div", {
57
+ var cellHeightType = useMemo(function () {
58
+ return (rowHeightUtils === null || rowHeightUtils === void 0 ? void 0 : rowHeightUtils.getHeightType(rowHeight)) || 'default';
59
+ }, [rowHeightUtils, rowHeight]);
60
+ var classes = useMemo(function () {
61
+ return classNames('euiDataGridRowCell__content', "euiDataGridRowCell__content--".concat(cellHeightType, "Height"), !isControlColumn && {
62
+ 'eui-textBreakWord': cellHeightType !== 'default',
63
+ 'eui-textTruncate': cellHeightType === 'default'
64
+ });
65
+ }, [cellHeightType, isControlColumn]);
66
+ return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(RenderTruncatedCellContent, {
67
+ hasLineCountTruncation: cellHeightType === 'lineCount' && !isControlColumn,
68
+ rowHeight: rowHeight
69
+ }, ___EmotionJSX("div", {
60
70
  ref: setCellContentsRef,
61
71
  "data-datagrid-cellcontent": true,
62
72
  className: classes
@@ -66,15 +76,7 @@ var EuiDataGridCellContent = /*#__PURE__*/memo(function (_ref) {
66
76
  rowIndex: rowIndex,
67
77
  colIndex: colIndex,
68
78
  schema: (column === null || column === void 0 ? void 0 : column.schema) || rest.columnType
69
- }, rest)));
70
- if (cellHeightType === 'lineCount' && !isControlColumn) {
71
- var lines = rowHeightUtils.getLineCount(rowHeight);
72
- cellContent = ___EmotionJSX(EuiTextBlockTruncate, {
73
- lines: lines,
74
- cloneElement: true
75
- }, cellContent);
76
- }
77
- var screenReaderText = ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("p", {
79
+ }, cellContext, rest)))), ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("p", {
78
80
  hidden: !isFocused
79
81
  }, '- ', ___EmotionJSX(EuiI18n, {
80
82
  token: "euiDataGridCell.position",
@@ -84,11 +86,16 @@ var EuiDataGridCellContent = /*#__PURE__*/memo(function (_ref) {
84
86
  col: colIndex + 1,
85
87
  row: ariaRowIndex
86
88
  }
87
- }), cellActions && ___EmotionJSX(React.Fragment, null, '. ', ___EmotionJSX(EuiI18n, {
89
+ }), showCellActions && ___EmotionJSX(React.Fragment, null, '. ', ___EmotionJSX(EuiI18n, {
88
90
  token: "euiDataGridCell.expansionEnterPrompt",
89
91
  default: "Press the Enter key to expand this cell."
90
- }))));
91
- return ___EmotionJSX(React.Fragment, null, cellContent, screenReaderText, cellActions);
92
+ })))), showCellActions && ___EmotionJSX(EuiDataGridCellActions, {
93
+ rowIndex: rowIndex,
94
+ colIndex: colIndex,
95
+ column: column,
96
+ onExpandClick: onExpandClick,
97
+ popoverAnchorRef: popoverAnchorRef
98
+ }));
92
99
  });
93
100
  EuiDataGridCellContent.displayName = 'EuiDataGridCellContent';
94
101
  export var EuiDataGridCell = /*#__PURE__*/function (_Component) {
@@ -249,6 +256,7 @@ export var EuiDataGridCell = /*#__PURE__*/function (_Component) {
249
256
  var _this$props5 = _this.props,
250
257
  renderCellPopover = _this$props5.renderCellPopover,
251
258
  renderCellValue = _this$props5.renderCellValue,
259
+ cellContext = _this$props5.cellContext,
252
260
  rowIndex = _this$props5.rowIndex,
253
261
  colIndex = _this$props5.colIndex,
254
262
  column = _this$props5.column,
@@ -269,7 +277,7 @@ export var EuiDataGridCell = /*#__PURE__*/function (_Component) {
269
277
  })),
270
278
  DefaultCellPopover: DefaultCellPopover,
271
279
  setCellPopoverProps: setCellPopoverProps
272
- }), ___EmotionJSX(CellElement, _extends({}, sharedProps, {
280
+ }), ___EmotionJSX(CellElement, _extends({}, cellContext, sharedProps, {
273
281
  setCellProps: _this.setCellProps,
274
282
  isExpandable: true,
275
283
  isExpanded: true,
@@ -414,6 +422,7 @@ export var EuiDataGridCell = /*#__PURE__*/function (_Component) {
414
422
  if (nextProps.style.height !== this.props.style.height) return true;
415
423
  if (nextProps.style.width !== this.props.style.width) return true;
416
424
  }
425
+ if (nextProps.cellContext !== this.props.cellContext) return true;
417
426
  if (nextState.cellProps !== this.state.cellProps) return true;
418
427
  if (nextState.isFocused !== this.state.isFocused) return true;
419
428
  if (nextState.isHovered !== this.state.isHovered) return true;
@@ -463,21 +472,16 @@ export var EuiDataGridCell = /*#__PURE__*/function (_Component) {
463
472
  lineHeight: (_rowHeightsOptions$li = rowHeightsOptions === null || rowHeightsOptions === void 0 ? void 0 : rowHeightsOptions.lineHeight) !== null && _rowHeightsOptions$li !== void 0 ? _rowHeightsOptions$li : undefined
464
473
  }, cellPropsStyle);
465
474
  var rowHeight = rowHeightUtils === null || rowHeightUtils === void 0 ? void 0 : rowHeightUtils.getRowHeightOption(rowIndex, rowHeightsOptions);
466
- var cellContentProps = _objectSpread(_objectSpread({}, rest), {}, {
467
- setCellProps: this.setCellProps,
468
- column: column,
469
- columnType: columnType,
470
- isExpandable: isExpandable,
471
- isExpanded: popoverIsOpen,
472
- isDetails: false,
473
- isFocused: this.state.isFocused,
474
- setCellContentsRef: this.setCellContentsRef,
475
- rowHeight: rowHeight,
476
- rowHeightUtils: rowHeightUtils,
477
- isControlColumn: cellClasses.includes('euiDataGridRowCell--controlColumn'),
478
- ariaRowIndex: ariaRowIndex
479
- });
480
- var cell = ___EmotionJSX("div", _extends({
475
+ var row = rowManager && !IS_JEST_ENVIRONMENT ? rowManager.getRow({
476
+ rowIndex: rowIndex,
477
+ visibleRowIndex: visibleRowIndex,
478
+ top: style.top,
479
+ // comes in as a `{float}px` string from react-window
480
+ height: style.height // comes in as an integer from react-window
481
+ }) : undefined;
482
+ return ___EmotionJSX(RenderCellInRow, {
483
+ row: row
484
+ }, ___EmotionJSX("div", _extends({
481
485
  role: "gridcell",
482
486
  "aria-rowindex": ariaRowIndex,
483
487
  tabIndex: this.state.isFocused ? 0 : -1,
@@ -501,26 +505,49 @@ export var EuiDataGridCell = /*#__PURE__*/function (_Component) {
501
505
  cellEl: this.cellRef.current,
502
506
  updateCellFocusContext: this.updateCellFocusContext,
503
507
  renderFocusTrap: !isExpandable
504
- }, ___EmotionJSX(EuiDataGridCellContent, _extends({}, cellContentProps, {
505
- cellActions: showCellActions && ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiDataGridCellActions, {
506
- rowIndex: rowIndex,
507
- colIndex: colIndex,
508
- column: column,
509
- onExpandClick: this.handleCellExpansionClick
510
- }), ___EmotionJSX("div", {
511
- ref: this.popoverAnchorRef,
512
- "data-test-subject": "cellPopoverAnchor"
513
- }))
514
- }))));
515
- return rowManager && !IS_JEST_ENVIRONMENT ? /*#__PURE__*/createPortal(cell, rowManager.getRow({
508
+ }, ___EmotionJSX(EuiDataGridCellContent, _extends({}, rest, {
509
+ setCellProps: this.setCellProps,
510
+ column: column,
511
+ columnType: columnType,
512
+ isExpandable: isExpandable,
513
+ isExpanded: popoverIsOpen,
514
+ onExpandClick: this.handleCellExpansionClick,
515
+ popoverAnchorRef: this.popoverAnchorRef,
516
+ showCellActions: showCellActions,
517
+ isFocused: this.state.isFocused,
518
+ setCellContentsRef: this.setCellContentsRef,
519
+ rowHeight: rowHeight,
520
+ rowHeightUtils: rowHeightUtils,
521
+ isControlColumn: cellClasses.includes('euiDataGridRowCell--controlColumn'),
522
+ ariaRowIndex: ariaRowIndex,
516
523
  rowIndex: rowIndex,
517
- visibleRowIndex: visibleRowIndex,
518
- top: style.top,
519
- // comes in as a `{float}px` string from react-window
520
- height: style.height // comes in as an integer from react-window
521
- })) : cell;
524
+ colIndex: colIndex
525
+ })))));
522
526
  }
523
527
  }]);
524
528
  return EuiDataGridCell;
525
529
  }(Component);
526
- _defineProperty(EuiDataGridCell, "contextType", DataGridFocusContext);
530
+
531
+ /**
532
+ * Function component utilities for conditional rendering.
533
+ * Used for DRYness and performance
534
+ */
535
+ _defineProperty(EuiDataGridCell, "contextType", DataGridFocusContext);
536
+ var RenderCellInRow = /*#__PURE__*/memo(function (_ref2) {
537
+ var row = _ref2.row,
538
+ children = _ref2.children;
539
+ return row ? /*#__PURE__*/createPortal(children, row) : children;
540
+ });
541
+ RenderCellInRow.displayName = 'RenderCellInRow';
542
+ var RenderTruncatedCellContent = /*#__PURE__*/memo(function (_ref3) {
543
+ var children = _ref3.children,
544
+ hasLineCountTruncation = _ref3.hasLineCountTruncation,
545
+ rowHeight = _ref3.rowHeight;
546
+ // If `hasLineCountTruncation` is true, we can rely on rowHeight being the correct type
547
+ var lines = hasLineCountTruncation ? rowHeight.lineCount : undefined;
548
+ return lines ? ___EmotionJSX(EuiTextBlockTruncate, {
549
+ lines: lines,
550
+ cloneElement: true
551
+ }, children) : children;
552
+ });
553
+ RenderTruncatedCellContent.displayName = 'RenderTruncatedCellContent';
@@ -18,6 +18,7 @@ import { EuiPopoverFooter } from '../../../popover';
18
18
  import { jsx as ___EmotionJSX } from "@emotion/react";
19
19
  export var EuiDataGridCellActions = function EuiDataGridCellActions(_ref) {
20
20
  var onExpandClick = _ref.onExpandClick,
21
+ popoverAnchorRef = _ref.popoverAnchorRef,
21
22
  column = _ref.column,
22
23
  rowIndex = _ref.rowIndex,
23
24
  colIndex = _ref.colIndex;
@@ -25,23 +26,25 @@ export var EuiDataGridCellActions = function EuiDataGridCellActions(_ref) {
25
26
  // column.cellActions is present (regardless of column.isExpandable).
26
27
  // This is because cell actions are not otherwise accessible to keyboard
27
28
  // or screen reader users
28
- var expandButton = ___EmotionJSX(EuiI18n, {
29
- key: 'expand',
30
- token: "euiDataGridCellActions.expandButtonTitle",
31
- default: "Click or hit enter to interact with cell content"
32
- }, function (expandButtonTitle) {
33
- return ___EmotionJSX(EuiButtonIcon, {
34
- className: "euiDataGridRowCell__actionButtonIcon euiDataGridRowCell__expandCell",
35
- "data-test-subj": "euiDataGridCellExpandButton",
36
- display: "fill",
37
- color: "primary",
38
- iconSize: "m",
39
- iconType: "expandMini",
40
- "aria-hidden": true,
41
- onClick: onExpandClick,
42
- title: expandButtonTitle
29
+ var expandButton = useMemo(function () {
30
+ return ___EmotionJSX(EuiI18n, {
31
+ key: 'expand',
32
+ token: "euiDataGridCellActions.expandButtonTitle",
33
+ default: "Click or hit enter to interact with cell content"
34
+ }, function (expandButtonTitle) {
35
+ return ___EmotionJSX(EuiButtonIcon, {
36
+ className: "euiDataGridRowCell__actionButtonIcon euiDataGridRowCell__expandCell",
37
+ "data-test-subj": "euiDataGridCellExpandButton",
38
+ display: "fill",
39
+ color: "primary",
40
+ iconSize: "m",
41
+ iconType: "expandMini",
42
+ "aria-hidden": true,
43
+ onClick: onExpandClick,
44
+ title: expandButtonTitle
45
+ });
43
46
  });
44
- });
47
+ }, [onExpandClick]);
45
48
  var additionalButtons = useMemo(function () {
46
49
  if (!column || !Array.isArray(column === null || column === void 0 ? void 0 : column.cellActions)) return [];
47
50
  var ButtonComponent = function ButtonComponent(props) {
@@ -72,9 +75,12 @@ export var EuiDataGridCellActions = function EuiDataGridCellActions(_ref) {
72
75
  });
73
76
  });
74
77
  }, [column, colIndex, rowIndex]);
75
- return ___EmotionJSX("div", {
78
+ return ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", {
76
79
  className: "euiDataGridRowCell__actions"
77
- }, [].concat(_toConsumableArray(additionalButtons), [expandButton]));
80
+ }, [].concat(_toConsumableArray(additionalButtons), [expandButton])), ___EmotionJSX("div", {
81
+ ref: popoverAnchorRef,
82
+ "data-test-subject": "cellPopoverAnchor"
83
+ }));
78
84
  };
79
85
  export var EuiDataGridCellPopoverActions = function EuiDataGridCellPopoverActions(_ref2) {
80
86
  var rowIndex = _ref2.rowIndex,
@@ -11,7 +11,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
11
11
  * Side Public License, v 1.
12
12
  */
13
13
 
14
- import React, { createContext, useState, useCallback } from 'react';
14
+ import React, { createContext, useState, useCallback, useMemo } from 'react';
15
15
  import classNames from 'classnames';
16
16
  import { keys } from '../../../../services';
17
17
  import { EuiWrappingPopover } from '../../../popover';
@@ -29,7 +29,6 @@ export var DataGridCellPopoverContext = /*#__PURE__*/createContext({
29
29
  setCellPopoverProps: function setCellPopoverProps() {}
30
30
  });
31
31
  export var useCellPopover = function useCellPopover() {
32
- var _cellPopoverProps$pan;
33
32
  // Current open state & cell location are handled here
34
33
  var _useState = useState(false),
35
34
  _useState2 = _slicedToArray(_useState, 2),
@@ -80,16 +79,6 @@ export var useCellPopover = function useCellPopover() {
80
79
  });
81
80
  setPopoverIsOpen(true);
82
81
  }, [popoverIsOpen, cellLocation]);
83
- var cellPopoverContext = {
84
- popoverIsOpen: popoverIsOpen,
85
- closeCellPopover: closeCellPopover,
86
- openCellPopover: openCellPopover,
87
- cellLocation: cellLocation,
88
- setPopoverAnchor: setPopoverAnchor,
89
- setPopoverAnchorPosition: setPopoverAnchorPosition,
90
- setPopoverContent: setPopoverContent,
91
- setCellPopoverProps: setCellPopoverProps
92
- };
93
82
 
94
83
  // Override the default EuiPopover `onClickOutside` behavior, since the toggling
95
84
  // popover button isn't actually the DOM node we pass to `button`. Otherwise,
@@ -101,52 +90,71 @@ export var useCellPopover = function useCellPopover() {
101
90
  closeCellPopover();
102
91
  }
103
92
  }, [popoverAnchor, closeCellPopover]);
93
+ var onKeyDown = useCallback(function (event) {
94
+ if (event.key === keys.F2 || event.key === keys.ESCAPE) {
95
+ var _popoverAnchor$parent3, _popoverAnchor$parent4;
96
+ event.preventDefault();
97
+ event.stopPropagation();
98
+ closeCellPopover();
99
+ var cell = popoverAnchor === null || popoverAnchor === void 0 ? void 0 : (_popoverAnchor$parent3 = popoverAnchor.parentElement) === null || _popoverAnchor$parent3 === void 0 ? void 0 : (_popoverAnchor$parent4 = _popoverAnchor$parent3.parentElement) === null || _popoverAnchor$parent4 === void 0 ? void 0 : _popoverAnchor$parent4.parentElement;
104
100
 
105
- // Note that this popover is rendered once at the top grid level, rather than one popover per cell
106
- var cellPopover = popoverIsOpen && popoverAnchor && ___EmotionJSX(EuiWrappingPopover, _extends({
107
- isOpen: popoverIsOpen,
108
- display: "block",
109
- hasArrow: false,
110
- panelPaddingSize: "s",
111
- anchorPosition: popoverAnchorPosition,
112
- repositionToCrossAxis: false
113
- }, cellPopoverProps, {
114
- focusTrapProps: {
115
- onClickOutside: onClickOutside,
116
- clickOutsideDisables: false
117
- },
118
- panelProps: _objectSpread({
119
- 'data-test-subj': 'euiDataGridExpansionPopover'
120
- }, cellPopoverProps.panelProps || {}),
121
- panelClassName: classNames('euiDataGridRowCell__popover', cellPopoverProps.panelClassName, (_cellPopoverProps$pan = cellPopoverProps.panelProps) === null || _cellPopoverProps$pan === void 0 ? void 0 : _cellPopoverProps$pan.className),
122
- panelStyle: {
123
- maxInlineSize: "min(75vw, max(".concat(popoverAnchor.parentElement.offsetWidth, "px, 400px))"),
124
- maxBlockSize: '50vh'
125
- },
126
- onKeyDown: function onKeyDown(event) {
127
- if (event.key === keys.F2 || event.key === keys.ESCAPE) {
128
- var _popoverAnchor$parent3, _popoverAnchor$parent4;
129
- event.preventDefault();
130
- event.stopPropagation();
131
- closeCellPopover();
132
- var cell = (_popoverAnchor$parent3 = popoverAnchor.parentElement) === null || _popoverAnchor$parent3 === void 0 ? void 0 : (_popoverAnchor$parent4 = _popoverAnchor$parent3.parentElement) === null || _popoverAnchor$parent4 === void 0 ? void 0 : _popoverAnchor$parent4.parentElement;
101
+ // Prevent cell animation flash while focus is being shifted between popover and cell
102
+ cell === null || cell === void 0 ? void 0 : cell.setAttribute('data-keyboard-closing', 'true');
103
+ // Ensure focus is returned to the parent cell, and remove animation stopgap
104
+ requestAnimationFrame(function () {
105
+ popoverAnchor === null || popoverAnchor === void 0 ? void 0 : popoverAnchor.parentElement.focus();
106
+ cell === null || cell === void 0 ? void 0 : cell.removeAttribute('data-keyboard-closing');
107
+ });
108
+ }
109
+ }, [popoverAnchor, closeCellPopover]);
110
+ var cellPopoverContext = useMemo(function () {
111
+ return {
112
+ popoverIsOpen: popoverIsOpen,
113
+ closeCellPopover: closeCellPopover,
114
+ openCellPopover: openCellPopover,
115
+ cellLocation: cellLocation,
116
+ setPopoverAnchorPosition: setPopoverAnchorPosition,
117
+ setPopoverAnchor: setPopoverAnchor,
118
+ setPopoverContent: setPopoverContent,
119
+ setCellPopoverProps: setCellPopoverProps
120
+ };
121
+ }, [popoverIsOpen, closeCellPopover, openCellPopover, cellLocation]);
122
+ var cellPopover = useMemo(function () {
123
+ var _cellPopoverProps$pan;
124
+ if (!popoverIsOpen || !popoverAnchor) return null;
133
125
 
134
- // Prevent cell animation flash while focus is being shifted between popover and cell
135
- cell === null || cell === void 0 ? void 0 : cell.setAttribute('data-keyboard-closing', 'true');
136
- // Ensure focus is returned to the parent cell, and remove animation stopgap
137
- requestAnimationFrame(function () {
138
- popoverAnchor.parentElement.focus();
139
- cell === null || cell === void 0 ? void 0 : cell.removeAttribute('data-keyboard-closing');
140
- });
141
- }
142
- },
143
- button: popoverAnchor,
144
- closePopover: closeCellPopover
145
- }), popoverContent);
146
- return {
147
- cellPopoverContext: cellPopoverContext,
148
- cellPopover: cellPopover
149
- };
126
+ // Note that this popover is rendered once at the top grid level, rather than one popover per cell
127
+ return ___EmotionJSX(EuiWrappingPopover, _extends({
128
+ isOpen: popoverIsOpen,
129
+ display: "block",
130
+ hasArrow: false,
131
+ panelPaddingSize: "s",
132
+ anchorPosition: popoverAnchorPosition,
133
+ repositionToCrossAxis: false
134
+ }, cellPopoverProps, {
135
+ focusTrapProps: {
136
+ onClickOutside: onClickOutside,
137
+ clickOutsideDisables: false
138
+ },
139
+ panelProps: _objectSpread({
140
+ 'data-test-subj': 'euiDataGridExpansionPopover'
141
+ }, cellPopoverProps.panelProps || {}),
142
+ panelClassName: classNames('euiDataGridRowCell__popover', cellPopoverProps.panelClassName, (_cellPopoverProps$pan = cellPopoverProps.panelProps) === null || _cellPopoverProps$pan === void 0 ? void 0 : _cellPopoverProps$pan.className),
143
+ panelStyle: {
144
+ maxInlineSize: "min(75vw, max(".concat(popoverAnchor.parentElement.offsetWidth, "px, 400px))"),
145
+ maxBlockSize: '50vh'
146
+ },
147
+ onKeyDown: onKeyDown,
148
+ button: popoverAnchor,
149
+ closePopover: closeCellPopover
150
+ }), popoverContent);
151
+ }, [popoverIsOpen, popoverAnchor, popoverContent, cellPopoverProps, closeCellPopover, onClickOutside, onKeyDown, popoverAnchorPosition]);
152
+ return useMemo(function () {
153
+ return {
154
+ cellPopoverContext: cellPopoverContext,
155
+ cellPopover: cellPopover
156
+ };
157
+ }, [cellPopoverContext, cellPopover]);
150
158
  };
151
159
 
152
160
  /**