@bundle-stats/ui 4.12.2 → 4.13.0-beta.10

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 (301) hide show
  1. package/lib/app/app.js +5 -13
  2. package/lib/app/app.js.map +1 -1
  3. package/lib/app/app.module.css +2 -2
  4. package/lib/assets/icons.svg +26 -20
  5. package/lib/assets/icons.svg.js +27 -23
  6. package/lib/assets/icons.svg.js.map +1 -1
  7. package/lib/components/bundle-assets/bundle-assets.js +21 -6
  8. package/lib/components/bundle-assets/bundle-assets.js.map +1 -1
  9. package/lib/components/bundle-assets/bundle-assets.module.css +0 -5
  10. package/lib/components/bundle-assets/index.js +3 -4
  11. package/lib/components/bundle-assets/index.js.map +1 -1
  12. package/lib/components/bundle-assets-totals/bundle-assets-totals.js +88 -0
  13. package/lib/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -0
  14. package/lib/{ui/horizontal-bar-chart → components/bundle-assets-totals}/index.js +1 -1
  15. package/lib/components/bundle-assets-totals/index.js.map +1 -0
  16. package/lib/components/bundle-modules/bundle-modules.js +24 -9
  17. package/lib/components/bundle-modules/bundle-modules.js.map +1 -1
  18. package/lib/components/bundle-modules/bundle-modules.module.css +0 -5
  19. package/lib/components/bundle-modules/index.js +3 -4
  20. package/lib/components/bundle-modules/index.js.map +1 -1
  21. package/lib/components/bundle-packages/bundle-packages.js +19 -4
  22. package/lib/components/bundle-packages/bundle-packages.js.map +1 -1
  23. package/lib/components/bundle-packages/bundle-packages.module.css +0 -5
  24. package/lib/components/bundle-packages/index.js +3 -4
  25. package/lib/components/bundle-packages/index.js.map +1 -1
  26. package/lib/components/index.js +3 -7
  27. package/lib/components/index.js.map +1 -1
  28. package/lib/components/jobs-header/jobs-header.module.css +0 -4
  29. package/lib/components/{bundle-assets-totals-table → metrics-display-selector}/index.js +1 -1
  30. package/lib/components/metrics-display-selector/index.js.map +1 -0
  31. package/lib/components/metrics-display-selector/metrics-display-selector.js +21 -0
  32. package/lib/components/metrics-display-selector/metrics-display-selector.js.map +1 -0
  33. package/lib/components/metrics-display-selector/metrics-display-selector.module.css +10 -0
  34. package/lib/components/metrics-table/metrics-table.i18n.js +1 -6
  35. package/lib/components/metrics-table/metrics-table.i18n.js.map +1 -1
  36. package/lib/components/metrics-table/metrics-table.js +4 -37
  37. package/lib/components/metrics-table/metrics-table.js.map +1 -1
  38. package/lib/components/metrics-table/metrics-table.module.css +1 -44
  39. package/lib/components/{total-size-type-title → metrics-table-header}/index.js +1 -1
  40. package/lib/components/metrics-table-header/index.js.map +1 -0
  41. package/lib/components/metrics-table-header/metrics-table-header.i18n.js +9 -0
  42. package/lib/components/metrics-table-header/metrics-table-header.i18n.js.map +1 -0
  43. package/lib/components/metrics-table-header/metrics-table-header.js +79 -0
  44. package/lib/components/metrics-table-header/metrics-table-header.js.map +1 -0
  45. package/lib/components/metrics-table-header/metrics-table-header.module.css +51 -0
  46. package/lib/components/metrics-table-options/metrics-table-options.js +2 -2
  47. package/lib/components/metrics-table-options/metrics-table-options.js.map +1 -1
  48. package/lib/components/metrics-table-title/metrics-table-title.js +1 -1
  49. package/lib/components/metrics-table-title/metrics-table-title.js.map +1 -1
  50. package/lib/components/metrics-table-title/metrics-table-title.module.css +4 -4
  51. package/lib/components/{bundle-assets-totals-chart-bars → metrics-treemap}/index.js +1 -1
  52. package/lib/components/metrics-treemap/index.js.map +1 -0
  53. package/lib/components/metrics-treemap/metrics-treemap.js +163 -0
  54. package/lib/components/metrics-treemap/metrics-treemap.js.map +1 -0
  55. package/lib/components/metrics-treemap/metrics-treemap.module.css +201 -0
  56. package/lib/components/sort-button/sort-button.module.css +1 -0
  57. package/lib/constants.js +6 -1
  58. package/lib/constants.js.map +1 -1
  59. package/lib/css/variables.css +11 -11
  60. package/lib/hooks/entry-info.js +12 -0
  61. package/lib/hooks/entry-info.js.map +1 -0
  62. package/lib/hooks/metrics-display-type.js +40 -0
  63. package/lib/hooks/metrics-display-type.js.map +1 -0
  64. package/lib/layout/flex-stack/flex-stack.js +3 -4
  65. package/lib/layout/flex-stack/flex-stack.js.map +1 -1
  66. package/lib/layout/flex-stack/flex-stack.module.css +19 -23
  67. package/lib/query-state.js +1 -1
  68. package/lib/query-state.js.map +1 -1
  69. package/lib/ui/button/button.module.css +1 -0
  70. package/lib/ui/dropdown/dropdown.js +10 -40
  71. package/lib/ui/dropdown/dropdown.js.map +1 -1
  72. package/lib/ui/dropdown/index.js.map +1 -1
  73. package/lib/ui/filters/filters.js +33 -35
  74. package/lib/ui/filters/filters.js.map +1 -1
  75. package/lib/ui/filters/filters.module.css +55 -67
  76. package/lib/ui/hover-card/hover-card.js +1 -1
  77. package/lib/ui/hover-card/hover-card.js.map +1 -1
  78. package/lib/ui/icon/icon.js +2 -0
  79. package/lib/ui/icon/icon.js.map +1 -1
  80. package/lib/ui/index.js +1 -3
  81. package/lib/ui/index.js.map +1 -1
  82. package/lib/ui/toolbar/toolbar.module.css +1 -3
  83. package/lib-esm/app/app.js +5 -13
  84. package/lib-esm/app/app.js.map +1 -1
  85. package/lib-esm/app/app.module.css +2 -2
  86. package/lib-esm/assets/icons.svg +26 -20
  87. package/lib-esm/assets/icons.svg.js +27 -23
  88. package/lib-esm/assets/icons.svg.js.map +1 -1
  89. package/lib-esm/components/bundle-assets/bundle-assets.js +21 -6
  90. package/lib-esm/components/bundle-assets/bundle-assets.js.map +1 -1
  91. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -5
  92. package/lib-esm/components/bundle-assets/index.js +5 -6
  93. package/lib-esm/components/bundle-assets/index.js.map +1 -1
  94. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js +58 -0
  95. package/lib-esm/components/bundle-assets-totals/bundle-assets-totals.js.map +1 -0
  96. package/lib-esm/components/bundle-assets-totals/index.js +2 -0
  97. package/lib-esm/components/bundle-assets-totals/index.js.map +1 -0
  98. package/lib-esm/components/bundle-modules/bundle-modules.js +24 -9
  99. package/lib-esm/components/bundle-modules/bundle-modules.js.map +1 -1
  100. package/lib-esm/components/bundle-modules/bundle-modules.module.css +0 -5
  101. package/lib-esm/components/bundle-modules/index.js +3 -4
  102. package/lib-esm/components/bundle-modules/index.js.map +1 -1
  103. package/lib-esm/components/bundle-packages/bundle-packages.js +19 -4
  104. package/lib-esm/components/bundle-packages/bundle-packages.js.map +1 -1
  105. package/lib-esm/components/bundle-packages/bundle-packages.module.css +0 -5
  106. package/lib-esm/components/bundle-packages/index.js +5 -6
  107. package/lib-esm/components/bundle-packages/index.js.map +1 -1
  108. package/lib-esm/components/index.js +1 -3
  109. package/lib-esm/components/index.js.map +1 -1
  110. package/lib-esm/components/jobs-header/jobs-header.module.css +0 -4
  111. package/lib-esm/components/metrics-display-selector/index.js +2 -0
  112. package/lib-esm/components/metrics-display-selector/index.js.map +1 -0
  113. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js +14 -0
  114. package/lib-esm/components/metrics-display-selector/metrics-display-selector.js.map +1 -0
  115. package/lib-esm/components/metrics-display-selector/metrics-display-selector.module.css +10 -0
  116. package/lib-esm/components/metrics-table/metrics-table.i18n.js +0 -5
  117. package/lib-esm/components/metrics-table/metrics-table.i18n.js.map +1 -1
  118. package/lib-esm/components/metrics-table/metrics-table.js +4 -37
  119. package/lib-esm/components/metrics-table/metrics-table.js.map +1 -1
  120. package/lib-esm/components/metrics-table/metrics-table.module.css +1 -44
  121. package/lib-esm/components/metrics-table-header/index.js +2 -0
  122. package/lib-esm/components/metrics-table-header/index.js.map +1 -0
  123. package/lib-esm/components/metrics-table-header/metrics-table-header.i18n.js +6 -0
  124. package/lib-esm/components/metrics-table-header/metrics-table-header.i18n.js.map +1 -0
  125. package/lib-esm/components/metrics-table-header/metrics-table-header.js +49 -0
  126. package/lib-esm/components/metrics-table-header/metrics-table-header.js.map +1 -0
  127. package/lib-esm/components/metrics-table-header/metrics-table-header.module.css +51 -0
  128. package/lib-esm/components/metrics-table-options/metrics-table-options.js +3 -3
  129. package/lib-esm/components/metrics-table-options/metrics-table-options.js.map +1 -1
  130. package/lib-esm/components/metrics-table-title/metrics-table-title.js +1 -1
  131. package/lib-esm/components/metrics-table-title/metrics-table-title.js.map +1 -1
  132. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +4 -4
  133. package/lib-esm/components/metrics-treemap/index.js +2 -0
  134. package/lib-esm/components/metrics-treemap/index.js.map +1 -0
  135. package/lib-esm/components/metrics-treemap/metrics-treemap.js +135 -0
  136. package/lib-esm/components/metrics-treemap/metrics-treemap.js.map +1 -0
  137. package/lib-esm/components/metrics-treemap/metrics-treemap.module.css +201 -0
  138. package/lib-esm/components/sort-button/sort-button.module.css +1 -0
  139. package/lib-esm/constants.js +5 -0
  140. package/lib-esm/constants.js.map +1 -1
  141. package/lib-esm/css/variables.css +11 -11
  142. package/lib-esm/hooks/entry-info.js +8 -0
  143. package/lib-esm/hooks/entry-info.js.map +1 -0
  144. package/lib-esm/hooks/metrics-display-type.js +36 -0
  145. package/lib-esm/hooks/metrics-display-type.js.map +1 -0
  146. package/lib-esm/layout/flex-stack/flex-stack.js +3 -4
  147. package/lib-esm/layout/flex-stack/flex-stack.js.map +1 -1
  148. package/lib-esm/layout/flex-stack/flex-stack.module.css +19 -23
  149. package/lib-esm/query-state.js +1 -1
  150. package/lib-esm/query-state.js.map +1 -1
  151. package/lib-esm/ui/button/button.module.css +1 -0
  152. package/lib-esm/ui/dropdown/dropdown.js +8 -39
  153. package/lib-esm/ui/dropdown/dropdown.js.map +1 -1
  154. package/lib-esm/ui/dropdown/index.js.map +1 -1
  155. package/lib-esm/ui/filters/filters.js +34 -36
  156. package/lib-esm/ui/filters/filters.js.map +1 -1
  157. package/lib-esm/ui/filters/filters.module.css +55 -67
  158. package/lib-esm/ui/hover-card/hover-card.js +1 -1
  159. package/lib-esm/ui/hover-card/hover-card.js.map +1 -1
  160. package/lib-esm/ui/icon/icon.js +2 -0
  161. package/lib-esm/ui/icon/icon.js.map +1 -1
  162. package/lib-esm/ui/index.js +0 -1
  163. package/lib-esm/ui/index.js.map +1 -1
  164. package/lib-esm/ui/toolbar/toolbar.module.css +1 -3
  165. package/package.json +10 -7
  166. package/src/app/app.jsx +5 -17
  167. package/src/app/app.module.css +2 -2
  168. package/src/assets/icons/table.svg +3 -0
  169. package/src/assets/icons/treemap.svg +4 -0
  170. package/src/assets/icons.svg +26 -20
  171. package/src/assets/icons.svg.jsx +91 -55
  172. package/src/components/bundle-assets/bundle-assets.jsx +47 -16
  173. package/src/components/bundle-assets/bundle-assets.module.css +0 -5
  174. package/src/components/bundle-assets/index.jsx +10 -5
  175. package/src/components/bundle-assets-totals/bundle-assets-totals.jsx +125 -0
  176. package/src/components/bundle-assets-totals/index.js +1 -0
  177. package/src/components/bundle-modules/bundle-modules.module.css +0 -5
  178. package/src/components/bundle-modules/bundle-modules.tsx +65 -35
  179. package/src/components/bundle-modules/index.tsx +4 -3
  180. package/src/components/bundle-packages/bundle-packages.jsx +42 -14
  181. package/src/components/bundle-packages/bundle-packages.module.css +0 -5
  182. package/src/components/bundle-packages/index.jsx +10 -5
  183. package/src/components/index.js +1 -3
  184. package/src/components/jobs-header/jobs-header.module.css +0 -4
  185. package/src/components/metrics-display-selector/index.tsx +1 -0
  186. package/src/components/metrics-display-selector/metrics-display-selector.module.css +10 -0
  187. package/src/components/metrics-display-selector/metrics-display-selector.tsx +47 -0
  188. package/src/components/metrics-table/metrics-table.i18n.ts +0 -7
  189. package/src/components/metrics-table/metrics-table.module.css +1 -44
  190. package/src/components/metrics-table/metrics-table.tsx +17 -153
  191. package/src/components/metrics-table-header/index.ts +1 -0
  192. package/src/components/metrics-table-header/metrics-table-header.i18n.ts +6 -0
  193. package/src/components/metrics-table-header/metrics-table-header.module.css +51 -0
  194. package/src/components/metrics-table-header/metrics-table-header.tsx +172 -0
  195. package/src/components/metrics-table-options/metrics-table-options.jsx +4 -10
  196. package/src/components/metrics-table-title/metrics-table-title.jsx +1 -1
  197. package/src/components/metrics-table-title/metrics-table-title.module.css +4 -4
  198. package/src/components/metrics-treemap/index.ts +1 -0
  199. package/src/components/metrics-treemap/metrics-treemap.module.css +201 -0
  200. package/src/components/metrics-treemap/metrics-treemap.stories.tsx +23 -0
  201. package/src/components/metrics-treemap/metrics-treemap.tsx +304 -0
  202. package/src/components/sort-button/sort-button.module.css +1 -0
  203. package/src/{constants.js → constants.ts} +5 -0
  204. package/src/css/variables.css +11 -11
  205. package/src/hooks/entry-info.ts +19 -0
  206. package/src/hooks/metrics-display-type.ts +56 -0
  207. package/src/layout/flex-stack/flex-stack.module.css +19 -23
  208. package/src/layout/flex-stack/flex-stack.tsx +2 -8
  209. package/src/query-state.tsx +1 -1
  210. package/src/types.d.ts +2 -0
  211. package/src/ui/button/button.module.css +1 -0
  212. package/src/ui/dropdown/dropdown.stories.tsx +25 -0
  213. package/src/ui/dropdown/dropdown.tsx +66 -0
  214. package/src/ui/filters/filters.module.css +55 -67
  215. package/src/ui/filters/filters.stories.tsx +109 -0
  216. package/src/ui/filters/filters.tsx +128 -167
  217. package/src/ui/hover-card/hover-card.tsx +1 -1
  218. package/src/ui/icon/icon.tsx +2 -0
  219. package/src/ui/index.js +0 -1
  220. package/src/ui/toolbar/toolbar.module.css +1 -3
  221. package/types/components/bundle-assets/bundle-assets.d.ts +2 -1
  222. package/types/components/{bundle-assets-totals-table/bundle-assets-totals-table.d.ts → bundle-assets-totals/bundle-assets-totals.d.ts} +6 -2
  223. package/types/components/bundle-assets-totals/index.d.ts +1 -0
  224. package/types/components/bundle-modules/bundle-modules.d.ts +2 -1
  225. package/types/components/bundle-modules/index.d.ts +1 -1
  226. package/types/components/bundle-packages/bundle-packages.d.ts +1 -0
  227. package/types/components/index.d.ts +1 -3
  228. package/types/components/metrics-display-selector/index.d.ts +1 -0
  229. package/types/components/metrics-display-selector/metrics-display-selector.d.ts +9 -0
  230. package/types/components/metrics-table/metrics-table.d.ts +4 -10
  231. package/types/components/metrics-table/metrics-table.i18n.d.ts +0 -5
  232. package/types/components/metrics-table-header/index.d.ts +1 -0
  233. package/types/components/metrics-table-header/metrics-table-header.d.ts +15 -0
  234. package/types/components/metrics-table-header/metrics-table-header.i18n.d.ts +5 -0
  235. package/types/components/metrics-treemap/index.d.ts +1 -0
  236. package/types/components/metrics-treemap/metrics-treemap.d.ts +9 -0
  237. package/types/constants.d.ts +19 -15
  238. package/types/hooks/entry-info.d.ts +8 -0
  239. package/types/hooks/metrics-display-type.d.ts +4 -0
  240. package/types/ui/dropdown/dropdown.d.ts +12 -47
  241. package/types/ui/dropdown/index.d.ts +1 -1
  242. package/types/ui/filters/filters.d.ts +2 -7
  243. package/types/ui/icon/icon.d.ts +4 -0
  244. package/types/ui/index.d.ts +0 -1
  245. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +0 -95
  246. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js.map +0 -1
  247. package/lib/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.module.css +0 -42
  248. package/lib/components/bundle-assets-totals-chart-bars/index.js.map +0 -1
  249. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +0 -57
  250. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js.map +0 -1
  251. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +0 -3
  252. package/lib/components/bundle-assets-totals-table/index.js.map +0 -1
  253. package/lib/components/total-size-type-title/index.js.map +0 -1
  254. package/lib/components/total-size-type-title/total-size-type-title.js +0 -32
  255. package/lib/components/total-size-type-title/total-size-type-title.js.map +0 -1
  256. package/lib/components/total-size-type-title/total-size-type-title.module.css +0 -14
  257. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js +0 -102
  258. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js.map +0 -1
  259. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.module.css +0 -42
  260. package/lib/ui/horizontal-bar-chart/index.js.map +0 -1
  261. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js +0 -66
  262. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.js.map +0 -1
  263. package/lib-esm/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.module.css +0 -42
  264. package/lib-esm/components/bundle-assets-totals-chart-bars/index.js +0 -2
  265. package/lib-esm/components/bundle-assets-totals-chart-bars/index.js.map +0 -1
  266. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +0 -27
  267. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js.map +0 -1
  268. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +0 -3
  269. package/lib-esm/components/bundle-assets-totals-table/index.js +0 -2
  270. package/lib-esm/components/bundle-assets-totals-table/index.js.map +0 -1
  271. package/lib-esm/components/total-size-type-title/index.js +0 -2
  272. package/lib-esm/components/total-size-type-title/index.js.map +0 -1
  273. package/lib-esm/components/total-size-type-title/total-size-type-title.js +0 -25
  274. package/lib-esm/components/total-size-type-title/total-size-type-title.js.map +0 -1
  275. package/lib-esm/components/total-size-type-title/total-size-type-title.module.css +0 -14
  276. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js +0 -96
  277. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.js.map +0 -1
  278. package/lib-esm/ui/horizontal-bar-chart/horizontal-bar-chart.module.css +0 -42
  279. package/lib-esm/ui/horizontal-bar-chart/index.js +0 -2
  280. package/lib-esm/ui/horizontal-bar-chart/index.js.map +0 -1
  281. package/src/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.jsx +0 -106
  282. package/src/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.module.css +0 -42
  283. package/src/components/bundle-assets-totals-chart-bars/index.js +0 -1
  284. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +0 -55
  285. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.module.css +0 -3
  286. package/src/components/bundle-assets-totals-table/index.js +0 -1
  287. package/src/components/total-size-type-title/index.js +0 -1
  288. package/src/components/total-size-type-title/total-size-type-title.jsx +0 -41
  289. package/src/components/total-size-type-title/total-size-type-title.module.css +0 -14
  290. package/src/ui/dropdown/dropdown.jsx +0 -88
  291. package/src/ui/horizontal-bar-chart/horizontal-bar-chart.jsx +0 -156
  292. package/src/ui/horizontal-bar-chart/horizontal-bar-chart.module.css +0 -42
  293. package/src/ui/horizontal-bar-chart/index.js +0 -1
  294. package/types/components/bundle-assets-totals-chart-bars/bundle-assets-totals-chart-bars.d.ts +0 -22
  295. package/types/components/bundle-assets-totals-chart-bars/index.d.ts +0 -1
  296. package/types/components/bundle-assets-totals-table/index.d.ts +0 -1
  297. package/types/components/total-size-type-title/index.d.ts +0 -1
  298. package/types/components/total-size-type-title/total-size-type-title.d.ts +0 -14
  299. package/types/ui/horizontal-bar-chart/horizontal-bar-chart.d.ts +0 -23
  300. package/types/ui/horizontal-bar-chart/index.d.ts +0 -1
  301. /package/src/ui/dropdown/{index.js → index.ts} +0 -0
