@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
@@ -48,7 +48,6 @@ var DataGridCellPopoverContext = /*#__PURE__*/(0, _react.createContext)({
48
48
  });
49
49
  exports.DataGridCellPopoverContext = DataGridCellPopoverContext;
50
50
  var useCellPopover = function useCellPopover() {
51
- var _cellPopoverProps$pan;
52
51
  // Current open state & cell location are handled here
53
52
  var _useState = (0, _react.useState)(false),
54
53
  _useState2 = _slicedToArray(_useState, 2),
@@ -99,16 +98,6 @@ var useCellPopover = function useCellPopover() {
99
98
  });
100
99
  setPopoverIsOpen(true);
101
100
  }, [popoverIsOpen, cellLocation]);
102
- var cellPopoverContext = {
103
- popoverIsOpen: popoverIsOpen,
104
- closeCellPopover: closeCellPopover,
105
- openCellPopover: openCellPopover,
106
- cellLocation: cellLocation,
107
- setPopoverAnchor: setPopoverAnchor,
108
- setPopoverAnchorPosition: setPopoverAnchorPosition,
109
- setPopoverContent: setPopoverContent,
110
- setCellPopoverProps: setCellPopoverProps
111
- };
112
101
 
113
102
  // Override the default EuiPopover `onClickOutside` behavior, since the toggling
114
103
  // popover button isn't actually the DOM node we pass to `button`. Otherwise,
@@ -120,52 +109,71 @@ var useCellPopover = function useCellPopover() {
120
109
  closeCellPopover();
121
110
  }
122
111
  }, [popoverAnchor, closeCellPopover]);
