@automattic/vip-design-system 2.4.5 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/build/system/Breadcrumbs/Breadcrumbs.d.ts +1 -0
  2. package/build/system/Breadcrumbs/Breadcrumbs.js +75 -20
  3. package/build/system/Breadcrumbs/Breadcrumbs.stories.d.ts +2 -0
  4. package/build/system/Breadcrumbs/Breadcrumbs.stories.js +47 -7
  5. package/build/system/Breadcrumbs/Breadcrumbs.test.js +72 -0
  6. package/build/system/Breadcrumbs/styles.d.ts +2 -0
  7. package/build/system/Breadcrumbs/styles.js +8 -2
  8. package/build/system/Dropdown/Dropdown.d.ts +25 -36
  9. package/build/system/Dropdown/Dropdown.js +60 -99
  10. package/build/system/Dropdown/Dropdown.stories.d.ts +1 -26
  11. package/build/system/Dropdown/Dropdown.test.js +51 -28
  12. package/build/system/Dropdown/DropdownContent.d.ts +14 -10
  13. package/build/system/Dropdown/DropdownContent.js +43 -47
  14. package/build/system/Dropdown/DropdownItem.d.ts +20 -32
  15. package/build/system/Dropdown/DropdownItem.js +86 -103
  16. package/build/system/Dropdown/DropdownLabel.d.ts +11 -7
  17. package/build/system/Dropdown/DropdownLabel.js +29 -29
  18. package/build/system/Dropdown/DropdownSeparator.d.ts +10 -6
  19. package/build/system/Dropdown/DropdownSeparator.js +28 -28
  20. package/build/system/Dropdown/index.d.ts +17 -39
  21. package/build/system/Dropdown/index.js +23 -50
  22. package/build/system/FilterDropdown/FilterDropdown.d.ts +27 -0
  23. package/build/system/FilterDropdown/FilterDropdown.js +75 -0
  24. package/build/system/FilterDropdown/FilterDropdown.stories.d.ts +18 -0
  25. package/build/system/FilterDropdown/FilterDropdown.stories.js +46 -0
  26. package/build/system/FilterDropdown/FilterDropdown.test.d.ts +1 -0
  27. package/build/system/FilterDropdown/FilterDropdown.test.js +53 -0
  28. package/build/system/Hr/Hr.d.ts +7 -0
  29. package/build/system/Hr/Hr.js +22 -0
  30. package/build/system/Hr/Hr.stories.d.ts +23 -0
  31. package/build/system/Hr/Hr.stories.js +30 -0
  32. package/build/system/Hr/Hr.test.d.ts +1 -0
  33. package/build/system/Hr/Hr.test.js +41 -0
  34. package/build/system/Link/Link.d.ts +11 -1
  35. package/build/system/Link/Link.js +16 -1
  36. package/build/system/Link/Link.stories.d.ts +14 -1
  37. package/build/system/Link/Link.stories.js +16 -3
  38. package/build/system/Nav/styles.js +2 -1
  39. package/build/system/Page/Page.d.ts +2 -0
  40. package/build/system/Page/Page.js +10 -0
  41. package/build/system/Page/Page.test.d.ts +1 -0
  42. package/build/system/Page/Page.test.js +41 -0
  43. package/build/system/index.d.ts +3 -1
  44. package/build/system/index.js +4 -0
  45. package/build/system/theme/index.d.ts +889 -23
  46. package/build/system/theme/index.js +7 -8
  47. package/build/system/utils/stories/CustomLink.d.ts +1 -0
  48. package/build/system/utils/stories/CustomLink.js +7 -1
  49. package/package.json +1 -1
  50. package/src/system/Breadcrumbs/Breadcrumbs.stories.tsx +32 -3
  51. package/src/system/Breadcrumbs/Breadcrumbs.test.tsx +60 -0
  52. package/src/system/Breadcrumbs/Breadcrumbs.tsx +100 -29
  53. package/src/system/Breadcrumbs/styles.ts +11 -0
  54. package/src/system/Dropdown/{Dropdown.test.js → Dropdown.test.tsx} +2 -1
  55. package/src/system/Dropdown/Dropdown.tsx +72 -0
  56. package/src/system/Dropdown/DropdownContent.tsx +46 -0
  57. package/src/system/Dropdown/DropdownItem.tsx +112 -0
  58. package/src/system/Dropdown/DropdownLabel.tsx +29 -0
  59. package/src/system/Dropdown/DropdownSeparator.tsx +28 -0
  60. package/src/system/Dropdown/{index.js → index.ts} +1 -3
  61. package/src/system/FilterDropdown/FilterDropdown.stories.tsx +57 -0
  62. package/src/system/FilterDropdown/FilterDropdown.test.tsx +52 -0
  63. package/src/system/FilterDropdown/FilterDropdown.tsx +92 -0
  64. package/src/system/Hr/Hr.stories.tsx +48 -0
  65. package/src/system/Hr/Hr.test.tsx +22 -0
  66. package/src/system/Hr/Hr.tsx +11 -0
  67. package/src/system/Link/Link.stories.tsx +42 -1
  68. package/src/system/Link/Link.tsx +17 -8
  69. package/src/system/Nav/styles.ts +1 -0
  70. package/src/system/Page/Page.test.tsx +22 -0
  71. package/src/system/Page/Page.tsx +3 -0
  72. package/src/system/index.js +4 -0
  73. package/src/system/theme/index.js +7 -8
  74. package/src/system/utils/stories/CustomLink.tsx +6 -0
  75. package/tokens/valet-core/$metadata.json +1 -17
  76. package/tokens/valet-core/$themes.json +0 -2586
  77. package/src/system/Dropdown/Dropdown.js +0 -101
  78. package/src/system/Dropdown/DropdownContent.js +0 -50
  79. package/src/system/Dropdown/DropdownItem.js +0 -108
  80. package/src/system/Dropdown/DropdownLabel.js +0 -31
  81. package/src/system/Dropdown/DropdownSeparator.js +0 -30
  82. package/tokens/valet-core/figma-parsely-web-type.json +0 -1217
  83. package/tokens/valet-core/figma-valet-web-type.json +0 -1217
  84. package/tokens/valet-core/figma-wpvip-services-web-type.json +0 -1267
  85. package/tokens/valet-core/figma-wpvip-web-type.json +0 -1213
  86. package/tokens/valet-core/parsely-web-color.json +0 -729
  87. package/tokens/valet-core/parsely-web-core.json +0 -172
  88. package/tokens/valet-core/parsely-web-type.json +0 -362
  89. package/tokens/valet-core/valet-web-color.json +0 -677
  90. package/tokens/valet-core/valet-web-core.json +0 -172
  91. package/tokens/valet-core/wpvip-services-web-color.json +0 -730
  92. package/tokens/valet-core/wpvip-services-web-core.json +0 -172
  93. package/tokens/valet-core/wpvip-services-web-type.json +0 -412
  94. package/tokens/valet-core/wpvip-web-color-dark.json +0 -735
  95. package/tokens/valet-core/wpvip-web-color.json +0 -730
  96. package/tokens/valet-core/wpvip-web-type.json +0 -412
  97. package/tokens/valet-core/wpvip-web.json +0 -1310
