@bundle-stats/ui 3.2.4-alpha.0 → 3.2.5-alpha.17

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 (69) hide show
  1. package/CHANGELOG.md +50 -1
  2. package/lib/components/bundle-assets/bundle-assets.js +7 -9
  3. package/lib/components/bundle-assets/bundle-assets.module.css +0 -5
  4. package/lib/components/bundle-modules/bundle-modules.js +63 -34
  5. package/lib/components/bundle-modules/bundle-modules.module.css +4 -0
  6. package/lib/components/bundle-packages/bundle-packages.js +24 -29
  7. package/lib/components/bundle-packages/bundle-packages.module.css +20 -37
  8. package/lib/components/metrics-table-title/metrics-table-title.js +3 -7
  9. package/lib/components/summary-item/summary-item.js +18 -16
  10. package/lib/components/total-size-type-title/total-size-type-title.js +3 -7
  11. package/lib/ui/dropdown/dropdown.js +19 -15
  12. package/lib/ui/filters/filters.js +5 -3
  13. package/lib/ui/index.js +8 -8
  14. package/lib/ui/{hover-card → popover}/index.js +4 -4
  15. package/lib/ui/popover/popover.js +92 -0
  16. package/lib/ui/popover/popover.module.css +66 -0
  17. package/lib/ui/popover/popover.stories.js +26 -0
  18. package/lib/ui/sort-dropdown/sort-dropdown.js +5 -2
  19. package/lib/ui/tooltip/tooltip.js +14 -22
  20. package/lib/ui/tooltip/tooltip.module.css +3 -5
  21. package/lib-esm/components/bundle-assets/bundle-assets.js +7 -9
  22. package/lib-esm/components/bundle-assets/bundle-assets.module.css +0 -5
  23. package/lib-esm/components/bundle-modules/bundle-modules.js +29 -17
  24. package/lib-esm/components/bundle-modules/bundle-modules.module.css +4 -0
  25. package/lib-esm/components/bundle-packages/bundle-packages.js +23 -28
  26. package/lib-esm/components/bundle-packages/bundle-packages.module.css +20 -37
  27. package/lib-esm/components/metrics-table-title/metrics-table-title.js +3 -6
  28. package/lib-esm/components/summary-item/summary-item.js +18 -15
  29. package/lib-esm/components/total-size-type-title/total-size-type-title.js +3 -6
  30. package/lib-esm/ui/dropdown/dropdown.js +19 -9
  31. package/lib-esm/ui/filters/filters.js +5 -3
  32. package/lib-esm/ui/index.js +1 -1
  33. package/lib-esm/ui/popover/index.js +1 -0
  34. package/lib-esm/ui/popover/popover.js +71 -0
  35. package/lib-esm/ui/popover/popover.module.css +66 -0
  36. package/lib-esm/ui/popover/popover.stories.js +14 -0
  37. package/lib-esm/ui/sort-dropdown/sort-dropdown.js +5 -2
  38. package/lib-esm/ui/tooltip/tooltip.js +14 -15
  39. package/lib-esm/ui/tooltip/tooltip.module.css +3 -5
  40. package/package.json +13 -15
  41. package/src/components/bundle-assets/bundle-assets.jsx +42 -51
  42. package/src/components/bundle-assets/bundle-assets.module.css +0 -5
  43. package/src/components/bundle-modules/bundle-modules.jsx +31 -28
  44. package/src/components/bundle-modules/bundle-modules.module.css +4 -0
  45. package/src/components/bundle-packages/bundle-packages.jsx +25 -31
  46. package/src/components/bundle-packages/bundle-packages.module.css +20 -37
  47. package/src/components/metrics-table-options/metrics-table-options.jsx +1 -1
  48. package/src/components/metrics-table-title/metrics-table-title.jsx +3 -4
  49. package/src/components/summary-item/summary-item.jsx +26 -21
  50. package/src/components/total-size-type-title/total-size-type-title.jsx +9 -6
  51. package/src/ui/dropdown/dropdown.jsx +18 -14
  52. package/src/ui/filters/filters.jsx +39 -30
  53. package/src/ui/index.js +1 -1
  54. package/src/ui/popover/index.js +1 -0
  55. package/src/ui/popover/popover.jsx +79 -0
  56. package/src/ui/popover/popover.module.css +66 -0
  57. package/src/ui/sort-dropdown/sort-dropdown.jsx +11 -9
  58. package/src/ui/tooltip/tooltip.jsx +27 -20
  59. package/src/ui/tooltip/tooltip.module.css +3 -5
  60. package/lib/ui/hover-card/hover-card.js +0 -65
  61. package/lib/ui/hover-card/hover-card.module.css +0 -29
  62. package/lib/ui/hover-card/hover-card.stories.js +0 -26
  63. package/lib-esm/ui/hover-card/hover-card.js +0 -45
  64. package/lib-esm/ui/hover-card/hover-card.module.css +0 -29
  65. package/lib-esm/ui/hover-card/hover-card.stories.js +0 -9
  66. package/lib-esm/ui/hover-card/index.js +0 -1
  67. package/src/ui/hover-card/hover-card.jsx +0 -42
  68. package/src/ui/hover-card/hover-card.module.css +0 -29
  69. package/src/ui/hover-card/index.js +0 -1
