@bundle-stats/ui 3.3.0-alpha.1 → 3.4.0-alpha.1

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 (178) hide show
  1. package/CHANGELOG.md +94 -13
  2. package/lib/app/app.js +137 -102
  3. package/lib/app/app.module.css +11 -4
  4. package/lib/app/header/header.js +1 -10
  5. package/lib/components/asset-info/asset-info.module.css +1 -0
  6. package/lib/components/bundle-assets/bundle-assets.js +104 -52
  7. package/lib/components/bundle-assets/bundle-assets.module.css +24 -26
  8. package/lib/components/bundle-assets-totals-table/bundle-assets-totals-table.js +13 -3
  9. package/lib/components/bundle-modules/bundle-modules.js +53 -67
  10. package/lib/components/bundle-packages/bundle-packages.js +100 -44
  11. package/lib/components/bundle-packages/bundle-packages.module.css +17 -21
  12. package/lib/components/delta/delta.module.css +1 -0
  13. package/lib/components/job-header/job-header.js +3 -1
  14. package/lib/components/job-header/job-header.module.css +6 -8
  15. package/lib/components/jobs-header/jobs-header.module.css +5 -0
  16. package/lib/components/metrics-table/metrics-table.js +72 -59
  17. package/lib/components/metrics-table/metrics-table.module.css +18 -7
  18. package/lib/components/metrics-table-search/metrics-table-search.module.css +5 -4
  19. package/lib/components/metrics-table-title/metrics-table-title.js +9 -7
  20. package/lib/components/metrics-table-title/metrics-table-title.module.css +2 -0
  21. package/lib/components/module-info/module-info.js +2 -2
  22. package/lib/components/module-info/module-info.module.css +1 -0
  23. package/lib/components/summary/summary.js +1 -1
  24. package/lib/components/summary-item/summary-item.js +15 -18
  25. package/lib/components/summary-item/summary-item.module.css +1 -23
  26. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  27. package/lib/css/default.css +14 -3
  28. package/lib/css/variables.css +17 -17
  29. package/lib/hooks/search-params.js +31 -31
  30. package/lib/layout/box/box.module.css +9 -0
  31. package/lib/layout/footer/footer.module.css +1 -1
  32. package/lib/layout/index.js +8 -0
  33. package/lib/layout/separator.js +48 -0
  34. package/lib/layout/separator.module.css +5 -0
  35. package/lib/ui/dropdown/dropdown.js +21 -26
  36. package/lib/ui/dropdown/dropdown.module.css +11 -12
  37. package/lib/ui/dropdown/dropdown.stories.js +2 -9
  38. package/lib/ui/empty-set/empty-set.js +5 -4
  39. package/lib/ui/empty-set/empty-set.module.css +2 -2
  40. package/lib/ui/filters/filters.container.js +1 -1
  41. package/lib/ui/filters/filters.js +22 -7
  42. package/lib/ui/filters/filters.module.css +3 -3
  43. package/lib/ui/horizontal-bar-chart/horizontal-bar-chart.js +1 -1
  44. package/lib/ui/hover-card/hover-card.js +102 -0
  45. package/lib/ui/hover-card/hover-card.module.css +29 -0
  46. package/lib/ui/hover-card/hover-card.stories.js +56 -0
  47. package/lib/ui/hover-card/index.js +18 -0
  48. package/lib/ui/icon/icon.js +6 -6
  49. package/lib/ui/icon/icon.module.css +1 -0
  50. package/lib/ui/index.js +8 -8
  51. package/lib/ui/table/table.js +5 -74
  52. package/lib/ui/table/table.module.css +41 -25
  53. package/lib/ui/table/table.stories.js +1 -1
  54. package/lib/ui/{popover → tag}/index.js +4 -4
  55. package/lib/ui/tag/tag.js +72 -0
  56. package/lib/ui/tag/tag.module.css +55 -0
  57. package/lib/ui/tag/tag.stories.js +38 -0
  58. package/lib/ui/tooltip/tooltip.js +10 -9
  59. package/lib/ui/tooltip/tooltip.module.css +2 -1
  60. package/lib-esm/app/app.js +132 -102
  61. package/lib-esm/app/app.module.css +11 -4
  62. package/lib-esm/app/header/header.js +1 -9
  63. package/lib-esm/components/asset-info/asset-info.module.css +1 -0
  64. package/lib-esm/components/bundle-assets/bundle-assets.js +97 -56
  65. package/lib-esm/components/bundle-assets/bundle-assets.module.css +24 -26
  66. package/lib-esm/components/bundle-assets-totals-table/bundle-assets-totals-table.js +7 -3
  67. package/lib-esm/components/bundle-modules/bundle-modules.js +35 -50
  68. package/lib-esm/components/bundle-packages/bundle-packages.js +88 -41
  69. package/lib-esm/components/bundle-packages/bundle-packages.module.css +17 -21
  70. package/lib-esm/components/delta/delta.module.css +1 -0
  71. package/lib-esm/components/job-header/job-header.js +2 -1
  72. package/lib-esm/components/job-header/job-header.module.css +6 -8
  73. package/lib-esm/components/jobs-header/jobs-header.module.css +5 -0
  74. package/lib-esm/components/metrics-table/metrics-table.js +61 -53
  75. package/lib-esm/components/metrics-table/metrics-table.module.css +18 -7
  76. package/lib-esm/components/metrics-table-search/metrics-table-search.module.css +5 -4
  77. package/lib-esm/components/metrics-table-title/metrics-table-title.js +8 -7
  78. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +2 -0
  79. package/lib-esm/components/module-info/module-info.js +2 -2
  80. package/lib-esm/components/module-info/module-info.module.css +1 -0
  81. package/lib-esm/components/summary/summary.js +1 -1
  82. package/lib-esm/components/summary-item/summary-item.js +14 -18
  83. package/lib-esm/components/summary-item/summary-item.module.css +1 -23
  84. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  85. package/lib-esm/css/default.css +14 -3
  86. package/lib-esm/css/variables.css +17 -17
  87. package/lib-esm/hooks/search-params.js +27 -28
  88. package/lib-esm/layout/box/box.module.css +9 -0
  89. package/lib-esm/layout/footer/footer.module.css +1 -1
  90. package/lib-esm/layout/index.js +1 -0
  91. package/lib-esm/layout/separator.js +28 -0
  92. package/lib-esm/layout/separator.module.css +5 -0
  93. package/lib-esm/ui/dropdown/dropdown.js +20 -25
  94. package/lib-esm/ui/dropdown/dropdown.module.css +11 -12
  95. package/lib-esm/ui/dropdown/dropdown.stories.js +2 -7
  96. package/lib-esm/ui/empty-set/empty-set.js +4 -4
  97. package/lib-esm/ui/empty-set/empty-set.module.css +2 -2
  98. package/lib-esm/ui/filters/filters.js +20 -5
  99. package/lib-esm/ui/filters/filters.module.css +3 -3
  100. package/lib-esm/ui/hover-card/hover-card.js +83 -0
  101. package/lib-esm/ui/hover-card/hover-card.module.css +29 -0
  102. package/lib-esm/ui/hover-card/hover-card.stories.js +35 -0
  103. package/lib-esm/ui/hover-card/index.js +1 -0
  104. package/lib-esm/ui/icon/icon.js +3 -3
  105. package/lib-esm/ui/icon/icon.module.css +1 -0
  106. package/lib-esm/ui/index.js +1 -1
  107. package/lib-esm/ui/table/table.js +5 -65
  108. package/lib-esm/ui/table/table.module.css +41 -25
  109. package/lib-esm/ui/table/table.stories.js +1 -1
  110. package/lib-esm/ui/tag/index.js +1 -0
  111. package/lib-esm/ui/tag/tag.js +45 -0
  112. package/lib-esm/ui/tag/tag.module.css +55 -0
  113. package/lib-esm/ui/tag/tag.stories.js +23 -0
  114. package/lib-esm/ui/tooltip/tooltip.js +10 -9
  115. package/lib-esm/ui/tooltip/tooltip.module.css +2 -1
  116. package/package.json +33 -31
  117. package/src/app/app.jsx +142 -145
  118. package/src/app/app.module.css +11 -4
  119. package/src/app/header/header.jsx +0 -10
  120. package/src/components/asset-info/asset-info.module.css +1 -0
  121. package/src/components/bundle-assets/bundle-assets.jsx +85 -31
  122. package/src/components/bundle-assets/bundle-assets.module.css +24 -26
  123. package/src/components/bundle-assets-totals-table/bundle-assets-totals-table.jsx +2 -0
  124. package/src/components/bundle-modules/bundle-modules.jsx +36 -36
  125. package/src/components/bundle-packages/bundle-packages.jsx +89 -39
  126. package/src/components/bundle-packages/bundle-packages.module.css +17 -21
  127. package/src/components/delta/delta.module.css +1 -0
  128. package/src/components/job-header/job-header.jsx +2 -1
  129. package/src/components/job-header/job-header.module.css +6 -8
  130. package/src/components/jobs-header/jobs-header.module.css +5 -0
  131. package/src/components/metrics-table/metrics-table.jsx +53 -44
  132. package/src/components/metrics-table/metrics-table.module.css +18 -7
  133. package/src/components/metrics-table-search/metrics-table-search.module.css +5 -4
  134. package/src/components/metrics-table-title/metrics-table-title.jsx +20 -21
  135. package/src/components/metrics-table-title/metrics-table-title.module.css +2 -0
  136. package/src/components/module-info/module-info.jsx +3 -7
  137. package/src/components/module-info/module-info.module.css +1 -0
  138. package/src/components/summary/summary.jsx +1 -1
  139. package/src/components/summary-item/summary-item.jsx +21 -27
  140. package/src/components/summary-item/summary-item.module.css +1 -23
  141. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  142. package/src/css/default.css +14 -3
  143. package/src/css/variables.css +17 -17
  144. package/src/hooks/search-params.js +42 -33
  145. package/src/layout/box/box.module.css +9 -0
  146. package/src/layout/footer/footer.module.css +1 -1
  147. package/src/layout/index.js +1 -0
  148. package/src/layout/separator.jsx +25 -0
  149. package/src/layout/separator.module.css +5 -0
  150. package/src/ui/dropdown/dropdown.jsx +16 -22
  151. package/src/ui/dropdown/dropdown.module.css +11 -12
  152. package/src/ui/empty-set/empty-set.jsx +25 -21
  153. package/src/ui/empty-set/empty-set.module.css +2 -2
  154. package/src/ui/filters/filters.jsx +64 -53
  155. package/src/ui/filters/filters.module.css +3 -3
  156. package/src/ui/hover-card/hover-card.jsx +73 -0
  157. package/src/ui/hover-card/hover-card.module.css +29 -0
  158. package/src/ui/hover-card/index.js +1 -0
  159. package/src/ui/icon/icon.jsx +11 -7
  160. package/src/ui/icon/icon.module.css +1 -0
  161. package/src/ui/index.js +1 -1
  162. package/src/ui/table/table.jsx +5 -52
  163. package/src/ui/table/table.module.css +41 -25
  164. package/src/ui/tag/index.js +1 -0
  165. package/src/ui/tag/tag.jsx +49 -0
  166. package/src/ui/tag/tag.module.css +55 -0
  167. package/src/ui/tooltip/tooltip.jsx +10 -14
  168. package/src/ui/tooltip/tooltip.module.css +2 -1
  169. package/lib/ui/popover/popover.js +0 -92
  170. package/lib/ui/popover/popover.module.css +0 -66
  171. package/lib/ui/popover/popover.stories.js +0 -26
  172. package/lib-esm/ui/popover/index.js +0 -1
  173. package/lib-esm/ui/popover/popover.js +0 -71
  174. package/lib-esm/ui/popover/popover.module.css +0 -66
  175. package/lib-esm/ui/popover/popover.stories.js +0 -14
  176. package/src/ui/popover/index.js +0 -1
  177. package/src/ui/popover/popover.jsx +0 -79
  178. package/src/ui/popover/popover.module.css +0 -66