@@ -13,6 +13,7 @@ export type BreadcrumbsLinkProps = {
13
13
  export interface BreacrumbsProps extends NavigationMenu.NavigationMenuProps {
14
14
  className?: string;
15
15
  label?: string;
16
+ wrapMode?: 'collapsible' | 'lastItem';
16
17
  LinkComponent: NavItemProps['as'];
17
18
  links?: BreadcrumbsLinkProps[];
18
19
  }
@@ -5,6 +5,7 @@ exports.VIP_BREACRUMBS = exports.Breadcrumbs = void 0;
5
5
  var NavigationMenu = _interopRequireWildcard(require("@radix-ui/react-navigation-menu"));
6
6
  var _matchMedia = require("@theme-ui/match-media");
7
7
  var _classnames = _interopRequireDefault(require("classnames"));
8
+ var _i18nCalypso = require("i18n-calypso");
8
9
  var _react = _interopRequireWildcard(require("react"));
9
10
  var _styles = require("./styles");
10
11
  var _NavItem = require("../Nav/NavItem");
@@ -15,39 +16,82 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
15
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
16
17
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } /** @jsxImportSource theme-ui */
17
18
  var VIP_BREACRUMBS = exports.VIP_BREACRUMBS = 'vip-breadcrumbs-component';
19
+ var breadcrumbLinks = function breadcrumbLinks(links, isSmallestScreen, wrapMode, showAllItems) {
20
+ if (isSmallestScreen === void 0) {
21
+ isSmallestScreen = false;
22
+ }
23
+ if (showAllItems === void 0) {
24
+ showAllItems = false;
25
+ }
26
+ var separatorLink = false;
27
+ var lastLink = null;
28
+ var otherLinks = [];
29
+ var totalLinks = links == null ? void 0 : links.length;
30
+ if (totalLinks === 1) {
31
+ lastLink = links == null ? void 0 : links[0];
32
+ otherLinks = [];
33
+ }
34
+ if (totalLinks > 1) {
35
+ var otherLinksRaw = links == null ? void 0 : links.slice(0, totalLinks - 1);
36
+ lastLink = links == null ? void 0 : links[totalLinks - 1];
37
+ if (wrapMode === 'lastItem') {
38
+ var penultimateLink = links == null ? void 0 : links[totalLinks - 2];
39
+ lastLink = isSmallestScreen ? null : links == null ? void 0 : links[totalLinks - 1];
40
+ otherLinks = isSmallestScreen ? [_extends({}, penultimateLink, {
41
+ active: true,
42
+ sx: _styles.smallestScreenItemStyles
43
+ })] : otherLinksRaw;
44
+ } else if (wrapMode === 'collapsible') {
45
+ separatorLink = isSmallestScreen && !showAllItems && totalLinks > 2;
46
+ otherLinks = isSmallestScreen && !showAllItems ? [links == null ? void 0 : links[0]] : otherLinksRaw;
47
+ }
48
+ }
49
+ return {
50
+ separatorLink: separatorLink,
51
+ lastLink: lastLink,
52
+ otherLinks: otherLinks
53
+ };
54
+ };
18
55
  var Breadcrumbs = exports.Breadcrumbs = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
