@bundle-stats/ui 3.2.6-beta.1 → 3.2.6-beta.2

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 (80) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/lib/components/bundle-assets/bundle-assets.js +8 -6
  3. package/lib/components/bundle-assets/bundle-assets.module.css +5 -0
  4. package/lib/components/bundle-modules/bundle-modules.js +4 -5
  5. package/lib/components/bundle-packages/bundle-packages.js +6 -4
  6. package/lib/components/bundle-packages/bundle-packages.module.css +4 -0
  7. package/lib/components/metrics-table-title/metrics-table-title.js +9 -7
  8. package/lib/components/metrics-table-title/metrics-table-title.module.css +2 -0
  9. package/lib/components/module-info/module-info.module.css +1 -0
  10. package/lib/components/summary-item/summary-item.js +14 -17
  11. package/lib/components/summary-item/summary-item.module.css +1 -19
  12. package/lib/components/total-size-type-title/total-size-type-title.js +7 -3
  13. package/lib/css/variables.css +1 -1
  14. package/lib/hooks/search-params.js +6 -6
  15. package/lib/ui/dropdown/dropdown.js +15 -24
  16. package/lib/ui/dropdown/dropdown.module.css +7 -7
  17. package/lib/ui/dropdown/dropdown.stories.js +2 -9
  18. package/lib/ui/hover-card/hover-card.js +100 -0
  19. package/lib/ui/hover-card/hover-card.module.css +52 -0
  20. package/lib/ui/hover-card/hover-card.stories.js +56 -0
  21. package/lib/ui/{popover → hover-card}/index.js +4 -4
  22. package/lib/ui/icon/icon.js +6 -6
  23. package/lib/ui/index.js +0 -8
  24. package/lib/ui/tooltip/tooltip.js +10 -9
  25. package/lib-esm/components/bundle-assets/bundle-assets.js +8 -6
  26. package/lib-esm/components/bundle-assets/bundle-assets.module.css +5 -0
  27. package/lib-esm/components/bundle-modules/bundle-modules.js +4 -5
  28. package/lib-esm/components/bundle-packages/bundle-packages.js +6 -4
  29. package/lib-esm/components/bundle-packages/bundle-packages.module.css +4 -0
  30. package/lib-esm/components/metrics-table-title/metrics-table-title.js +8 -7
  31. package/lib-esm/components/metrics-table-title/metrics-table-title.module.css +2 -0
  32. package/lib-esm/components/module-info/module-info.module.css +1 -0
  33. package/lib-esm/components/summary-item/summary-item.js +13 -17
  34. package/lib-esm/components/summary-item/summary-item.module.css +1 -19
  35. package/lib-esm/components/total-size-type-title/total-size-type-title.js +6 -3
  36. package/lib-esm/css/variables.css +1 -1
  37. package/lib-esm/hooks/search-params.js +6 -6
  38. package/lib-esm/ui/dropdown/dropdown.js +14 -23
  39. package/lib-esm/ui/dropdown/dropdown.module.css +7 -7
  40. package/lib-esm/ui/dropdown/dropdown.stories.js +2 -7
  41. package/lib-esm/ui/hover-card/hover-card.js +86 -0
  42. package/lib-esm/ui/hover-card/hover-card.module.css +52 -0
  43. package/lib-esm/ui/hover-card/hover-card.stories.js +35 -0
  44. package/lib-esm/ui/hover-card/index.js +1 -0
  45. package/lib-esm/ui/icon/icon.js +3 -3
  46. package/lib-esm/ui/index.js +0 -1
  47. package/lib-esm/ui/tooltip/tooltip.js +10 -9
  48. package/package.json +5 -5
  49. package/src/components/bundle-assets/bundle-assets.jsx +38 -36
  50. package/src/components/bundle-assets/bundle-assets.module.css +5 -0
  51. package/src/components/bundle-modules/bundle-modules.jsx +24 -14
  52. package/src/components/bundle-packages/bundle-packages.jsx +11 -3
  53. package/src/components/bundle-packages/bundle-packages.module.css +4 -0
  54. package/src/components/metrics-table-title/metrics-table-title.jsx +20 -21
  55. package/src/components/metrics-table-title/metrics-table-title.module.css +2 -0
  56. package/src/components/module-info/module-info.jsx +1 -5
  57. package/src/components/module-info/module-info.module.css +1 -0
  58. package/src/components/summary-item/summary-item.jsx +20 -26
  59. package/src/components/summary-item/summary-item.module.css +1 -19
  60. package/src/components/total-size-type-title/total-size-type-title.jsx +6 -9
  61. package/src/css/variables.css +1 -1
  62. package/src/hooks/search-params.js +18 -11
  63. package/src/ui/dropdown/dropdown.jsx +9 -17
  64. package/src/ui/dropdown/dropdown.module.css +7 -7
  65. package/src/ui/hover-card/hover-card.jsx +79 -0
  66. package/src/ui/hover-card/hover-card.module.css +52 -0
  67. package/src/ui/hover-card/index.js +1 -0
  68. package/src/ui/icon/icon.jsx +11 -7
  69. package/src/ui/index.js +0 -1
  70. package/src/ui/tooltip/tooltip.jsx +10 -14
  71. package/lib/ui/popover/popover.js +0 -92
  72. package/lib/ui/popover/popover.module.css +0 -66
  73. package/lib/ui/popover/popover.stories.js +0 -26
  74. package/lib-esm/ui/popover/index.js +0 -1
  75. package/lib-esm/ui/popover/popover.js +0 -71
  76. package/lib-esm/ui/popover/popover.module.css +0 -66
  77. package/lib-esm/ui/popover/popover.stories.js +0 -14
  78. package/src/ui/popover/index.js +0 -1
  79. package/src/ui/popover/popover.jsx +0 -79
  80. package/src/ui/popover/popover.module.css +0 -66
