@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,9 +1,9 @@
1
1
  var _excluded = ["children", "style"];
2
2
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
3
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
+ import PropTypes from "prop-types";
4
5
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
5
6
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
- import PropTypes from "prop-types";
7
7
  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; }
8
8
  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; }
9
9
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -18,12 +18,13 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
18
18
  */
19
19
 
20
20
  import classNames from 'classnames';
21
- import React, { forwardRef, createContext, useContext, useEffect, useRef } from 'react';
21
+ import React, { forwardRef, createContext, useCallback, useContext, useEffect, useRef, useMemo, memo } from 'react';
22
22
  import { VariableSizeGrid as Grid } from 'react-window';
23
+ import { useDeepEqual } from '../../../services';
23
24
  import { useResizeObserver } from '../../observer/resize_observer';
24
25
  import { useDataGridHeader } from './header';
25
26
  import { useDataGridFooter } from './footer';
26
- import { Cell } from './cell';
27
+ import { CellWrapper } from './cell';
27
28
  import { useRowManager } from './data_grid_row_manager';
28
29
  import { useFinalGridDimensions, useUnconstrainedHeight, useVirtualizeContainerWidth } from '../utils/grid_height_width';
29
30
  import { useDefaultColumnWidth, useColumnWidths } from '../utils/col_widths';
@@ -31,21 +32,25 @@ import { useRowHeightUtils, useDefaultRowHeight } from '../utils/row_heights';
31
32
  import { useScrollBars, useScroll } from '../utils/scrolling';
32
33
  import { IS_JEST_ENVIRONMENT } from '../../../utils';
33
34
  import { jsx as ___EmotionJSX } from "@emotion/react";
34
- export var _Cell = function _Cell(_ref) {
35
+ export var Cell = /*#__PURE__*/memo(function (_ref) {
35
36
  var columnIndex = _ref.columnIndex,
36
37
  rowIndex = _ref.rowIndex,
37
38
  style = _ref.style,
38
39
  data = _ref.data;
39
- var _useContext = useContext(DataGridWrapperRowsContext),
40
- headerRowHeight = _useContext.headerRowHeight;
41
- return ___EmotionJSX(Cell, _extends({
40
+ var memoizedStyles = useDeepEqual(style);
41
+ var cellStyles = useMemo(function () {
42
+ var headerRowHeight = data.headerRowHeight;
43
+ return _objectSpread(_objectSpread({}, memoizedStyles), {}, {
44
+ top: "".concat(parseFloat(memoizedStyles.top) + headerRowHeight, "px")
45
+ });
46
+ }, [memoizedStyles, data]);
47
+ return ___EmotionJSX(CellWrapper, _extends({
42
48
  colIndex: columnIndex,
43
49
  visibleRowIndex: rowIndex,
44
- style: _objectSpread(_objectSpread({}, style), {}, {
45
- top: "".concat(parseFloat(style.top) + headerRowHeight, "px")
46
- })
50
+ style: cellStyles
47
51
  }, data));
48
- };
52
+ });
53
+ Cell.displayName = 'Cell';
49
54
 
50
55
  // Context is required to pass props to react-window's innerElementType
51
56
  // @see https://github.com/bvaughn/react-window/issues/404
@@ -54,28 +59,27 @@ export var DataGridWrapperRowsContext = /*#__PURE__*/createContext({
54
59
  headerRowHeight: 0,
55
60
  footerRow: null
56
61
  });
57
- var InnerElement = /*#__PURE__*/forwardRef(function (_ref2, ref) {
62
+ var InnerElement = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (_ref2, ref) {
58
63
  var children = _ref2.children,
59
64
  style = _ref2.style,
60
65
  rest = _objectWithoutProperties(_ref2, _excluded);
61
- var _useContext2 = useContext(DataGridWrapperRowsContext),
62
- headerRowHeight = _useContext2.headerRowHeight,
63
- headerRow = _useContext2.headerRow,
64
- footerRow = _useContext2.footerRow;
66
+ var _useContext = useContext(DataGridWrapperRowsContext),
67
+ headerRowHeight = _useContext.headerRowHeight,
68
+ headerRow = _useContext.headerRow,
69
+ footerRow = _useContext.footerRow;
70
+ var memoizedStyles = useDeepEqual(style);
71
+ var innerElementStyles = useMemo(function () {
72
+ return _objectSpread(_objectSpread({}, memoizedStyles), {}, {
73
+ height: memoizedStyles.height + headerRowHeight
74
+ });
75
+ }, [memoizedStyles, headerRowHeight]);
65
76
  return ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", _extends({
66
77
  ref: ref,
67
- style: _objectSpread(_objectSpread({}, style), {}, {
68
- height: style.height + headerRowHeight
69
- })
78
+ style: innerElementStyles
70
79
  }, rest), headerRow, children), footerRow);
71
- });
72
- InnerElement.propTypes = {
73
- style: PropTypes.shape({
74
- height: PropTypes.number.isRequired
75
- }).isRequired
76
- };
80
+ }));
77
81
  InnerElement.displayName = 'EuiDataGridInnerElement';