112
+ var onKeyDown = (0, _react.useCallback)(function (event) {
113
+ if (event.key === _services.keys.F2 || event.key === _services.keys.ESCAPE) {
114
+ var _popoverAnchor$parent3, _popoverAnchor$parent4;
115
+ event.preventDefault();
116
+ event.stopPropagation();
117
+ closeCellPopover();
118
+ 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;
123
119
 
124
- // Note that this popover is rendered once at the top grid level, rather than one popover per cell
125
- var cellPopover = popoverIsOpen && popoverAnchor && (0, _react2.jsx)(_popover.EuiWrappingPopover, _extends({
126
- isOpen: popoverIsOpen,
127
- display: "block",
128
- hasArrow: false,
129
- panelPaddingSize: "s",
130
- anchorPosition: popoverAnchorPosition,
131
- repositionToCrossAxis: false
132
- }, cellPopoverProps, {
133
- focusTrapProps: {
134
- onClickOutside: onClickOutside,
135
- clickOutsideDisables: false
136
- },
137
- panelProps: _objectSpread({
138
- 'data-test-subj': 'euiDataGridExpansionPopover'
139
- }, cellPopoverProps.panelProps || {}),
140
- panelClassName: (0, _classnames.default)('euiDataGridRowCell__popover', cellPopoverProps.panelClassName, (_cellPopoverProps$pan = cellPopoverProps.panelProps) === null || _cellPopoverProps$pan === void 0 ? void 0 : _cellPopoverProps$pan.className),
141
- panelStyle: {
142
- maxInlineSize: "min(75vw, max(".concat(popoverAnchor.parentElement.offsetWidth, "px, 400px))"),
143
- maxBlockSize: '50vh'
144
- },
145
- onKeyDown: function onKeyDown(event) {
146
- if (event.key === _services.keys.F2 || event.key === _services.keys.ESCAPE) {
147
- var _popoverAnchor$parent3, _popoverAnchor$parent4;
148
- event.preventDefault();
149
- event.stopPropagation();
150
- closeCellPopover();
151
- 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;
120
+ // Prevent cell animation flash while focus is being shifted between popover and cell
121
+ cell === null || cell === void 0 ? void 0 : cell.setAttribute('data-keyboard-closing', 'true');
122
+ // Ensure focus is returned to the parent cell, and remove animation stopgap
123
+ requestAnimationFrame(function () {
124
+ popoverAnchor === null || popoverAnchor === void 0 ? void 0 : popoverAnchor.parentElement.focus();
125
+ cell === null || cell === void 0 ? void 0 : cell.removeAttribute('data-keyboard-closing');
126
+ });
127
+ }
128
+ }, [popoverAnchor, closeCellPopover]);
129
+ var cellPopoverContext = (0, _react.useMemo)(function () {
130
+ return {
131
+ popoverIsOpen: popoverIsOpen,
132
+ closeCellPopover: closeCellPopover,
133
+ openCellPopover: openCellPopover,
134
+ cellLocation: cellLocation,
135
+ setPopoverAnchorPosition: setPopoverAnchorPosition,
136
+ setPopoverAnchor: setPopoverAnchor,
137
+ setPopoverContent: setPopoverContent,
138
+ setCellPopoverProps: setCellPopoverProps
139
+ };
140
+ }, [popoverIsOpen, closeCellPopover, openCellPopover, cellLocation]);
141
+ var cellPopover = (0, _react.useMemo)(function () {
142
+ var _cellPopoverProps$pan;
143
+ if (!popoverIsOpen || !popoverAnchor) return null;
152
144
 
153
- // Prevent cell animation flash while focus is being shifted between popover and cell
154
- cell === null || cell === void 0 ? void 0 : cell.setAttribute('data-keyboard-closing', 'true');
155
- // Ensure focus is returned to the parent cell, and remove animation stopgap
156
- requestAnimationFrame(function () {
157
- popoverAnchor.parentElement.focus();
158
- cell === null || cell === void 0 ? void 0 : cell.removeAttribute('data-keyboard-closing');
159
- });
160
- }
161
- },
162
- button: popoverAnchor,
163
- closePopover: closeCellPopover
164
- }), popoverContent);
165
- return {
166
- cellPopoverContext: cellPopoverContext,
167
- cellPopover: cellPopover
168
- };
145
+ // Note that this popover is rendered once at the top grid level, rather than one popover per cell
146
+ return (0, _react2.jsx)(_popover.EuiWrappingPopover, _extends({
147
+ isOpen: popoverIsOpen,
148
+ display: "block",
149
+ hasArrow: false,
150
+ panelPaddingSize: "s",
151
+ anchorPosition: popoverAnchorPosition,
152
+ repositionToCrossAxis: false
153
+ }, cellPopoverProps, {
154
+ focusTrapProps: {
155
+ onClickOutside: onClickOutside,
156
+ clickOutsideDisables: false
157
+ },
158
+ panelProps: _objectSpread({
159
+ 'data-test-subj': 'euiDataGridExpansionPopover'
160
+ }, cellPopoverProps.panelProps || {}),
161
+ panelClassName: (0, _classnames.default)('euiDataGridRowCell__popover', cellPopoverProps.panelClassName, (_cellPopoverProps$pan = cellPopoverProps.panelProps) === null || _cellPopoverProps$pan === void 0 ? void 0 : _cellPopoverProps$pan.className),
162
+ panelStyle: {
163
+ maxInlineSize: "min(75vw, max(".concat(popoverAnchor.parentElement.offsetWidth, "px, 400px))"),
164
+ maxBlockSize: '50vh'
165
+ },
166
+ onKeyDown: onKeyDown,
167
+ button: popoverAnchor,
168
+ closePopover: closeCellPopover
169
+ }), popoverContent);
170
+ }, [popoverIsOpen, popoverAnchor, popoverContent, cellPopoverProps, closeCellPopover, onClickOutside, onKeyDown, popoverAnchorPosition]);
171
+ return (0, _react.useMemo)(function () {
172
+ return {
173
+ cellPopoverContext: cellPopoverContext,
174
+ cellPopover: cellPopover
175
+ };
176
+ }, [cellPopoverContext, cellPopover]);
169
177
  };
170
178
 
