@bundle-stats/ui 4.23.0-beta.1 → 4.23.0-beta.11

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 (330) hide show
  1. package/lib/app/app.js +16 -5
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/app/app.module.css +13 -9
  4. package/lib/app/header/header.module.css +1 -3
  5. package/lib/components/asset-name/asset-name.js +8 -7
  6. package/lib/components/asset-name/asset-name.js.map +1 -1
  7. package/lib/components/asset-name/asset-name.module.css +11 -10
  8. package/lib/components/bundle-assets/bundle-assets.js +4 -2
  9. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  10. package/lib/components/bundle-assets/bundle-assets.module.css +0 -12
  11. package/lib/components/bundle-assets/index.js +2 -1
  12. package/lib/components/bundle-assets/index.js.map +1 -1
  13. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  14. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  15. package/lib/components/bundle-modules/bundle-modules.js +5 -3
  16. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  17. package/lib/components/bundle-modules/bundle-modules.module.css +2 -16
  18. package/lib/components/bundle-modules/index.js +2 -1
  19. package/lib/components/bundle-modules/index.js.map +1 -1
  20. package/lib/components/bundle-packages/bundle-packages.js +5 -3
  21. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  22. package/lib/components/bundle-packages/bundle-packages.module.css +18 -22
  23. package/lib/components/entry-info/entry-info.js +4 -2
  24. package/lib/components/entry-info/entry-info.js.map +1 -1
  25. package/lib/components/entry-info/entry-info.module.css +8 -2
  26. package/lib/components/jobs-header/jobs-header.js +1 -1
  27. package/lib/components/jobs-header/jobs-header.js.map +1 -1
  28. package/lib/components/jobs-header/jobs-header.module.css +0 -1
  29. package/lib/components/metric-change-legend/metric-change-legend.js +2 -2
  30. package/lib/components/metric-change-legend/metric-change-legend.js.map +1 -1
  31. package/lib/components/metric-change-legend/metric-change-legend.module.css +11 -0
  32. package/lib/components/metric-run-info/metric-run-info.js +4 -11
  33. package/lib/components/metric-run-info/metric-run-info.js.map +1 -1
  34. package/lib/components/metrics-display-selector/metrics-display-selector.module.css +4 -4
  35. package/lib/components/metrics-table/metrics-table.js +31 -20
  36. package/lib/components/metrics-table/metrics-table.js.map +1 -1
  37. package/lib/components/metrics-table/metrics-table.module.css +4 -12
  38. package/lib/components/metrics-table-options/metrics-table-options.js +5 -6
  39. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  40. package/lib/components/metrics-table-row-count/index.js +18 -0
  41. package/lib/components/metrics-table-row-count/index.js.map +1 -0
  42. package/lib/components/metrics-table-row-count/metrics-table-row-count.js +17 -0
  43. package/lib/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  44. package/lib/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  45. package/lib/components/metrics-treemap/metrics-treemap.constants.js +3 -1
  46. package/lib/components/metrics-treemap/metrics-treemap.constants.js.map +1 -1
  47. package/lib/components/metrics-treemap/metrics-treemap.js +46 -113
  48. package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -1
  49. package/lib/components/metrics-treemap/metrics-treemap.module.css +3 -274
  50. package/lib/components/metrics-treemap/metrics-treemap.utils.js +81 -16
  51. package/lib/components/metrics-treemap/metrics-treemap.utils.js.map +1 -1
  52. package/lib/components/metrics-treemap/tile/index.js +18 -0
  53. package/lib/components/metrics-treemap/tile/index.js.map +1 -0
  54. package/lib/components/metrics-treemap/tile/tile.js +79 -0
  55. package/lib/components/metrics-treemap/tile/tile.js.map +1 -0
  56. package/lib/components/metrics-treemap/tile/tile.module.css +146 -0
  57. package/lib/components/metrics-treemap/tile-group/index.js +18 -0
  58. package/lib/components/metrics-treemap/tile-group/index.js.map +1 -0
  59. package/lib/components/metrics-treemap/tile-group/tile-group.js +75 -0
  60. package/lib/components/metrics-treemap/tile-group/tile-group.js.map +1 -0
  61. package/lib/components/metrics-treemap/tile-group/tile-group.module.css +59 -0
  62. package/lib/components/metrics-treemap/tile-group-title/index.js +18 -0
  63. package/lib/components/metrics-treemap/tile-group-title/index.js.map +1 -0
  64. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.js +24 -0
  65. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.js.map +1 -0
  66. package/lib/components/metrics-treemap/tile-group-title/tile-group-title.module.css +44 -0
  67. package/lib/components/run-info/run-info.module.css +6 -6
  68. package/lib/components/sort-button/sort-button.module.css +5 -4
  69. package/lib/components/summary/summary.js +5 -4
  70. package/lib/components/summary/summary.js.map +1 -1
  71. package/lib/components/summary/summary.module.css +18 -18
  72. package/lib/css/default.css +9 -4
  73. package/lib/css/variables.css +42 -28
  74. package/lib/layout/box/box.module.css +4 -2
  75. package/lib/layout/flex-stack/flex-stack.js +2 -2
  76. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  77. package/lib/layout/flex-stack/flex-stack.module.css +65 -10
  78. package/lib/query-state.js +6 -3
  79. package/lib/query-state.js.map +1 -1
  80. package/lib/ui/button/button.js +3 -2
  81. package/lib/ui/button/button.js.map +1 -1
  82. package/lib/ui/button/button.module.css +41 -28
  83. package/lib/ui/control-group/control-group.js +1 -1
  84. package/lib/ui/control-group/control-group.js.map +1 -1
  85. package/lib/ui/copy-to-clipboard/copy-to-clipboard.module.css +4 -2
  86. package/lib/ui/dialog/dialog.js +3 -1
  87. package/lib/ui/dialog/dialog.js.map +1 -1
  88. package/lib/ui/dialog/dialog.module.css +16 -5
  89. package/lib/ui/dropdown/dropdown.js +11 -3
  90. package/lib/ui/dropdown/dropdown.js.map +1 -1
  91. package/lib/ui/dropdown/dropdown.module.css +56 -9
  92. package/lib/ui/filters/filters.js +28 -16
  93. package/lib/ui/filters/filters.js.map +1 -1
  94. package/lib/ui/filters/filters.module.css +7 -21
  95. package/lib/ui/hover-card/hover-card.js +7 -1
  96. package/lib/ui/hover-card/hover-card.js.map +1 -1
  97. package/lib/ui/hover-card/hover-card.module.css +14 -10
  98. package/lib/ui/input/input.module.css +4 -2
  99. package/lib/ui/table/table.module.css +14 -5
  100. package/lib/ui/tabs/tabs.module.css +17 -9
  101. package/lib/ui/tag/tag.module.css +0 -2
  102. package/lib/ui/textarea/textarea.module.css +4 -2
  103. package/lib/ui/toolbar/toolbar.js +2 -1
  104. package/lib/ui/toolbar/toolbar.js.map +1 -1
  105. package/lib/ui/toolbar/toolbar.module.css +0 -6
  106. package/lib/ui/tooltip/tooltip.js +6 -1
  107. package/lib/ui/tooltip/tooltip.js.map +1 -1
  108. package/lib/ui/tooltip/tooltip.module.css +5 -3
  109. package/lib/utils/index.js +1 -0
  110. package/lib/utils/index.js.map +1 -1
  111. package/lib/utils/portal.js +26 -0
  112. package/lib/utils/portal.js.map +1 -0
  113. package/lib-esm/app/app.js +16 -5
  114. package/lib-esm/app/app.js.map +1 -1
  115. package/lib-esm/app/app.module.css +13 -9
  116. package/lib-esm/app/header/header.module.css +1 -3
  117. package/lib-esm/components/asset-name/asset-name.js +8 -7
  118. package/lib-esm/components/asset-name/asset-name.js.map +1 -1
  119. package/lib-esm/components/asset-name/asset-name.module.css +11 -10
  120. package/lib-esm/components/bundle-assets/bundle-assets.js +4 -2
  121. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  122. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -12
  123. package/lib-esm/components/bundle-assets/index.js +2 -1
  124. package/lib-esm/components/bundle-assets/index.js.map +1 -1
  125. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +4 -2
  126. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -1
  127. package/lib-esm/components/bundle-modules/bundle-modules.js +5 -3
  128. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  129. package/lib-esm/components/bundle-modules/bundle-modules.module.css +2 -16
  130. package/lib-esm/components/bundle-modules/index.js +2 -1
  131. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  132. package/lib-esm/components/bundle-packages/bundle-packages.js +5 -3
  133. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  134. package/lib-esm/components/bundle-packages/bundle-packages.module.css +18 -22
  135. package/lib-esm/components/entry-info/entry-info.js +4 -2
  136. package/lib-esm/components/entry-info/entry-info.js.map +1 -1
  137. package/lib-esm/components/entry-info/entry-info.module.css +8 -2
  138. package/lib-esm/components/jobs-header/jobs-header.js +1 -1
  139. package/lib-esm/components/jobs-header/jobs-header.js.map +1 -1
  140. package/lib-esm/components/jobs-header/jobs-header.module.css +0 -1
  141. package/lib-esm/components/metric-change-legend/metric-change-legend.js +2 -2
  142. package/lib-esm/components/metric-change-legend/metric-change-legend.js.map +1 -1
  143. package/lib-esm/components/metric-change-legend/metric-change-legend.module.css +11 -0
  144. package/lib-esm/components/metric-run-info/metric-run-info.js +5 -12
  145. package/lib-esm/components/metric-run-info/metric-run-info.js.map +1 -1
  146. package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +4 -4
  147. package/lib-esm/components/metrics-table/metrics-table.js +32 -20
  148. package/lib-esm/components/metrics-table/metrics-table.js.map +1 -1
  149. package/lib-esm/components/metrics-table/metrics-table.module.css +4 -12
  150. package/lib-esm/components/metrics-table-options/metrics-table-options.js +6 -7
  151. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  152. package/lib-esm/components/metrics-table-row-count/index.js +2 -0
  153. package/lib-esm/components/metrics-table-row-count/index.js.map +1 -0
  154. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js +10 -0
  155. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.js.map +1 -0
  156. package/lib-esm/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  157. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js +2 -0
  158. package/lib-esm/components/metrics-treemap/metrics-treemap.constants.js.map +1 -1
  159. package/lib-esm/components/metrics-treemap/metrics-treemap.js +52 -120
  160. package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -1
  161. package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +3 -274
  162. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js +80 -18
  163. package/lib-esm/components/metrics-treemap/metrics-treemap.utils.js.map +1 -1
  164. package/lib-esm/components/metrics-treemap/tile/index.js +2 -0
  165. package/lib-esm/components/metrics-treemap/tile/index.js.map +1 -0
  166. package/lib-esm/components/metrics-treemap/tile/tile.js +40 -0
  167. package/lib-esm/components/metrics-treemap/tile/tile.js.map +1 -0
  168. package/lib-esm/components/metrics-treemap/tile/tile.module.css +146 -0
  169. package/lib-esm/components/metrics-treemap/tile-group/index.js +2 -0
  170. package/lib-esm/components/metrics-treemap/tile-group/index.js.map +1 -0
  171. package/lib-esm/components/metrics-treemap/tile-group/tile-group.js +35 -0
  172. package/lib-esm/components/metrics-treemap/tile-group/tile-group.js.map +1 -0
  173. package/lib-esm/components/metrics-treemap/tile-group/tile-group.module.css +59 -0
  174. package/lib-esm/components/metrics-treemap/tile-group-title/index.js +2 -0
  175. package/lib-esm/components/metrics-treemap/tile-group-title/index.js.map +1 -0
  176. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.js +17 -0
  177. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.js.map +1 -0
  178. package/lib-esm/components/metrics-treemap/tile-group-title/tile-group-title.module.css +44 -0
  179. package/lib-esm/components/run-info/run-info.module.css +6 -6
  180. package/lib-esm/components/sort-button/sort-button.module.css +5 -4
  181. package/lib-esm/components/summary/summary.js +5 -4
  182. package/lib-esm/components/summary/summary.js.map +1 -1
  183. package/lib-esm/components/summary/summary.module.css +18 -18
  184. package/lib-esm/css/default.css +9 -4
  185. package/lib-esm/css/variables.css +42 -28
  186. package/lib-esm/layout/box/box.module.css +4 -2
  187. package/lib-esm/layout/flex-stack/flex-stack.js +3 -2
  188. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  189. package/lib-esm/layout/flex-stack/flex-stack.module.css +65 -10
  190. package/lib-esm/query-state.js +7 -4
  191. package/lib-esm/query-state.js.map +1 -1
  192. package/lib-esm/ui/button/button.js +3 -2
  193. package/lib-esm/ui/button/button.js.map +1 -1
  194. package/lib-esm/ui/button/button.module.css +41 -28
  195. package/lib-esm/ui/control-group/control-group.js +1 -1
  196. package/lib-esm/ui/control-group/control-group.js.map +1 -1
  197. package/lib-esm/ui/copy-to-clipboard/copy-to-clipboard.module.css +4 -2
  198. package/lib-esm/ui/dialog/dialog.js +3 -1
  199. package/lib-esm/ui/dialog/dialog.js.map +1 -1
  200. package/lib-esm/ui/dialog/dialog.module.css +16 -5
  201. package/lib-esm/ui/dropdown/dropdown.js +9 -2
  202. package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
  203. package/lib-esm/ui/dropdown/dropdown.module.css +56 -9
  204. package/lib-esm/ui/filters/filters.js +29 -17
  205. package/lib-esm/ui/filters/filters.js.map +1 -1
  206. package/lib-esm/ui/filters/filters.module.css +7 -21
  207. package/lib-esm/ui/hover-card/hover-card.js +7 -1
  208. package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
  209. package/lib-esm/ui/hover-card/hover-card.module.css +14 -10
  210. package/lib-esm/ui/input/input.module.css +4 -2
  211. package/lib-esm/ui/table/table.module.css +14 -5
  212. package/lib-esm/ui/tabs/tabs.module.css +17 -9
  213. package/lib-esm/ui/tag/tag.module.css +0 -2
  214. package/lib-esm/ui/textarea/textarea.module.css +4 -2
  215. package/lib-esm/ui/toolbar/toolbar.js +2 -1
  216. package/lib-esm/ui/toolbar/toolbar.js.map +1 -1
  217. package/lib-esm/ui/toolbar/toolbar.module.css +0 -6
  218. package/lib-esm/ui/tooltip/tooltip.js +6 -1
  219. package/lib-esm/ui/tooltip/tooltip.js.map +1 -1
  220. package/lib-esm/ui/tooltip/tooltip.module.css +5 -3
  221. package/lib-esm/utils/index.js +1 -0
  222. package/lib-esm/utils/index.js.map +1 -1
  223. package/lib-esm/utils/portal.js +21 -0
  224. package/lib-esm/utils/portal.js.map +1 -0
  225. package/package.json +17 -17
  226. package/src/app/app.jsx +31 -12
  227. package/src/app/app.module.css +13 -9
  228. package/src/app/header/header.module.css +1 -3
  229. package/src/components/asset-name/asset-name.module.css +11 -10
  230. package/src/components/asset-name/asset-name.tsx +17 -14
  231. package/src/components/bundle-assets/bundle-assets.module.css +0 -12
  232. package/src/components/bundle-assets/bundle-assets.tsx +8 -1
  233. package/src/components/bundle-assets/index.tsx +3 -1
  234. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +6 -4
  235. package/src/components/bundle-modules/bundle-modules.module.css +2 -16
  236. package/src/components/bundle-modules/bundle-modules.tsx +10 -3
  237. package/src/components/bundle-modules/index.tsx +3 -1
  238. package/src/components/bundle-packages/bundle-packages.jsx +14 -3
  239. package/src/components/bundle-packages/bundle-packages.module.css +18 -22
  240. package/src/components/entry-info/entry-info.module.css +8 -2
  241. package/src/components/entry-info/entry-info.tsx +9 -3
  242. package/src/components/jobs-header/jobs-header.module.css +0 -1
  243. package/src/components/jobs-header/jobs-header.tsx +2 -2
  244. package/src/components/metric-change-legend/metric-change-legend.module.css +11 -0
  245. package/src/components/metric-change-legend/metric-change-legend.tsx +2 -2
  246. package/src/components/metric-run-info/metric-run-info.stories.tsx +9 -0
  247. package/src/components/metric-run-info/metric-run-info.tsx +10 -12
  248. package/src/components/metrics-display-selector/metrics-display-selector.module.css +4 -4
  249. package/src/components/metrics-table/metrics-table.module.css +4 -12
  250. package/src/components/metrics-table/metrics-table.tsx +70 -39
  251. package/src/components/metrics-table-options/metrics-table-options.tsx +14 -15
  252. package/src/components/metrics-table-row-count/index.ts +1 -0
  253. package/src/components/metrics-table-row-count/metrics-table-row-count.module.css +5 -0
  254. package/src/components/metrics-table-row-count/metrics-table-row-count.tsx +21 -0
  255. package/src/components/metrics-treemap/metrics-treemap.constants.ts +9 -0
  256. package/src/components/metrics-treemap/metrics-treemap.module.css +3 -274
  257. package/src/components/metrics-treemap/metrics-treemap.stories.utils.ts +46 -0
  258. package/src/components/metrics-treemap/metrics-treemap.tsx +123 -428
  259. package/src/components/metrics-treemap/metrics-treemap.utils.ts +161 -27
  260. package/src/components/metrics-treemap/tile/index.ts +1 -0
  261. package/src/components/metrics-treemap/tile/tile.module.css +146 -0
  262. package/src/components/metrics-treemap/tile/tile.stories.tsx +139 -0
  263. package/src/components/metrics-treemap/tile/tile.tsx +121 -0
  264. package/src/components/metrics-treemap/tile-group/index.ts +1 -0
  265. package/src/components/metrics-treemap/tile-group/tile-group.module.css +59 -0
  266. package/src/components/metrics-treemap/tile-group/tile-group.stories.tsx +163 -0
  267. package/src/components/metrics-treemap/tile-group/tile-group.tsx +177 -0
  268. package/src/components/metrics-treemap/tile-group-title/index.ts +1 -0
  269. package/src/components/metrics-treemap/tile-group-title/tile-group-title.module.css +44 -0
  270. package/src/components/metrics-treemap/tile-group-title/tile-group-title.stories.tsx +88 -0
  271. package/src/components/metrics-treemap/tile-group-title/tile-group-title.tsx +51 -0
  272. package/src/components/run-info/run-info.module.css +6 -6
  273. package/src/components/sort-button/sort-button.module.css +5 -4
  274. package/src/components/summary/summary.module.css +18 -18
  275. package/src/components/summary/summary.tsx +9 -8
  276. package/src/css/default.css +9 -4
  277. package/src/css/variables.css +42 -28
  278. package/src/layout/box/box.module.css +4 -2
  279. package/src/layout/flex-stack/flex-stack.module.css +65 -10
  280. package/src/layout/flex-stack/flex-stack.stories.tsx +68 -9
  281. package/src/layout/flex-stack/flex-stack.tsx +24 -4
  282. package/src/query-state.tsx +9 -4
  283. package/src/ui/button/button.module.css +41 -28
  284. package/src/ui/button/button.stories.tsx +1 -1
  285. package/src/ui/button/button.tsx +3 -1
  286. package/src/ui/control-group/control-group.tsx +1 -1
  287. package/src/ui/copy-to-clipboard/copy-to-clipboard.module.css +4 -2
  288. package/src/ui/dialog/dialog.module.css +16 -5
  289. package/src/ui/dialog/dialog.stories.tsx +8 -0
  290. package/src/ui/dialog/dialog.tsx +7 -0
  291. package/src/ui/dropdown/dropdown.module.css +56 -9
  292. package/src/ui/dropdown/dropdown.stories.tsx +6 -0
  293. package/src/ui/dropdown/dropdown.tsx +13 -2
  294. package/src/ui/filters/filters.module.css +7 -21
  295. package/src/ui/filters/filters.tsx +131 -67
  296. package/src/ui/hover-card/hover-card.module.css +14 -10
  297. package/src/ui/hover-card/hover-card.tsx +7 -1
  298. package/src/ui/input/input.module.css +4 -2
  299. package/src/ui/table/table.module.css +14 -5
  300. package/src/ui/tabs/tabs.module.css +17 -9
  301. package/src/ui/tag/tag.module.css +0 -2
  302. package/src/ui/textarea/textarea.module.css +4 -2
  303. package/src/ui/toolbar/toolbar.jsx +4 -1
  304. package/src/ui/toolbar/toolbar.module.css +0 -6
  305. package/src/ui/tooltip/tooltip.module.css +5 -3
  306. package/src/ui/tooltip/tooltip.tsx +6 -1
  307. package/src/utils/index.ts +1 -0
  308. package/src/utils/portal.ts +34 -0
  309. package/types/components/metric-run-info/metric-run-info.d.ts +1 -0
  310. package/types/components/metrics-table/metrics-table.d.ts +2 -1
  311. package/types/components/metrics-table-row-count/index.d.ts +1 -0
  312. package/types/components/metrics-table-row-count/metrics-table-row-count.d.ts +7 -0
  313. package/types/components/metrics-treemap/metrics-treemap.constants.d.ts +2 -0
  314. package/types/components/metrics-treemap/metrics-treemap.utils.d.ts +16 -5
  315. package/types/components/metrics-treemap/tile/index.d.ts +1 -0
  316. package/types/components/metrics-treemap/tile/tile.d.ts +11 -0
  317. package/types/components/metrics-treemap/tile-group/index.d.ts +1 -0
  318. package/types/components/metrics-treemap/tile-group/tile-group.d.ts +20 -0
  319. package/types/components/metrics-treemap/tile-group-title/index.d.ts +1 -0
  320. package/types/components/metrics-treemap/tile-group-title/tile-group-title.d.ts +12 -0
  321. package/types/layout/flex-stack/flex-stack.d.ts +6 -2
  322. package/types/ui/button/button.d.ts +1 -0
  323. package/types/ui/dropdown/dropdown.d.ts +3 -1
  324. package/types/ui/filters/filters.d.ts +2 -1
  325. package/types/utils/index.d.ts +1 -0
  326. package/types/utils/portal.d.ts +2 -0
  327. package/vitest.config.ts +4 -0
  328. package/lib/components/metrics-table-options/metrics-table-options.module.css +0 -15
  329. package/lib-esm/components/metrics-table-options/metrics-table-options.module.css +0 -15
  330. package/src/components/metrics-table-options/metrics-table-options.module.css +0 -15