78
- export var EuiDataGridBodyVirtualized = function EuiDataGridBodyVirtualized(_ref3) {
82
+ export var EuiDataGridBodyVirtualized = /*#__PURE__*/memo(function (_ref3) {
79
83
  var leadingControlColumns = _ref3.leadingControlColumns,
80
84
  trailingControlColumns = _ref3.trailingControlColumns,
81
85
  columns = _ref3.columns,
@@ -88,10 +92,12 @@ export var EuiDataGridBodyVirtualized = function EuiDataGridBodyVirtualized(_ref
88
92
  endRow = _ref3$visibleRows.endRow,
89
93
  visibleRowCount = _ref3$visibleRows.visibleRowCount,
90
94
  renderCellValue = _ref3.renderCellValue,
95
+ cellContext = _ref3.cellContext,
91
96
  renderCellPopover = _ref3.renderCellPopover,
92
97
  renderFooterCellValue = _ref3.renderFooterCellValue,
93
98
  interactiveCellId = _ref3.interactiveCellId,
94
99
  pagination = _ref3.pagination,
100
+ sorting = _ref3.sorting,
95
101
  setVisibleColumns = _ref3.setVisibleColumns,
96
102
  switchColumnPos = _ref3.switchColumnPos,
97
103
  onColumnResize = _ref3.onColumnResize,
@@ -141,14 +147,15 @@ export var EuiDataGridBodyVirtualized = function EuiDataGridBodyVirtualized(_ref
141
147
  * Header & footer
142
148
  */
143
149
  var _useDataGridHeader = useDataGridHeader({
144
- switchColumnPos: switchColumnPos,
145
- setVisibleColumns: setVisibleColumns,
146
150
  leadingControlColumns: leadingControlColumns,
147
151
  trailingControlColumns: trailingControlColumns,
148
152
  columns: columns,
149
153
  columnWidths: columnWidths,
150
154
  defaultColumnWidth: defaultColumnWidth,
151
155
  setColumnWidth: setColumnWidth,
156
+ setVisibleColumns: setVisibleColumns,
157
+ switchColumnPos: switchColumnPos,
158
+ sorting: sorting,
152
159
  schema: schema,
153
160
  schemaDetectors: schemaDetectors
154
161
  }),
@@ -256,29 +263,13 @@ export var EuiDataGridBodyVirtualized = function EuiDataGridBodyVirtualized(_ref
256
263
  gridRef.current.resetAfterRowIndex(0);
257
264
  }
258
265
  }, [gridRef, getRowHeight]);
259
- return IS_JEST_ENVIRONMENT || finalWidth > 0 ? ___EmotionJSX(DataGridWrapperRowsContext.Provider, {
260
- value: {
261
- headerRowHeight: headerRowHeight,
262
- headerRow: headerRow,
263
- footerRow: footerRow
264
- }
265
- }, ___EmotionJSX(Grid, _extends({}, virtualizationOptions ? virtualizationOptions : {}, {
266
- ref: gridRef,
267
- className: classNames('euiDataGrid__virtualized', virtualizationOptions === null || virtualizationOptions === void 0 ? void 0 : virtualizationOptions.className),
268
- onItemsRendered: function onItemsRendered(itemsRendered) {
269
- var _virtualizationOption;
270
- gridItemsRendered.current = itemsRendered;
271
- virtualizationOptions === null || virtualizationOptions === void 0 ? void 0 : (_virtualizationOption = virtualizationOptions.onItemsRendered) === null || _virtualizationOption === void 0 ? void 0 : _virtualizationOption.call(virtualizationOptions, itemsRendered);
272
- },
273
- innerElementType: InnerElement,
274
- outerRef: outerGridRef,
275
- innerRef: innerGridRef,
276
- columnCount: visibleColCount,
277
- width: finalWidth,
278
- columnWidth: getColumnWidth,
279
- height: finalHeight,
280
- rowHeight: getRowHeight,
281
- itemData: {
266
+ var onItemsRendered = useCallback(function (itemsRendered) {
267
+ var _virtualizationOption;
268
+ gridItemsRendered.current = itemsRendered;
269
+ virtualizationOptions === null || virtualizationOptions === void 0 ? void 0 : (_virtualizationOption = virtualizationOptions.onItemsRendered) === null || _virtualizationOption === void 0 ? void 0 : _virtualizationOption.call(virtualizationOptions, itemsRendered);
270
+ }, [gridItemsRendered, virtualizationOptions]);
271
+ var itemData = useMemo(function () {
272
+ return {
282
273
  schemaDetectors: schemaDetectors,
283
274
  setRowHeight: setRowHeight,
284
275
  leadingControlColumns: leadingControlColumns,
@@ -289,16 +280,41 @@ export var EuiDataGridBodyVirtualized = function EuiDataGridBodyVirtualized(_ref
289
280
  columnWidths: columnWidths,
290
281
  defaultColumnWidth: defaultColumnWidth,
291
282
  renderCellValue: renderCellValue,
283
+ cellContext: cellContext,
292
284
  renderCellPopover: renderCellPopover,
293
285
  interactiveCellId: interactiveCellId,
294
286
  rowHeightsOptions: rowHeightsOptions,
295
287
  rowHeightUtils: rowHeightUtils,
296
288
  rowManager: rowManager,
297
- pagination: pagination
298
- },
289
+ pagination: pagination,
290
+ headerRowHeight: headerRowHeight
291
+ };
292
+ }, [schemaDetectors, setRowHeight, leadingControlColumns, trailingControlColumns, columns, visibleColCount, schema, columnWidths, defaultColumnWidth, renderCellValue, cellContext, renderCellPopover, interactiveCellId, rowHeightsOptions, rowHeightUtils, rowManager, pagination, headerRowHeight]);
293
+ var rowWrapperContextValue = useMemo(function () {
294
+ return {
295
+ headerRowHeight: headerRowHeight,
296
+ headerRow: headerRow,
297
+ footerRow: footerRow
298
+ };
299
+ }, [headerRowHeight, headerRow, footerRow]);
300
+ return IS_JEST_ENVIRONMENT || finalWidth > 0 ? ___EmotionJSX(DataGridWrapperRowsContext.Provider, {
301
+ value: rowWrapperContextValue
302
+ }, ___EmotionJSX(Grid, _extends({}, virtualizationOptions, {
303
+ ref: gridRef,
304
+ className: classNames('euiDataGrid__virtualized', virtualizationOptions === null || virtualizationOptions === void 0 ? void 0 : virtualizationOptions.className),
305
+ onItemsRendered: onItemsRendered,
306
+ innerElementType: InnerElement,
307
+ outerRef: outerGridRef,
308
+ innerRef: innerGridRef,
309
+ columnCount: visibleColCount,
310
+ width: finalWidth,
311
+ columnWidth: getColumnWidth,
312
+ height: finalHeight,
313
+ rowHeight: getRowHeight,
314
+ itemData: itemData,
299
315
  rowCount: IS_JEST_ENVIRONMENT || headerRowHeight > 0 ? visibleRowCount : 0
300
- }), _Cell), scrollBorderOverlay) : null;
301
- };
316
+ }), Cell), scrollBorderOverlay) : null;
317
+ });
302
318
  EuiDataGridBodyVirtualized.propTypes = {
303
319
  leadingControlColumns: PropTypes.arrayOf(PropTypes.shape({
304
320
  /**
@@ -834,10 +850,24 @@ EuiDataGridBodyVirtualized.propTypes = {
834
850
  visibleRowCount: PropTypes.number.isRequired
835
851
  }).isRequired,
836
852
  renderCellValue: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,
853
+ cellContext: PropTypes.any,
837
854
  renderCellPopover: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.func.isRequired]),
838
855
  renderFooterCellValue: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]),
839
856
  renderCustomGridBody: PropTypes.func,
840
857
  interactiveCellId: PropTypes.string.isRequired,
858
+ sorting: PropTypes.shape({
859
+ /**
860
+ * A function that receives updated column sort details in response to user interactions in the toolbar controls
861
+ */
862
+ onSort: PropTypes.func.isRequired,
863
+ /**
864
+ * An array of the column ids currently being sorted and their sort direction. The array order determines the sort order. `{ id: 'A'; direction: 'asc' }`
865
+ */
866
+ columns: PropTypes.arrayOf(PropTypes.shape({
867
+ id: PropTypes.string.isRequired,
868
+ direction: PropTypes.oneOf(["asc", "desc"]).isRequired
869
+ }).isRequired).isRequired
870
+ }),
841
871
  pagination: PropTypes.any,
842
872
  setVisibleColumns: PropTypes.func.isRequired,
843
873
  switchColumnPos: PropTypes.func.isRequired,
@@ -923,4 +953,5 @@ EuiDataGridBodyVirtualized.propTypes = {
923
953
  gridRef: PropTypes.any.isRequired,
924
954
  gridItemsRendered: PropTypes.any.isRequired,
925
955
  wrapperRef: PropTypes.any.isRequired
926
- };
956
+ };
957
+ EuiDataGridBodyVirtualized.displayName = 'EuiDataGridBodyVirtualized';
@@ -12,7 +12,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
12
12
  * Side Public License, v 1.
13
13
  */
14
14
 
15
- import { useRef, useCallback } from 'react';
15
+ import { useRef, useCallback, useMemo } from 'react';
16
16
  import { useUpdateEffect } from '../../../services';
17
17
  export var useRowManager = function useRowManager(_ref) {
18
18
  var innerGridRef = _ref.innerGridRef,
@@ -83,7 +83,7 @@ export var useRowManager = function useRowManager(_ref) {
83
83
  if (rowClasses) {
84
84
  rowIdToElements.current.forEach(function (rowElement, rowIndex) {
85
85
  var euiClasses = Array.from(rowElement.classList).filter(function (className) {
86
- return className.startsWith('euiDataGridRow');
86
+ return ['euiDataGridRow', 'euiDataGridRow--striped'].includes(className);
87
87
  }).join(' ');
88
88
  if (rowClasses[rowIndex]) {
89
89
  rowElement.classList.value = "".concat(euiClasses, " ").concat(rowClasses[rowIndex]);
@@ -93,7 +93,9 @@ export var useRowManager = function useRowManager(_ref) {
93
93
  });
94
94
  }
95
95
  }, [rowClasses]);
96
- return {
97
- getRow: getRow
98
- };
96
+ return useMemo(function () {
97
+ return {
98
+ getRow: getRow
99
+ };
100
+ }, [getRow]);
99
101
  };
@@ -38,8 +38,7 @@ export var useDataGridFooter = function useDataGridFooter(props) {
38
38
  ref: setFooterRowRef,
39
39
  renderCellValue: renderFooterCellValue
40
40
  }, footerProps));
41
- }, Object.values(props)); // eslint-disable-line react-hooks/exhaustive-deps
42
-
41
+ }, [props]);
43
42
  return {
44
43
  footerRow: footerRow,
45
44
  footerRowHeight: footerRowHeight
@@ -7,12 +7,12 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
7
7
  * Side Public License, v 1.
8
8
  */
9
9
 
10
- import React from 'react';
10
+ import React, { memo } from 'react';
11
11
  import PropTypes from "prop-types";
12
12
  import classNames from 'classnames';
13
13
  import { EuiDataGridHeaderCellWrapper } from './data_grid_header_cell_wrapper';
14
14
  import { jsx as ___EmotionJSX } from "@emotion/react";
15
- export var EuiDataGridControlHeaderCell = function EuiDataGridControlHeaderCell(_ref) {
15
+ export var EuiDataGridControlHeaderCell = /*#__PURE__*/memo(function (_ref) {
16
16
  var controlColumn = _ref.controlColumn,
17
17
  index = _ref.index;
18
18
  var HeaderCellRender = controlColumn.headerCellRender,
@@ -27,7 +27,7 @@ export var EuiDataGridControlHeaderCell = function EuiDataGridControlHeaderCell(
27
27
  }), ___EmotionJSX("div", {
28
28
  className: "euiDataGridHeaderCell__content"
29
29
  }, ___EmotionJSX(HeaderCellRender, null)));
30
- };
30
+ });
31
31
  EuiDataGridControlHeaderCell.propTypes = {
32
32
  index: PropTypes.number.isRequired,
33
33
  controlColumn: PropTypes.shape({
@@ -60,4 +60,5 @@ EuiDataGridControlHeaderCell.propTypes = {
60
60
  */
61
61
  footerCellProps: PropTypes.any
62
62
  }).isRequired
63
- };
63
+ };
64
+ EuiDataGridControlHeaderCell.displayName = 'EuiDataGridControlHeaderCell';
@@ -20,7 +20,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
20
 