package/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
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.6-beta.1](https://github.com/relative-ci/bundle-stats/compare/v3.2.5...v3.2.6-beta.1) (2022-02-25)
6
+ ## [3.2.6-beta.2](https://github.com/relative-ci/bundle-stats/compare/v3.2.5...v3.2.6-beta.2) (2022-02-27)
7
7
 
8
8
 
9
9
  ### Bug Fixes
@@ -11,11 +11,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
  * **ui:** Add border-radius to flags ([4f7663b](https://github.com/relative-ci/bundle-stats/commit/4f7663b29a954cf1ace9caa9739acd9f37aa3b95))
12
12
  * **ui:** Box - add border-radius to outline ([bd78d20](https://github.com/relative-ci/bundle-stats/commit/bd78d2052db4b781afc3a1d9e8dd583986d0093d))
13
13
  * **ui:** Normlize border-radius usage ([e8a6b30](https://github.com/relative-ci/bundle-stats/commit/e8a6b302729112d75a82c74ef1d952fc639d16ab))
14
+ * **ui:** SearchParams - trigger filter change correctly ([0c331d2](https://github.com/relative-ci/bundle-stats/commit/0c331d2704382cd72d42363db539107fe22ed2ee))
14
15
  * **ui:** Table - remove last row bottom line ([9398a93](https://github.com/relative-ci/bundle-stats/commit/9398a936e1d937aed188f96ce56ebfa56f3af7d7))
15
16
 
16
17
 
17
18
  ### Features
18
19
 
20
+ * **ui:** Add HoverCard component ([6ee79d5](https://github.com/relative-ci/bundle-stats/commit/6ee79d52bf5d02445e3cfca9f41841e5c710355f))
19
21
  * **ui:** Add Tag component ([f796f9c](https://github.com/relative-ci/bundle-stats/commit/f796f9c909703dab3a513059215a2ce24bc12244))
20
22
 
21
23
 
@@ -29,7 +29,7 @@ var _icon = require("../../ui/icon");
29
29
 
30
30
  var _fileName = require("../../ui/file-name");
31
31
 
32
- var _popover = require("../../ui/popover");
32
+ var _hoverCard = require("../../ui/hover-card");
33
33
 
34
34
  var _tooltip = require("../../ui/tooltip");
35
35
 
@@ -139,11 +139,11 @@ var getRenderRowHeader = function getRenderRowHeader(_ref6) {
139
139
  isChunk = item.isChunk,
140
140
  isEntry = item.isEntry,
141
141
  isInitial = item.isInitial;
142
- return /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
143
- label: /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
144
- name: label
145
- }),
146
- icon: /*#__PURE__*/_react["default"].createElement("div", {
142
+ return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
143
+ label: /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
144
+ space: "xxxsmall",
145
+ className: _bundleAssetsModule["default"].assetName
146
+ }, /*#__PURE__*/_react["default"].createElement("div", {
147
147
  className: _bundleAssetsModule["default"].assetInfoFlags
148
148
  }, isNotPredictive && /*#__PURE__*/_react["default"].createElement(_tooltip.Tooltip, {
149
149
  className: _bundleAssetsModule["default"].notPredictive,
@@ -168,6 +168,8 @@ var getRenderRowHeader = function getRenderRowHeader(_ref6) {
168
168
  size: _tag.Tag.SIZES.SMALL,
169
169
  kind: _tag.Tag.KINDS.INFO,
170
170
  className: (0, _classnames["default"])(_bundleAssetsModule["default"].tag, _bundleAssetsModule["default"].tagInitial)
171
+ })), /*#__PURE__*/_react["default"].createElement(_fileName.FileName, {
172
+ name: label
171
173
  }))
172
174
  }, /*#__PURE__*/_react["default"].createElement(_assetInfo.AssetInfo, {
173
175
  className: _bundleAssetsModule["default"].assetInfo,
@@ -8,6 +8,11 @@
8
8
  margin-right: -1px; /** collapse border */
9
9
  }
10
10
 
11
+ .assetName {
12
+ display: inline-flex;
13
+ align-items: center;
14
+ }
15
+
11
16
  .notPredictive {
12
17
  margin-right: var(--space-xxsmall);
13
18
  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 _popover = require("../../ui/popover");
38
+ var _hoverCard = require("../../ui/hover-card");
39
39
 
40
40
  var _sortDropdown = require("../../ui/sort-dropdown");
41
41
 
@@ -101,11 +101,10 @@ var RowHeader = function RowHeader(_ref) {
101
101
 
102
102
  return /*#__PURE__*/_react["default"].createElement("div", {
103
103
  onMouseEnter: handleOnMouseEnter
104
- }, !showPopopver ? content : /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
105
- ariaLabel: "View module info",
104
+ }, !showPopopver ? content : /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
106
105
  label: content
107
106
  }, function (_ref2) {
108
- var popoverToggle = _ref2.popoverToggle;
107
+ var close = _ref2.close;
109
108
  return /*#__PURE__*/_react["default"].createElement(_moduleInfo.ModuleInfo, {
110
109
  className: _bundleModulesModule["default"].namePopover,
111
110
  item: row,
@@ -113,7 +112,7 @@ var RowHeader = function RowHeader(_ref) {
113
112
  chunkIds: chunkIds,
114
113
  labels: labels,
115
114
  customComponentLink: CustomComponentLink,
116
- onClick: popoverToggle
115
+ onClick: close
117
116
  });
118
117
  }));
119
118
  };
@@ -27,7 +27,7 @@ var _emptySet = require("../../ui/empty-set");
27
27
 
28
28
  var _filters = require("../../ui/filters");
29
29
 
30
- var _popover = require("../../ui/popover");
30
+ var _hoverCard = require("../../ui/hover-card");
31
31
 
32
32
  var _sortDropdown = require("../../ui/sort-dropdown");
33
33
 
@@ -148,10 +148,12 @@ var PackageRowHeader = function PackageRowHeader(_ref2) {
148
148
  className: _bundlePackagesModule["default"].tagDuplicate
149
149
  });
150
150
 
151
- return /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
151
+ return /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
152
152
  className: _bundlePackagesModule["default"].packageName,
153
- icon: duplicateFlag,
154
- label: packageName
153
+ label: /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
154
+ space: "xxxsmall",
155
+ className: _bundlePackagesModule["default"].packageNameLabel
156
+ }, duplicateFlag, /*#__PURE__*/_react["default"].createElement("span", null, packageName))
155
157
  }, /*#__PURE__*/_react["default"].createElement(PackagePopoverContent, {
156
158
  name: packageName,
157
159
  path: path,
@@ -35,6 +35,10 @@
35
35
  color: var(--color-text-ultra-light);
36
36
  }
37
37
 
38
+ .packageNameLabel {
39
+ align-items: center;
40
+ }
41
+
38
42
  .packagePopover {
39
43
  min-width: 320px;
40
44
  }
@@ -17,7 +17,9 @@ var _flexStack = require("../../layout/flex-stack");
17
17
 
18
18
  var _stack = require("../../layout/stack");
19
19
 
20
- var _popover = require("../../ui/popover");
20
+ var _icon = require("../../ui/icon");
21
+
22
+ var _hoverCard = require("../../ui/hover-card");
21
23
 
22
24
  var _metricsTableTitleModule = _interopRequireDefault(require("./metrics-table-title.module.css"));
23
25
 
@@ -30,22 +32,22 @@ var MetricsTableTitle = function MetricsTableTitle(props) {
30
32
  popoverInfo = props.popoverInfo,
31
33
  popoverHref = props.popoverHref;
32
34
  var rootClassName = (0, _classnames["default"])(_metricsTableTitleModule["default"].root, className);
33
- return /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
35
+ return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
34
36
  space: "xxxsmall",
35
37
  className: rootClassName
36
- }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
37
- space: "xxxsmall"
38
38
  }, /*#__PURE__*/_react["default"].createElement("span", null, title), info && /*#__PURE__*/_react["default"].createElement("span", {
39
39
  className: _metricsTableTitleModule["default"].info
40
- }, info), (popoverInfo || popoverHref) && /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
41
- icon: "help"
40
+ }, info), (popoverInfo || popoverHref) && /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
41
+ label: /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
42
+ glyph: "help"
43
+ })
42
44
  }, /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
43
45
  space: "xxxsmall"
44
46
  }, popoverInfo && /*#__PURE__*/_react["default"].createElement("p", null, popoverInfo), popoverHref && /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("a", {
45
47
  href: popoverHref,
46
48
  target: "_blank",
47
49
  rel: "noreferrer"
48
- }, _i18n["default"].READ_MORE))))));
50
+ }, _i18n["default"].READ_MORE)))));
49
51
  };