package/src/app/app.jsx CHANGED
@@ -2,6 +2,7 @@ import React, { useContext, useEffect, useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import isEmpty from 'lodash/isEmpty';
4
4
  import { HashRouter, NavLink, Route, Switch, useLocation } from 'react-router-dom';
5
+ import { PortalContext } from 'ariakit/portal';
5
6
  import { COMPONENT } from '@bundle-stats/utils';
6
7
 
7
8
  import { URLS } from '../constants';
@@ -13,11 +14,13 @@ import { Insights } from '../components/insights';
13
14
  import { MetricChangeLegend, MetricsTableTitle } from '../components';
14
15
  import { Summary } from '../components/summary';
15
16
  import { Box } from '../layout/box';
17
+ import { FlexStack } from '../layout/flex-stack';
16
18
  import { Footer } from '../layout/footer';
17
19
  import { Stack } from '../layout/stack';
18
20
  import { Container } from '../ui/container';
19
21
  import { Tabs } from '../ui/tabs';
20
22
  import { QueryStateProvider, useComponentQueryState } from '../query-state';
23
+ import { usePortalRoot } from '../utils/portal';
21
24
  import I18N from '../i18n';
22
25
  import { Header } from './header';
23
26
  import css from './app.module.css';
@@ -136,6 +139,20 @@ const PackagesRoute = () => {
136
139
  );
137
140
  };