171
179
  /**
@@ -4,14 +4,14 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.Cell = void 0;
7
+ exports.CellWrapper = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _sorting = require("../../utils/sorting");
11
11
  var _data_grid_cell_popover = require("./data_grid_cell_popover");
12
12
  var _data_grid_cell = require("./data_grid_cell");
13
13
  var _react2 = require("@emotion/react");
14
- var _excluded = ["colIndex", "visibleRowIndex", "style", "schema", "schemaDetectors", "pagination", "columns", "leadingControlColumns", "trailingControlColumns", "visibleColCount", "columnWidths", "defaultColumnWidth", "renderCellValue", "renderCellPopover", "interactiveCellId", "setRowHeight", "rowHeightsOptions", "rowHeightUtils", "rowManager"];
14
+ var _excluded = ["colIndex", "visibleRowIndex", "style", "schema", "schemaDetectors", "pagination", "columns", "leadingControlColumns", "trailingControlColumns", "visibleColCount", "columnWidths", "defaultColumnWidth", "renderCellValue", "cellContext", "renderCellPopover", "interactiveCellId", "setRowHeight", "rowHeightsOptions", "rowHeightUtils", "rowManager"];
15
15
  /*
16
16
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
17
17
  * or more contributor license agreements. Licensed under the Elastic License
@@ -33,7 +33,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
33
33
  * It grabs context, determines the type of cell being rendered
34
34
  * (e.g. control vs data cell), & sets shared props between all cells
35
35
  */