21
21
  import classnames from 'classnames';
22
22
  import PropTypes from "prop-types";
23
- import React, { useContext, useState, useRef, useCallback, useMemo } from 'react';
23
+ import React, { useContext, useState, useRef, useCallback, useMemo, memo } from 'react';
24
24
  import { tabbable } from 'tabbable';
25
25
  import { keys } from '../../../../services';
26
26
  import { useGeneratedHtmlId } from '../../../../services/accessibility';
@@ -29,13 +29,25 @@ import { EuiI18n } from '../../../i18n';
29
29
  import { EuiIcon } from '../../../icon';
30
30
  import { EuiListGroup } from '../../../list_group';
31
31
  import { EuiPopover } from '../../../popover';
32
- import { DataGridSortingContext } from '../../utils/sorting';
33
32
  import { DataGridFocusContext } from '../../utils/focus';
34
33
  import { getColumnActions } from './column_actions';
35
34
  import { EuiDataGridColumnResizer } from './data_grid_column_resizer';
36
35
  import { EuiDataGridHeaderCellWrapper } from './data_grid_header_cell_wrapper';
37
36
  import { jsx as ___EmotionJSX } from "@emotion/react";
38
- var _ref2 = process.env.NODE_ENV === "production" ? {
37
+ var CellContent = function CellContent(_ref) {
38
+ var children = _ref.children,
39
+ title = _ref.title,
40
+ arrow = _ref.arrow;
41
+ return ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", {
42
+ title: title,
43
+ className: "euiDataGridHeaderCell__content"
44
+ }, children), arrow);
45
+ };
46
+ CellContent.propTypes = {
47
+ title: PropTypes.string.isRequired,
48
+ arrow: PropTypes.node
49
+ };
50
+ var _ref3 = process.env.NODE_ENV === "production" ? {
39
51
  name: "mc0thx-EuiDataGridHeaderCell",
40
52
  styles: "margin-inline-start:auto;label:EuiDataGridHeaderCell;"
41
53
  } : {
@@ -43,18 +55,19 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
43
55
  styles: "margin-inline-start:auto;label:EuiDataGridHeaderCell;",
44
56
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
45
57
  };