@@ -13,12 +13,13 @@
13
13
  }
14
14
 
15
15
  .summaryContainer {
16
- padding-top: var(--space-large);
16
+ padding-top: var(--space-medium);
17
17
  padding-bottom: var(--space-small);
18
18
  }
19
19
 
20
20
  .tabsContainer {
21
21
  border-bottom: 1px solid var(--color-outline);
22
+ background: var(--color-light);
22
23
  }
23
24
 
24
25
  .tabs {
@@ -34,14 +35,14 @@
34
35
  }
35
36
 
36
37
  .tabsContent {
37
- padding-top: var(--space-large);
38
- padding-bottom: var(--space-large);
38
+ padding-top: var(--space-medium);
39
+ padding-bottom: var(--space-medium);
39
40
  min-height: 480px;
40
41
  }
41
42
 
42
43
  @media (min-width: 600px) {
43
44
  :root {
44
- --header-height: 80px;
45
+ --header-height: 72px;
45
46
  }
46
47
 
47
48
  .header {
@@ -54,4 +55,10 @@
54
55
  background-color: var(--color-background);
55
56
  border-bottom: 1px solid var(--color-outline);
56
57
  }
58
+
59
+ .tabsContainer {
60
+ position: sticky;
61
+ top: var(--header-height);
62
+ z-index: 100;
63
+ }
57
64
  }
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
3
3
  import cx from 'classnames';