package/CHANGELOG.md CHANGED
@@ -3,11 +3,60 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [3.2.4-alpha.0](https://github.com/relative-ci/bundle-stats/compare/v3.2.3...v3.2.4-alpha.0) (2022-01-13)
6
+ ## [3.2.5-alpha.17](https://github.com/relative-ci/bundle-stats/compare/v3.2.5-alpha.16...v3.2.5-alpha.17) (2022-01-26)
7
+
8
+ **Note:** Version bump only for package @bundle-stats/ui
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.2.5-alpha.16](https://github.com/relative-ci/bundle-stats/compare/v3.2.5-alpha.15...v3.2.5-alpha.16) (2022-01-26)
15
+
16
+ **Note:** Version bump only for package @bundle-stats/ui
17
+
18
+
19
+
20
+
21
+
22
+ ## [3.2.5-alpha.15](https://github.com/relative-ci/bundle-stats/compare/v3.2.5-alpha.14...v3.2.5-alpha.15) (2022-01-26)
23
+
24
+ **Note:** Version bump only for package @bundle-stats/ui
25
+
26
+
27
+
28
+
29
+
30
+ ## [3.2.5-alpha.14](https://github.com/relative-ci/bundle-stats/compare/v3.2.5-alpha.13...v3.2.5-alpha.14) (2022-01-26)
31
+
32
+ **Note:** Version bump only for package @bundle-stats/ui
33
+
34
+
35
+
36
+
37
+
38
+ ## [3.2.5-alpha.13](https://github.com/relative-ci/bundle-stats/compare/v3.2.5-alpha.12...v3.2.5-alpha.13) (2022-01-26)
39
+
40
+ **Note:** Version bump only for package @bundle-stats/ui
41
+
42
+
43
+
44
+
45
+
46
+ ## [3.2.5-alpha.12](https://github.com/relative-ci/bundle-stats/compare/v3.2.4...v3.2.5-alpha.12) (2022-01-26)
47
+
48
+ **Note:** Version bump only for package @bundle-stats/ui
49
+
50
+
51
+
52
+
53
+
54
+ ## [3.2.4](https://github.com/relative-ci/bundle-stats/compare/v3.2.3...v3.2.4) (2022-01-17)
7
55
 
8
56
 
9
57
  ### Bug Fixes
10
58
 
59
+ * **ui:** Icon - center by default ([8acaf63](https://github.com/relative-ci/bundle-stats/commit/8acaf63273249cafe4a89e701a3afb4555037411))
11
60
  * **ui:** Icon - center by default ([889753c](https://github.com/relative-ci/bundle-stats/commit/889753c0feb236130a2707fbc352310ef07c7740))
12
61
  * **ui:** Remove popover component ([e07d7a9](https://github.com/relative-ci/bundle-stats/commit/e07d7a91640f67b4f99320e1af92f1092a6e610d))
13
62
 
@@ -29,7 +29,7 @@ var _icon = require("../../ui/icon");
29
29
 
30
30
  var _fileName = require("../../ui/file-name");
31
31
 
32
- var _hoverCard = require("../../ui/hover-card");
32
+ var _popover = require("../../ui/popover");
33
33
 
34
34
  var _tooltip = require("../../ui/tooltip");
35
35
 
@@ -137,11 +137,11 @@ var getRenderRowHeader = function getRenderRowHeader(_ref6) {
137
137
  isChunk = item.isChunk,
138
138
  isEntry = item.isEntry,
139
139
  isInitial = item.isInitial;
140
- return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
141
- label: /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
142
- space: "xxxsmall",
143
- className: _bundleAssetsModule["default"].assetName
144
- }, /*#__PURE__*/_react["default"].createElement("div", {
140
+ return /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
141
+ label: /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
142
+ name: label
143
+ }),
144
+ icon: /*#__PURE__*/_react["default"].createElement("div", {
145
145
  className: _bundleAssetsModule["default"].assetInfoFlags
146
146
  }, isNotPredictive && /*#__PURE__*/_react["default"].createElement(_tooltip.Tooltip, {
147
147
  className: _bundleAssetsModule["default"].notPredictive,
@@ -160,9 +160,7 @@ var getRenderRowHeader = function getRenderRowHeader(_ref6) {
160
160
  }, "e"), isInitial && /*#__PURE__*/_react["default"].createElement("span", {
161
161
  title: "Initial",
162
162
  className: _bundleAssetsModule["default"].flagInitial
163
- }, "i")), /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
164
- name: label
165
- }))
163
+ }, "i"))
166
164
  }, /*#__PURE__*/_react["default"].createElement(_assetInfo.AssetInfo, {
167
165
  className: _bundleAssetsModule["default"].assetInfo,
168
166
  item: item,
@@ -8,11 +8,6 @@
8
8
  margin-right: -1px; /** collapse border */
9
9
  }
10
10
 
11
- .assetName {
12
- display: inline-flex;
13
- align-items: center;
14
- }
15
-
16
11
  .notPredictive {
17
12
  margin-right: var(--space-xxsmall);
18
13
  display: inline-block;
@@ -35,7 +35,7 @@ var _fileName = require("../../ui/file-name");
35
35
 
36
36
  var _filters = require("../../ui/filters");
37
37
 
38
- var _hoverCard = require("../../ui/hover-card");
38
+ var _popover = require("../../ui/popover");
39
39
 
40
40
  var _sortDropdown = require("../../ui/sort-dropdown");
41
41
 
@@ -67,6 +67,18 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
67
67
 
68
68
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
69
69
 
70
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
71
+
72
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
73
+
74
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
75
+
76
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
77
+
78
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
79
+
80
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
81
+
70
82
  var RowHeader = function RowHeader(_ref) {
71
83
  var row = _ref.row,
72
84
  chunks = _ref.chunks,
@@ -74,18 +86,35 @@ var RowHeader = function RowHeader(_ref) {
74
86
  CustomComponentLink = _ref.CustomComponentLink;
75
87
  var chunkIds = (0, _map2["default"])(chunks, 'id');
76
88
 
89
+ var _useState = (0, _react.useState)(false),
90
+ _useState2 = _slicedToArray(_useState, 2),
91
+ showPopopver = _useState2[0],
92
+ setPopover = _useState2[1];
93
+
94
+ var handleOnMouseEnter = (0, _react.useCallback)(function () {
95
+ return setPopover(true);
96
+ }, [showPopopver]);
97
+
77
98
  var content = /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
78
99
  name: row.label
79
100
  });
80
101
 
81
- return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
102
+ return /*#__PURE__*/_react["default"].createElement("div", {
103
+ onMouseEnter: handleOnMouseEnter
104
+ }, !showPopopver ? content : /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
105
+ ariaLabel: "View module info",
82
106
  label: content
83
- }, /*#__PURE__*/_react["default"].createElement(_moduleInfo.ModuleInfo, {
84
- item: row,
85
- chunks: chunks,
86
- chunkIds: chunkIds,
87
- labels: labels,
88
- customComponentLink: CustomComponentLink
107
+ }, function (_ref2) {
108
+ var popoverToggle = _ref2.popoverToggle;
109
+ return /*#__PURE__*/_react["default"].createElement(_moduleInfo.ModuleInfo, {
110
+ className: _bundleModulesModule["default"].namePopover,
111
+ item: row,
112
+ chunks: chunks,
113
+ chunkIds: chunkIds,
114
+ labels: labels,
115
+ customComponentLink: CustomComponentLink,
116
+ onClick: popoverToggle
117
+ });
89
118
  }));
90
119
  };
91
120
 
@@ -104,10 +133,10 @@ RowHeader.defaultProps = {
104
133
  chunks: []
105
134
  };
106
135
 
107
- var getRenderRowHeader = function getRenderRowHeader(_ref2) {
108
- var labels = _ref2.labels,
109
- chunks = _ref2.chunks,
110
- CustomComponentLink = _ref2.CustomComponentLink;
136
+ var getRenderRowHeader = function getRenderRowHeader(_ref3) {
137
+ var labels = _ref3.labels,
138
+ chunks = _ref3.chunks,
139
+ CustomComponentLink = _ref3.CustomComponentLink;
111
140
  return function (row) {
112
141
  return /*#__PURE__*/_react["default"].createElement(RowHeader, {
113
142
  row: row,
@@ -118,25 +147,25 @@ var getRenderRowHeader = function getRenderRowHeader(_ref2) {
118
147
  };
119
148
  };
120
149
 
121
- var BundleModules = function BundleModules(_ref3) {
150
+ var BundleModules = function BundleModules(_ref4) {
122
151
  var _MODULE_SOURCE_TYPE, _objectSpread2;
123
152
 
124
- var className = _ref3.className,
125
- jobs = _ref3.jobs,
126
- items = _ref3.items,
127
- chunks = _ref3.chunks,
128
- totalRowCount = _ref3.totalRowCount,
129
- updateFilters = _ref3.updateFilters,
130
- resetFilters = _ref3.resetFilters,
131
- resetAllFilters = _ref3.resetAllFilters,
132
- filters = _ref3.filters,
133
- sortFields = _ref3.sortFields,
134
- sort = _ref3.sort,
135
- updateSort = _ref3.updateSort,
136
- search = _ref3.search,
137
- updateSearch = _ref3.updateSearch,
138
- hasActiveFilters = _ref3.hasActiveFilters,
139
- CustomComponentLink = _ref3.customComponentLink;
153
+ var className = _ref4.className,
154
+ jobs = _ref4.jobs,
155
+ items = _ref4.items,
156
+ chunks = _ref4.chunks,
157
+ totalRowCount = _ref4.totalRowCount,
158
+ updateFilters = _ref4.updateFilters,
159
+ resetFilters = _ref4.resetFilters,
160
+ resetAllFilters = _ref4.resetAllFilters,
161
+ filters = _ref4.filters,
162
+ sortFields = _ref4.sortFields,
163
+ sort = _ref4.sort,
164
+ updateSort = _ref4.updateSort,
165
+ search = _ref4.search,
166
+ updateSearch = _ref4.updateSearch,
167
+ hasActiveFilters = _ref4.hasActiveFilters,
168
+ CustomComponentLink = _ref4.customComponentLink;
140
169
  var rootClassName = (0, _classnames["default"])(_bundleModulesModule["default"].root, className);
141
170
  var labels = (0, _react.useMemo)(function () {
142
171
  return (0, _map2["default"])(jobs, 'label');
@@ -170,9 +199,9 @@ var BundleModules = function BundleModules(_ref3) {
170
199
  defaultValue: (0, _get2["default"])(filters, "".concat(_utils.MODULE_SOURCE_TYPE, ".").concat(_utils.MODULE_FILTERS.THIRD_PARTY), true)
171
200
  }), _MODULE_SOURCE_TYPE)), _objectSpread2), !(0, _isEmpty2["default"])(chunks) && _defineProperty({}, _utils.MODULE_CHUNK, _objectSpread({
172
201
  label: 'Chunk'
173
- }, chunks.reduce(function (chunkFilters, _ref4) {
174
- var id = _ref4.id,
175
- name = _ref4.name;
202
+ }, chunks.reduce(function (chunkFilters, _ref5) {
203
+ var id = _ref5.id,
204
+ name = _ref5.name;
176
205
  return _objectSpread(_objectSpread({}, chunkFilters), {}, _defineProperty({}, id, {
177
206
  label: name,
178
207
  defaultValue: (0, _get2["default"])(filters, "".concat(_utils.MODULE_CHUNK, ".").concat(id), true)
@@ -190,8 +219,8 @@ var BundleModules = function BundleModules(_ref3) {
190
219
  className: rootClassName
191
220
  }, /*#__PURE__*/_react["default"].createElement(_toolbar.Toolbar, {
192
221
  className: _bundleModulesModule["default"].toolbar,
193
- renderActions: function renderActions(_ref6) {
194
- var actionClassName = _ref6.actionClassName;
222
+ renderActions: function renderActions(_ref7) {
223
+ var actionClassName = _ref7.actionClassName;
195
224
  return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
196
225
  space: "xxsmall",
197
226
  className: (0, _classnames["default"])(_bundleModulesModule["default"].dropdown, actionClassName)
@@ -11,3 +11,7 @@
11
11
  max-width: 240px;
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
+
15
+ .namePopover {
16
+ min-width: 280px;
17
+ }
@@ -27,7 +27,7 @@ var _emptySet = require("../../ui/empty-set");
27
27
 
28
28
  var _filters = require("../../ui/filters");
29
29
 
30
- var _hoverCard = require("../../ui/hover-card");
30
+ var _popover = require("../../ui/popover");
31
31
 
32
32
  var _sortDropdown = require("../../ui/sort-dropdown");
33
33
 
@@ -69,7 +69,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
69
69
 
70
70
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
71
71
 
72
- var PackageCard = function PackageCard(_ref) {
72
+ var PackagePopoverContent = function PackagePopoverContent(_ref) {
73
73
  var name = _ref.name,
74
74
  fullName = _ref.fullName,
75
75
  path = _ref.path,
@@ -84,46 +84,46 @@ var PackageCard = function PackageCard(_ref) {
84
84
 
85
85
  return /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
86
86
  space: "xxsmall",
87
- className: _bundlePackagesModule["default"].packageCard
87
+ className: _bundlePackagesModule["default"].packagePopover
88
88
  }, /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
89
89
  space: "xxxsmall"
90
90
  }, /*#__PURE__*/_react["default"].createElement("h3", {
91
- className: _bundlePackagesModule["default"].packageCardTitle
91
+ className: _bundlePackagesModule["default"].packagePopoverTitle
92
92
  }, normalizedName, packageId && /*#__PURE__*/_react["default"].createElement("span", {
93
- className: _bundlePackagesModule["default"].packageCardTitleIndex
93
+ className: _bundlePackagesModule["default"].packagePopoverTitleIndex
94
94
  }, "".concat(_utils.PACKAGE_ID_SEPARATOR).concat(packageId))), /*#__PURE__*/_react["default"].createElement("p", {
95
- className: _bundlePackagesModule["default"].packageCardPath
95
+ className: _bundlePackagesModule["default"].packagePopoverPath
96
96
  }, /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
97
- className: _bundlePackagesModule["default"].packageCardPathValue,
97
+ className: _bundlePackagesModule["default"].packagePopoverPathValue,
98
98
  name: normalizedPackagePath
99
99
  }))), /*#__PURE__*/_react["default"].createElement("ul", {
100
- className: _bundlePackagesModule["default"].packageCardList
100
+ className: _bundlePackagesModule["default"].packagePopoverList
101
101
  }, /*#__PURE__*/_react["default"].createElement("li", {
102
- className: _bundlePackagesModule["default"].packageCardItem
102
+ className: _bundlePackagesModule["default"].packagePopoverItem
103
103
  }, /*#__PURE__*/_react["default"].createElement("a", {
104
104
  href: "https://www.npmjs.com/package/".concat(normalizedName),
105
105
  target: "_blank",
106
106
  rel: "noreferrer"
107
107
  }, "npmjs.com")), /*#__PURE__*/_react["default"].createElement("li", {
108
- className: _bundlePackagesModule["default"].packageCardItem
108
+ className: _bundlePackagesModule["default"].packagePopoverItem
109
109
  }, /*#__PURE__*/_react["default"].createElement("a", {
110
110
  href: "https://bundlephobia.com/result?p=".concat(normalizedName),
111
111
  target: "_blank",
112
112
  rel: "noreferrer"
113
113
  }, "bundlephobia.com"))), /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
114
114
  space: "xxxsmall",
115
- className: _bundlePackagesModule["default"].packageCardActions
115
+ className: _bundlePackagesModule["default"].packagePopover.actions
116
116
  }, duplicate && /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(CustomComponentLink, (0, _utils.getBundlePackagesByNameComponentLink)(normalizedName), "View all duplicate instances")), /*#__PURE__*/_react["default"].createElement(CustomComponentLink, (0, _utils.getBundleModulesBySearch)(normalizedPackagePath), "Search modules by package path")));
117
117
  };
118
118
 
119
- PackageCard.propTypes = {
119
+ PackagePopoverContent.propTypes = {
120
120
  name: _propTypes["default"].string.isRequired,
121
121
  path: _propTypes["default"].string,
122
122
  fullName: _propTypes["default"].string.isRequired,
123
123
  duplicate: _propTypes["default"].bool.isRequired,
124
124
  CustomComponentLink: _propTypes["default"].elementType.isRequired
125
125
  };
126
- PackageCard.defaultProps = {
126
+ PackagePopoverContent.defaultProps = {
127
127
  path: ''
128
128
  };
129
129
 
@@ -135,25 +135,20 @@ var PackageRowHeader = function PackageRowHeader(_ref2) {
135
135
  var _ref3 = item.runs[0] || {},
136
136
  path = _ref3.path;
137
137
 
138
- return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
139
- space: "xxxsmall",
138
+ return /*#__PURE__*/_react["default"].createElement("span", {
140
139
  className: _bundlePackagesModule["default"].packageNames
141
140
  }, packageNames.map(function (packageName, index) {
142
- var label = /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
143
- space: "xxxsmall",
144
- className: _bundlePackagesModule["default"].packageNameLabel
145
- }, index === packageNames.length - 1 && item.duplicate && /*#__PURE__*/_react["default"].createElement("span", {
146
- className: _bundlePackagesModule["default"].packageNameDuplicate,
141
+ // Render duplicate flag only for the last entry
142
+ var duplicateFlag = index === packageNames.length - 1 && item.duplicate && /*#__PURE__*/_react["default"].createElement("span", {
143
+ className: _bundlePackagesModule["default"].duplicate,
147
144
  title: "Duplicate package"
148
- }, "D"), /*#__PURE__*/_react["default"].createElement("span", {
149
- className: _bundlePackagesModule["default"].packageNameText
150
- }, packageName));
151
-
152
- return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
153
- label: label,
154
- key: packageName,
155
- className: _bundlePackagesModule["default"].packageName
156
- }, /*#__PURE__*/_react["default"].createElement(PackageCard, {
145
+ }, "D");
146
+
147
+ return /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
148
+ className: _bundlePackagesModule["default"].packageName,
149
+ icon: duplicateFlag,
150
+ label: packageName
151
+ }, /*#__PURE__*/_react["default"].createElement(PackagePopoverContent, {
157
152
  name: packageName,
158
153
  path: path,
159
154
  fullName: item.label,
@@ -12,8 +12,20 @@
12
12
  margin-right: -1px; /** collapse border */
13
13
  }
14
14
 
15
- .packageNames {
16
- align-items: center;
15
+ .duplicate {
16
+ margin-right: var(--space-xxxsmall);
17
+ display: inline-block;
18
+ width: var(--space-small);
19
+ height: var(--space-small);
20
+ font-size: 10px;
21
+ font-weight: bold;
22
+ line-height: var(--space-small);
23
+ text-align: center;
24
+ text-transform: uppercase;
25
+ vertical-align: middle;
26
+
27
+ background: var(--color-danger);
28
+ color: var(--color-light);
17
29
  }
18
30
 
19
31
  .packageName {
@@ -26,56 +38,27 @@
26
38
 
27
39
  .packageName + .packageName::before {
28
40
  display: inline-block;
29
- margin: 0 var(--space-xxxsmall) 0 0;
41
+ margin: 0 var(--space-xxxsmall);
30
42
  content: '/';
31
43
  color: var(--color-text-ultra-light);
32
44
  }
33
45
 
34
- .packageNameLabel {
35
- display: inline-flex;
36
- align-items: center;
37
- }
38
-
39
- .packageNameDuplicate {
40
- margin-right: var(--space-xxxsmall);
41
- display: inline-block;
42
- width: var(--space-xsmall);
43
- height: var(--space-xsmall);
44
- font-size: 8px;
45
- font-weight: bold;
46
- line-height: var(--space-xsmall);
47
- text-align: center;
48
- text-transform: uppercase;
49
- vertical-align: middle;
50
-
51
- background: var(--color-danger);
52
- color: var(--color-light);
53
- }
54
-
55
- .packageName:hover,
56
- .packageName:active,
57
- .packageName:focus {
58
- text-decoration: none !important;
59
- }
60
-
61
- .packageName:hover .packageNameText,
62
- .packageName:active .packageNameText,
63
- .packageName:focus .packageNameText {
64
- text-decoration: underline !important;
46
+ .packagePopover {
47
+ min-width: 320px;
65
48
  }
66
49
 
67
- .packageCardTitleIndex {
50
+ .packagePopoverTitleIndex {
68
51
  color: var(--color-text-light);
69
52
  font-weight: normal;
70
53
  }
71
54
 
72
- .packageCardPathValue {
55
+ .packagePopoverPathValue {
73
56
  padding: var(--space-xxxsmall);
74
57
  background: var(--color-highlight-warning);
75
58
  font-family: var(--font-family-monospace);
76
59
  }
77
60
 
78
- .packageCardList {
61
+ .packagePopoverList {
79
62
  padding: 0;
80
63
  list-style: inside;
81
64
  }
@@ -17,9 +17,7 @@ var _flexStack = require("../../layout/flex-stack");
17
17
 
18
18
  var _stack = require("../../layout/stack");
19
19
 
20
- var _icon = require("../../ui/icon");
21
-
22
- var _hoverCard = require("../../ui/hover-card");
20
+ var _popover = require("../../ui/popover");
23
21
 
24
22
  var _metricsTableTitleModule = _interopRequireDefault(require("./metrics-table-title.module.css"));
25
23
 
@@ -39,10 +37,8 @@ var MetricsTableTitle = function MetricsTableTitle(props) {
39
37
  space: "xxxsmall"
40
38
  }, /*#__PURE__*/_react["default"].createElement("span", null, title), info && /*#__PURE__*/_react["default"].createElement("span", {
41
39
  className: _metricsTableTitleModule["default"].info
42
- }, info), (popoverInfo || popoverHref) && /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
43
- label: /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
44
- glyph: "help"
45
- })
40
+ }, info), (popoverInfo || popoverHref) && /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
41
+ icon: "help"
46
42
  }, /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
47
43
  space: "xxxsmall"
48
44
  }, popoverInfo && /*#__PURE__*/_react["default"].createElement("p", null, popoverInfo), popoverHref && /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("a", {
@@ -13,9 +13,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _utils = require("@bundle-stats/utils");
15
15
 
16
- var _icon = require("../../ui/icon");
17
-
18
- var _hoverCard = require("../../ui/hover-card");
16
+ var _popover = require("../../ui/popover");
19
17
 
20
18
  var _skeleton = require("../../ui/skeleton");
21
19
 
@@ -39,23 +37,29 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
39
37
 
40
38
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
41
39
 
42
- var MetricDescriptionCard = function MetricDescriptionCard(_ref) {
40
+ var MetricInfoPopover = function MetricInfoPopover(_ref) {
43
41
  var description = _ref.description,
44
42
  url = _ref.url;
43
+
44
+ // Workaround cases where the parent is a link
45
+ var readMoreOnClick = function readMoreOnClick() {
46
+ window.open(url);
47
+ };
48
+
45
49
  return /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
46
- space: "xxsmall"
47
- }, /*#__PURE__*/_react["default"].createElement("p", null, description), url && /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("a", {
48
- href: url,
49
- target: "_blank",
50
- rel: "noopener noreferrer"
50
+ space: "xxxsmall"
51
+ }, /*#__PURE__*/_react["default"].createElement("p", null, description), url && /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("button", {
52
+ type: "button",
53
+ className: _summaryItemModule["default"].readMoreBtn,
54
+ onClick: readMoreOnClick
51
55
  }, "Read more")));
52
56
  };
53
57
 
54
- MetricDescriptionCard.propTypes = {
58
+ MetricInfoPopover.propTypes = {
55
59
  description: _propTypes["default"].string.isRequired,
56
60
  url: _propTypes["default"].string
57
61
  };
58
- MetricDescriptionCard.defaultProps = {
62
+ MetricInfoPopover.defaultProps = {
59
63
  url: ''
60
64
  };
61
65
 
@@ -89,12 +93,10 @@ var SummaryItem = function SummaryItem(_ref2) {
89
93
  as: "h3",
90
94
  space: "xxxsmall",
91
95
  className: _summaryItemModule["default"].title
92
- }, /*#__PURE__*/_react["default"].createElement("span", null, metric.label), showMetricDescriptionTooltip && /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
96
+ }, /*#__PURE__*/_react["default"].createElement("span", null, metric.label), showMetricDescriptionTooltip && /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
93
97
  className: _summaryItemModule["default"].icon,
94
- label: /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
95
- glyph: "help"
96
- })
97
- }, /*#__PURE__*/_react["default"].createElement(MetricDescriptionCard, metric))), !loading ? /*#__PURE__*/_react["default"].createElement(_stack.Stack, null, /*#__PURE__*/_react["default"].createElement(_metric.Metric, {
98
+ icon: "help"
99
+ }, /*#__PURE__*/_react["default"].createElement(MetricInfoPopover, metric))), !loading ? /*#__PURE__*/_react["default"].createElement(_stack.Stack, null, /*#__PURE__*/_react["default"].createElement(_metric.Metric, {
98
100
  className: _summaryItemModule["default"].currentMetric,
99
101
  value: current,
100
102
  formatter: metric.formatter,
@@ -19,9 +19,7 @@ var _flexStack = require("../../layout/flex-stack");
19
19
 
20
20
  var _stack = require("../../layout/stack");
21
21
 
22
- var _icon = require("../../ui/icon");
23
-
24
- var _hoverCard = require("../../ui/hover-card");
22
+ var _popover = require("../../ui/popover");
25
23
 
26
24
  var _totalSizeTypeTitleModule = _interopRequireDefault(require("./total-size-type-title.module.css"));
27
25
 
@@ -32,10 +30,8 @@ var TotalSizeTypeTitle = function TotalSizeTypeTitle(_ref) {
32
30
  return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
33
31
  space: "xxxsmall",
34
32
  className: (0, _classnames["default"])(_totalSizeTypeTitleModule["default"].title, className)
35
- }, /*#__PURE__*/_react["default"].createElement("span", null, _i18n["default"].ASSET_TOTALS), /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
36
- label: /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
37
- glyph: "help"
38
- })
33
+ }, /*#__PURE__*/_react["default"].createElement("span", null, _i18n["default"].ASSET_TOTALS), /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
34
+ icon: "help"
39
35
  }, /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
40
36
  space: "xxxsmall"
41
37
  }, /*#__PURE__*/_react["default"].createElement("p", null, _i18n["default"].ASSET_TOTALS_INFO), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("a", {