36
- var Cell = function Cell(_ref) {
36
+ var CellWrapper = /*#__PURE__*/(0, _react.memo)(function (_ref) {
37
37
  var colIndex = _ref.colIndex,
38
38
  visibleRowIndex = _ref.visibleRowIndex,
39
39
  style = _ref.style,
@@ -47,6 +47,7 @@ var Cell = function Cell(_ref) {
47
47
  columnWidths = _ref.columnWidths,
48
48
  defaultColumnWidth = _ref.defaultColumnWidth,
49
49
  renderCellValue = _ref.renderCellValue,
50
+ cellContext = _ref.cellContext,
50
51
  renderCellPopover = _ref.renderCellPopover,
51
52
  interactiveCellId = _ref.interactiveCellId,
52
53
  setRowHeight = _ref.setRowHeight,
@@ -55,9 +56,8 @@ var Cell = function Cell(_ref) {
55
56
  rowManager = _ref.rowManager,
56
57
  rest = _objectWithoutProperties(_ref, _excluded);
57
58
  var popoverContext = (0, _react.useContext)(_data_grid_cell_popover.DataGridCellPopoverContext);
58
- var _useContext = (0, _react.useContext)(_sorting.DataGridSortingContext),
59
+ var _useContext = (0, _react.useContext)(_sorting.DataGridSortedContext),
59
60
  getCorrectRowIndex = _useContext.getCorrectRowIndex;
60
- var cellContent;
61
61
  var isFirstColumn = colIndex === 0;
62
62
  var isLastColumn = colIndex === visibleColCount - 1;
63
63
  var isLeadingControlColumn = colIndex < leadingControlColumns.length;
@@ -71,30 +71,33 @@ var Cell = function Cell(_ref) {
71
71
  return column !== null && column !== void 0 && column.schema ? (column === null || column === void 0 ? void 0 : column.schema) === row.type : columnId === row.type;
72
72
  })[0]) === null || _schemaDetectors$filt === void 0 ? void 0 : _schemaDetectors$filt.textTransform;
73
73
  }, [columnId, column === null || column === void 0 ? void 0 : column.schema, schemaDetectors]);
74
- var classes = (0, _classnames.default)(_defineProperty({
75
- 'euiDataGridRowCell--firstColumn': isFirstColumn,
76
- 'euiDataGridRowCell--lastColumn': isLastColumn,
77
- 'euiDataGridRowCell--controlColumn': isLeadingControlColumn || isTrailingControlColumn
78
- }, "euiDataGridRowCell--".concat(textTransform), textTransform));
79
- var sharedCellProps = {
80
- rowIndex: getCorrectRowIndex(visibleRowIndex),
81
- visibleRowIndex: visibleRowIndex,
82
- colIndex: colIndex,
83
- interactiveCellId: interactiveCellId,
84
- className: classes,
85
- style: style,
86
- rowHeightsOptions: rowHeightsOptions,
87
- rowHeightUtils: rowHeightUtils,
88
- setRowHeight: isFirstColumn ? setRowHeight : undefined,
89
- rowManager: rowManager,
90
- popoverContext: popoverContext,
91
- pagination: pagination
92
- };
74
+ var sharedCellProps = (0, _react.useMemo)(function () {
75
+ var classes = (0, _classnames.default)(_defineProperty({
76
+ 'euiDataGridRowCell--firstColumn': isFirstColumn,
77
+ 'euiDataGridRowCell--lastColumn': isLastColumn,
78
+ 'euiDataGridRowCell--controlColumn': isLeadingControlColumn || isTrailingControlColumn
79
+ }, "euiDataGridRowCell--".concat(textTransform), textTransform));
80
+ return {
81
+ rowIndex: getCorrectRowIndex(visibleRowIndex),
82
+ visibleRowIndex: visibleRowIndex,
83
+ colIndex: colIndex,
84
+ interactiveCellId: interactiveCellId,
85
+ className: classes,
86
+ style: style,
87
+ rowHeightsOptions: rowHeightsOptions,
88
+ rowHeightUtils: rowHeightUtils,
89
+ setRowHeight: isFirstColumn ? setRowHeight : undefined,
90
+ rowManager: rowManager,
91
+ popoverContext: popoverContext,
92
+ pagination: pagination,
93
+ cellContext: cellContext
94
+ };
95
+ }, [colIndex, setRowHeight, visibleRowIndex, getCorrectRowIndex, interactiveCellId, style, rowHeightsOptions, rowHeightUtils, rowManager, popoverContext, pagination, cellContext, isFirstColumn, isLastColumn, isLeadingControlColumn, isTrailingControlColumn, textTransform]);
93
96
  if (isLeadingControlColumn) {
94
97
  var leadingColumn = leadingControlColumns[colIndex];
95
98
  var id = leadingColumn.id,
96
99
  rowCellRender = leadingColumn.rowCellRender;
97
- cellContent = (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
100
+ return (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
98
101
  columnId: id,
99
102
  width: leadingColumn.width,
100
103
  renderCellValue: rowCellRender,
@@ -106,7 +109,7 @@ var Cell = function Cell(_ref) {
106
109
  var trailingColumn = trailingControlColumns[trailingcolIndex];
107
110
  var _id = trailingColumn.id,
108
111
  _rowCellRender = trailingColumn.rowCellRender;
109
- cellContent = (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
112
+ return (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
110
113
  columnId: _id,
111
114
  width: trailingColumn.width,
112
115
  renderCellValue: _rowCellRender,
@@ -115,9 +118,9 @@ var Cell = function Cell(_ref) {
115
118
  } else {
116
119
  // this is a normal data cell
117
120
  var columnType = schema[columnId] ? schema[columnId].columnType : null;
118
- var isExpandable = column.isExpandable !== undefined ? column.isExpandable : true;
121
+ var isExpandable = (column === null || column === void 0 ? void 0 : column.isExpandable) !== undefined ? column === null || column === void 0 ? void 0 : column.isExpandable : true;
119
122
  var width = columnWidths[columnId] || defaultColumnWidth;
120
- cellContent = (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
123
+ return (0, _react2.jsx)(_data_grid_cell.EuiDataGridCell, _extends({}, sharedCellProps, {
121
124
  columnId: columnId,
122
125
  column: column,
123
126
  columnType: columnType,
@@ -128,6 +131,6 @@ var Cell = function Cell(_ref) {
128
131
  isExpandable: isExpandable
129
132
  }, rest));
130
133
  }
131
- return cellContent;
132
- };
133
- exports.Cell = Cell;
134
+ });
135
+ exports.CellWrapper = CellWrapper;
136
+ CellWrapper.displayName = 'CellWrapper';
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "Cell", {
6
+ Object.defineProperty(exports, "CellWrapper", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _data_grid_cell_wrapper.Cell;
9
+ return _data_grid_cell_wrapper.CellWrapper;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "DataGridCellPopoverContext", {
@@ -569,10 +569,24 @@ EuiDataGridBody.propTypes = {
569
569
  visibleRowCount: _propTypes.default.number.isRequired
570
570
  }).isRequired,
571
571
  renderCellValue: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.element.isRequired]).isRequired,
572
+ cellContext: _propTypes.default.any,
572
573
  renderCellPopover: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.func.isRequired]),
573
574
  renderFooterCellValue: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.element.isRequired]),
574
575
  renderCustomGridBody: _propTypes.default.func,
575
576
  interactiveCellId: _propTypes.default.string.isRequired,
577
+ sorting: _propTypes.default.shape({
578
+ /**
579
+ * A function that receives updated column sort details in response to user interactions in the toolbar controls
580
+ */
581
+ onSort: _propTypes.default.func.isRequired,
582
+ /**
583
+ * An array of the column ids currently being sorted and their sort direction. The array order determines the sort order. `{ id: 'A'; direction: 'asc' }`
584
+ */
585
+ columns: _propTypes.default.arrayOf(_propTypes.default.shape({
586
+ id: _propTypes.default.string.isRequired,
587
+ direction: _propTypes.default.oneOf(["asc", "desc"]).isRequired
588
+ }).isRequired).isRequired
589
+ }),
576
590
  pagination: _propTypes.default.any,
577
591
  setVisibleColumns: _propTypes.default.func.isRequired,
578
592
  switchColumnPos: _propTypes.default.func.isRequired,
@@ -44,24 +44,26 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
44
44
  */
45
45
  var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
46
46
  var renderCustomGridBody = _ref.renderCustomGridBody,
47
- leadingControlColumns = _ref.leadingControlColumns,
48
- trailingControlColumns = _ref.trailingControlColumns,
49
- columns = _ref.columns,
50
- visibleColCount = _ref.visibleColCount,
51
- schema = _ref.schema,
52
- schemaDetectors = _ref.schemaDetectors,
53
- visibleRows = _ref.visibleRows,
54
47
  renderCellValue = _ref.renderCellValue,
48
+ cellContext = _ref.cellContext,
55
49
  renderCellPopover = _ref.renderCellPopover,
56
50
  renderFooterCellValue = _ref.renderFooterCellValue,
57
51
  interactiveCellId = _ref.interactiveCellId,
52
+ visibleRows = _ref.visibleRows,
53
+ visibleColCount = _ref.visibleColCount,
54
+ leadingControlColumns = _ref.leadingControlColumns,
55
+ trailingControlColumns = _ref.trailingControlColumns,
56
+ columns = _ref.columns,
58
57
  setVisibleColumns = _ref.setVisibleColumns,
59
58
  switchColumnPos = _ref.switchColumnPos,
60
59
  onColumnResize = _ref.onColumnResize,
61
- gridWidth = _ref.gridWidth,
62
- gridStyles = _ref.gridStyles,
60
+ schema = _ref.schema,
61
+ schemaDetectors = _ref.schemaDetectors,
62
+ sorting = _ref.sorting,
63
63
  pagination = _ref.pagination,
64
- rowHeightsOptions = _ref.rowHeightsOptions;
64
+ rowHeightsOptions = _ref.rowHeightsOptions,
65
+ gridWidth = _ref.gridWidth,
66
+ gridStyles = _ref.gridStyles;
65
67
  /**
66
68
  * Columns & widths
67
69
  */
@@ -100,14 +102,15 @@ var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
100
102
  * Header & footer
101
103
  */
102
104
  var _useDataGridHeader = (0, _header.useDataGridHeader)({
103
- switchColumnPos: switchColumnPos,
104
- setVisibleColumns: setVisibleColumns,
105
105
  leadingControlColumns: leadingControlColumns,
106
106
  trailingControlColumns: trailingControlColumns,
107
107
  columns: columns,
108
108
  columnWidths: columnWidths,
109
109
  defaultColumnWidth: defaultColumnWidth,
110
110
  setColumnWidth: setColumnWidth,
111
+ setVisibleColumns: setVisibleColumns,
112
+ switchColumnPos: switchColumnPos,
113
+ sorting: sorting,
111
114
  schema: schema,
112
115
  schemaDetectors: schemaDetectors
113
116
  }),
@@ -130,24 +133,27 @@ var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
130
133
  /**
131
134
  * Cell render fn
132
135
  */
133
- var cellProps = {
134
- schema: schema,
135
- schemaDetectors: schemaDetectors,
136
- pagination: pagination,
137
- columns: columns,
138
- leadingControlColumns: leadingControlColumns,
139
- trailingControlColumns: trailingControlColumns,
140
- visibleColCount: visibleColCount,
141
- columnWidths: columnWidths,
142
- defaultColumnWidth: defaultColumnWidth,
143
- renderCellValue: renderCellValue,
144
- renderCellPopover: renderCellPopover,
145
- interactiveCellId: interactiveCellId,
146
- setRowHeight: setRowHeight,
147
- rowHeightsOptions: rowHeightsOptions,
148
- rowHeightUtils: rowHeightUtils
149
- };
150
- var _Cell = (0, _react.useCallback)(function (_ref2) {
136
+ var cellProps = (0, _react.useMemo)(function () {
137
+ return {
138
+ schema: schema,
139
+ schemaDetectors: schemaDetectors,
140
+ pagination: pagination,
141
+ columns: columns,
142
+ leadingControlColumns: leadingControlColumns,
143
+ trailingControlColumns: trailingControlColumns,
144
+ visibleColCount: visibleColCount,
145
+ columnWidths: columnWidths,
146
+ defaultColumnWidth: defaultColumnWidth,
147
+ renderCellValue: renderCellValue,
148
+ cellContext: cellContext,
149
+ renderCellPopover: renderCellPopover,
150
+ interactiveCellId: interactiveCellId,
151
+ setRowHeight: setRowHeight,
152
+ rowHeightsOptions: rowHeightsOptions,
153
+ rowHeightUtils: rowHeightUtils
154
+ };
155
+ }, [schema, schemaDetectors, pagination, columns, leadingControlColumns, trailingControlColumns, visibleColCount, columnWidths, defaultColumnWidth, renderCellValue, cellContext, renderCellPopover, interactiveCellId, setRowHeight, rowHeightsOptions, rowHeightUtils]);
156
+ var Cell = (0, _react.useCallback)(function (_ref2) {
151
157
  var colIndex = _ref2.colIndex,
152
158
  visibleRowIndex = _ref2.visibleRowIndex,
153
159
  rest = _objectWithoutProperties(_ref2, _excluded);
@@ -159,9 +165,8 @@ var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
159
165
  visibleRowIndex: visibleRowIndex,
160
166
  style: style
161
167
  }, cellProps);
162
- return (0, _react2.jsx)(_cell.Cell, _extends({}, props, rest));
163
- }, [].concat(_toConsumableArray(Object.values(cellProps)), [getRowHeight]) // eslint-disable-line react-hooks/exhaustive-deps
164
- );
168
+ return (0, _react2.jsx)(_cell.CellWrapper, _extends({}, props, rest));
169
+ }, [cellProps, getRowHeight, rowHeightUtils, rowHeightsOptions]);
165
170
 