4
4
  import { Container } from '../../ui/container';
5
5
  import { JobsHeader } from '../../components/jobs-header';
6
- import { Logo } from '../../ui/logo';
7
6
  import css from './header.module.css';
8
7
  export const Header = _ref => {
9
8
  let {
@@ -15,14 +14,7 @@ export const Header = _ref => {
15
14
  className: cx(css.root, className)
16
15
  }, /*#__PURE__*/React.createElement("div", {
17
16
  className: css.inner
18
- }, /*#__PURE__*/React.createElement("a", {
19
- className: css.branding,
20
- href: "https://github.com/relative-ci/bundle-stats",
21
- target: "_blank",
22
- rel: "noopener noreferrer nofollow"
23
- }, /*#__PURE__*/React.createElement(Logo, {
24
- className: css.brandingLogo
25
- }, "BundleStats")), /*#__PURE__*/React.createElement(JobsHeader, {
17
+ }, /*#__PURE__*/React.createElement(JobsHeader, {
26
18
  className: css.jobs,
27
19
  jobs: jobs
28
20
  })));
@@ -1,4 +1,5 @@
1
1
  .fileName {
2
+ max-width: 100%;
2
3
  padding: 2px;
3
4
  background: var(--color-highlight-warning);
4
5
  }
@@ -3,7 +3,7 @@ import _get from "lodash/get";
3
3
 
4
4
  function _extends() { _extends = Object.assign || 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); }
5
5
 
6
- import React, { useMemo } from 'react';
6
+ import React, { useCallback, useMemo, useState } from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import cx from 'classnames';
9
9
  import { ASSET_ENTRY_TYPE, ASSET_FILE_TYPE, ASSET_FILTERS, FILE_TYPE_LABELS } from '@bundle-stats/utils';
@@ -12,8 +12,9 @@ import I18N from '../../i18n';
12
12
  import { FlexStack } from '../../layout/flex-stack';
13
13
  import { Icon } from '../../ui/icon';
14
14
  import { FileName } from '../../ui/file-name';
15
- import { Popover } from '../../ui/popover';
15
+ import { HoverCard } from '../../ui/hover-card';
16
16
  import { Tooltip } from '../../ui/tooltip';
17
+ import { Tag } from '../../ui/tag';
17
18
  import { Filters } from '../../ui/filters';
18
19
  import { SortDropdown } from '../../ui/sort-dropdown';
19
20
  import { EmptySet } from '../../ui/empty-set';
@@ -71,58 +72,92 @@ TooltipNotPredictive.propTypes = {
71
72
 
72
73
  };
73
74
 
74
- const getRenderRowHeader = _ref4 => {
75
+ const RowHeader = _ref4 => {
75
76
  let {
77
+ row,
76
78
  labels,
77
- CustomComponentLink,
78
- chunks
79
+ chunks,
80
+ CustomComponentLink
79
81
  } = _ref4;
80
- return item => {
81
- const {
82
- label,
83
- isNotPredictive,
84
- runs,
85
- isChunk,
86
- isEntry,
87
- isInitial
88
- } = item;
89
- return /*#__PURE__*/React.createElement(Popover, {
90
- label: /*#__PURE__*/React.createElement(FileName, {
91
- name: label
92
- }),
93
- icon: /*#__PURE__*/React.createElement("div", {
94
- className: css.assetInfoFlags
95
- }, isNotPredictive && /*#__PURE__*/React.createElement(Tooltip, {
96
- className: css.notPredictive,
97
- title: /*#__PURE__*/React.createElement(TooltipNotPredictive, {
98
- runs: runs
99
- })
100
- }, /*#__PURE__*/React.createElement(Icon, {
101
- className: css.notPredictiveIcon,
102
- glyph: "warning"
103
- })), isChunk && /*#__PURE__*/React.createElement("span", {
104
- title: "Chunk",
105
- className: css.flagChunk
106
- }, "c"), isEntry && /*#__PURE__*/React.createElement("span", {
107
- title: "Entrypoint",
108
- className: css.flagEntry
109
- }, "e"), isInitial && /*#__PURE__*/React.createElement("span", {
110
- title: "Initial",
111
- className: css.flagInitial
112
- }, "i"))
113
- }, /*#__PURE__*/React.createElement(AssetInfo, {
114
- className: css.assetInfo,
115
- item: item,
116
- labels: labels,
117
- chunks: chunks,
118
- CustomComponentLink: CustomComponentLink
119
- }));
120
- };
82
+ const {
83
+ label,
84
+ isNotPredictive,
85
+ runs,
86
+ isChunk,
87
+ isEntry,
88
+ isInitial
89
+ } = row;
90
+ const [showHoverCard, setHoverCard] = useState(false);
91
+ const handleOnMouseEnter = useCallback(() => setHoverCard(true), [showHoverCard]);
92
+ const content = useMemo(() => /*#__PURE__*/React.createElement("span", {
93
+ className: css.assetName
94
+ }, /*#__PURE__*/React.createElement("span", {
95
+ className: css.assetNameTags
96
+ }, isNotPredictive && /*#__PURE__*/React.createElement(Tooltip, {
97
+ className: css.notPredictive,
98
+ title: /*#__PURE__*/React.createElement(TooltipNotPredictive, {
99
+ runs: runs
100
+ })
101
+ }, /*#__PURE__*/React.createElement(Icon, {
102
+ className: css.notPredictiveIcon,
103
+ glyph: "warning"
104
+ })), isChunk && /*#__PURE__*/React.createElement(Tag, {
105
+ className: cx(css.assetNameTag, css.assetNameTagChunk),
106
+ title: "Chunk",
107
+ size: Tag.SIZES.SMALL,
108
+ kind: Tag.KINDS.INFO
109
+ }), isEntry && /*#__PURE__*/React.createElement(Tag, {
110
+ className: cx(css.assetNameTag, css.assetNameTagEntry),
111
+ title: "Entrypoint",
112
+ size: Tag.SIZES.SMALL,
113
+ kind: Tag.KINDS.INFO
114
+ }), isInitial && /*#__PURE__*/React.createElement(Tag, {
115
+ className: cx(css.assetNameTag, css.assetNameTagInitial),
116
+ title: "Initial",
117
+ size: Tag.SIZES.SMALL,
118
+ kind: Tag.KINDS.INFO
119
+ })), /*#__PURE__*/React.createElement(FileName, {
120
+ className: css.assetNameText,
121
+ name: label
122
+ })), [isChunk, isEntry, isInitial, isNotPredictive, runs]);
123
+
124
+ if (!showHoverCard) {
125
+ return /*#__PURE__*/React.createElement("span", {
126
+ onMouseEnter: handleOnMouseEnter
127
+ }, content);
128
+ }
129
+
130
+ return /*#__PURE__*/React.createElement(HoverCard, {
131
+ label: content
132
+ }, /*#__PURE__*/React.createElement(AssetInfo, {
133
+ className: css.assetInfo,
134
+ item: row,
135
+ labels: labels,
136
+ chunks: chunks,
137
+ CustomComponentLink: CustomComponentLink
138
+ }));
121
139
  };
122
140
 
141
+ RowHeader.propTypes = {
142
+ row: PropTypes.shape({
143
+ label: PropTypes.string,
144
+ isNotPredictive: PropTypes.bool,
145
+ isChunk: PropTypes.bool,
146
+ isInitial: PropTypes.bool,
147
+ isEntry: PropTypes.bool,
148
+ runs: PropTypes.arrayOf(PropTypes.object)
149
+ }).isRequired,
150
+ chunks: PropTypes.arrayOf(PropTypes.shape({
151
+ id: PropTypes.string,
152
+ name: PropTypes.string
153
+ })),
154
+ labels: PropTypes.arrayOf(PropTypes.string).isRequired,
155
+ CustomComponentLink: PropTypes.elementType.isRequired
156
+ };
157
+ RowHeader.defaultProps = {
158
+ chunks: []
159
+ };
123
160
  export const BundleAssets = props => {
124
- var _jobs$, _jobs$$meta, _jobs$$meta$webpack;
125
-
126
161
  const {
127
162
  className,
128
163
  jobs,
@@ -146,12 +181,16 @@ export const BundleAssets = props => {
146
181
  handleResetFilters: resetFilters,
147
182
  handleViewAll: resetAllFilters
148
183
  });
149
- const chunks = ((_jobs$ = jobs[0]) == null ? void 0 : (_jobs$$meta = _jobs$.meta) == null ? void 0 : (_jobs$$meta$webpack = _jobs$$meta.webpack) == null ? void 0 : _jobs$$meta$webpack.chunks) || [];
150
- const renderRowHeader = useMemo(() => getRenderRowHeader({
151
- labels: _map(jobs, 'label'),
152
- CustomComponentLink,
153
- chunks
154
- }), [jobs, chunks]);
184
+ const renderRowHeader = useCallback(row => {
185
+ var _jobs$, _jobs$$meta, _jobs$$meta$webpack;
186
+
187
+ return /*#__PURE__*/React.createElement(RowHeader, {
188
+ row: row,
189
+ labels: _map(jobs, 'label'),
190
+ chunks: ((_jobs$ = jobs[0]) == null ? void 0 : (_jobs$$meta = _jobs$.meta) == null ? void 0 : (_jobs$$meta$webpack = _jobs$$meta.webpack) == null ? void 0 : _jobs$$meta$webpack.chunks) || [],
191
+ CustomComponentLink: CustomComponentLink
192
+ });
193
+ }, [jobs, CustomComponentLink]);
155
194
  return /*#__PURE__*/React.createElement("section", {
156
195
  className: cx(css.root, className)
157
196
  }, /*#__PURE__*/React.createElement(Toolbar, {
@@ -161,7 +200,7 @@ export const BundleAssets = props => {
161
200
  actionClassName
162
201
  } = _ref5;
163
202
  return /*#__PURE__*/React.createElement(FlexStack, {
164
- space: "xsmall",
203
+ space: "xxsmall",
165
204
  className: cx(css.dropdown, actionClassName)
166
205
  }, /*#__PURE__*/React.createElement(SortDropdown, _extends({
167
206
  fields: sortFields
@@ -172,7 +211,9 @@ export const BundleAssets = props => {
172
211
  handleResetFilters: resetFilters
173
212
  }));
174
213
  }
175
- }, /*#__PURE__*/React.createElement(FlexStack, null, /*#__PURE__*/React.createElement(MetricsTableSearch, {
214
+ }, /*#__PURE__*/React.createElement(FlexStack, {
215
+ space: "xxsmall"
216
+ }, /*#__PURE__*/React.createElement(MetricsTableSearch, {
176
217
  className: css.toolbarSearch,
177
218
  placeholder: "Search by name",
178
219
  search: search,
@@ -8,6 +8,8 @@
8
8
  margin-right: -1px; /** collapse border */
9
9
  }
10
10
 
11
+ .assetName {}
12
+
11
13
  .notPredictive {
12
14
  margin-right: var(--space-xxsmall);
13
15
  display: inline-block;
@@ -21,50 +23,46 @@
21
23
  vertical-align: top;
22
24
  }
23
25
 
24
- .assetInfoFlags {
25
- display: inline-block;
26
+ .assetNameTags {
27
+ display: inline;
26
28
  margin-right: var(--space-xxxsmall);
27
29
  }
28
30
 
29
- .assetInfoFlags:empty {
31
+ .assetNameTags:empty {
30
32
  display: none;
31
33
  }
32
34
 
33
- .flag {
34
- display: inline-block;
35
- width: var(--space-xsmall);
36
- height: var(--space-xsmall);
37
- font-family: var(--font-family);
38
- font-size: 8px;
39
- font-weight: bold;
40
- background: var(--color-highlight);
41
- color: var(--color-text-light);
42
- line-height: var(--space-xsmall);
43
- text-align: center;
44
- text-transform: uppercase;
35
+ .assetNameTag {
45
36
  vertical-align: middle;
46
37
  }
47
38
 
48
- .flag + .flag {
39
+ .assetNameTag + .assetNameTag {
49
40
  margin-left: 2px;
50
41
  }
51
42
 
52
- .flagEntry {
53
- composes: flag;
43
+ .assetNameTagEntry {
54
44
  background: var(--color-info-light);
55
- color: var(--color-background);
56
45
  }
57
46
 
58
- .flagInitial {
59
- composes: flag;
47
+ .assetNameTagEntry::before {
48
+ content: 'e';
49
+ }
50
+
51
+ .assetNameTagInitial {
60
52
  background: var(--color-info-light);
61
- color: var(--color-background);
62
53
  }
63
54
 
64
- .flagChunk {
65
- composes: flag;
66
- background: var(--color-info);
67
- color: var(--color-background);
55
+ .assetNameTagInitial::before {
56
+ content: 'i';
57
+ }
58
+
59
+ .assetNameTagChunk::before {
60
+ content: 'c';
61
+ }
62
+
63
+ .assetNameText {
64
+ display: inline;
65
+ vertical-align: middle;
68
66
  }
69
67
 
70
68
  /* Tooltip not predictive */
@@ -1,4 +1,7 @@
1
1
  import _get from "lodash/get";
2
+
3
+ function _extends() { _extends = Object.assign || 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); }
4
+
2
5
  import React, { useCallback, useMemo } from 'react';
3
6
  import PropTypes from 'prop-types';
4
7
  import { getBundleAssetsFileTypeComponentLink } from '@bundle-stats/utils';
@@ -15,7 +18,8 @@ export const BundleAssetsTotalsTable = _ref => {
15
18
  let {
16
19
  className,
17
20
  jobs,
18
- customComponentLink: CustomComponentLink
21
+ customComponentLink: CustomComponentLink,
22
+ ...restProps
19
23
  } = _ref;
20
24
  const items = useMemo(() => webpack.compareBySection.sizes(jobs), [jobs]);
21
25
  const budgets = (_jobs$0$insights = jobs[0].insights) == null ? void 0 : (_jobs$0$insights$webp = _jobs$0$insights.webpack) == null ? void 0 : _jobs$0$insights$webp.budgets;
@@ -43,13 +47,13 @@ export const BundleAssetsTotalsTable = _ref => {
43
47
  budgetInsight: budget
44
48
  })));
45
49
  }, [CustomComponentLink]);
46
- return /*#__PURE__*/React.createElement(MetricsTable, {
50
+ return /*#__PURE__*/React.createElement(MetricsTable, _extends({
47
51
  className: className,
48
52
  runs: jobs,
49
53
  items: items,
50
54
  renderRowHeader: renderRowHeader,
51
55
  showHeaderSum: true
52
- });
56
+ }, restProps));
53
57
  };
54
58
  BundleAssetsTotalsTable.defaultProps = {
55
59
  className: '',
@@ -15,7 +15,7 @@ import { FlexStack } from '../../layout/flex-stack';
15
15
  import { EmptySet } from '../../ui/empty-set';
16
16
  import { FileName } from '../../ui/file-name';
17
17
  import { Filters } from '../../ui/filters';
18
- import { Popover } from '../../ui/popover';
18
+ import { HoverCard } from '../../ui/hover-card';
19
19
  import { SortDropdown } from '../../ui/sort-dropdown';
20
20
  import { Toolbar } from '../../ui/toolbar';
21
21
  import { MetricsTable } from '../metrics-table';
@@ -35,29 +35,27 @@ const RowHeader = _ref => {
35
35
 
36
36
  const chunkIds = _map(chunks, 'id');
37
37
 
38
- const [showPopopver, setPopover] = useState(false);
39
- const handleOnMouseEnter = useCallback(() => setPopover(true), [showPopopver]);
40
- const content = /*#__PURE__*/React.createElement(FileName, {
38
+ const [showHoverCard, setHoverCard] = useState(false);
39
+ const handleOnMouseEnter = useCallback(() => setHoverCard(true), [showHoverCard]);
40
+ const content = useMemo(() => /*#__PURE__*/React.createElement(FileName, {
41
41
  name: row.label
42
- });
43
- return /*#__PURE__*/React.createElement("div", {
44
- onMouseEnter: handleOnMouseEnter
45
- }, !showPopopver ? content : /*#__PURE__*/React.createElement(Popover, {
46
- ariaLabel: "View module info",
42
+ }), [row.label]);
43
+
44
+ if (!showHoverCard) {
45
+ return /*#__PURE__*/React.createElement("div", {
46
+ onMouseEnter: handleOnMouseEnter
47
+ }, content);
48
+ }
49
+
50
+ return /*#__PURE__*/React.createElement(HoverCard, {
47
51
  label: content
48
- }, _ref2 => {
49
- let {
50
- popoverToggle
51
- } = _ref2;
52
- return /*#__PURE__*/React.createElement(ModuleInfo, {
53
- className: css.namePopover,
54
- item: row,
55
- chunks: chunks,
56
- chunkIds: chunkIds,
57
- labels: labels,
58
- customComponentLink: CustomComponentLink,
59
- onClick: popoverToggle
60
- });
52
+ }, /*#__PURE__*/React.createElement(ModuleInfo, {
53
+ className: css.namePopover,
54
+ item: row,
55
+ chunks: chunks,
56
+ chunkIds: chunkIds,
57
+ labels: labels,
58
+ customComponentLink: CustomComponentLink
61
59
  }));
62
60
  };
63
61
 
@@ -75,22 +73,7 @@ RowHeader.propTypes = {
75
73
  RowHeader.defaultProps = {
76
74
  chunks: []
77
75
  };
78
-
79
- const getRenderRowHeader = _ref3 => {
80
- let {
81
- labels,
82
- chunks,
83
- CustomComponentLink
84
- } = _ref3;
85
- return row => /*#__PURE__*/React.createElement(RowHeader, {
86
- row: row,
87
- chunks: chunks,
88
- labels: labels,
89
- CustomComponentLink: CustomComponentLink
90
- });
91
- };
92
-
93
- export const BundleModules = _ref4 => {
76
+ export const BundleModules = _ref2 => {
94
77
  let {
95
78
  className,
96
79
  jobs,
@@ -108,14 +91,14 @@ export const BundleModules = _ref4 => {
108
91
  updateSearch,
109
92
  hasActiveFilters,
110
93
  customComponentLink: CustomComponentLink
111
- } = _ref4;
94
+ } = _ref2;
112
95
  const rootClassName = cx(css.root, className);
113
- const labels = useMemo(() => _map(jobs, 'label'), [jobs]);
114
- const renderRowHeader = useMemo(() => getRenderRowHeader({
115
- labels,
116
- chunks,
117
- CustomComponentLink
118
- }), [labels, chunks]);
96
+ const renderRowHeader = useCallback(row => /*#__PURE__*/React.createElement(RowHeader, {
97
+ row: row,
98
+ chunks: chunks,
99
+ labels: _map(jobs, 'label'),
100
+ CustomComponentLink: CustomComponentLink
101
+ }), [jobs, chunks, CustomComponentLink]);
119
102
  const emptyMessage = /*#__PURE__*/React.createElement(EmptySet, {
120
103
  resources: "modules",
121
104
  filtered: totalRowCount !== 0,
@@ -143,11 +126,11 @@ export const BundleModules = _ref4 => {
143
126
  ...(!_isEmpty(chunks) && {
144
127
  [MODULE_CHUNK]: {
145
128
  label: 'Chunk',
146
- ...chunks.reduce((chunkFilters, _ref5) => {
129
+ ...chunks.reduce((chunkFilters, _ref3) => {
147
130
  let {
148
131
  id,
149
132
  name
150
- } = _ref5;
133
+ } = _ref3;
151
134
  return { ...chunkFilters,
152
135
  [id]: {
153
136
  label: name,
@@ -172,10 +155,10 @@ export const BundleModules = _ref4 => {
172
155
  className: rootClassName
173
156
  }, /*#__PURE__*/React.createElement(Toolbar, {
174
157
  className: css.toolbar,
175
- renderActions: _ref6 => {
158
+ renderActions: _ref4 => {
176
159
  let {
177
160
  actionClassName
178
- } = _ref6;
161
+ } = _ref4;
179
162
  return /*#__PURE__*/React.createElement(FlexStack, {
180
163
  space: "xxsmall",
181
164
  className: cx(css.dropdown, actionClassName)
@@ -188,7 +171,9 @@ export const BundleModules = _ref4 => {
188
171
  handleResetFilters: resetFilters
189
172
  }));
190
173
  }
191
- }, /*#__PURE__*/React.createElement(FlexStack, null, /*#__PURE__*/React.createElement(MetricsTableSearch, {
174
+ }, /*#__PURE__*/React.createElement(FlexStack, {
175
+ space: "xxsmall"
176
+ }, /*#__PURE__*/React.createElement(MetricsTableSearch, {
192
177
  className: css.toolbarSearch,
193
178
  search: search,
194
179
  updateSearch: updateSearch,