19
- var _lastLink;
20
56
  var className = _ref.className,
21
57
  _ref$links = _ref.links,
22
58
  links = _ref$links === void 0 ? [] : _ref$links,
23
59
  _ref$label = _ref.label,
24
60
  label = _ref$label === void 0 ? 'Breadcrumbs' : _ref$label,
25
61
  _ref$LinkComponent = _ref.LinkComponent,
26
- LinkComponent = _ref$LinkComponent === void 0 ? _NavItem.NavRawLink : _ref$LinkComponent;
62
+ LinkComponent = _ref$LinkComponent === void 0 ? _NavItem.NavRawLink : _ref$LinkComponent,
63
+ _ref$wrapMode = _ref.wrapMode,
64
+ wrapMode = _ref$wrapMode === void 0 ? 'lastItem' : _ref$wrapMode;
65
+ var breadcrumbsListRef = (0, _react.useRef)(null);
66
+ var _useState = (0, _react.useState)(false),
67
+ showAllItems = _useState[0],
68
+ setShowAllItems = _useState[1];
69
+ var translate = (0, _i18nCalypso.useTranslate)();
70
+
71
+ // Focus on the next link when the collapsible separator is true
72
+ (0, _react.useEffect)(function () {
73
+ if (wrapMode !== 'collapsible') {
74
+ return;
75
+ }
76
+ var breadcrumbList = breadcrumbsListRef == null ? void 0 : breadcrumbsListRef.current;
77
+ if (showAllItems && breadcrumbList) {
78
+ var nextActiveLink = breadcrumbList.querySelector('li:nth-child(2) a');
79
+ nextActiveLink == null || nextActiveLink.focus();
80
+ }
81
+ }, [showAllItems, wrapMode]);
82
+
27
83
  // The breadcrumb shrinks on smaller screens (mobile) and we need to hide some links
28
84
  var bpIndex = (0, _matchMedia.useBreakpointIndex)({
29
85
  defaultIndex: 1
30
86
  });
31
87
  var isSmallestScreen = bpIndex < 3;