46
- export var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
58
+ export var EuiDataGridHeaderCell = /*#__PURE__*/memo(function (_ref2) {
47
59
  var _classnames;
48
- var column = _ref.column,
49
- index = _ref.index,
50
- columns = _ref.columns,
51
- columnWidths = _ref.columnWidths,
52
- schema = _ref.schema,
53
- schemaDetectors = _ref.schemaDetectors,
54
- defaultColumnWidth = _ref.defaultColumnWidth,
55
- setColumnWidth = _ref.setColumnWidth,
56
- setVisibleColumns = _ref.setVisibleColumns,
57
- switchColumnPos = _ref.switchColumnPos;
60
+ var index = _ref2.index,
61
+ column = _ref2.column,
62
+ columns = _ref2.columns,
63
+ columnWidths = _ref2.columnWidths,
64
+ defaultColumnWidth = _ref2.defaultColumnWidth,
65
+ setColumnWidth = _ref2.setColumnWidth,
66
+ setVisibleColumns = _ref2.setVisibleColumns,
67
+ switchColumnPos = _ref2.switchColumnPos,
68
+ sorting = _ref2.sorting,
69
+ schema = _ref2.schema,
70
+ schemaDetectors = _ref2.schemaDetectors;
58
71
  var id = column.id,
59
72
  display = column.display,
60
73
  displayAsText = column.displayAsText,
@@ -64,25 +77,25 @@ export var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
64
77
  var _useContext = useContext(DataGridFocusContext),
65
78
  setFocusedCell = _useContext.setFocusedCell,
66
79
  focusFirstVisibleInteractiveCell = _useContext.focusFirstVisibleInteractiveCell;
67
- var _useContext2 = useContext(DataGridSortingContext),
68
- sorting = _useContext2.sorting;
69
80
  var _useState = useState(false),
70
81
  _useState2 = _slicedToArray(_useState, 2),
71
82
  isPopoverOpen = _useState2[0],
72
83
  setIsPopoverOpen = _useState2[1];
73
84
  var popoverArrowNavigationProps = usePopoverArrowNavigation();
74
- var columnActions = getColumnActions({
75
- column: column,
76
- columns: columns,
77
- schema: schema,
78
- schemaDetectors: schemaDetectors,
79
- setVisibleColumns: setVisibleColumns,
80
- focusFirstVisibleInteractiveCell: focusFirstVisibleInteractiveCell,
81
- setIsPopoverOpen: setIsPopoverOpen,
82
- sorting: sorting,
83
- switchColumnPos: switchColumnPos,
84
- setFocusedCell: setFocusedCell
85
- });
85
+ var columnActions = useMemo(function () {
86
+ return getColumnActions({
87
+ column: column,
88
+ columns: columns,
89
+ schema: schema,
90
+ schemaDetectors: schemaDetectors,
91
+ setVisibleColumns: setVisibleColumns,
92
+ focusFirstVisibleInteractiveCell: focusFirstVisibleInteractiveCell,
93
+ setIsPopoverOpen: setIsPopoverOpen,
94
+ sorting: sorting,
95
+ switchColumnPos: switchColumnPos,
96
+ setFocusedCell: setFocusedCell
97
+ });
98
+ }, [column, columns, schema, schemaDetectors, setVisibleColumns, focusFirstVisibleInteractiveCell, setIsPopoverOpen, sorting, switchColumnPos, setFocusedCell]);
86
99
  var showColumnActions = columnActions && columnActions.length > 0;
87
100
  var actionsButtonRef = useRef(null);
88
101
  var focusActionsButton = useCallback(function () {
@@ -109,11 +122,9 @@ export var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
109
122
  prefix: 'euiDataGridCellHeader',
110
123
  suffix: 'actions'
111
124
  });
112
- var cellContent = ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", {
113
- title: displayAsText || id,
114
- className: "euiDataGridHeaderCell__content"
115
- }, display || displayAsText || id), sortingArrow);
116
125
  var classes = classnames((_classnames = {}, _defineProperty(_classnames, "euiDataGridHeaderCell--".concat(columnType), columnType), _defineProperty(_classnames, 'euiDataGridHeaderCell--hasColumnActions', showColumnActions), _defineProperty(_classnames, 'euiDataGridHeaderCell--isActionsPopoverOpen', isPopoverOpen), _classnames), displayHeaderCellProps === null || displayHeaderCellProps === void 0 ? void 0 : displayHeaderCellProps.className);