@@ -0,0 +1,125 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useHistory } from 'react-router-dom';
4
+ import {
5
+ getBundleAssetsFileTypeComponentLink,
6
+ getComponentStateQueryString,
7
+ } from '@bundle-stats/utils';
8
+ import * as webpack from '@bundle-stats/utils/lib-esm/webpack';
9
+
10
+ import config from '../../config.json';
11
+ import { ASSETS_SIZES_FILE_TYPE_MAP, SECTION_URLS, MetricsDisplayType } from '../../constants';
12
+ import { useMetricsDisplayType } from '../../hooks/metrics-display-type';
13
+ import I18N from '../../i18n';
14
+ import { Toolbar } from '../../ui/toolbar';
15
+ import { Table } from '../../ui/table';
16
+ import { Box } from '../../layout/box';
17
+ import { Stack } from '../../layout/stack';
18
+ import { MetricsDisplaySelector } from '../metrics-display-selector';
19
+ import { MetricsTable } from '../metrics-table';
20
+ import { MetricsTableTitle } from '../metrics-table-title';
21
+ import { MetricsTableHeader } from '../metrics-table-header';
22
+ import { MetricsTreemap } from '../metrics-treemap';
23
+ import { ComponentLink } from '../component-link';
24
+
25
+ export const BundleAssetsTotals = ({
26
+ className,
27
+ jobs,
28
+ customComponentLink: CustomComponentLink,
29
+ onTreemapItemClick,
30
+ ...restProps
31
+ }) => {
32
+ const [displayType, setDisplayType] = useMetricsDisplayType();
33
+ const history = useHistory();
34
+
35
+ const items = webpack.compareBySection.sizes(jobs);
36
+
37
+ const renderRowHeader = (item) => {
38
+ const fileType = ASSETS_SIZES_FILE_TYPE_MAP[item.key];
39
+ const { section, title, params } = getBundleAssetsFileTypeComponentLink(fileType, item.label);
40
+
41
+ return (
42
+ <CustomComponentLink section={section} title={title} params={params}>
43
+ {item.label}
44
+ </CustomComponentLink>
45
+ );
46
+ };
47
+
48
+ const handleMetricsTreemapItemClick = useCallback(
49
+ (entryId) => {
50
+ const fileType = ASSETS_SIZES_FILE_TYPE_MAP[entryId];
51
+ const { section, params } = getBundleAssetsFileTypeComponentLink(fileType, '');
52
+ const queryParams = getComponentStateQueryString(params);
53
+
54
+ const nextUrl = `${SECTION_URLS[section]}?${queryParams}`;
55
+ history.push(nextUrl);
56
+ },
57
+ [history],
58
+ );
59
+
60
+ const metricsTableTitle = useMemo(
61
+ () => (
62
+ <MetricsTableTitle
63
+ title={I18N.ASSET_TOTALS}
64
+ popoverInfo={I18N.ASSET_TOTALS_INFO}
65
+ popoverHref={config.documentation.assets}
66
+ />
67
+ ),
68
+ [],
69
+ );
70
+
71
+ return (
72
+ <Stack space="xsmall" as="section" className={className}>
73
+ <Toolbar
74
+ renderActions={() => (
75
+ <MetricsDisplaySelector onSelect={setDisplayType} value={displayType} />
76
+ )}
77
+ />
78
+ <Box outline as="main">
79
+ {displayType === MetricsDisplayType.TABLE && (
80
+ <MetricsTable
81
+ title={metricsTableTitle}
82
+ runs={jobs}
83
+ items={items}
84
+ renderRowHeader={renderRowHeader}
85
+ showHeaderSum
86
+ {...restProps}
87
+ />
88
+ )}
89
+ {displayType === MetricsDisplayType.TREEMAP && (
90
+ <>
91
+ <Table compact>
92
+ <MetricsTableHeader metricTitle={metricsTableTitle} showSum jobs={jobs} rows={items} />
93
+ </Table>
94
+ <MetricsTreemap
95
+ items={items}
96
+ onItemClick={onTreemapItemClick || handleMetricsTreemapItemClick}
97
+ />
98
+ </>
99
+ )}
100
+ </Box>
101
+ </Stack>
102
+ );
103
+ };
104
+
105
+ BundleAssetsTotals.defaultProps = {
106
+ className: '',
107
+ jobs: [],
108
+ customComponentLink: ComponentLink,
109
+ onTreemapItemClick: undefined,
110
+ };
111
+
112
+ BundleAssetsTotals.propTypes = {
113
+ /** Addopted child class name */
114
+ className: PropTypes.string,
115
+
116
+ /** Jobs data */
117
+ jobs: PropTypes.array, // eslint-disable-line react/forbid-prop-types
118
+
119
+ customComponentLink: PropTypes.elementType,
120
+
121
+ /**
122
+ * Treemap item onClick
123
+ */
124
+ onTreemapItemClick: PropTypes.func,
125
+ };
@@ -0,0 +1 @@
1
+ export * from './bundle-assets-totals';
@@ -2,14 +2,9 @@
2
2
  color: var(--color-text-light);