32
- var penultimateLink = null;
33
- var lastLink = null;
34
- var otherLinks = [];
35
- var totalLinks = (links == null ? void 0 : links.length) || 0;
36
- if (totalLinks === 0) {
88
+ if ((links == null ? void 0 : links.length) === 0) {
37
89
  return null;
38
90
  }
39
- if (totalLinks === 1) {
40
- lastLink = links == null ? void 0 : links[0];
41
- otherLinks = [];
42
- }
43
- if (totalLinks > 1) {
44
- penultimateLink = links == null ? void 0 : links[totalLinks - 2];
45
- otherLinks = isSmallestScreen ? [_extends({}, penultimateLink, {
46
- active: true,
47
- sx: _styles.smallestScreenItemStyles
48
- })] : links == null ? void 0 : links.slice(0, totalLinks - 1);
49
- lastLink = isSmallestScreen ? null : links == null ? void 0 : links[totalLinks - 1];
50
- }
91
+ var _breadcrumbLinks = breadcrumbLinks(links, isSmallestScreen, wrapMode, showAllItems),
92
+ separatorLink = _breadcrumbLinks.separatorLink,
93
+ lastLink = _breadcrumbLinks.lastLink,
94
+ otherLinks = _breadcrumbLinks.otherLinks;
51
95
  return (0, _jsxRuntime.jsx)(NavigationMenu.Root, {
52
96
  "aria-label": label,
53
97
  ref: ref,
@@ -56,6 +100,7 @@ var Breadcrumbs = exports.Breadcrumbs = /*#__PURE__*/(0, _react.forwardRef)(func
56
100
  children: (0, _jsxRuntime.jsx)(NavigationMenu.List, {
57
101
  className: (0, _classnames["default"])(VIP_BREACRUMBS + "-list"),
58
102
  sx: (0, _styles2.navMenuListStyles)('horizontal'),
103
+ ref: breadcrumbsListRef,
59
104
  asChild: true,
60
105
  children: (0, _jsxRuntime.jsxs)("ol", {
61
106
  children: [otherLinks.map(function (link) {
@@ -66,12 +111,22 @@ var Breadcrumbs = exports.Breadcrumbs = /*#__PURE__*/(0, _react.forwardRef)(func
66
111
  href: link.href,
67
112
  children: link.label
68
113
  }, link.href);
114
+ }), separatorLink && (0, _jsxRuntime.jsx)("li", {
115
+ sx: _extends({}, (0, _styles2.navItemStyles)('horizontal', 'breadcrumbs')),
116
+ children: (0, _jsxRuntime.jsx)("button", {
117
+ sx: _styles.collapsibleSeparatorStyles,
118
+ "aria-label": translate('Press to show more breadcrumbs'),
119
+ onClick: function onClick() {
120
+ return setShowAllItems(true);
121
+ },
122
+ children: "\u2026"
123
+ })
69
124
  }), lastLink && (0, _jsxRuntime.jsx)("li", {
70
125
  sx: _extends({}, (0, _styles2.navItemStyles)('horizontal', 'breadcrumbs'), {
71
126
  color: 'text'
72
127
  }),
73
128
  "aria-current": "page",
74
- children: (_lastLink = lastLink) == null ? void 0 : _lastLink.label
129
+ children: lastLink == null ? void 0 : lastLink.label
75
130
  })]
76
131
  })
77
132
  })
@@ -1,3 +1,4 @@
1
+ /** @jsxImportSource theme-ui */
1
2
  import React from 'react';
2
3
  import { Breadcrumbs as Breadcrumbs } from './Breadcrumbs';
3
4
  import type { StoryObj } from '@storybook/react';
@@ -15,3 +16,4 @@ declare const _default: {
15
16
  export default _default;
16
17
  type Story = StoryObj<typeof Breadcrumbs>;
17
18
  export declare const Default: Story;
19
+ export declare const Collapsible: Story;
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports["default"] = exports.Default = void 0;
4
+ exports["default"] = exports.Default = exports.Collapsible = void 0;
5
5
  var _react = _interopRequireDefault(require("react"));
6
6
  var _Breadcrumbs = require("./Breadcrumbs");
7
+ var _Box = require("../Box");
8
+ var _CustomLink = require("../utils/stories/CustomLink");
7
9
  var _jsxRuntime = require("theme-ui/jsx-runtime");
8
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
- function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
10
- // eslint-disable-next-line jsx-a11y/anchor-has-content
11
- var CustomLink = function CustomLink(props) {
12
- return (0, _jsxRuntime.jsx)("a", _extends({}, props));
13
- };
11
+ /** @jsxImportSource theme-ui */
14
12
  var _default = exports["default"] = {
15
13
  title: 'Navigation/Breadcrumbs',
16
14
  component: _Breadcrumbs.Breadcrumbs,
@@ -25,7 +23,7 @@ var _default = exports["default"] = {
25
23
  var Default = exports.Default = {
26
24
  render: function render() {
27
25
  return (0, _jsxRuntime.jsx)(_Breadcrumbs.Breadcrumbs, {
28
- LinkComponent: CustomLink,
26
+ LinkComponent: _CustomLink.CustomLink,
29
27
  label: "Nav Breadcrumbs",
30
28
  links: [{
31
29
  href: 'https://wordpress.com',
@@ -39,4 +37,46 @@ var Default = exports.Default = {
39
37
  }]
40
38
  });
41
39
  }
40
+ };
41
+ var Collapsible = exports.Collapsible = {
42
+ render: function render() {
43
+ return (0, _jsxRuntime.jsxs)(_Box.Box, {
44
+ sx: {
45
+ display: 'flex',
46
+ flexDirection: 'column',
47
+ gap: 4
48
+ },
49
+ children: [(0, _jsxRuntime.jsx)("p", {
50
+ children: "When entering Mobile views, the first and the last link will appear. A button with a \u2026 will also be visible. Once pressed, the rest of the links become available, and the focus is moved to the next link."
51
+ }), (0, _jsxRuntime.jsx)("hr", {
52
+ sx: {
53
+ width: '100%',
54
+ my: 4
55
+ }
56
+ }), (0, _jsxRuntime.jsx)(_Breadcrumbs.Breadcrumbs, {
57
+ wrapMode: "collapsible",
58
+ LinkComponent: _CustomLink.CustomLinkComponentized,
59
+ label: "Nav Breadcrumbs",
60
+ links: [{
61
+ href: '/',
62
+ label: 'Home'
63
+ }, {
64
+ href: 'https://datadog.com/',
65
+ label: 'Data dog'
66
+ }, {
67
+ href: 'https://newrelic.com/',
68
+ label: 'New Relic'
69
+ }, {
70
+ href: 'https://rollbar.com/',
71
+ label: 'Rollbar'
72
+ }, {
73
+ href: 'https://areallylong.com/',
74
+ label: 'A really long name'
75
+ }, {
76
+ href: 'https://google.com/',
77
+ label: 'I am the last item'
78
+ }]
79
+ })]
80
+ });
81
+ }
42
82
  };
@@ -1,15 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _react = require("@testing-library/react");
4
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
5
+ var matchMedia = _interopRequireWildcard(require("@theme-ui/match-media"));
4
6
  var _jestAxe = require("jest-axe");
5
7
  var _themeUi = require("theme-ui");
6
8
  var _Breadcrumbs = require("./Breadcrumbs");
7
9
  var _ = require("../");
8
10
  var _jsxRuntime = require("theme-ui/jsx-runtime");
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
14
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(typeof e + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
10
15
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
11
16
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
12
17
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } /** @jsxImportSource theme-ui */ /* eslint-disable @typescript-eslint/ban-ts-comment */ // @ts-nocheck
18
+ jest.mock('@theme-ui/match-media');
19
+ var mockBreakpointIndex = matchMedia.useBreakpointIndex;
20
+
13
21
  // eslint-disable-next-line jsx-a11y/anchor-has-content
14
22
  var CustomLink = function CustomLink(props) {
15
23
  return (0, _jsxRuntime.jsx)("a", _extends({}, props));
@@ -73,4 +81,68 @@ describe('<Breadcrumbs />', function () {
73
81
  }
74
82
  }, _callee);
75
83
  })));
84
+ describe('wrapMode tests', function () {
85
+ beforeEach(function () {
86
+ mockBreakpointIndex.mockReset();
87
+ });
88
+ it('expands the breadcrumb items when clicking in the collapsible link', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
89
+ var links, user, _renderWithTheme, container, navEl, pressToShowButton;
90
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
91
+ while (1) switch (_context2.prev = _context2.next) {
92
+ case 0:
93
+ mockBreakpointIndex.mockReturnValue(0);
94
+ links = [{
95
+ label: 'Home',
96
+ href: '/'
97
+ }, {
98
+ label: 'Applications',
99
+ href: '/apps'
100
+ }, {
101
+ label: 'Applications 3',
102
+ href: '/apps/3'
103
+ }, {
104
+ label: 'Applications 4',
105
+ href: '/apps/4'
106
+ }, {
107
+ label: 'The last'
108
+ }];
109
+ user = _userEvent["default"].setup();
110
+ _renderWithTheme = renderWithTheme((0, _jsxRuntime.jsx)(_Breadcrumbs.Breadcrumbs, {
111
+ wrapMode: "collapsible",
112
+ label: "Main Collapsible Breadcrumb",
113
+ LinkComponent: CustomLink,
114
+ links: links
115
+ })), container = _renderWithTheme.container; // Should find the nav label
116
+ navEl = _react.screen.getByLabelText('Main Collapsible Breadcrumb');
117
+ expect(navEl).toBeInTheDocument();
118
+
119
+ // Contract should have
120
+ expect(navEl.querySelectorAll('li')).toHaveLength(3);
121
+ pressToShowButton = _react.screen.getByRole('button', {
122
+ name: 'Press to show more breadcrumbs'
123
+ }); // Should find all links
124
+ expect(_react.screen.getByText('Home')).toBeInTheDocument();
125
+ expect(pressToShowButton).toBeInTheDocument();
126
+ expect(_react.screen.getByText('The last')).toHaveAttribute('aria-current', 'page');
127
+
128
+ // Click to expand the breadcrumbs
129
+ _context2.next = 13;
130
+ return user.click(pressToShowButton);
131
+ case 13:
132
+ expect(navEl.querySelectorAll('li')).toHaveLength(5);
133
+
134
+ // Check for accessibility issues
135
+ _context2.t0 = expect;
136
+ _context2.next = 17;
137
+ return (0, _jestAxe.axe)(container);
138
+ case 17:
139
+ _context2.t1 = _context2.sent;
140
+ (0, _context2.t0)(_context2.t1).toHaveNoViolations();
141
+ case 19:
142
+ case "end":
143
+ return _context2.stop();
144
+ }
145
+ }, _callee2);
146
+ })));
147
+ });
76
148
  });