50
52
 
51
53
  exports.MetricsTableTitle = MetricsTableTitle;
@@ -1,5 +1,7 @@
1
1
  .root {
2
+ align-items: center;
2
3
  font-weight: bold;
4
+ line-height: var(--space-small);
3
5
  text-transform: uppercase;
4
6
  color: var(--color-text-light);
5
7
  }
@@ -15,6 +15,7 @@
15
15
  }
16
16
 
17
17
  .fileName {
18
+ max-width: 100%;
18
19
  padding: 2px;
19
20
  background: var(--color-highlight-warning);
20
21
  }
@@ -13,7 +13,9 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
14
  var _utils = require("@bundle-stats/utils");
15
15
 
16
- var _popover = require("../../ui/popover");
16
+ var _hoverCard = require("../../ui/hover-card");
17
+
18
+ var _icon = require("../../ui/icon");
17
19
 
18
20
  var _skeleton = require("../../ui/skeleton");
19
21
 
@@ -37,29 +39,22 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
37
39
 
38
40
  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; }
39
41
 
40
- var MetricInfoPopover = function MetricInfoPopover(_ref) {
42
+ var MetricInfo = function MetricInfo(_ref) {
41
43
  var description = _ref.description,
42
44
  url = _ref.url;
43
-
44
- // Workaround cases where the parent is a link
45
- var readMoreOnClick = function readMoreOnClick() {
46
- window.open(url);
47
- };
48
-
49
45
  return /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
50
46
  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
47
+ }, /*#__PURE__*/_react["default"].createElement("p", null, description), url && /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("a", {
48
+ href: url,
49
+ className: _summaryItemModule["default"].readMoreLink
55
50
  }, "Read more")));