3
3
  }
4
4
 
5
- .toolbar {
6
- border-bottom: 1px solid var(--color-outline);
7
- }
8
-
9
5
  .toolbarSearch {
10
6
  width: 100%;
11
7
  max-width: 240px;
12
- margin-right: -1px; /** collapse border */
13
8
  }
14
9
 
15
10
  .metricSelector {
@@ -2,22 +2,29 @@ import React, { useCallback, useMemo } from 'react';
2
2
  import cx from 'classnames';
3
3
  import { SECTIONS, COMPONENT } from '@bundle-stats/utils';
4
4
 
5
- import type { SortAction } from '../../types';
5
+ import { SortAction } from '../../types';
6
6
  import config from '../../config.json';
7
7
  import I18N from '../../i18n';
8
+ import { MetricsDisplayType } from '../../constants';
8
9
  import { Box } from '../../layout/box';
9
10
  import { FlexStack } from '../../layout/flex-stack';
11
+ import { Stack } from '../../layout/stack';
10
12
  import { Button } from '../../ui/button';
13
+ import { ControlGroup } from '../../ui/control-group';
11
14
  import { EmptySet } from '../../ui/empty-set';
12
15
  import { FileName } from '../../ui/file-name';
13
16
  import { Filters } from '../../ui/filters';
14
17
  import { InputSearch } from '../../ui/input-search';
15
18
  import { Tag } from '../../ui/tag';
19
+ import { Table } from '../../ui/table';
16
20
  import { Toolbar } from '../../ui/toolbar';
17
21
  import { Tooltip } from '../../ui/tooltip';
18
22
  import { ComponentLink } from '../component-link';
19
23
  import { MetricsTable } from '../metrics-table';
24
+ import { MetricsTableHeader } from '../metrics-table-header';
25
+ import { MetricsTreemap } from '../metrics-treemap';
20
26
  import { MetricsTableOptions } from '../metrics-table-options';
27
+ import { MetricsDisplaySelector } from '../metrics-display-selector';
21
28
  import { MetricsTableTitle } from '../metrics-table-title';
22
29
  import { ModuleInfo } from '../module-info';
23
30
  import { generateFilterFieldsData } from './bundle-modules.utils';
@@ -25,6 +32,7 @@ import { ModuleMetric } from './bundle-modules.constants';
25
32
  import type { Chunk, Job, ReportMetricModuleRow } from './bundle-modules.types';
26
33
  import * as I18N_MODULES from './bundle-modules.i18n';
27
34
  import css from './bundle-modules.module.css';
35
+ import { useMetricsDisplayType } from '../../hooks/metrics-display-type';
28
36
 
29
37
  interface RowHeaderProps {
30
38
  row: ReportMetricModuleRow;
@@ -74,6 +82,7 @@ interface BundleModulesProps extends React.ComponentProps<'div'> {
74
82
 
75
83
  entryId?: string;
76
84
  hideEntryInfo: () => void;
85
+ showEntryInfo: (entryId: string) => void;
77
86
 
78
87
  moduleMetric: ModuleMetric;
79
88
  setModuleMetric: (newValue: ModuleMetric) => void;
@@ -101,12 +110,15 @@ export const BundleModules = (props: BundleModulesProps) => {
101
110
  hideEntryInfo,
102
111
  moduleMetric,
103
112
  setModuleMetric,
113
+ showEntryInfo,
104
114
  customComponentLink: CustomComponentLink = ComponentLink,
105
115
  } = props;
106
116
 
107
117
  const rootClassName = cx(css.root, className);
108
118
  const jobLabels = jobs?.map((job) => job?.label);
109
119
 
120
+ const [displayType, setDisplayType] = useMetricsDisplayType();
121
+
110
122
  const filterFieldsData = useMemo(
111
123
  () => generateFilterFieldsData({ filters, chunks, compareMode: jobs.length > 1 }),
112
124
  [jobs, filters, chunks],
@@ -159,11 +171,12 @@ export const BundleModules = (props: BundleModulesProps) => {
159
171
 
160
172
  return (
161
173
  <>
162
- <div className={rootClassName}>
174
+ <Stack space="xsmall" as="section" className={rootClassName}>
163
175
  <Toolbar
164
176
  className={css.toolbar}
165
177
  renderActions={({ actionClassName }) => (
166
178
  <FlexStack space="xxsmall" className={cx(css.dropdown, actionClassName)}>
179
+ <MetricsDisplaySelector onSelect={setDisplayType} value={displayType} />
167
180
  <MetricsTableOptions
168
181
  handleViewAll={resetAllFilters}
169
182
  handleResetFilters={resetFilters}
@@ -185,40 +198,57 @@ export const BundleModules = (props: BundleModulesProps) => {
185
198
  />
186
199
  </FlexStack>
187
200
  </Toolbar>
188
- <Box padding={['xsmall', 'small']} className={css.metricSelector}>
189
- <FlexStack space="xxsmall" as="nav">
190
- <Button
191
- outline
192
- active={moduleMetric === ModuleMetric.SIZE}
193
- size="small"
194
- type="button"
195
- onClick={() => setModuleMetric(ModuleMetric.SIZE)}
196
- >
197
- <Tooltip title="Size (excluding duplicate modules)">Module size</Tooltip>
198
- </Button>
199
- <Button
200
- outline
201
- active={moduleMetric === ModuleMetric.TOTAL_SIZE}
202
- size="small"
203
- type="button"
204
- onClick={() => setModuleMetric(ModuleMetric.TOTAL_SIZE)}
205
- >
206
- <Tooltip title="Size (including duplicate modules)">Module total size</Tooltip>
207
- </Button>
208
- </FlexStack>
201
+ <Box outline as="main">
202
+ <Box padding={['xsmall', 'small']} className={css.metricSelector}>
203
+ <ControlGroup as="nav">
204
+ <Button
205
+ outline
206
+ active={moduleMetric === ModuleMetric.SIZE}
207
+ size="small"
208
+ type="button"
209
+ onClick={() => setModuleMetric(ModuleMetric.SIZE)}
210
+ >
211
+ <Tooltip title="Size (excluding duplicate modules)">Module size</Tooltip>
212
+ </Button>
213
+ <Button
214
+ outline
215
+ active={moduleMetric === ModuleMetric.TOTAL_SIZE}
216
+ size="small"
217
+ type="button"
218
+ onClick={() => setModuleMetric(ModuleMetric.TOTAL_SIZE)}
219
+ >
220
+ <Tooltip title="Size (including duplicate modules)">Module total size</Tooltip>
221
+ </Button>
222
+ </ControlGroup>
223
+ </Box>
224
+ {displayType === MetricsDisplayType.TABLE && (
225
+ <MetricsTable
226
+ className={css.table}
227
+ items={items}
228
+ runs={jobs}
229
+ renderRowHeader={renderRowHeader}
230
+ emptyMessage={emptyMessage}
231
+ showHeaderSum
232
+ title={metricsTableTitle}
233
+ sort={sort}
234
+ updateSort={updateSort}
235
+ />
236
+ )}
237
+ {displayType === MetricsDisplayType.TREEMAP && (
238
+ <>
239
+ <Table compact>
240
+ <MetricsTableHeader
241
+ metricTitle={metricsTableTitle}
242
+ showSum
243
+ jobs={jobs}
244
+ rows={items}
245
+ />
246
+ </Table>
247
+ <MetricsTreemap emptyMessage={emptyMessage} items={items} onItemClick={showEntryInfo} />
248
+ </>
249
+ )}
209
250
  </Box>
210
- <MetricsTable
211
- className={css.table}
212
- items={items}
213
- runs={jobs}
214
- renderRowHeader={renderRowHeader}
215
- emptyMessage={emptyMessage}
216
- showHeaderSum
217
- title={metricsTableTitle}
218
- sort={sort}
219
- updateSort={updateSort}
220
- />
221
- </div>
251
+ </Stack>
222
252
  {entryItem && (
223
253
  <ModuleInfo
224
254
  className={css.moduleInfo}
@@ -6,6 +6,7 @@ import type { SortAction } from '../../types';
6
6
  import { useRowsFilter } from '../../hooks/rows-filter';
7
7
  import { useRowsSort } from '../../hooks/rows-sort';
8
8
  import { useSearchParams } from '../../hooks/search-params';
9
+ import { useEntryInfo } from '../../hooks/entry-info';
9
10
  import { BundleModules as BaseComponent } from './bundle-modules';
10
11
  import {
11
12
  addRowFlags,
@@ -61,6 +62,7 @@ interface BundleModulesProps
61
62
  | 'allItems'
62
63
  | 'totalRowCount'
63
64
  | 'hideEntryInfo'
65
+ | 'showEntryInfo'
64
66
  > {
65
67
  jobs: Array<types.Job>;
66
68
  filters: Record<string, boolean>;
@@ -118,9 +120,7 @@ export const BundleModules = (props: BundleModulesProps) => {
118
120
  getCustomSort,
119
121
  });
120
122
 
121
- const hideEntryInfo = useCallback(() => {
122
- setState({ entryId: '' });
123
- }, [setState]);
123
+ const [hideEntryInfo, showEntryInfo] = useEntryInfo({ setState });
124
124
 
125
125
  return (
126
126
  <BaseComponent
@@ -134,6 +134,7 @@ export const BundleModules = (props: BundleModulesProps) => {
134
134
  hideEntryInfo={hideEntryInfo}
135
135
  moduleMetric={moduleMetric}
136
136
  setModuleMetric={setModuleMetric}
137
+ showEntryInfo={showEntryInfo}
137
138
  />
138
139
  );
139
140
  };
@@ -5,19 +5,27 @@ import { COMPONENT, PACKAGE_FILTERS, PACKAGES_SEPARATOR, SECTIONS } from '@bundl
5
5
 
6
6
  import config from '../../config.json';
7
7
  import I18N from '../../i18n';
8
+ import { Box } from '../../layout/box';
8
9
  import { FlexStack } from '../../layout/flex-stack';
10
+ import { Stack } from '../../layout/stack';
9
11
  import { InputSearch } from '../../ui/input-search';
10
12
  import { EmptySet } from '../../ui/empty-set';
11
13
  import { Filters } from '../../ui/filters';
12
14
  import { Tag } from '../../ui/tag';
15
+ import { Table } from '../../ui/table';
13
16
  import { Toolbar } from '../../ui/toolbar';
14
17
  import { ComponentLink } from '../component-link';
15
18
  import { MetricsTable } from '../metrics-table';
19
+ import { MetricsTableHeader } from '../metrics-table-header';
16
20
  import { MetricsTableOptions } from '../metrics-table-options';
17
21
  import { MetricsTableTitle } from '../metrics-table-title';
18
22
  import { PackageInfo } from '../package-info';
19
23
  import { SEARCH_PLACEHOLDER } from './bundle-packages.i18n';
20
24
  import css from './bundle-packages.module.css';
25
+ import { MetricsDisplaySelector } from '../metrics-display-selector';
26
+ import { MetricsDisplayType } from '../../constants';
27
+ import { MetricsTreemap } from '../metrics-treemap';
28
+ import { useMetricsDisplayType } from '../../hooks/metrics-display-type';
21
29
 
22
30
  const getDropdownFilters = ({ compareMode, filters }) => ({
23
31
  [PACKAGE_FILTERS.CHANGED]: {
@@ -126,10 +134,13 @@ export const BundlePackages = (props) => {
126
134
  entryId,
127
135
  allItems,
128
136
  hideEntryInfo,
137
+ showEntryInfo,
129
138
  } = props;
130
139
 
131
140
  const jobLabels = jobs?.map((job) => job?.label);
132
141
 
142
+ const [displayType, setDisplayType] = useMetricsDisplayType();
143
+
133
144
  const dropdownFilters = useMemo(
134
145
  () => getDropdownFilters({ compareMode: jobs?.length > 1, filters }),
135
146
  [jobs, filters],
@@ -182,11 +193,12 @@ export const BundlePackages = (props) => {
182
193
 
183
194
  return (
184
195
  <>
185
- <section className={cx(css.root, className)}>
196
+ <Stack space="xsmall" as="section" className={cx(css.root, className)}>
186
197
  <Toolbar
187
198
  className={css.toolbar}
188
199
  renderActions={({ actionClassName }) => (
189
200
  <FlexStack space="xxsmall" className={cx(css.dropdown, actionClassName)}>
201
+ <MetricsDisplaySelector onSelect={setDisplayType} value={displayType} />
190
202
  <MetricsTableOptions
191
203
  handleViewAll={resetAllFilters}
192
204
  handleResetFilters={resetFilters}
@@ -209,19 +221,34 @@ export const BundlePackages = (props) => {
209
221
  />
210
222
  </FlexStack>
211
223
  </Toolbar>
212
- <main>
213
- <MetricsTable
214
- runs={jobs}
215
- items={items}
216
- emptyMessage={emptyMessage}
217
- renderRowHeader={renderRowHeader}
218
- showHeaderSum
219
- title={metricsTableTitle}
220
- sort={sort}
221
- updateSort={updateSort}
222
- />
223
- </main>
224
- </section>
224
+ <Box outline as="main">
225
+ {displayType === MetricsDisplayType.TABLE && (
226
+ <MetricsTable
227
+ runs={jobs}
228
+ items={items}
229
+ emptyMessage={emptyMessage}
230
+ renderRowHeader={renderRowHeader}
231
+ showHeaderSum
232
+ title={metricsTableTitle}
233
+ sort={sort}
234
+ updateSort={updateSort}
235
+ />
236
+ )}
237
+ {displayType === MetricsDisplayType.TREEMAP && (
238
+ <>
239
+ <Table compact>
240
+ <MetricsTableHeader
241
+ metricTitle={metricsTableTitle}
242
+ showSum
243
+ jobs={jobs}
244
+ rows={items}
245
+ />
246
+ </Table>
247
+ <MetricsTreemap emptyMessage={emptyMessage} items={items} onItemClick={showEntryInfo} />
248
+ </>
249
+ )}
250
+ </Box>
251
+ </Stack>
225
252
  {entryItem && (
226
253
  <PackageInfo
227
254
  className={css.packageInfo}
@@ -283,4 +310,5 @@ BundlePackages.propTypes = {
283
310
  customComponentLink: PropTypes.elementType,
284
311
  entryId: PropTypes.string,
285
312
  hideEntryInfo: PropTypes.func.isRequired,
313
+ showEntryInfo: PropTypes.func.isRequired,
286
314
  };
@@ -2,14 +2,9 @@
2
2
  color: var(--color-text-light);
3
3
  }
4
4
 
5
- .toolbar {
6
- border-bottom: 1px solid var(--color-outline);
7
- }
8
-
9
5
  .toolbarSearch {
10
6
  width: 100%;
11
7
  max-width: 240px;
12
- margin-right: -1px; /** collapse border */
13
8
  }
14
9
 
15
10
  .hoverCard {
@@ -1,4 +1,4 @@
1
- import React, { useCallback, useMemo } from 'react';
1
+ import React, { useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { PACKAGE_FILTERS } from '@bundle-stats/utils';
4
4
  import * as webpack from '@bundle-stats/utils/lib-esm/webpack/compare';
@@ -6,8 +6,14 @@ import * as webpack from '@bundle-stats/utils/lib-esm/webpack/compare';
6
6
  import { useRowsFilter } from '../../hooks/rows-filter';
7
7
  import { useRowsSort } from '../../hooks/rows-sort';
8
8
  import { useSearchParams } from '../../hooks/search-params';
9
+ import { useEntryInfo } from '../../hooks/entry-info';
9
10
  import { BundlePackages as BundlePackagesComponent } from './bundle-packages';
10
- import { getDuplicatePackages, getAddRowDuplicateFlag, getRowFilter, getCustomSort } from './bundle-packages.utils';
11
+ import {
12
+ getDuplicatePackages,
13
+ getAddRowDuplicateFlag,
14
+ getRowFilter,
15
+ getCustomSort,
16
+ } from './bundle-packages.utils';
11
17
 
12
18
  export const BundlePackages = (props) => {
13
19
  const { jobs, search, filters, setState, sortBy, direction, ...restProps } = props;
@@ -54,9 +60,7 @@ export const BundlePackages = (props) => {
54
60
  getCustomSort,
55
61
  });
56
62
 
57
- const hideEntryInfo = useCallback(() => {
58
- setState({ entryId: '' });
59
- }, [setState]);
63
+ const [hideEntryInfo, showEntryInfo] = useEntryInfo({ setState });
60
64
 
61
65
  return (
62
66
  <BundlePackagesComponent
@@ -67,6 +71,7 @@ export const BundlePackages = (props) => {
67
71
  allItems={rows}
68
72
  totalRowCount={totalRowCount}
69
73
  hideEntryInfo={hideEntryInfo}
74
+ showEntryInfo={showEntryInfo}
70
75
  />
71
76
  );
72
77
  };
@@ -1,7 +1,6 @@
1
1
  export { BrowsertimeTable } from './browsertime-table';
2
2
  export { BundleAssets } from './bundle-assets';
3
- export { BundleAssetsTotalsTable } from './bundle-assets-totals-table';
4
- export { BundleAssetsTotalsChartBars } from './bundle-assets-totals-chart-bars';
3
+ export { BundleAssetsTotals } from './bundle-assets-totals';
5
4
  export { BundlePackages } from './bundle-packages';
6
5
  export { BundleModules } from './bundle-modules';
7
6
  export { ComponentLink } from './component-link';
@@ -19,4 +18,3 @@ export { MetricsTableTitle } from './metrics-table-title';
19
18
  export { ModuleInfo } from './module-info';
20
19
  export { RunInfo, RunInfoProps } from './run-info';
21
20
  export { Summary } from './summary';
22
- export { TotalSizeTypeTitle } from './total-size-type-title';
@@ -24,10 +24,6 @@
24
24
  background: linear-gradient(90deg, transparent, var(--color-background));
25
25
  }
26
26
 
27
- .item + .item {
28
- margin-left: var(--space-small);
29
- }
30
-
31
27
  .item:first-child {
32
28
  border-left: 0;
33
29
  padding-left: 0;
@@ -0,0 +1 @@
1
+ export * from './metrics-display-selector';
@@ -0,0 +1,10 @@
1
+ .button {
2
+ text-decoration: none;
3
+ }
4
+
5
+ .buttonActive,
6
+ .buttonActive:active,
7
+ .buttonActive:focus {
8
+ color: var(--color-primary);
9
+ border-color: var(--color-primary);
10
+ }
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ import cx from 'classnames';
3
+
4
+ import { MetricsDisplayType } from '../../constants';
5
+ import { Button } from '../../ui/button';
6
+ import { ControlGroup } from '../../ui/control-group';
7
+ import { Icon } from '../../ui/icon';
8
+ import css from './metrics-display-selector.module.css';
9
+
10
+ interface MetricsDisplaySelectorProps {
11
+ value: MetricsDisplayType;
12
+ onSelect: (newValue: MetricsDisplayType) => void;
13
+ }
14
+
15
+ export const MetricsDisplaySelector = (
16
+ props: MetricsDisplaySelectorProps &
17
+ Omit<React.ComponentProps<typeof ControlGroup>, 'onSelect' | 'value'>,
18
+ ) => {
19
+ const { className = '', value, onSelect, ...restProps } = props;
20
+
21
+ return (
22
+ <ControlGroup className={cx(css.root, className)} {...restProps}>
23
+ <Button
24
+ outline
25
+ active={value === MetricsDisplayType.TABLE}
26
+ size="small"
27
+ type="button"
28
+ glyph={Icon.ICONS.TABLE}
29
+ onClick={() => onSelect(MetricsDisplayType.TABLE)}
30
+ className={css.button}
31
+ >
32
+ Table
33
+ </Button>
34
+ <Button
35
+ outline
36
+ active={value === MetricsDisplayType.TREEMAP}
37
+ size="small"
38
+ type="button"
39
+ glyph={Icon.ICONS.TREEMAP}
40
+ onClick={() => onSelect(MetricsDisplayType.TREEMAP)}
41
+ className={cx(css.button)}
42
+ >
43
+ Treemap
44
+ </Button>
45
+ </ControlGroup>
46
+ );
47
+ };
@@ -1,10 +1,3 @@
1
- export const BASELINE_TITLE = 'Baseline';
2
- export const CURRENT_TITLE = 'Current';
3
-
4
- export const SORT_VALUE = 'value';
5
- export const SORT_CHANGE = 'change';
6
- export const SORT_PERCENTUAL_CHANGE = 'percentual change';
7
-
8
1
  export const EMPTY_MESSAGE = 'No items found.';
9
2
  export const SHOW_ALL = 'Show all';
10
3
  export const SHOW_LESS = 'Show less';
@@ -10,52 +10,9 @@
10
10
  text-decoration: underline;
11
11
  }
12
12
 
13
- /* columns */
14
- .metricName {
15
- width: 55%;
16
- }
17
-
18
- .root .jobCol {
19
- text-align: right;
20
- }
21
-
22
- .root .value {
23
- text-align: right;
24
- vertical-align: baseline;
25
- width: 15%;
26
- }
27
-
13
+ .root .value,
28
14
  .root .delta {
29
15
  text-align: right;
30
- font-size: var(--size-xsmall);
31
- vertical-align: baseline;
32
- width: 10%;
33
- color: pink;
34
- }
35
-
36
- .root .deltaPercentage {
37
- width: 5%;
38
- }
39
-
40
- .root tbody .delta {
41
- line-height: 1.6rem; /* baseline alignment with the column value */
42
- }
43
-
44
- .jobName {
45
- white-space: nowrap;
46
- }
47
-
48
- /* columns overrides for showHeaderSum */
49
- .showHeaderSum .headerRow .jobCol {
50
- border-bottom: 0;
51
- padding-bottom: 0;
52
- }
53
-
54
- .showHeaderSum .headerRow .sum {
55
- padding-top: var(--space-xxxsmall);
56
- font-size: var(--size-small);
57
- vertical-align: middle;
58
- text-transform: none;
59
16
  }
60
17
 
61
18
  /** rows */