126
+ var title = displayAsText || id;
127
+ var children = display || displayAsText || id;
117
128
  return ___EmotionJSX(EuiDataGridHeaderCellWrapper, _extends({}, displayHeaderCellProps, {
118
129
  className: classes,
119
130
  id: id,
@@ -127,7 +138,10 @@ export var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
127
138
  columnId: id,
128
139
  columnWidth: width,
129
140
  setColumnWidth: setColumnWidth
130
- }) : null, !showColumnActions ? ___EmotionJSX(React.Fragment, null, cellContent, sortingScreenReaderText && ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("p", null, sortingScreenReaderText))) : ___EmotionJSX(React.Fragment, null, ___EmotionJSX("button", {
141
+ }) : null, !showColumnActions ? ___EmotionJSX(React.Fragment, null, ___EmotionJSX(CellContent, {
142
+ title: title,
143
+ arrow: sortingArrow
144
+ }, children), sortingScreenReaderText && ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("p", null, sortingScreenReaderText))) : ___EmotionJSX(React.Fragment, null, ___EmotionJSX("button", {
131
145
  className: "euiDataGridHeaderCell__button",
132
146
  onClick: function onClick() {
133
147
  return setIsPopoverOpen(function (isPopoverOpen) {
@@ -143,12 +157,15 @@ export var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
143
157
  "aria-describedby": "".concat(sortingAriaId, " ").concat(actionsAriaId),
144
158
  ref: actionsButtonRef,
145
159
  "data-test-subj": "dataGridHeaderCellActionButton-".concat(id)
146
- }, cellContent, ___EmotionJSX(EuiPopover, _extends({
160
+ }, ___EmotionJSX(CellContent, {
161
+ title: title,
162
+ arrow: sortingArrow
163
+ }, children), ___EmotionJSX(EuiPopover, _extends({
147
164
  display: "block",
148
165
  panelPaddingSize: "none",
149
166
  offset: 7,
150
167
  anchorPosition: "downRight",
151
- css: _ref2 // Align to right
168
+ css: _ref3 // Align to right
152
169
  ,
153
170
  focusTrapProps: {
154
171
  // We need to override the default EuiPopover `onClickOutside` since the anchor is separate from the actual button
@@ -184,11 +201,7 @@ export var EuiDataGridHeaderCell = function EuiDataGridHeaderCell(_ref) {
184
201
  token: "euiDataGridHeaderCell.headerActions",
185
202
  default: "Click to view column header actions"
186
203
  }))));
187
- };
188
-
189
- /**
190
- * Column sorting utility helpers
191
- */
204
+ });
192
205
  EuiDataGridHeaderCell.propTypes = {
193
206
  column: PropTypes.shape({
194
207
  /**
@@ -615,11 +628,16 @@ EuiDataGridHeaderCell.propTypes = {
615
628
  }).isRequired,
616
629
  index: PropTypes.number.isRequired
617
630
  };
618
- export var useSortingUtils = function useSortingUtils(_ref3) {
631
+ EuiDataGridHeaderCell.displayName = 'EuiDataGridHeaderCell';
632
+
633
+ /**
634
+ * Column sorting utility helpers
635
+ */
636
+ export var useSortingUtils = function useSortingUtils(_ref4) {
619
637
  var _sorting$columns;
620
- var sorting = _ref3.sorting,
621
- id = _ref3.id,
622
- showColumnActions = _ref3.showColumnActions;
638
+ var sorting = _ref4.sorting,
639
+ id = _ref4.id,
640
+ showColumnActions = _ref4.showColumnActions;
623
641
  var sortedColumn = useMemo(function () {
624
642
  return sorting === null || sorting === void 0 ? void 0 : sorting.columns.find(function (col) {
625
643
  return col.id === id;
@@ -631,12 +649,14 @@ export var useSortingUtils = function useSortingUtils(_ref3) {
631
649
  /**
632
650
  * Arrow icon
633
651
  */
634
- var sortingArrow = isColumnSorted ? ___EmotionJSX(EuiIcon, {
635
- type: sortedColumn.direction === 'asc' ? 'sortUp' : 'sortDown',
636
- color: "text",
637
- className: "euiDataGridHeaderCell__sortingArrow",
638
- "data-test-subj": "dataGridHeaderCellSortingIcon-".concat(id)
639
- }) : null;
652
+ var sortingArrow = useMemo(function () {
653
+ return isColumnSorted ? ___EmotionJSX(EuiIcon, {
654
+ type: sortedColumn.direction === 'asc' ? 'sortUp' : 'sortDown',
655
+ color: "text",
656
+ className: "euiDataGridHeaderCell__sortingArrow",
657
+ "data-test-subj": "dataGridHeaderCellSortingIcon-".concat(id)
658
+ }) : null;
659
+ }, [id, isColumnSorted, sortedColumn]);
640
660
 
641
661
  /**
642
662
  * aria-sort attribute - should only be used when a single column is being sorted
@@ -653,9 +673,9 @@ export var useSortingUtils = function useSortingUtils(_ref3) {
653
673
  var _sorting$columns2;
654
674
  if (!isColumnSorted) return null;
655
675
  if (!showColumnActions && hasOnlyOneSort) return null; // in this scenario, the `aria-sort` attribute will be used by screen readers
656
- return ___EmotionJSX(React.Fragment, null, sorting === null || sorting === void 0 ? void 0 : (_sorting$columns2 = sorting.columns) === null || _sorting$columns2 === void 0 ? void 0 : _sorting$columns2.map(function (_ref4, index) {
657
- var columnId = _ref4.id,
658
- direction = _ref4.direction;
676
+ return ___EmotionJSX(React.Fragment, null, sorting === null || sorting === void 0 ? void 0 : (_sorting$columns2 = sorting.columns) === null || _sorting$columns2 === void 0 ? void 0 : _sorting$columns2.map(function (_ref5, index) {
677
+ var columnId = _ref5.id,
678
+ direction = _ref5.direction;
659
679
  if (hasOnlyOneSort) {
660
680
  if (direction === 'asc') {
661
681
  return ___EmotionJSX(EuiI18n, {