@@ -1,3 +1,4 @@
1
+ import { ThemeUIStyleObject } from 'theme-ui';
1
2
  export declare const smallestScreenItemStyles: {
2
3
  '&::before': {
3
4
  display: string;
@@ -10,3 +11,4 @@ export declare const smallestScreenItemStyles: {
10
11
  content: string;
11
12
  };
12
13
  };
14
+ export declare const collapsibleSeparatorStyles: ThemeUIStyleObject;
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.smallestScreenItemStyles = void 0;
4
+ exports.smallestScreenItemStyles = exports.collapsibleSeparatorStyles = void 0;
5
+ var _Link = require("../Link/Link");
6
+ var _breadcrumbs = require("../Nav/styles/variants/breadcrumbs");
7
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
5
8
  var smallestScreenItemStyles = exports.smallestScreenItemStyles = {
6
9
  '&::before': {
7
10
  display: 'inline-block',
@@ -13,4 +16,7 @@ var smallestScreenItemStyles = exports.smallestScreenItemStyles = {
13
16
  height: '0.8em',
14
17
  content: "'←'"
15
18
  }
16
- };
19
+ };
20
+ var collapsibleSeparatorStyles = exports.collapsibleSeparatorStyles = _extends({
21
+ all: 'unset'
22
+ }, _breadcrumbs.breadcrumbsLinkStyles, _Link.linkUnderlineProperties);
@@ -1,37 +1,26 @@
1
- export function Dropdown({ trigger, children, open, defaultOpen, onOpenChange, modal, dir, contentProps, portalProps, className, }: {
2
- trigger: any;
3
- children: any;
4
- open?: undefined;
5
- defaultOpen?: boolean | undefined;
6
- onOpenChange?: undefined;
7
- modal?: boolean | undefined;
8
- dir?: string | undefined;
9
- contentProps?: {} | undefined;
10
- portalProps?: {} | undefined;
11
- className: any;
12
- }): React.JSX.Element;
13
- export namespace Dropdown {
14
- namespace propTypes {
15
- let trigger: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
16
- let children: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
17
- let open: PropTypes.Requireable<boolean>;
18
- let defaultOpen: PropTypes.Requireable<boolean>;
19
- let onOpenChange: PropTypes.Requireable<(...args: any[]) => any>;
20
- let modal: PropTypes.Requireable<boolean>;
21
- let dir: PropTypes.Requireable<string>;
22
- let contentProps: PropTypes.Requireable<any>;
23
- let portalProps: PropTypes.Requireable<any>;
24
- let className: PropTypes.Requireable<string>;
25
- }
26
- }
27
- import React from 'react';
28
- import PropTypes from 'prop-types';
29
- export const DropdownTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
30
- export const DropdownRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
31
- export const DropdownItemIndicator: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
32
- export const DropdownLabel: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
33
- export const DropdownSeparator: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
34
- export const DropdownSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
35
- export const DropdownSubTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>>;
36
- export const DropdownSubContent: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>>;
1
+ /** @jsxImportSource theme-ui */
37
2
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
3
+ import React, { ReactNode } from 'react';
4
+ import { DropdownContentProps } from './DropdownContent';
5
+ declare const DropdownTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const DropdownRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
7
+ declare const DropdownItemIndicator: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
8
+ declare const DropdownLabel: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
9
+ declare const DropdownSeparator: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
10
+ declare const DropdownSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
11
+ declare const DropdownSubTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>>;
12
+ declare const DropdownSubContent: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>>;
13
+ export interface DropdownProps {
14
+ trigger: ReactNode;
15
+ children: ReactNode;
16
+ open?: boolean;
17
+ defaultOpen?: boolean;
18
+ onOpenChange?: (open: boolean) => void;
19
+ modal?: boolean;
20
+ dir?: 'ltr' | 'rtl';
21
+ contentProps?: DropdownContentProps;
22
+ portalProps?: object;
23
+ className?: string;
24
+ }
25
+ export declare const Dropdown: React.FC<DropdownProps>;
26
+ export { DropdownTrigger, DropdownRadioGroup, DropdownItemIndicator, DropdownLabel, DropdownSeparator, DropdownSub, DropdownSubTrigger, DropdownSubContent, };
@@ -1,101 +1,62 @@
1
- /** @jsxImportSource theme-ui */
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
7
- import classNames from 'classnames';
8
- import PropTypes from 'prop-types';
9
- import React from 'react';
10
-
11
- /**
12
- * Internal dependencies
13
- */
14
- import { DropdownContent } from './DropdownContent';
15
-
16
- const DropdownMenu = DropdownMenuPrimitive.Root;
17
- const DropdownTrigger = DropdownMenuPrimitive.Trigger;
18
- const DropdownRadioGroup = DropdownMenuPrimitive.RadioGroup;
19
- const DropdownItemIndicator = DropdownMenuPrimitive.DropdownMenuItemIndicator;
20
- const DropdownLabel = DropdownMenuPrimitive.DropdownMenuLabel;
21
- const DropdownSeparator = DropdownMenuPrimitive.DropdownMenuSeparator;
22
- const DropdownSub = DropdownMenuPrimitive.DropdownMenuSub;
23
- const DropdownSubTrigger = DropdownMenuPrimitive.DropdownMenuSubTrigger;
24
- const DropdownSubContent = DropdownMenuPrimitive.DropdownMenuSubContent;
25
-
26
- export const Dropdown = ( {
27
- trigger,
28
- children,
29
- // Radix Specific Properties
30
- open = undefined,
31
- defaultOpen = false,
32
- onOpenChange = undefined,
33
- modal = true,
34
- dir = 'ltr',
35
- contentProps = {},
36
- portalProps = {},
37
- className,
38
- } ) => {
39
- const firstChild = React.useMemo(
40
- () =>
41
- React.isValidElement( children ) ? React.Children.only( children )?.type?.displayName : '',
42
- [ children ]
43
- );
44
-
45
- return (
46
- <DropdownMenu
47
- className={ classNames( 'vip-dropdown-menu', className ) }
48
- open={ open }
49
- defaultOpen={ defaultOpen }
50
- onOpenChange={ onOpenChange }
51
- modal={ modal }
52
- dir={ dir }
53
- >
54
- <DropdownTrigger className="vip-dropdown-trigger" asChild>
55
- { trigger }
56
- </DropdownTrigger>
57
-
58
- <DropdownMenuPrimitive.Portal { ...portalProps }>
59
- { /* User can customize the content */ }
60
- { firstChild === 'DropdownContent' ? (
61
- children
62
- ) : (
63
- <DropdownContent { ...contentProps }>
64
- { children }
65
- <DropdownMenuPrimitive.Arrow sx={ { fill: 'background', boxShadow: 'high' } } />
66
- </DropdownContent>
67
- ) }
68
- </DropdownMenuPrimitive.Portal>
69
- </DropdownMenu>
70
- );
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.DropdownTrigger = exports.DropdownSubTrigger = exports.DropdownSubContent = exports.DropdownSub = exports.DropdownSeparator = exports.DropdownRadioGroup = exports.DropdownLabel = exports.DropdownItemIndicator = exports.Dropdown = void 0;
5
+ var DropdownMenuPrimitive = _interopRequireWildcard(require("@radix-ui/react-dropdown-menu"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _DropdownContent = require("./DropdownContent");
8
+ var _jsxRuntime = require("theme-ui/jsx-runtime");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
12
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } /** @jsxImportSource theme-ui */
13
+ var DropdownMenu = DropdownMenuPrimitive.Root;
14
+ var DropdownTrigger = exports.DropdownTrigger = DropdownMenuPrimitive.Trigger;
15
+ var DropdownRadioGroup = exports.DropdownRadioGroup = DropdownMenuPrimitive.RadioGroup;
16
+ var DropdownItemIndicator = exports.DropdownItemIndicator = DropdownMenuPrimitive.DropdownMenuItemIndicator;
17
+ var DropdownLabel = exports.DropdownLabel = DropdownMenuPrimitive.DropdownMenuLabel;
18
+ var DropdownSeparator = exports.DropdownSeparator = DropdownMenuPrimitive.DropdownMenuSeparator;
19
+ var DropdownSub = exports.DropdownSub = DropdownMenuPrimitive.DropdownMenuSub;
20
+ var DropdownSubTrigger = exports.DropdownSubTrigger = DropdownMenuPrimitive.DropdownMenuSubTrigger;
21
+ var DropdownSubContent = exports.DropdownSubContent = DropdownMenuPrimitive.DropdownMenuSubContent;
22
+ var Dropdown = exports.Dropdown = function Dropdown(_ref) {
23
+ var trigger = _ref.trigger,
24
+ children = _ref.children,
25
+ _ref$open = _ref.open,
26
+ open = _ref$open === void 0 ? undefined : _ref$open,
27
+ _ref$defaultOpen = _ref.defaultOpen,
28
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
29
+ _ref$onOpenChange = _ref.onOpenChange,
30
+ onOpenChange = _ref$onOpenChange === void 0 ? undefined : _ref$onOpenChange,
31
+ _ref$modal = _ref.modal,
32
+ modal = _ref$modal === void 0 ? true : _ref$modal,
33
+ _ref$dir = _ref.dir,
34
+ dir = _ref$dir === void 0 ? 'ltr' : _ref$dir,
35
+ _ref$contentProps = _ref.contentProps,
36
+ contentProps = _ref$contentProps === void 0 ? {} : _ref$contentProps,
37
+ _ref$portalProps = _ref.portalProps,
38
+ portalProps = _ref$portalProps === void 0 ? {} : _ref$portalProps;
39
+ return (0, _jsxRuntime.jsxs)(DropdownMenu, {
40
+ open: open,
41
+ defaultOpen: defaultOpen,
42
+ onOpenChange: onOpenChange,
43
+ modal: modal,
44
+ dir: dir,
45
+ children: [(0, _jsxRuntime.jsx)(DropdownTrigger, {
46
+ className: "vip-dropdown-trigger",
47
+ asChild: true,
48
+ children: trigger
49
+ }), (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.Portal, _extends({}, portalProps, {
50
+ children: (0, _jsxRuntime.jsxs)(_DropdownContent.DropdownContent, _extends({}, contentProps, {
51
+ children: [children, (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.Arrow, {
52
+ sx: {
53
+ fill: 'background',
54
+ boxShadow: 'high'
55
+ }
56
+ })]
57
+ }))
58
+ }))]
59
+ });
71
60
  };
72
61
 
73
- Dropdown.propTypes = {
74
- trigger: PropTypes.node.isRequired,
75
- children: PropTypes.node.isRequired,
76
-
77
- // Props in root: https://www.radix-ui.com/docs/primitives/components/dropdown-menu#root
78
- open: PropTypes.bool,
79
- defaultOpen: PropTypes.bool,
80
- onOpenChange: PropTypes.func,
81
- modal: PropTypes.bool,
82
- dir: PropTypes.string,
83
-
84
- // Content props in: https://www.radix-ui.com/docs/primitives/components/dropdown-menu#content
85
- contentProps: PropTypes.any,
86
- // Portal props in: https://www.radix-ui.com/docs/primitives/components/dropdown-menu#portal
87
- portalProps: PropTypes.any,
88
- className: PropTypes.string,
89
- };
90
-
91
- // Exports
92
- export {
93
- DropdownTrigger,
94
- DropdownRadioGroup,
95
- DropdownItemIndicator,
96
- DropdownLabel,
97
- DropdownSeparator,
98
- DropdownSub,
99
- DropdownSubTrigger,
100
- DropdownSubContent,
101
- };
62
+ // Exports
@@ -1,31 +1,6 @@
1
1
  declare namespace _default {
2
2
  let title: string;
3
- let component: {
4
- ({ trigger, children, open, defaultOpen, onOpenChange, modal, dir, contentProps, portalProps, className, }: {
5
- trigger: any;
6
- children: any;
7
- open?: undefined;
8
- defaultOpen?: boolean | undefined;
9
- onOpenChange?: undefined;
10
- modal?: boolean | undefined;
11
- dir?: string | undefined;
12
- contentProps?: {} | undefined;
13
- portalProps?: {} | undefined;
14
- className: any;
15
- }): React.JSX.Element;
16
- propTypes: {
17
- trigger: import("prop-types").Validator<NonNullable<import("prop-types").ReactNodeLike>>;
18
- children: import("prop-types").Validator<NonNullable<import("prop-types").ReactNodeLike>>;
19
- open: import("prop-types").Requireable<boolean>;
20
- defaultOpen: import("prop-types").Requireable<boolean>;
21
- onOpenChange: import("prop-types").Requireable<(...args: any[]) => any>;
22
- modal: import("prop-types").Requireable<boolean>;
23
- dir: import("prop-types").Requireable<string>;
24
- contentProps: import("prop-types").Requireable<any>;
25
- portalProps: import("prop-types").Requireable<any>;
26
- className: import("prop-types").Requireable<string>;
27
- };
28
- };
3
+ let component: React.FC<import("./Dropdown").DropdownProps>;
29
4
  }
30
5
  export default _default;
31
6
  export function Default(): React.JSX.Element;