56
51
  };
57
52
 
58
- MetricInfoPopover.propTypes = {
53
+ MetricInfo.propTypes = {
59
54
  description: _propTypes["default"].string.isRequired,
60
55
  url: _propTypes["default"].string
61
56
  };
62
- MetricInfoPopover.defaultProps = {
57
+ MetricInfo.defaultProps = {
63
58
  url: ''
64
59
  };
65
60
 
@@ -93,10 +88,12 @@ var SummaryItem = function SummaryItem(_ref2) {
93
88
  as: "h3",
94
89
  space: "xxxsmall",
95
90
  className: _summaryItemModule["default"].title
96
- }, /*#__PURE__*/_react["default"].createElement("span", null, metric.label), showMetricDescriptionTooltip && /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
91
+ }, /*#__PURE__*/_react["default"].createElement("span", null, metric.label), showMetricDescriptionTooltip && /*#__PURE__*/_react["default"].createElement(_hoverCard.HoverCard, {
97
92
  className: _summaryItemModule["default"].icon,
98
- icon: "help"
99
- }, /*#__PURE__*/_react["default"].createElement(MetricInfoPopover, metric))), !loading ? /*#__PURE__*/_react["default"].createElement(_stack.Stack, null, /*#__PURE__*/_react["default"].createElement(_metric.Metric, {
93
+ label: /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
94
+ glyph: "help"
95
+ })
96
+ }, /*#__PURE__*/_react["default"].createElement(MetricInfo, metric))), !loading ? /*#__PURE__*/_react["default"].createElement(_stack.Stack, null, /*#__PURE__*/_react["default"].createElement(_metric.Metric, {
100
97
  className: _summaryItemModule["default"].currentMetric,
101
98
  value: current,
102
99
  formatter: metric.formatter,
@@ -1,4 +1,5 @@
1
1
  .title {
2
+ align-items: center;
2
3
  color: var(--color-text-ultra-light);
3
4
  font-weight: bold;
4
5
  font-size: var(--size-xsmall);
@@ -7,25 +8,6 @@
7
8
  white-space: nowrap;
8
9
  }
9
10
 
10
- .readMoreBtn {
11
- appearance: none;
12
- padding: 0;
13
- border: 0;
14
- background: none;
15
- cursor: pointer;
16
- /* simulate link */
17
- color: var(--color-primary);
18
- text-decoration: underline;
19
- line-height: var(--space-small);
20
- }
21
-
22
- .readMoreBtn:hover,
23
- .readMoreBtn:active,
24
- .readMoreBtn:focus {
25
- color: var(--color-primary-dark);
26
- text-decoration: none;
27
- }
28
-
29
11
  .currentMetric {
30
12
  display: block;
31
13
  color: var(--color-heading);
@@ -19,7 +19,9 @@ var _flexStack = require("../../layout/flex-stack");
19
19
 
20
20
  var _stack = require("../../layout/stack");
21
21
 
22
- var _popover = require("../../ui/popover");
22
+ var _icon = require("../../ui/icon");
23
+
24
+ var _hoverCard = require("../../ui/hover-card");
23
25
 
24
26
  var _totalSizeTypeTitleModule = _interopRequireDefault(require("./total-size-type-title.module.css"));
25
27
 
@@ -30,8 +32,10 @@ var TotalSizeTypeTitle = function TotalSizeTypeTitle(_ref) {
30
32
  return /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
31
33
  space: "xxxsmall",
32
34
  className: (0, _classnames["default"])(_totalSizeTypeTitleModule["default"].title, className)
33
- }, /*#__PURE__*/_react["default"].createElement("span", null, _i18n["default"].ASSET_TOTALS), /*#__PURE__*/_react["default"].createElement(_popover.Popover, {
34
- icon: "help"
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
+ })
35
39
  }, /*#__PURE__*/_react["default"].createElement(_stack.Stack, {
36
40
  space: "xxxsmall"
37
41
  }, /*#__PURE__*/_react["default"].createElement("p", null, _i18n["default"].ASSET_TOTALS_INFO), /*#__PURE__*/_react["default"].createElement("p", null, /*#__PURE__*/_react["default"].createElement("a", {
@@ -170,7 +170,7 @@
170
170
  --color-outline-warning: var(--color-yellow-200);
171
171
  --color-outline-danger: var(--color-red-100);
172
172
 
173
- --color-shadow: rgba(0, 0, 0, 0.1);
173
+ --color-shadow: rgba(0, 0, 0, 0.2);
174
174
 
175
175
  --transition-in: all 0.2s ease-in;
176
176
  --transition-out: all 0.17s ease-out;
@@ -157,7 +157,7 @@ var useSearchParams = function useSearchParams(_ref2) {
157
157
 
158
158
  (0, _react.useLayoutEffect)(function () {
159
159
  // Run a deep comparison to prevent circular setState triggering
160
- if (parentSearch === search || (0, _isEqual2["default"])(parentFilters, filters)) {
160
+ if (parentSearch === search && (0, _isEqual2["default"])(initialFilters, filters)) {
161
161
  return;
162
162
  }
163
163
 
@@ -165,7 +165,7 @@ var useSearchParams = function useSearchParams(_ref2) {
165
165
  type: ACTION_SET,
166
166
  payload: generateState(initialFilters, parentSearch)
167
167
  });
168
- }, [search, filters, parentFilters, parentSearch]);
168
+ }, [dispatch, search, filters, parentSearch, initialFilters]);
169
169
  /** Callbacks */
170
170
 
171
171
  var handleUpdateSearch = (0, _react.useCallback)(function (newValue) {
@@ -173,23 +173,23 @@ var useSearchParams = function useSearchParams(_ref2) {
173
173
  type: ACTION_SET_SEARCH,
174
174
  payload: newValue
175
175
  });
176
- }, []);
176
+ }, [dispatch]);
177
177
  var handleUpdateFilters = (0, _react.useCallback)(function (newFilters) {
178
178
  dispatch({
179
179
  type: ACTION_SET_FILTERS,
180
180
  payload: newFilters
181
181
  });
182
- }, []);
182
+ }, [dispatch]);
183
183
  var handleResetFilters = (0, _react.useCallback)(function () {
184
184
  dispatch({
185
185
  type: ACTION_RESET_DEFAULT
186
186
  });
187
- }, []);
187
+ }, [dispatch]);
188
188
  var handleResetAllFilters = (0, _react.useCallback)(function () {
189
189
  dispatch({
190
190
  type: ACTION_RESET_ALL
191
191
  });
192
- }, []);
192
+ }, [dispatch]);
193
193
  return {
194
194
  search: search,
195
195
  searchPattern: searchPattern,
@@ -11,7 +11,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
 
14
- var _Menu = require("reakit/Menu");
14
+ var _menu = require("ariakit/menu");
15
15
 
16
16
  var _flexStack = require("../../layout/flex-stack");
17
17
 
@@ -21,34 +21,32 @@ var _dropdownModule = _interopRequireDefault(require("./dropdown.module.css"));
21
21
 
22
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
23
 
24
- 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); }
25
-
26
24
  var Dropdown = function Dropdown(props) {
27
25
  var className = props.className,
28
26
  label = props.label,
29
27
  ariaLabel = props.ariaLabel,
30
28
  glyph = props.glyph,
31
- activeLabel = props.activeLabel,
32
29
  children = props.children;
33
- var rootClassName = (0, _classnames["default"])(_dropdownModule["default"].root, activeLabel && _dropdownModule["default"].activeLabel, className);
34
- var menu = (0, _Menu.useMenuState)({
35
- baseId: process.env.NODE_ENV === 'test' && 'id-test',
36
- modal: true
37
- });
38
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Menu.MenuButton, _extends({}, menu, {
39
- className: rootClassName,
30
+ var rootClassName = (0, _classnames["default"])(_dropdownModule["default"].root, className);
31
+ var menuState = (0, _menu.useMenuState)();
32
+ return /*#__PURE__*/_react["default"].createElement("div", {
33
+ className: rootClassName
34
+ }, /*#__PURE__*/_react["default"].createElement(_menu.MenuButton, {
35
+ state: menuState,
36
+ className: _dropdownModule["default"].button,
40
37
  tabIndex: null
41
- }), /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
38
+ }, /*#__PURE__*/_react["default"].createElement(_flexStack.FlexStack, {
42
39
  space: "xxxsmall"
43
40
  }, glyph && /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
44
41
  className: _dropdownModule["default"].labelIcon,
45
42
  glyph: glyph
46
- }), label)), /*#__PURE__*/_react["default"].createElement(_Menu.Menu, _extends({}, menu, {
43
+ }), label)), /*#__PURE__*/_react["default"].createElement(_menu.Menu, {
44
+ state: menuState,
47
45
  "aria-label": ariaLabel || label,
48
46
  className: _dropdownModule["default"].dropdown
49
- }), typeof children === 'function' ? children({
50
- MenuItem: _Menu.MenuItem,
51
- menu: menu,
47
+ }, typeof children === 'function' ? children({
48
+ MenuItem: _menu.MenuItem,
49
+ menu: menuState,
52
50
  menuItemClassName: _dropdownModule["default"].menuItem,
53
51
  menuItemActiveClassName: _dropdownModule["default"].menuItemActive
54
52
  }) : children));