166
171
  // Allow consumers to pass custom props/attributes/listeners etc. to the wrapping div
167
172
  var _useState = (0, _react.useState)({}),
@@ -173,7 +178,7 @@ var EuiDataGridBodyCustomRender = function EuiDataGridBodyCustomRender(_ref) {
173
178
  }), headerRow, renderCustomGridBody({
174
179
  visibleColumns: visibleColumns,
175
180
  visibleRowData: visibleRows,
176
- Cell: _Cell,
181
+ Cell: Cell,
177
182
  setCustomGridBodyProps: setCustomGridBodyProps
178
183
  }), footerRow);
179
184
  };
@@ -713,10 +718,24 @@ EuiDataGridBodyCustomRender.propTypes = {
713
718
  visibleRowCount: _propTypes.default.number.isRequired
714
719
  }).isRequired,
715
720
  renderCellValue: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.element.isRequired]).isRequired,
721
+ cellContext: _propTypes.default.any,
716
722
  renderCellPopover: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.func.isRequired]),
717
723
  renderFooterCellValue: _propTypes.default.oneOfType([_propTypes.default.func.isRequired, _propTypes.default.element.isRequired]),
718
724
  renderCustomGridBody: _propTypes.default.func,
719
725
  interactiveCellId: _propTypes.default.string.isRequired,
726
+ sorting: _propTypes.default.shape({
727
+ /**
728
+ * A function that receives updated column sort details in response to user interactions in the toolbar controls
729
+ */
730
+ onSort: _propTypes.default.func.isRequired,
731
+ /**
732
+ * An array of the column ids currently being sorted and their sort direction. The array order determines the sort order. `{ id: 'A'; direction: 'asc' }`
733
+ */
734
+ columns: _propTypes.default.arrayOf(_propTypes.default.shape({
735
+ id: _propTypes.default.string.isRequired,
736
+ direction: _propTypes.default.oneOf(["asc", "desc"]).isRequired
737
+ }).isRequired).isRequired
738
+ }),
720
739
  pagination: _propTypes.default.any,
721
740
  setVisibleColumns: _propTypes.default.func.isRequired,
722
741
  switchColumnPos: _propTypes.default.func.isRequired,