138
141
 
142
+ /**
143
+ * Render the overlays (hovercards, tooltips) of the content above the tabs
144
+ * (metric change legend, summary) above the sticky tabs
145
+ */
146
+ const RaisedOverlaysProvider = ({ children }) => {
147
+ const portalRoot = usePortalRoot(css.raisedOverlaysPortal);
148
+
149
+ return <PortalContext.Provider value={portalRoot}>{children}</PortalContext.Provider>;
150
+ };
151
+
152
+ RaisedOverlaysProvider.propTypes = {
153
+ children: PropTypes.node.isRequired,
154
+ };
155
+
139
156
  const AppComponent = ({ version, jobs }) => {
140
157
  if (jobs?.length === 0) {
141
158
  return (
@@ -150,18 +167,20 @@ const AppComponent = ({ version, jobs }) => {
150
167
  return (
151
168
  <JobsProvider jobs={jobs}>
152
169
  <Layout jobs={jobs} version={version}>
153
- <Container className={css.metricChangeLegendContainer}>
154
- <div className={css.metricChangeLegendContainerInner}>
155
- <MetricChangeLegend />
156
- </div>
157
- </Container>
158
- <Container className={css.summaryContainer}>
159
- <Summary
160
- data={jobs[0].summary}
161
- showSummaryItemDelta={jobs.length !== 1}
162
- showSummaryItemBaseline={jobs?.length !== 1}
163
- />
164
- </Container>
170
+ <RaisedOverlaysProvider>
171
+ <Container className={css.metricChangeLegendContainer}>
172
+ <FlexStack justifyContent="flex-end">
173
+ <MetricChangeLegend />
174
+ </FlexStack>
175
+ </Container>
176
+ <Container className={css.summaryContainer}>
177
+ <Summary
178
+ data={jobs[0].summary}
179
+ showSummaryItemDelta={jobs.length !== 1}
180
+ showSummaryItemBaseline={jobs?.length !== 1}
181
+ />
182
+ </Container>
183
+ </RaisedOverlaysProvider>
165
184
 
166
185
  <Container className={css.tabsContainer}>
167
186
  <Tabs className={css.tabs}>
@@ -22,16 +22,16 @@
22
22
  padding-bottom: var(--space-xxsmall);
23
23
  }
24
24
 
25
- .metricChangeLegendContainerInner {
26
- display: flex;
27
- justify-content: flex-end;
28
- }
29
-
30
25
  .summaryContainer {
31
26
  padding-top: var(--space-xxsmall);
32
27
  padding-bottom: var(--space-xxsmall);
33
28
  }
34
29
 
30
+ /** legend and summary overlays: above the sticky tabs, below the header */
31
+ .raisedOverlaysPortal {
32
+ --layer-overlay: calc(var(--layer-xhigh) + 2);
33
+ }
34
+
35
35
  .tabsContainer {
36
36
  border-bottom: 1px solid var(--color-outline);
37
37
  background: var(--color-light);
@@ -42,11 +42,13 @@
42
42
  }
43
43
 
44
44
  .tabActive {
45
- color: var(--color-primary);
45
+ color: var(--color-accent);
46
+ transition-duration: var(--transition-duration-in);
46
47
  }
47
48
 
48
49
  .tabActive::after {
49
- background: currentColor;
50
+ opacity: 1;
51
+ transition-duration: var(--transition-duration-in);
50
52
  }
51
53
 
52
54
  .tabsContent {
@@ -62,7 +64,8 @@
62
64
 
63
65
  .header {
64
66
  position: fixed;
65
- z-index: calc(var(--layer-xhigh) + 2);
67
+ /** above the sticky tabs, entry info and the entry info overlays */
68
+ z-index: calc(var(--layer-xhigh) + 3);
66
69
  left: 0;
67
70
  top: 0;
68
71
  right: 0;
@@ -72,6 +75,7 @@
72
75
  .tabsContainer {
73
76
  position: sticky;
74
77
  top: var(--header-height);
75
- z-index: calc(var(--layer-high));
78
+ /** above the overlays (tooltips, hovercards, dropdowns), except the legend and summary overlays */
79
+ z-index: var(--layer-xhigh);
76
80
  }
77
81
  }
@@ -11,14 +11,12 @@
11
11
  border-radius: 50%;
12
12
  opacity: 0.8;
13
13
  color: var(--color-text-ultra-dark);
14
- transition: var(--transition-out);
15
14
  }
16
15
 
17
- .toolsGitHub:hover,
18
16
  .toolsGitHub:focus,
17
+ .toolsGitHub:hover,
19
18
  .toolsGitHub:active {
20
19
  opacity: 1;
21
- transition: var(--transition-in);
22
20
  }
23
21
 
24
22
  .toolsGitHubIcon {
@@ -1,6 +1,5 @@
1
1
  .notPredictive {
2
- margin-right: var(--space-xxsmall);
3
- display: inline-block;
2
+ flex: 0 0 auto;
4
3
  width: var(--space-small);
5
4
  height: var(--space-small);
6
5
  }
@@ -13,20 +12,22 @@
13
12
  max-width: 480px;
14
13
  }
15
14
 
16
- .metaTags {
17
- display: inline;
18
- margin-right: var(--space-xxxsmall);
15
+ .link {
16
+ flex: 1 1 auto;
19
17
  }
20
18
 
21
- .metaTag + .metaTag {
22
- margin-left: calc(var(--space-xxxsmall) / 2);
19
+ .tags {
20
+ flex: 0 0 auto;
21
+ display: inline-flex;
22
+ gap: 1px;
23
23
  }
24
24
 
25
- .metaTags:empty {
25
+ .tags:empty {
26
26
  display: none;
27
27
  }
28
28
 
29
- .nameText {
30
- display: inline-block;
29
+ .name {
30
+ flex: 1 1 auto;
31
31
  vertical-align: middle;
32
+ text-decoration: inherit;
32
33
  }
@@ -1,5 +1,6 @@
1
1
  import React, { ElementType } from 'react';
2
2
 
3
+ import { FlexStack } from '../../layout/flex-stack';
3
4
  import { Icon } from '../../ui/icon';
4
5
  import { FileName } from '../../ui/file-name';
5
6
  import { HoverCard } from '../../ui/hover-card';
@@ -24,7 +25,7 @@ export const AssetName = (props: AssetNameProps) => {
24
25
  const { label, isNotPredictive, runs, isChunk, isEntry, isInitial } = row;
25
26
 
26
27
  return (
27
- <span className={className}>
28
+ <FlexStack as="span" inline alignItems="center" gap="xxxsmall" className={className}>
28
29
  {isNotPredictive && (
29
30
  <HoverCard
30
31
  label={<Icon className={css.notPredictiveIcon} glyph={Icon.ICONS.WARNING} />}
@@ -35,25 +36,27 @@ export const AssetName = (props: AssetNameProps) => {
35
36
  </HoverCard>
36
37
  )}
37
38
 
38
- <EntryComponentLink entryId={row.key} className={css.name}>
39
- <span className={css.metaTags}>
39
+ <FlexStack
40
+ as={EntryComponentLink}
41
+ entryId={row.key}
42
+ inline
43
+ alignItems="center"
44
+ gap="xxxsmall"
45
+ className={css.link}
46
+ >
47
+ <span className={css.tags}>
40
48
  {isEntry && (
41
- <AssetMetaTag className={css.metaTag} title="Entrypoint" tag="entry" status={isEntry} />
49
+ <AssetMetaTag className={css.tag} title="Entrypoint" tag="entry" status={isEntry} />
42
50
  )}
43
51
  {isInitial && (
44
- <AssetMetaTag
45
- className={css.metaTag}
46
- title="Initial"
47
- tag="initial"
48
- status={isInitial}
49
- />
52
+ <AssetMetaTag className={css.tag} title="Initial" tag="initial" status={isInitial} />
50
53
  )}
51
54
  {isChunk && (
52
- <AssetMetaTag className={css.metaTag} title="Chunk" tag="chunk" status={isChunk} />
55
+ <AssetMetaTag className={css.tag} title="Chunk" tag="chunk" status={isChunk} />
53
56
  )}
54
57
  </span>
55
- <FileName className={css.nameText} name={label} />
56
- </EntryComponentLink>
57
- </span>
58
+ <FileName className={css.name} name={label} />
59
+ </FlexStack>
60
+ </FlexStack>
58
61
  );
59
62
  };
@@ -3,18 +3,6 @@
3
3
  max-width: 240px;
4
4
  }
5
5
 
6
- .root .assetName:hover,
7
- .root .assetName:active,
8
- .root .assetName:focus {
9
- text-decoration: none;
10
- }
11
-
12
- .root .assetName:hover .assetNameText,
13
- .root .assetName:active .assetNameText,
14
- .root .assetName:focus .assetNameText {
15
- text-decoration: underline;
16
- }
17
-
18
6
  .search {
19
7
  margin: 0;
20
8
  width: 100%;
@@ -26,6 +26,7 @@ import { MetricsTable } from '../metrics-table';
26
26
  import { MetricsTableExport } from '../metrics-table-export';
27
27
  import { MetricsTableOptions } from '../metrics-table-options';
28
28
  import { MetricsTableTitle } from '../metrics-table-title';
29
+ import { MetricsTableRowCount } from '../metrics-table-row-count';
29
30
  import { MetricsDisplaySelector } from '../metrics-display-selector';
30
31
  import { MetricsTableHeader } from '../metrics-table-header';
31
32
  import { MetricsTreemap, getTreemapNodes, getTreemapNodesGroupedByPath } from '../metrics-treemap';
@@ -164,7 +165,7 @@ export const BundleAssets = (props: BundleAssetsProps) => {
164
165
  () => (
165
166
  <MetricsTableTitle
166
167
  title={I18N.ASSETS}
167
- info={`${items.length}/${totalRowCount}`}
168
+ info={<MetricsTableRowCount count={items.length} total={totalRowCount} />}
168
169
  popoverInfo={I18N.ASSETS_INFO}
169
170
  popoverHref={config.documentation.assets}
170
171
  />
@@ -205,6 +206,11 @@ export const BundleAssets = (props: BundleAssetsProps) => {
205
206
  [EntryComponentLink],
206
207
  );
207
208
 
209
+ const handleRowClick = useCallback(
210
+ (row: ReportMetricRow) => showEntryInfo(row.key),
211
+ [showEntryInfo],
212
+ );
213
+
208
214
  const emptyMessage = useMemo(
209
215
  () => (
210
216
  <EmptySet
@@ -276,6 +282,7 @@ export const BundleAssets = (props: BundleAssetsProps) => {
276
282
  runs={jobs}
277
283
  items={items}
278
284
  renderRowHeader={renderRowHeader}
285
+ onRowClick={handleRowClick}
279
286
  emptyMessage={emptyMessage}
280
287
  showHeaderSum
281
288
  title={metricsTableTitle}
@@ -75,12 +75,14 @@ export const BundleAssets = (props: BundleAssetsProps) => {
75
75
  return { rows: result, totalRowCount: result.length };
76
76
  }, [jobs]);
77
77
 
78
+ const getRowFilter = useMemo(() => generateGetRowFilter({ chunkIds }), [chunkIds]);
79
+
78
80
  // Filter rows
79
81
  const filteredRows = useRowsFilter({
80
82
  rows,
81
83
  searchPattern: searchProps.searchPattern,
82
84
  filters: searchProps.filters,
83
- getRowFilter: generateGetRowFilter({ chunkIds }),
85
+ getRowFilter,
84
86
  });
85
87
 
86
88
  // Sort rows
@@ -72,6 +72,10 @@ export const BundleAssetsTotals = ({
72
72
  [history],
73
73
  );
74
74
 
75
+ const handleItemClick = onTreemapItemClick || handleMetricsTreemapItemClick;
76
+
77
+ const handleRowClick = useCallback((row) => handleItemClick(row.key), [handleItemClick]);
78
+
75
79
  const exportDialog = useDialogState();
76
80
  const [exportSourceType, setExportSourceType] = useState(undefined);
77
81
 
@@ -98,6 +102,7 @@ export const BundleAssetsTotals = ({
98
102
  runs={jobs}
99
103
  items={items}
100
104
  renderRowHeader={renderRowHeader}
105
+ onRowClick={handleRowClick}
101
106
  showHeaderSum
102
107
  {...restProps}
103
108
  />
@@ -112,10 +117,7 @@ export const BundleAssetsTotals = ({
112
117
  rows={items}
113
118
  />
114
119
  </Table>
115
- <MetricsTreemap
116
- treeNodes={getTreemapNodes(items)}
117
- onItemClick={onTreemapItemClick || handleMetricsTreemapItemClick}
118
- />
120
+ <MetricsTreemap treeNodes={getTreemapNodes(items)} onItemClick={handleItemClick} />
119
121
  </>
120
122
  )}
121
123
  </Box>
@@ -12,8 +12,7 @@
12
12
  }
13
13
 
14
14
  .nameTagDuplicated {
15
- margin-right: var(--space-xxxsmall);
16
- vertical-align: baseline;
15
+ flex: 0 0 auto;
17
16
  }
18
17
 
19
18
  .nameTagDuplicated::before {
@@ -21,18 +20,5 @@
21
20
  }
22
21
 
23
22
  .nameText {
24
- display: inline-block;
25
- vertical-align: middle;
26
- }
27
-
28
- .root .name:hover,
29
- .root .name:active,
30
- .root .name:focus {
31
- text-decoration: none;
32
- }
33
-
34
- .root .name:hover .nameText,
35
- .root .name:active .nameText,
36
- .root .name:focus .nameText {
37
- text-decoration: underline;
23
+ flex: 1 1 auto;
38
24
  }
@@ -36,6 +36,7 @@ import { MetricsTreemap, getTreemapNodes, getTreemapNodesGroupedByPath } from '.
36
36
  import { MetricsTableOptions } from '../metrics-table-options';
37
37
  import { MetricsDisplaySelector } from '../metrics-display-selector';
38
38
  import { MetricsTableTitle } from '../metrics-table-title';
39
+ import { MetricsTableRowCount } from '../metrics-table-row-count';
39
40
  import { ModuleInfo } from '../module-info';
40
41
  import { generateFilterFieldsData } from './bundle-modules.utils';
41
42
  import * as I18N_MODULES from './bundle-modules.i18n';
@@ -57,12 +58,12 @@ const RowHeader = (props: RowHeaderProps) => {
57
58
  const moduleRow = row as ReportMetricModuleRow;
58
59
 
59
60
  return (
60
- <EntryComponentLink entryId={row.key} className={css.name}>
61
+ <FlexStack as={EntryComponentLink} entryId={row.key} inline alignItems="center" gap="xxxsmall">
61
62
  {moduleRow.duplicated && (
62
63
  <Tag className={css.nameTagDuplicated} size="small" kind={Tag.KINDS.DANGER} />
63
64
  )}
64
65
  <FileName className={css.nameText} name={moduleRow.label} />
65
- </EntryComponentLink>
66
+ </FlexStack>
66
67
  );
67
68
  };
68
69
 
@@ -228,7 +229,7 @@ export const BundleModules = (props: BundleModulesProps) => {
228
229
  () => (
229
230
  <MetricsTableTitle
230
231
  title={I18N.MODULES}
231
- info={`${items.length}/${totalRowCount}`}
232
+ info={<MetricsTableRowCount count={items.length} total={totalRowCount} />}
232
233
  popoverInfo={I18N.MODULES_INFO}
233
234
  popoverHref={config.documentation.modules}
234
235
  />
@@ -241,6 +242,11 @@ export const BundleModules = (props: BundleModulesProps) => {
241
242
  [EntryComponentLink],
242
243
  );
243
244
 
245
+ const handleRowClick = useCallback(
246
+ (row: ReportMetricRow) => showEntryInfo(row.key),
247
+ [showEntryInfo],
248
+ );
249
+
244
250
  const emptyMessage = useMemo(
245
251
  () => (
246
252
  <EmptySet
@@ -348,6 +354,7 @@ export const BundleModules = (props: BundleModulesProps) => {
348
354
  items={items}
349
355
  runs={jobs}
350
356
  renderRowHeader={renderRowHeader}
357
+ onRowClick={handleRowClick}
351
358
  emptyMessage={emptyMessage}
352
359
  showHeaderSum
353
360
  title={metricsTableTitle}
@@ -116,11 +116,13 @@ export const BundleModules = (props: BundleModulesProps) => {
116
116
  };
117
117
  }, [jobs, moduleMetric]);
118
118
 
119
+ const getRowFilter = useMemo(() => generateGetRowFilter({ chunkIds }), [chunkIds]);
120
+
119
121
  const filteredRows = useRowsFilter({
120
122
  rows,
121
123
  searchPattern: searchParams.searchPattern,
122
124
  filters: searchParams.filters,
123
- getRowFilter: generateGetRowFilter({ chunkIds }),
125
+ getRowFilter,
124
126
  }) as Array<ReportMetricModuleRow>;
125
127
 
126
128
  const sortParams = useRowsSort({
@@ -22,6 +22,7 @@ import { MetricsTableExport } from '../metrics-table-export';
22
22
  import { MetricsTableHeader } from '../metrics-table-header';
23
23
  import { MetricsTableOptions } from '../metrics-table-options';
24
24
  import { MetricsTableTitle } from '../metrics-table-title';
25
+ import { MetricsTableRowCount } from '../metrics-table-row-count';
25
26
  import { PackageInfo } from '../package-info';
26
27
  import { SEARCH_PLACEHOLDER } from './bundle-packages.i18n';
27
28
  import css from './bundle-packages.module.css';
@@ -48,7 +49,14 @@ const getDropdownFilters = ({ compareMode, filters }) => ({
48
49
 
49
50
  const PackageName = ({ row, packageName, showDetails, EntryComponentLink }) => {
50
51
  return (
51
- <EntryComponentLink entryId={showDetails ? row.key : packageName} className={css.packageName}>
52
+ <FlexStack
53
+ as={EntryComponentLink}
54
+ entryId={showDetails ? row.key : packageName}
55
+ inline
56
+ alignItems="center"
57
+ gap="xxxsmall"
58
+ className={css.packageName}
59
+ >
52
60
  {showDetails && row.duplicate && (
53
61
  <Tag
54
62
  className={css.packageNameTagDuplicate}
@@ -58,7 +66,7 @@ const PackageName = ({ row, packageName, showDetails, EntryComponentLink }) => {
58
66
  />
59
67
  )}
60
68
  <span className={css.packageNameLabel}>{packageName}</span>
61
- </EntryComponentLink>
69
+ </FlexStack>
62
70
  );
63
71
  };
64
72
 
@@ -217,7 +225,7 @@ export const BundlePackages = (props) => {
217
225
  () => (
218
226
  <MetricsTableTitle
219
227
  title={I18N.PACKAGES}
220
- info={`${items.length}/${totalRowCount}`}
228
+ info={<MetricsTableRowCount count={items.length} total={totalRowCount} />}
221
229
  popoverInfo={I18N.PACKAGES_INFO}
222
230
  popoverHref={config.documentation.packages}
223
231
  />
@@ -249,6 +257,8 @@ export const BundlePackages = (props) => {
249
257
  [PackageNameCustomComponentLink],
250
258
  );
251
259
 
260
+ const handleRowClick = useCallback((row) => showEntryInfo(row.key), [showEntryInfo]);
261
+
252
262
  const emptyMessage = useMemo(
253
263
  () => (
254
264
  <EmptySet
@@ -320,6 +330,7 @@ export const BundlePackages = (props) => {
320
330
  items={items}
321
331
  emptyMessage={emptyMessage}
322
332
  renderRowHeader={renderRowHeader}
333
+ onRowClick={handleRowClick}
323
334
  showHeaderSum
324
335
  title={metricsTableTitle}
325
336
  sort={sort}
@@ -12,8 +12,20 @@
12
12
  }
13
13
 
14
14
  .packageName {
15
- display: inline-block;
16
15
  color: var(--color-text-light);
16
+ text-decoration: none;
17
+ }
18
+
19
+ .packageNameTagDuplicate {
20
+ flex: 0 0 auto;
21
+ }
22
+
23
+ .packageNameTagDuplicate::before {
24
+ content: 'd';
25
+ }
26
+
27
+ .packageNameLabel {
28
+ flex: 1 1 auto;
17
29
  }
18
30
 
19
31
  .packageName:last-child {
@@ -25,29 +37,13 @@
25
37
  margin: 0 var(--space-xxxsmall);
26
38
  content: '/';
27
39
  color: var(--color-text-ultra-light);
40
+ text-decoration: none;
28
41
  }
29
42
 
30
- .packageNameTagDuplicate {
31
- margin-right: var(--space-xxxsmall);
32
- vertical-align: middle;
33
- }
34
-
35
- .packageNameLabel {
36
- vertical-align: middle;
37
- }
38
-
39
- .packageNameTagDuplicate::before {
40
- content: 'd';
41
- }
42
-
43
- .root .packageName:hover,
44
- .root .packageName:active,
45
- .root .packageName:focus {
46
- text-decoration: none;
43
+ .packageName:hover {
44
+ text-decoration: none !important;
47
45
  }
48
46
 
49
- .root .packageName:hover .packageNameLabel,
50
- .root .packageName:active .packageNameLabel,
51
- .root .packageName:focus .packageNameLabel {
52
- text-decoration: underline;
47
+ .packageName:hover .packageNameLabel {
48
+ text-decoration: underline !important;
53
49
  }
@@ -1,3 +1,8 @@
1
+ /** place overlays triggered from inside the entry info above the panel, under the header */
2
+ .portal {
3
+ --layer-overlay: calc(var(--layer-xhigh) + 2);
4
+ }
5
+
1
6
  .root {
2
7
  position: fixed;
3
8
  right: 0;
@@ -5,7 +10,8 @@
5
10
  bottom: 0;
6
11
  width: 100vw;
7
12
  max-width: var(--entry-info-width);
8
- z-index: var(--layer-high);
13
+ /** above the sticky tabs */
14
+ z-index: calc(var(--layer-xhigh) + 1);
9
15
  background: var(--color-background);
10
16
  box-shadow: var(--shadow-layer-high);
11
17
  }
@@ -23,6 +29,7 @@
23
29
  .contentWrapper {
24
30
  flex: 1 1 auto;
25
31
  overflow: auto;
32
+ overscroll-behavior: contain;
26
33
  }
27
34
 
28
35
  /** header */
@@ -107,7 +114,6 @@
107
114
  line-height: var(--line-height-heading);
108
115
  border-radius: var(--radius-small);
109
116
  background: var(--color-highlight);
110
- transition: var(--transition-out);
111
117
 
112
118
  text-decoration: none;
113
119
  text-transform: none;
@@ -12,6 +12,7 @@ import { FileName } from '../../ui/file-name';
12
12
  import { Button } from '../../ui/button';
13
13
  import { Icon } from '../../ui/icon';
14
14
  import { Table } from '../../ui/table';
15
+ import { getCreatePortalElement } from '../../utils/portal';
15
16
  import { RunInfo } from '../run-info';
16
17
  import * as I18N from './entry-info.i18n';
17
18
  import css from './entry-info.module.css';
@@ -50,6 +51,11 @@ const EntryInfoMeta = ({
50
51
  </div>
51
52
  );
52
53
 
54
+ /**
55
+ * Raise the z-index of the overlays nested inside the entry info
56
+ */
57
+ const createPortalElement = getCreatePortalElement(css.portal);
58
+
53
59
  function defaultRenderRunInfo(item: ReportMetricRow) {
54
60
  const baselineRun = item.runs.length > 1 ? item.runs?.[item.runs.length - 1] : null;
55
61
 
@@ -63,8 +69,8 @@ function defaultRenderRunInfo(item: ReportMetricRow) {
63
69
  return (
64
70
  <RunInfo
65
71
  current={metricRunInfo.displayValue}
66
- delta={metricRunInfo.displayDeltaPercentage}
67
- deltaPercentage={metricRunInfo.displayDelta}
72
+ delta={metricRunInfo.displayDelta}
73
+ deltaPercentage={metricRunInfo.displayDeltaPercentage}
68
74
  deltaType={metricRunInfo.deltaType}
69
75
  baseline={baselineRun?.displayValue || '0B'}
70
76
  size="large"
@@ -108,7 +114,7 @@ export const EntryInfo = (props: EntryInfoProps & React.ComponentProps<'div'>) =
108
114
  } = props;
109
115
 
110
116
  return (
111
- <Portal className={cx(css.root, className)}>
117
+ <Portal portalElement={createPortalElement} className={cx(css.root, className)}>
112
118
  <Box padding="medium" as="header" className={css.header}>
113
119
  <Stack space="small">
114
120
  <FlexStack space="xxxsmall" alignItems="center" as="h3" className={css.label}>
@@ -1,7 +1,6 @@
1
1
  .root {
2
2
  padding: var(--space-small) 0;
3
3
  width: 100%;
4
- display: flex;
5
4
  }
6
5
 
7
6
  .item {
@@ -76,7 +76,7 @@ export const JobsHeader = (props: JobsHeaderProps & React.ComponentProps<'header
76
76
  const rootClassName = cx(css.root, className);
77
77
 
78
78
  return (
79
- <header className={rootClassName}>
79
+ <FlexStack as="header" className={rootClassName}>
80
80
  {jobs?.map((job, index) => (
81
81
  <Item
82
82
  key={job.internalBuildNumber || index}
@@ -84,6 +84,6 @@ export const JobsHeader = (props: JobsHeaderProps & React.ComponentProps<'header
84
84
  tag={index === 0 ? I18N.CURRENT : I18N.BASELINE}
85
85
  />
86
86
  ))}
87
- </header>
87
+ </FlexStack>
88
88
  );
89
89
  };
@@ -2,6 +2,17 @@
2
2
  font-size: var(--size-small);
3
3
  }
4
4
 
5
+ .itemVariants {
6
+ flex: 0 0 auto;
7
+ min-width: 0;
8
+ }
9
+
10
+ .itemLabel {
11
+ flex: 1 1 auto;
12
+ min-width: 0;
13
+ white-space: nowrap;
14
+ }
15
+
5
16
  .itemAnchor {
6
17
  color: var(--color-text-light);
7
18
  }