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

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 +2 -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 +4 -7
  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/lib/ui/index.js CHANGED
@@ -45,12 +45,6 @@ Object.defineProperty(exports, "HorizontalBarChart", {
45
45
  return _horizontalBarChart.HorizontalBarChart;
46
46
  }
47
47
  });
48
- Object.defineProperty(exports, "HoverCard", {
49
- enumerable: true,
50
- get: function get() {
51
- return _hoverCard.HoverCard;
52
- }
53
- });
54
48
  Object.defineProperty(exports, "Icon", {
55
49
  enumerable: true,
56
50
  get: function get() {
@@ -81,6 +75,12 @@ Object.defineProperty(exports, "Panels", {
81
75
  return _panels.Panels;
82
76
  }
83
77
  });
78
+ Object.defineProperty(exports, "Popover", {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _popover.Popover;
82
+ }
83
+ });
84
84
  Object.defineProperty(exports, "Skeleton", {
85
85
  enumerable: true,
86
86
  get: function get() {
@@ -130,14 +130,14 @@ var _icon = require("./icon");
130
130
 
131
131
  var _input = require("./input");
132
132
 
133
- var _hoverCard = require("./hover-card");
134
-
135
133
  var _loader = require("./loader");
136
134
 
137
135
  var _logo = require("./logo");
138
136
 
139
137
  var _panels = require("./panels");
140
138
 
139
+ var _popover = require("./popover");
140
+
141
141
  var _skeleton = require("./skeleton");
142
142
 
143
143
  var _sortDropdown = require("./sort-dropdown");
@@ -4,15 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
- var _hoverCard = require("./hover-card");
7
+ var _popover = require("./popover");
8
8
 
9
- Object.keys(_hoverCard).forEach(function (key) {
9
+ Object.keys(_popover).forEach(function (key) {
10
10
  if (key === "default" || key === "__esModule") return;
11
- if (key in exports && exports[key] === _hoverCard[key]) return;
11
+ if (key in exports && exports[key] === _popover[key]) return;
12
12
  Object.defineProperty(exports, key, {
13
13
  enumerable: true,
14
14
  get: function get() {
15
- return _hoverCard[key];
15
+ return _popover[key];
16
16
  }
17
17
  });
18
18
  });
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.Popover = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+
16
+ var _Popover = require("reakit/Popover");
17
+
18
+ var _icon = require("../icon");
19
+
20
+ var _popoverModule = _interopRequireDefault(require("./popover.module.css"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ 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); }
29
+
30
+ var Popover = function Popover(_ref) {
31
+ var className = _ref.className,
32
+ icon = _ref.icon,
33
+ label = _ref.label,
34
+ ariaLabel = _ref.ariaLabel,
35
+ children = _ref.children;
36
+ var popover = (0, _Popover.usePopoverState)({
37
+ baseId: process.env.NODE_ENV === 'test' && 'id-test',
38
+ gutter: 12,
39
+ modal: true,
40
+ placement: 'top'
41
+ });
42
+ var onCloseButtonClick = (0, _react.useCallback)(function (event) {
43
+ event.preventDefault();
44
+ popover.toggle();
45
+ }, [popover]);
46
+ var onButtonClick = (0, _react.useCallback)(function (event) {
47
+ event.preventDefault();
48
+ popover.toggle();
49
+ }, [popover]);
50
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Popover.PopoverDisclosure, _extends({
51
+ className: (0, _classnames["default"])(_popoverModule["default"].button, className)
52
+ }, popover, {
53
+ onClick: onButtonClick,
54
+ "aria-label": ariaLabel
55
+ }), icon && (typeof icon === 'string' ? /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
56
+ className: _popoverModule["default"].icon,
57
+ glyph: icon
58
+ }) : icon), label && /*#__PURE__*/_react["default"].createElement("span", {
59
+ className: _popoverModule["default"].label
60
+ }, label)), /*#__PURE__*/_react["default"].createElement(_Popover.Popover, _extends({
61
+ className: _popoverModule["default"].popover
62
+ }, popover, {
63
+ tabIndex: 0
64
+ }), /*#__PURE__*/_react["default"].createElement(_Popover.PopoverArrow, _extends({
65
+ className: _popoverModule["default"].arrow
66
+ }, popover, {
67
+ size: 16
68
+ })), typeof children === 'function' ? children({
69
+ popoverToggle: popover.toggle
70
+ }) : children, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
71
+ glyph: "close",
72
+ as: "button",
73
+ type: "button",
74
+ className: _popoverModule["default"].closeBtn,
75
+ onClick: onCloseButtonClick
76
+ })));
77
+ };
78
+
79
+ exports.Popover = Popover;
80
+ Popover.propTypes = {
81
+ className: _propTypes["default"].string,
82
+ label: _propTypes["default"].element,
83
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element]),
84
+ children: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element, _propTypes["default"].func]).isRequired,
85
+ ariaLabel: _propTypes["default"].string
86
+ };
87
+ Popover.defaultProps = {
88
+ className: '',
89
+ icon: '',
90
+ label: '',
91
+ ariaLabel: 'View more info'
92
+ };
@@ -0,0 +1,66 @@
1
+ .button {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: flex-start;
5
+ border: none;
6
+ outline: none;
7
+ padding: 0;
8
+ background: none;
9
+ color: inherit;
10
+ cursor: pointer;
11
+ line-height: inherit;
12
+ text-align: inherit;
13
+ }
14
+
15
+ .button:hover,
16
+ .button:active,
17
+ .button:focus {
18
+ color: var(--color-primary);
19
+ }
20
+
21
+ .button:hover .label {
22
+ text-decoration: underline;
23
+ }
24
+
25
+ .popover {
26
+ padding: var(--space-small) var(--space-large) var(--space-small) var(--space-small);
27
+ border-radius: var(--radius-small);
28
+ max-width: 360px;
29
+ outline: none;
30
+ filter: drop-shadow(0 0 var(--space-xxxsmall) var(--color-shadow));
31
+ background: var(--color-light);
32
+ font-size: var(--size-small);
33
+ }
34
+
35
+ .arrow svg {
36
+ display: block;
37
+ }
38
+
39
+ .arrow :global .fill {
40
+ fill: var(--color-light);
41
+ }
42
+
43
+ .arrow :global .stroke {
44
+ fill: var(--color-light);
45
+ }
46
+
47
+ .closeBtn {
48
+ position: absolute;
49
+ right: 0;
50
+ top: 0;
51
+ width: var(--space-large);
52
+ height: var(--space-large);
53
+ padding: var(--space-xxsmall);
54
+ background: none;
55
+ border: none;
56
+ cursor: pointer;
57
+ color: var(--color-text-ultra-light);
58
+ transition: var(--transition-out);
59
+ }
60
+
61
+ .closeBtn:hover,
62
+ .closeBtn:active,
63
+ .closeBtn:focus {
64
+ color: var(--color-text-light);
65
+ transition: var(--transition-in);
66
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+
5
+ var _react2 = require("@storybook/react");
6
+
7
+ var _stories = require("../../stories");
8
+
9
+ var _ = require(".");
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
+
13
+ var stories = (0, _react2.storiesOf)('UI/Popover', module);
14
+ stories.addDecorator((0, _stories.getWrapperDecorator)({
15
+ padding: '64px'
16
+ }));
17
+ stories.add('default', function () {
18
+ return /*#__PURE__*/_react["default"].createElement(_.Popover, {
19
+ label: "Job #100"
20
+ }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
21
+ });
22
+ stories.add('with icon', function () {
23
+ return /*#__PURE__*/_react["default"].createElement(_.Popover, {
24
+ icon: "help"
25
+ }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
26
+ });
@@ -47,9 +47,11 @@ var SortDropdown = function SortDropdown(props) {
47
47
  return /*#__PURE__*/_react["default"].createElement(_dropdown.Dropdown, {
48
48
  className: rootClassName,
49
49
  label: customLabel,
50
- glyph: "sort"
50
+ glyph: "sort",
51
+ align: "right"
51
52
  }, function (_ref) {
52
53
  var MenuItem = _ref.MenuItem,
54
+ menu = _ref.menu,
53
55
  menuItemClassName = _ref.menuItemClassName,
54
56
  menuItemActiveClassName = _ref.menuItemActiveClassName;
55
57
 
@@ -59,6 +61,7 @@ var SortDropdown = function SortDropdown(props) {
59
61
  field: newField,
60
62
  direction: newDirection
61
63
  });
64
+ menu.toggle();
62
65
  };
63
66
  };
64
67
 
@@ -80,7 +83,7 @@ var SortDropdown = function SortDropdown(props) {
80
83
  var isActive = field === key;
81
84
  return /*#__PURE__*/_react["default"].createElement(MenuItem, _extends({
82
85
  key: key
83
- }, buttonProps, {
86
+ }, menu, buttonProps, {
84
87
  className: (0, _classnames["default"])(buttonProps.className, menuItemClassName, _sortDropdownModule["default"].item, isActive && menuItemActiveClassName, isActive && _sortDropdownModule["default"].active)
85
88
  }), /*#__PURE__*/_react["default"].createElement("span", {
86
89
  className: _sortDropdownModule["default"].itemLabel
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -13,16 +11,12 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
11
 
14
12
  var _classnames = _interopRequireDefault(require("classnames"));
15
13
 
16
- var BaseTooltip = _interopRequireWildcard(require("@radix-ui/react-tooltip"));
14
+ var _Tooltip = require("reakit/Tooltip");
17
15
 
18
16
  var _tooltipModule = _interopRequireDefault(require("./tooltip.module.css"));
19
17
 
20
18
  var _excluded = ["className", "title", "children", "as", "containerRef", "darkMode"];
21
19
 
22
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
-
24
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
21
 
28
22
  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); }
@@ -31,9 +25,6 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
31
25
 
32
26
  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; }
33
27
 
34
- var OFFSET = 9;
35
- var DELAY = 200;
36
-
37
28
  var Tooltip = function Tooltip(props) {
38
29
  var className = props.className,
39
30
  title = props.title,
@@ -44,20 +35,21 @@ var Tooltip = function Tooltip(props) {
44
35
  restProps = _objectWithoutProperties(props, _excluded);
45
36
 
46
37
  var rootClassName = (0, _classnames["default"])(_tooltipModule["default"].root, className);
47
- var tooltipClassName = (0, _classnames["default"])(_tooltipModule["default"].tooltip, darkMode && _tooltipModule["default"].tooltipDarkMode);
48
- return /*#__PURE__*/_react["default"].createElement(BaseTooltip.Provider, null, /*#__PURE__*/_react["default"].createElement(BaseTooltip.Root, {
49
- delayDuration: DELAY
50
- }, /*#__PURE__*/_react["default"].createElement(BaseTooltip.Trigger, {
51
- asChild: true
52
- }, /*#__PURE__*/_react["default"].createElement(Component, _extends({
38
+ var tooltipProps = (0, _Tooltip.useTooltipState)({
39
+ baseId: process.env.NODE_ENV === 'test' && 'id-test',
40
+ placement: 'top'
41
+ });
42
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Tooltip.TooltipReference, _extends({
43
+ as: Component,
53
44
  className: rootClassName
54
- }, restProps), children)), title && /*#__PURE__*/_react["default"].createElement(BaseTooltip.Content, {
55
- className: tooltipClassName
56
- }, /*#__PURE__*/_react["default"].createElement(BaseTooltip.Arrow, {
45
+ }, ref ? {
46
+ ref: ref
47
+ } : {}, restProps, tooltipProps), children), title && /*#__PURE__*/_react["default"].createElement(_Tooltip.Tooltip, _extends({}, tooltipProps, {
48
+ className: (0, _classnames["default"])(_tooltipModule["default"].tooltip, darkMode && _tooltipModule["default"].tooltipDarkMode)
49
+ }), /*#__PURE__*/_react["default"].createElement(_Tooltip.TooltipArrow, _extends({}, tooltipProps, {
57
50
  className: _tooltipModule["default"].arrow,
58
- startOffset: OFFSET,
59
- offset: OFFSET
60
- }), title)));
51
+ size: 12
52
+ })), title));
61
53
  };
62
54
 
63
55
  exports.Tooltip = Tooltip;
@@ -1,7 +1,4 @@
1
1
  .root {
2
- appearance: none;
3
- border: none;
4
- background: none;
5
2
  position: relative;
6
3
  color: inherit;
7
4
  line-height: inherit;
@@ -23,7 +20,8 @@
23
20
  line-height: var(--space-small);
24
21
  }
25
22
 
26
- .arrow {
23
+ .arrow svg {
24
+ display: block;
27
25
  fill: var(--color-light);
28
26
  }
29
27
 
@@ -32,6 +30,6 @@
32
30
  color: var(--color-light);
33
31
  }
34
32
 
35
- .tooltipDarkMode .arrow {
33
+ .tooltipDarkMode .arrow svg {
36
34
  fill: var(--color-text);
37
35
  }
@@ -12,7 +12,7 @@ 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 { HoverCard } from '../../ui/hover-card';
15
+ import { Popover } from '../../ui/popover';
16
16
  import { Tooltip } from '../../ui/tooltip';
17
17
  import { Filters } from '../../ui/filters';
18
18
  import { SortDropdown } from '../../ui/sort-dropdown';
@@ -86,11 +86,11 @@ const getRenderRowHeader = _ref4 => {
86
86
  isEntry,
87
87
  isInitial
88
88
  } = item;
89
- return /*#__PURE__*/React.createElement(HoverCard, {
90
- label: /*#__PURE__*/React.createElement(FlexStack, {
91
- space: "xxxsmall",
92
- className: css.assetName
93
- }, /*#__PURE__*/React.createElement("div", {
89
+ return /*#__PURE__*/React.createElement(Popover, {
90
+ label: /*#__PURE__*/React.createElement(FileName, {
91
+ name: label
92
+ }),
93
+ icon: /*#__PURE__*/React.createElement("div", {
94
94
  className: css.assetInfoFlags
95
95
  }, isNotPredictive && /*#__PURE__*/React.createElement(Tooltip, {
96
96
  className: css.notPredictive,
@@ -109,9 +109,7 @@ const getRenderRowHeader = _ref4 => {
109
109
  }, "e"), isInitial && /*#__PURE__*/React.createElement("span", {
110
110
  title: "Initial",
111
111
  className: css.flagInitial
112
- }, "i")), /*#__PURE__*/React.createElement(FileName, {
113
- name: label
114
- }))
112
+ }, "i"))
115
113
  }, /*#__PURE__*/React.createElement(AssetInfo, {
116
114
  className: css.assetInfo,
117
115
  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;
@@ -4,7 +4,7 @@ import _get from "lodash/get";
4
4
 
5
5
  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); }
6
6
 
7
- import React, { useMemo } from 'react';
7
+ import React, { useCallback, useMemo, useState } from 'react';
8
8
  import PropTypes from 'prop-types';
9
9
  import cx from 'classnames';
10
10
  import { FILE_TYPE_LABELS, MODULE_SOURCE_FILE_TYPES, MODULE_SOURCE_TYPE, MODULE_CHUNK, MODULE_FILTERS, MODULE_FILE_TYPE } from '@bundle-stats/utils';
@@ -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 { HoverCard } from '../../ui/hover-card';
18
+ import { Popover } from '../../ui/popover';
19
19
  import { SortDropdown } from '../../ui/sort-dropdown';
20
20
  import { Toolbar } from '../../ui/toolbar';
21
21
  import { MetricsTable } from '../metrics-table';
@@ -35,17 +35,29 @@ 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]);
38
40
  const content = /*#__PURE__*/React.createElement(FileName, {
39
41
  name: row.label
40
42
  });
41
- return /*#__PURE__*/React.createElement(HoverCard, {
43
+ return /*#__PURE__*/React.createElement("div", {
44
+ onMouseEnter: handleOnMouseEnter
45
+ }, !showPopopver ? content : /*#__PURE__*/React.createElement(Popover, {
46
+ ariaLabel: "View module info",
42
47
  label: content
43
- }, /*#__PURE__*/React.createElement(ModuleInfo, {
44
- item: row,
45
- chunks: chunks,
46
- chunkIds: chunkIds,
47
- labels: labels,
48
- customComponentLink: CustomComponentLink
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
+ });
49
61
  }));
50
62
  };
51
63
 
@@ -64,12 +76,12 @@ RowHeader.defaultProps = {
64
76
  chunks: []
65
77
  };
66
78
 
67
- const getRenderRowHeader = _ref2 => {
79
+ const getRenderRowHeader = _ref3 => {
68
80
  let {
69
81
  labels,
70
82
  chunks,
71
83
  CustomComponentLink
72
- } = _ref2;
84
+ } = _ref3;
73
85
  return row => /*#__PURE__*/React.createElement(RowHeader, {
74
86
  row: row,
75
87
  chunks: chunks,
@@ -78,7 +90,7 @@ const getRenderRowHeader = _ref2 => {
78
90
  });
79
91
  };
80
92
 
81
- export const BundleModules = _ref3 => {
93
+ export const BundleModules = _ref4 => {
82
94
  let {
83
95
  className,
84
96
  jobs,
@@ -96,7 +108,7 @@ export const BundleModules = _ref3 => {
96
108
  updateSearch,
97
109
  hasActiveFilters,
98
110
  customComponentLink: CustomComponentLink
99
- } = _ref3;
111
+ } = _ref4;
100
112
  const rootClassName = cx(css.root, className);
101
113
  const labels = useMemo(() => _map(jobs, 'label'), [jobs]);
102
114
  const renderRowHeader = useMemo(() => getRenderRowHeader({
@@ -131,11 +143,11 @@ export const BundleModules = _ref3 => {
131
143
  ...(!_isEmpty(chunks) && {
132
144
  [MODULE_CHUNK]: {
133
145
  label: 'Chunk',
134
- ...chunks.reduce((chunkFilters, _ref4) => {
146
+ ...chunks.reduce((chunkFilters, _ref5) => {
135
147
  let {
136
148
  id,
137
149
  name
138
- } = _ref4;
150
+ } = _ref5;
139
151
  return { ...chunkFilters,
140
152
  [id]: {
141
153
  label: name,
@@ -160,10 +172,10 @@ export const BundleModules = _ref3 => {
160
172
  className: rootClassName
161
173
  }, /*#__PURE__*/React.createElement(Toolbar, {
162
174
  className: css.toolbar,
163
- renderActions: _ref5 => {
175
+ renderActions: _ref6 => {
164
176
  let {
165
177
  actionClassName
166
- } = _ref5;
178
+ } = _ref6;
167
179
  return /*#__PURE__*/React.createElement(FlexStack, {
168
180
  space: "xxsmall",
169
181
  className: cx(css.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
+ }
@@ -10,7 +10,7 @@ import { Stack } from '../../layout/stack';
10
10
  import { FlexStack } from '../../layout/flex-stack';
11
11
  import { EmptySet } from '../../ui/empty-set';
12
12
  import { Filters } from '../../ui/filters';
13
- import { HoverCard } from '../../ui/hover-card';
13
+ import { Popover } from '../../ui/popover';
14
14
  import { SortDropdown } from '../../ui/sort-dropdown';
15
15
  import { Toolbar } from '../../ui/toolbar';
16
16
  import { FileName } from '../../ui/file-name';
@@ -21,7 +21,7 @@ import { MetricsTableOptions } from '../metrics-table-options';
21
21
  import { MetricsTableTitle } from '../metrics-table-title';
22
22
  import css from './bundle-packages.module.css';
23
23
 
24
- const PackageCard = _ref => {
24
+ const PackagePopoverContent = _ref => {
25
25
  let {
26
26
  name,
27
27
  fullName,
@@ -33,46 +33,46 @@ const PackageCard = _ref => {
33
33
  const [normalizedName, packageId] = name.split(PACKAGE_ID_SEPARATOR);
34
34
  return /*#__PURE__*/React.createElement(Stack, {
35
35
  space: "xxsmall",
36
- className: css.packageCard
36
+ className: css.packagePopover
37
37
  }, /*#__PURE__*/React.createElement(Stack, {
38
38
  space: "xxxsmall"
39
39
  }, /*#__PURE__*/React.createElement("h3", {
40
- className: css.packageCardTitle
40
+ className: css.packagePopoverTitle
41
41
  }, normalizedName, packageId && /*#__PURE__*/React.createElement("span", {
42
- className: css.packageCardTitleIndex
42
+ className: css.packagePopoverTitleIndex
43
43
  }, `${PACKAGE_ID_SEPARATOR}${packageId}`)), /*#__PURE__*/React.createElement("p", {
44
- className: css.packageCardPath
44
+ className: css.packagePopoverPath
45
45
  }, /*#__PURE__*/React.createElement(FileName, {
46
- className: css.packageCardPathValue,
46
+ className: css.packagePopoverPathValue,
47
47
  name: normalizedPackagePath
48
48
  }))), /*#__PURE__*/React.createElement("ul", {
49
- className: css.packageCardList
49
+ className: css.packagePopoverList
50
50
  }, /*#__PURE__*/React.createElement("li", {
51
- className: css.packageCardItem
51
+ className: css.packagePopoverItem
52
52
  }, /*#__PURE__*/React.createElement("a", {
53
53
  href: `https://www.npmjs.com/package/${normalizedName}`,
54
54
  target: "_blank",
55
55
  rel: "noreferrer"
56
56
  }, "npmjs.com")), /*#__PURE__*/React.createElement("li", {
57
- className: css.packageCardItem
57
+ className: css.packagePopoverItem
58
58
  }, /*#__PURE__*/React.createElement("a", {
59
59
  href: `https://bundlephobia.com/result?p=${normalizedName}`,
60
60
  target: "_blank",
61
61
  rel: "noreferrer"
62
62
  }, "bundlephobia.com"))), /*#__PURE__*/React.createElement(Stack, {
63
63
  space: "xxxsmall",
64
- className: css.packageCardActions
64
+ className: css.packagePopover.actions
65
65
  }, duplicate && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(CustomComponentLink, getBundlePackagesByNameComponentLink(normalizedName), "View all duplicate instances")), /*#__PURE__*/React.createElement(CustomComponentLink, getBundleModulesBySearch(normalizedPackagePath), "Search modules by package path")));
66
66
  };
67
67
 
68
- PackageCard.propTypes = {
68
+ PackagePopoverContent.propTypes = {
69
69
  name: PropTypes.string.isRequired,
70
70
  path: PropTypes.string,
71
71
  fullName: PropTypes.string.isRequired,
72
72
  duplicate: PropTypes.bool.isRequired,
73
73
  CustomComponentLink: PropTypes.elementType.isRequired
74
74
  };
75
- PackageCard.defaultProps = {
75
+ PackagePopoverContent.defaultProps = {
76
76
  path: ''
77
77
  };
78
78
 
@@ -85,24 +85,19 @@ const PackageRowHeader = _ref2 => {
85
85
  const {
86
86
  path
87
87
  } = item.runs[0] || {};
88
- return /*#__PURE__*/React.createElement(FlexStack, {
89
- space: "xxxsmall",
88
+ return /*#__PURE__*/React.createElement("span", {
90
89
  className: css.packageNames
91
90
  }, packageNames.map((packageName, index) => {
92
- const label = /*#__PURE__*/React.createElement(FlexStack, {
93
- space: "xxxsmall",
94
- className: css.packageNameLabel
95
- }, index === packageNames.length - 1 && item.duplicate && /*#__PURE__*/React.createElement("span", {
96
- className: css.packageNameDuplicate,
91
+ // Render duplicate flag only for the last entry
92
+ const duplicateFlag = index === packageNames.length - 1 && item.duplicate && /*#__PURE__*/React.createElement("span", {
93
+ className: css.duplicate,
97
94
  title: "Duplicate package"
98
- }, "D"), /*#__PURE__*/React.createElement("span", {
99
- className: css.packageNameText
100
- }, packageName));
101
- return /*#__PURE__*/React.createElement(HoverCard, {
102
- label: label,
103
- key: packageName,
104
- className: css.packageName
105
- }, /*#__PURE__*/React.createElement(PackageCard, {
95
+ }, "D");
96
+ return /*#__PURE__*/React.createElement(Popover, {
97
+ className: css.packageName,
98
+ icon: duplicateFlag,
99
+ label: packageName
100
+ }, /*#__PURE__*/React.createElement(PackagePopoverContent, {
106
101
  name: packageName,
107
102
  path: path,
108
103
  fullName: item.label,