@@ -59,8 +57,7 @@ Dropdown.defaultProps = {
59
57
  className: '',
60
58
  label: null,
61
59
  ariaLabel: '',
62
- glyph: null,
63
- activeLabel: false
60
+ glyph: null
64
61
  };
65
62
  Dropdown.propTypes = {
66
63
  /** Adopted child class name */
@@ -75,12 +72,6 @@ Dropdown.propTypes = {
75
72
  /** Icon glyph */
76
73
  glyph: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].node]),
77
74
 
78
- /** Dropdown open state */
79
- open: _propTypes["default"].bool.isRequired,
80
-
81
- /** Active label flag */
82
- activeLabel: _propTypes["default"].bool,
83
-
84
75
  /** Content */
85
76
  children: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element, _propTypes["default"].func]).isRequired
86
77
  };
@@ -1,4 +1,8 @@
1
1
  .root {
2
+ display: inline-block;
3
+ }
4
+
5
+ .button {
2
6
  background: none;
3
7
  border: none;
4
8
  padding: 0;
@@ -18,9 +22,9 @@
18
22
  color: var(--color-text-light);
19
23
  }
20
24
 
21
- .root:hover,
22
- .root:focus,
23
- .root:active {
25
+ .button:hover,
26
+ .button:focus,
27
+ .button:active {
24
28
  outline: none;
25
29
  box-shadow: 0 0 var(--space-xxxsmall) var(--color-shadow);
26
30
  border-color: var(--color-outline-dark);
@@ -44,10 +48,6 @@
44
48
  box-shadow: 0 2px var(--space-xsmall) var(--color-shadow);
45
49
  }
46
50
 
47
- .activeLabel .label {
48
- color: var(--color-text);
49
- }
50
-
51
51
  .menuItem {
52
52
  display: block;
53
53
  appearance: none;
@@ -18,22 +18,15 @@ stories.add('default', function () {
18
18
  label: "Toggle"
19
19
  }, /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Option 1"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 2")));
20
20
  });
21
- stories.add('with right alignement', function () {
22
- return /*#__PURE__*/_react["default"].createElement(_.Dropdown, {
23
- glyph: "filter",
24
- label: "Toggle",
25
- align: "right"
26
- }, /*#__PURE__*/_react["default"].createElement("ul", null, /*#__PURE__*/_react["default"].createElement("li", null, "Option 1"), /*#__PURE__*/_react["default"].createElement("li", null, "Option 2")));
27
- });
28
21
  stories.add('with render function', function () {
29
22
  return /*#__PURE__*/_react["default"].createElement(_.Dropdown, {
30
23
  glyph: "filter",
31
24
  label: "Toggle"
32
25
  }, function (_ref) {
33
- var dropdownToggle = _ref.dropdownToggle;
26
+ var menu = _ref.menu;
34
27
  return /*#__PURE__*/_react["default"].createElement("button", {
35
28
  type: "button",
36
- onClick: dropdownToggle
29
+ onClick: menu.toggle
37
30
  }, "Toggle dropdown");
38
31
  });
39
32
  });
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HoverCard = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _hovercard = require("ariakit/hovercard");
15
+
16
+ var _icon = require("../icon");
17
+
18
+ var _hoverCardModule = _interopRequireDefault(require("./hover-card.module.css"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
+
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); }
23
+
24
+ var resolveComponent = function resolveComponent(as, href) {
25
+ if (as) {
26
+ return as;
27
+ }
28
+
29
+ if (href) {
30
+ return 'a';
31
+ }
32
+
33
+ return 'span';
34
+ };
35
+
36
+ var HoverCard = function HoverCard(props) {
37
+ var className = props.className,
38
+ href = props.href,
39
+ as = props.as,
40
+ label = props.label,
41
+ children = props.children;
42
+ var state = (0, _hovercard.useHovercardState)({
43
+ gutter: 8
44
+ });
45
+ var hoverCardProps = (0, _hovercard.useHovercard)({
46
+ state: state,
47
+ portal: true
48
+ }); // Fallback to span if no href
49
+
50
+ var Component = resolveComponent(as, href);
51
+ return /*#__PURE__*/_react["default"].createElement("div", {
52
+ className: (0, _classnames["default"])(_hoverCardModule["default"].root, className)
53
+ }, /*#__PURE__*/_react["default"].createElement(_hovercard.HovercardAnchor, {
54
+ state: state,
55
+ href: href,
56
+ className: _hoverCardModule["default"].anchor,
57
+ as: Component
58
+ }, label), /*#__PURE__*/_react["default"].createElement(_hovercard.Hovercard, _extends({}, hoverCardProps, {
59
+ state: state,
60
+ className: _hoverCardModule["default"].hoverCard,
61
+ style: {
62
+ zIndex: 10000
63
+ }
64
+ }), /*#__PURE__*/_react["default"].createElement(_hovercard.HovercardArrow, {
65
+ size: 24
66
+ }), typeof children === 'function' ? children({
67
+ close: state.hide
68
+ }) : children, /*#__PURE__*/_react["default"].createElement(_icon.Icon, {
69
+ glyph: "close",
70
+ size: "small",
71
+ as: "button",
72
+ type: "button",
73
+ className: _hoverCardModule["default"].closeBtn,
74
+ onClick: state.hide
75
+ })));
76
+ };
77
+
78
+ exports.HoverCard = HoverCard;
79
+ HoverCard.propTypes = {
80
+ /** Adopted child class name */
81
+ className: _propTypes["default"].string,
82
+
83
+ /** Anchor label */
84
+ label: _propTypes["default"].node,
85
+
86
+ /** Anchor href */
87
+ href: _propTypes["default"].string,
88
+
89
+ /** Anchor component */
90
+ as: _propTypes["default"].elementType,
91
+
92
+ /** Hover card component */
93
+ children: _propTypes["default"].oneOfType([_propTypes["default"].node, _propTypes["default"].func]).isRequired
94
+ };
95
+ HoverCard.defaultProps = {
96
+ className: '',
97
+ label: '',
98
+ as: '',
99
+ href: ''
100
+ };