@automattic/vip-design-system 2.5.0 → 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.
- package/build/system/Dropdown/Dropdown.d.ts +25 -36
- package/build/system/Dropdown/Dropdown.js +60 -99
- package/build/system/Dropdown/Dropdown.stories.d.ts +1 -26
- package/build/system/Dropdown/Dropdown.test.js +51 -28
- package/build/system/Dropdown/DropdownContent.d.ts +14 -10
- package/build/system/Dropdown/DropdownContent.js +43 -47
- package/build/system/Dropdown/DropdownItem.d.ts +20 -32
- package/build/system/Dropdown/DropdownItem.js +86 -103
- package/build/system/Dropdown/DropdownLabel.d.ts +11 -7
- package/build/system/Dropdown/DropdownLabel.js +29 -29
- package/build/system/Dropdown/DropdownSeparator.d.ts +10 -6
- package/build/system/Dropdown/DropdownSeparator.js +28 -28
- package/build/system/Dropdown/index.d.ts +17 -39
- package/build/system/Dropdown/index.js +23 -50
- package/build/system/FilterDropdown/FilterDropdown.d.ts +27 -0
- package/build/system/FilterDropdown/FilterDropdown.js +75 -0
- package/build/system/FilterDropdown/FilterDropdown.stories.d.ts +18 -0
- package/build/system/FilterDropdown/FilterDropdown.stories.js +46 -0
- package/build/system/FilterDropdown/FilterDropdown.test.d.ts +1 -0
- package/build/system/FilterDropdown/FilterDropdown.test.js +53 -0
- package/build/system/Hr/Hr.d.ts +7 -0
- package/build/system/Hr/Hr.js +22 -0
- package/build/system/Hr/Hr.stories.d.ts +23 -0
- package/build/system/Hr/Hr.stories.js +30 -0
- package/build/system/Hr/Hr.test.d.ts +1 -0
- package/build/system/Hr/Hr.test.js +41 -0
- package/build/system/Page/Page.d.ts +2 -0
- package/build/system/Page/Page.js +10 -0
- package/build/system/Page/Page.test.d.ts +1 -0
- package/build/system/Page/Page.test.js +41 -0
- package/build/system/index.d.ts +3 -1
- package/build/system/index.js +4 -0
- package/build/system/theme/index.d.ts +26 -20
- package/build/system/theme/index.js +2 -2
- package/package.json +1 -1
- package/src/system/Dropdown/{Dropdown.test.js → Dropdown.test.tsx} +2 -1
- package/src/system/Dropdown/Dropdown.tsx +72 -0
- package/src/system/Dropdown/DropdownContent.tsx +46 -0
- package/src/system/Dropdown/DropdownItem.tsx +112 -0
- package/src/system/Dropdown/DropdownLabel.tsx +29 -0
- package/src/system/Dropdown/DropdownSeparator.tsx +28 -0
- package/src/system/Dropdown/{index.js → index.ts} +1 -3
- package/src/system/FilterDropdown/FilterDropdown.stories.tsx +57 -0
- package/src/system/FilterDropdown/FilterDropdown.test.tsx +52 -0
- package/src/system/FilterDropdown/FilterDropdown.tsx +92 -0
- package/src/system/Hr/Hr.stories.tsx +48 -0
- package/src/system/Hr/Hr.test.tsx +22 -0
- package/src/system/Hr/Hr.tsx +11 -0
- package/src/system/Page/Page.test.tsx +22 -0
- package/src/system/Page/Page.tsx +3 -0
- package/src/system/index.js +4 -0
- package/src/system/theme/index.js +2 -2
- package/tokens/valet-core/$metadata.json +1 -17
- package/tokens/valet-core/$themes.json +0 -2586
- package/src/system/Dropdown/Dropdown.js +0 -101
- package/src/system/Dropdown/DropdownContent.js +0 -50
- package/src/system/Dropdown/DropdownItem.js +0 -108
- package/src/system/Dropdown/DropdownLabel.js +0 -31
- package/src/system/Dropdown/DropdownSeparator.js +0 -30
- package/tokens/valet-core/figma-parsely-web-type.json +0 -1217
- package/tokens/valet-core/figma-valet-web-type.json +0 -1217
- package/tokens/valet-core/figma-wpvip-services-web-type.json +0 -1267
- package/tokens/valet-core/figma-wpvip-web-type.json +0 -1213
- package/tokens/valet-core/parsely-web-color.json +0 -729
- package/tokens/valet-core/parsely-web-core.json +0 -172
- package/tokens/valet-core/parsely-web-type.json +0 -362
- package/tokens/valet-core/valet-web-color.json +0 -677
- package/tokens/valet-core/valet-web-core.json +0 -172
- package/tokens/valet-core/wpvip-services-web-color.json +0 -730
- package/tokens/valet-core/wpvip-services-web-core.json +0 -172
- package/tokens/valet-core/wpvip-services-web-type.json +0 -412
- package/tokens/valet-core/wpvip-web-color-dark.json +0 -735
- package/tokens/valet-core/wpvip-web-color.json +0 -730
- package/tokens/valet-core/wpvip-web-type.json +0 -412
- package/tokens/valet-core/wpvip-web.json +0 -1310
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports["default"] = exports.Default = void 0;
|
|
5
|
+
var _FilterDropdown = require("./FilterDropdown");
|
|
6
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
7
|
+
/** @jsxImportSource theme-ui */
|
|
8
|
+
var _default = exports["default"] = {
|
|
9
|
+
title: 'FilterDropdown',
|
|
10
|
+
component: _FilterDropdown.FilterDropdown,
|
|
11
|
+
parameters: {
|
|
12
|
+
docs: {
|
|
13
|
+
description: {
|
|
14
|
+
component: "\n\nA Dropdown component that acts as a filter for a list of items.\n\n## Guidance\n\n### When to use the FilterDropdown component\n\n- When you want a Dropdown option that sticks with the selected value on the trigger button;\n\n### When to consider something else\n\n- When you want to display a list of options that does not require to stick with the selected value on the trigger button;\n\n## Component Properties\n"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var filterTypes = ['all', 'hasUpdate', 'isVulnerable'];
|
|
20
|
+
var FILTER_OPTIONS = {
|
|
21
|
+
all: {
|
|
22
|
+
value: 'all',
|
|
23
|
+
label: 'All'
|
|
24
|
+
},
|
|
25
|
+
hasUpdate: {
|
|
26
|
+
value: 'hasUpdate',
|
|
27
|
+
label: 'Update Available'
|
|
28
|
+
},
|
|
29
|
+
isVulnerable: {
|
|
30
|
+
value: 'isVulnerable',
|
|
31
|
+
label: 'Known Vulnerabilities'
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
var Default = exports.Default = {
|
|
35
|
+
render: function render() {
|
|
36
|
+
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
37
|
+
children: (0, _jsxRuntime.jsx)(_FilterDropdown.FilterDropdown, {
|
|
38
|
+
className: "vip-plugins-filter-dropdown",
|
|
39
|
+
label: "Filter:",
|
|
40
|
+
filters: FILTER_OPTIONS,
|
|
41
|
+
onSelect: function onSelect() {},
|
|
42
|
+
defaultValue: FILTER_OPTIONS.all.value
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
5
|
+
require("@testing-library/jest-dom");
|
|
6
|
+
var _FilterDropdown = require("./FilterDropdown");
|
|
7
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
8
|
+
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
|
+
function getMenu() {
|
|
11
|
+
return _react.screen.getByRole('button', {
|
|
12
|
+
name: 'Filter: Auth Method All checked'
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
var props = {
|
|
16
|
+
filters: {
|
|
17
|
+
ALL_USERS: {
|
|
18
|
+
label: 'All',
|
|
19
|
+
authMethod: ''
|
|
20
|
+
},
|
|
21
|
+
WP_USERS: {
|
|
22
|
+
label: 'WP.com',
|
|
23
|
+
authMethod: 'wpcom'
|
|
24
|
+
},
|
|
25
|
+
GH_USERS: {
|
|
26
|
+
label: 'GitHub',
|
|
27
|
+
authMethod: 'github'
|
|
28
|
+
},
|
|
29
|
+
SSO_USERS: {
|
|
30
|
+
label: 'SSO',
|
|
31
|
+
authMethod: 'organization_sso'
|
|
32
|
+
},
|
|
33
|
+
SSO_OTHER_USERS: {
|
|
34
|
+
label: 'SSO (third-party)',
|
|
35
|
+
authMethod: 'other_sso'
|
|
36
|
+
},
|
|
37
|
+
BLOCKED_USERS: {
|
|
38
|
+
label: 'Blocked Auth Methods',
|
|
39
|
+
authMethod: 'restricted'
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
label: 'Auth Method',
|
|
43
|
+
onSelect: jest.fn()
|
|
44
|
+
};
|
|
45
|
+
describe('<FilterDropdown />', function () {
|
|
46
|
+
it('render with all props passed', function () {
|
|
47
|
+
(0, _react.render)((0, _jsxRuntime.jsx)(_FilterDropdown.FilterDropdown, _extends({}, props)));
|
|
48
|
+
var menu = getMenu();
|
|
49
|
+
expect(menu).toBeInTheDocument();
|
|
50
|
+
expect(menu).toHaveTextContent(/Filter:/);
|
|
51
|
+
expect(menu).toHaveTextContent(/Auth Method/);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.Hr = void 0;
|
|
5
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
6
|
+
var _excluded = ["sx"];
|
|
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); }
|
|
8
|
+
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; }
|
|
9
|
+
/** @jsxImportSource theme-ui */
|
|
10
|
+
|
|
11
|
+
var Hr = exports.Hr = function Hr(_ref) {
|
|
12
|
+
var sx = _ref.sx,
|
|
13
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
14
|
+
return (0, _jsxRuntime.jsx)("hr", _extends({
|
|
15
|
+
sx: _extends({
|
|
16
|
+
my: 4,
|
|
17
|
+
border: 0,
|
|
18
|
+
height: '1px',
|
|
19
|
+
backgroundColor: 'borders.2'
|
|
20
|
+
}, sx)
|
|
21
|
+
}, rest));
|
|
22
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* External dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { Hr } from './Hr';
|
|
6
|
+
import type { StoryObj } from '@storybook/react';
|
|
7
|
+
/**
|
|
8
|
+
* Internal dependencies
|
|
9
|
+
*/
|
|
10
|
+
declare const _default: {
|
|
11
|
+
title: string;
|
|
12
|
+
component: ({ sx, ...rest }: import("./Hr").HrProps) => import("react").JSX.Element;
|
|
13
|
+
parameters: {
|
|
14
|
+
docs: {
|
|
15
|
+
description: {
|
|
16
|
+
component: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
|
22
|
+
type Story = StoryObj<typeof Hr>;
|
|
23
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports["default"] = exports.Default = void 0;
|
|
5
|
+
var _Hr = require("./Hr");
|
|
6
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
7
|
+
/**
|
|
8
|
+
* External dependencies
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
var _default = exports["default"] = {
|
|
14
|
+
title: 'Hr',
|
|
15
|
+
component: _Hr.Hr,
|
|
16
|
+
parameters: {
|
|
17
|
+
docs: {
|
|
18
|
+
description: {
|
|
19
|
+
component: "\n\nHorizontal Line.\n\n## Guidance\n\n### When to use the link component\n\n- When you want to separate sections with a horizontal line.\n\n### When to consider something else\n\n- When you want to display a vertical line;\n\n## Component Properties\n"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var Default = exports.Default = {
|
|
25
|
+
render: function render() {
|
|
26
|
+
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
27
|
+
children: ["Horizontal Line:", (0, _jsxRuntime.jsx)(_Hr.Hr, {})]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _jestAxe = require("jest-axe");
|
|
5
|
+
var _themeUi = require("theme-ui");
|
|
6
|
+
var _Hr = require("./Hr");
|
|
7
|
+
var _theme = _interopRequireDefault(require("../theme"));
|
|
8
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
+
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; }
|
|
11
|
+
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); } }
|
|
12
|
+
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); }); }; } /** @jsxImportSource theme-ui */ /* eslint-disable @typescript-eslint/ban-ts-comment */ // @ts-nocheck
|
|
13
|
+
var renderWithTheme = function renderWithTheme(children) {
|
|
14
|
+
return (0, _react.render)((0, _jsxRuntime.jsx)(_themeUi.ThemeUIProvider, {
|
|
15
|
+
theme: _theme["default"],
|
|
16
|
+
children: children
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
var renderComponent = function renderComponent() {
|
|
20
|
+
return renderWithTheme((0, _jsxRuntime.jsx)(_Hr.Hr, {}));
|
|
21
|
+
};
|
|
22
|
+
describe('<Hr />', function () {
|
|
23
|
+
it('renders the Hr component', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
24
|
+
var _renderComponent, container;
|
|
25
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
26
|
+
while (1) switch (_context.prev = _context.next) {
|
|
27
|
+
case 0:
|
|
28
|
+
_renderComponent = renderComponent(), container = _renderComponent.container;
|
|
29
|
+
_context.t0 = expect;
|
|
30
|
+
_context.next = 4;
|
|
31
|
+
return (0, _jestAxe.axe)(container);
|
|
32
|
+
case 4:
|
|
33
|
+
_context.t1 = _context.sent;
|
|
34
|
+
(0, _context.t0)(_context.t1).toHaveNoViolations();
|
|
35
|
+
case 6:
|
|
36
|
+
case "end":
|
|
37
|
+
return _context.stop();
|
|
38
|
+
}
|
|
39
|
+
}, _callee);
|
|
40
|
+
})));
|
|
41
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.Page = void 0;
|
|
5
|
+
var _Box = require("../Box");
|
|
6
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
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); }
|
|
8
|
+
var Page = exports.Page = function Page(props) {
|
|
9
|
+
return (0, _jsxRuntime.jsx)(_Box.Box, _extends({}, props));
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _react = require("@testing-library/react");
|
|
4
|
+
var _jestAxe = require("jest-axe");
|
|
5
|
+
var _themeUi = require("theme-ui");
|
|
6
|
+
var _Page = require("./Page");
|
|
7
|
+
var _theme = _interopRequireDefault(require("../theme"));
|
|
8
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
|
+
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; }
|
|
11
|
+
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); } }
|
|
12
|
+
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); }); }; } /** @jsxImportSource theme-ui */ /* eslint-disable @typescript-eslint/ban-ts-comment */ // @ts-nocheck
|
|
13
|
+
var renderWithTheme = function renderWithTheme(children) {
|
|
14
|
+
return (0, _react.render)((0, _jsxRuntime.jsx)(_themeUi.ThemeUIProvider, {
|
|
15
|
+
theme: _theme["default"],
|
|
16
|
+
children: children
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
var renderComponent = function renderComponent() {
|
|
20
|
+
return renderWithTheme((0, _jsxRuntime.jsx)(_Page.Page, {}));
|
|
21
|
+
};
|
|
22
|
+
describe('<Page />', function () {
|
|
23
|
+
it('renders the Page component', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
24
|
+
var _renderComponent, container;
|
|
25
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
26
|
+
while (1) switch (_context.prev = _context.next) {
|
|
27
|
+
case 0:
|
|
28
|
+
_renderComponent = renderComponent(), container = _renderComponent.container;
|
|
29
|
+
_context.t0 = expect;
|
|
30
|
+
_context.next = 4;
|
|
31
|
+
return (0, _jestAxe.axe)(container);
|
|
32
|
+
case 4:
|
|
33
|
+
_context.t1 = _context.sent;
|
|
34
|
+
(0, _context.t0)(_context.t1).toHaveNoViolations();
|
|
35
|
+
case 6:
|
|
36
|
+
case "end":
|
|
37
|
+
return _context.stop();
|
|
38
|
+
}
|
|
39
|
+
}, _callee);
|
|
40
|
+
})));
|
|
41
|
+
});
|
package/build/system/index.d.ts
CHANGED
|
@@ -26,10 +26,12 @@ import { MobileMenuTrigger } from './MobileMenu/MobileMenu';
|
|
|
26
26
|
import { MobileMenuWrapper } from './MobileMenu/MobileMenu';
|
|
27
27
|
import { NewConfirmationDialog } from './NewConfirmationDialog';
|
|
28
28
|
import { Grid } from './Grid';
|
|
29
|
+
import { FilterDropdown } from './FilterDropdown/FilterDropdown';
|
|
29
30
|
import { Flex } from './Flex';
|
|
30
31
|
import { Notice } from './Notice';
|
|
31
32
|
import { OptionRow } from './OptionRow';
|
|
32
33
|
import { Heading } from './Heading';
|
|
34
|
+
import { Hr } from './Hr/Hr';
|
|
33
35
|
import { Input } from './Form';
|
|
34
36
|
import { Label } from './Form';
|
|
35
37
|
import { Spinner } from './Spinner';
|
|
@@ -57,4 +59,4 @@ import { Validation } from './Form';
|
|
|
57
59
|
import { Wizard } from './Wizard';
|
|
58
60
|
import { WizardStep } from './Wizard';
|
|
59
61
|
import theme from './theme';
|
|
60
|
-
export { Accordion, Avatar, Badge, Box, Breadcrumbs, Button, ButtonSubmit, ButtonVariant, Card, Checkbox, Code, Dialog, NewDialog, Form, Drawer, Dropdown, DialogButton, DialogMenu, DialogMenuItem, DialogDivider, DialogContent, DialogTrigger, ConfirmationDialog, MobileMenu, MobileMenuTrigger, MobileMenuWrapper, NewConfirmationDialog, Grid, Flex, Notice, OptionRow, Heading, Input, Label, Spinner, Table, TableRow, TableCell, Tooltip, Link, LinkExternal, Radio, RadioBoxGroup, Textarea, Progress, Text, Tabs, Nav, NavItem, TabsTrigger, TabsContent, TabsList, Toggle, ToggleRow, Toolbar, Validation, Wizard, WizardStep, theme };
|
|
62
|
+
export { Accordion, Avatar, Badge, Box, Breadcrumbs, Button, ButtonSubmit, ButtonVariant, Card, Checkbox, Code, Dialog, NewDialog, Form, Drawer, Dropdown, DialogButton, DialogMenu, DialogMenuItem, DialogDivider, DialogContent, DialogTrigger, ConfirmationDialog, MobileMenu, MobileMenuTrigger, MobileMenuWrapper, NewConfirmationDialog, Grid, FilterDropdown, Flex, Notice, OptionRow, Heading, Hr, Input, Label, Spinner, Table, TableRow, TableCell, Tooltip, Link, LinkExternal, Radio, RadioBoxGroup, Textarea, Progress, Text, Tabs, Nav, NavItem, TabsTrigger, TabsContent, TabsList, Toggle, ToggleRow, Toolbar, Validation, Wizard, WizardStep, theme };
|
package/build/system/index.js
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
} from './Dialog';
|
|
22
22
|
import * as Drawer from './Drawer/Drawer';
|
|
23
23
|
import * as Dropdown from './Dropdown';
|
|
24
|
+
import { FilterDropdown } from './FilterDropdown/FilterDropdown';
|
|
24
25
|
import { Flex } from './Flex';
|
|
25
26
|
import {
|
|
26
27
|
Input,
|
|
@@ -35,6 +36,7 @@ import {
|
|
|
35
36
|
} from './Form';
|
|
36
37
|
import { Grid } from './Grid';
|
|
37
38
|
import { Heading } from './Heading';
|
|
39
|
+
import { Hr } from './Hr/Hr';
|
|
38
40
|
import { Link } from './Link';
|
|
39
41
|
import LinkExternal from './LinkExternal/LinkExternal';
|
|
40
42
|
import { MobileMenuWrapper, MobileMenuTrigger, MobileMenu } from './MobileMenu/MobileMenu';
|
|
@@ -84,10 +86,12 @@ export {
|
|
|
84
86
|
MobileMenuWrapper,
|
|
85
87
|
NewConfirmationDialog,
|
|
86
88
|
Grid,
|
|
89
|
+
FilterDropdown,
|
|
87
90
|
Flex,
|
|
88
91
|
Notice,
|
|
89
92
|
OptionRow,
|
|
90
93
|
Heading,
|
|
94
|
+
Hr,
|
|
91
95
|
Input,
|
|
92
96
|
Label,
|
|
93
97
|
Spinner,
|
|
@@ -1168,32 +1168,38 @@ declare namespace _default {
|
|
|
1168
1168
|
};
|
|
1169
1169
|
};
|
|
1170
1170
|
export namespace styles {
|
|
1171
|
-
|
|
1172
|
-
fontFamily: string;
|
|
1173
|
-
lineHeight: string;
|
|
1174
|
-
fontWeight: string;
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1171
|
+
namespace root {
|
|
1172
|
+
export let fontFamily: string;
|
|
1173
|
+
export let lineHeight: string;
|
|
1174
|
+
export let fontWeight: string;
|
|
1175
|
+
let color_1: string;
|
|
1176
|
+
export { color_1 as color };
|
|
1177
|
+
let backgroundColor_5: string;
|
|
1178
|
+
export { backgroundColor_5 as backgroundColor };
|
|
1179
|
+
export let webkitFontSmoothing: string;
|
|
1180
|
+
export let mozOsxFontmoothing: string;
|
|
1181
|
+
export let a: {
|
|
1180
1182
|
'&:hover': {
|
|
1181
1183
|
textDecorationLine: string;
|
|
1182
1184
|
textDecorationThickness: string;
|
|
1183
1185
|
textUnderlineOffset: string;
|
|
1184
1186
|
};
|
|
1185
1187
|
};
|
|
1186
|
-
svg
|
|
1187
|
-
fill: string;
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1188
|
+
export namespace svg {
|
|
1189
|
+
export let fill: string;
|
|
1190
|
+
let display_1: string;
|
|
1191
|
+
export { display_1 as display };
|
|
1192
|
+
}
|
|
1193
|
+
export namespace pre {
|
|
1194
|
+
let fontFamily_1: string;
|
|
1195
|
+
export { fontFamily_1 as fontFamily };
|
|
1196
|
+
}
|
|
1197
|
+
export namespace p_2 {
|
|
1198
|
+
let color_2: string;
|
|
1199
|
+
export { color_2 as color };
|
|
1200
|
+
}
|
|
1201
|
+
export { p_2 as p };
|
|
1202
|
+
}
|
|
1197
1203
|
}
|
|
1198
1204
|
}
|
|
1199
1205
|
export default _default;
|
|
@@ -525,8 +525,8 @@ export default {
|
|
|
525
525
|
fontWeight: 'body',
|
|
526
526
|
color: 'text',
|
|
527
527
|
backgroundColor: 'backgrounds.primary',
|
|
528
|
-
|
|
529
|
-
|
|
528
|
+
webkitFontSmoothing: 'antialiased',
|
|
529
|
+
mozOsxFontmoothing: 'grayscale',
|
|
530
530
|
a: {
|
|
531
531
|
'&:hover': {
|
|
532
532
|
textDecorationLine: 'underline',
|
package/package.json
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { fireEvent, render, screen } from '@testing-library/react';
|
|
5
5
|
import { axe } from 'jest-axe';
|
|
6
|
+
import React from 'react';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Internal dependencies
|
|
@@ -28,6 +29,6 @@ describe( '<Dropdown />', () => {
|
|
|
28
29
|
fireEvent.click( getButton() );
|
|
29
30
|
|
|
30
31
|
// Check for accessibility issues
|
|
31
|
-
|
|
32
|
+
expect( await axe( container ) ).toHaveNoViolations();
|
|
32
33
|
} );
|
|
33
34
|
} );
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
|
|
3
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
4
|
+
import React, { ReactNode } from 'react';
|
|
5
|
+
|
|
6
|
+
import { DropdownContent, DropdownContentProps } from './DropdownContent';
|
|
7
|
+
|
|
8
|
+
const DropdownMenu = DropdownMenuPrimitive.Root;
|
|
9
|
+
const DropdownTrigger = DropdownMenuPrimitive.Trigger;
|
|
10
|
+
const DropdownRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
11
|
+
const DropdownItemIndicator = DropdownMenuPrimitive.DropdownMenuItemIndicator;
|
|
12
|
+
const DropdownLabel = DropdownMenuPrimitive.DropdownMenuLabel;
|
|
13
|
+
const DropdownSeparator = DropdownMenuPrimitive.DropdownMenuSeparator;
|
|
14
|
+
const DropdownSub = DropdownMenuPrimitive.DropdownMenuSub;
|
|
15
|
+
const DropdownSubTrigger = DropdownMenuPrimitive.DropdownMenuSubTrigger;
|
|
16
|
+
const DropdownSubContent = DropdownMenuPrimitive.DropdownMenuSubContent;
|
|
17
|
+
|
|
18
|
+
export interface DropdownProps {
|
|
19
|
+
trigger: ReactNode;
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
open?: boolean;
|
|
22
|
+
defaultOpen?: boolean;
|
|
23
|
+
onOpenChange?: ( open: boolean ) => void;
|
|
24
|
+
modal?: boolean;
|
|
25
|
+
dir?: 'ltr' | 'rtl';
|
|
26
|
+
contentProps?: DropdownContentProps;
|
|
27
|
+
portalProps?: object;
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const Dropdown: React.FC< DropdownProps > = ( {
|
|
32
|
+
trigger,
|
|
33
|
+
children,
|
|
34
|
+
open = undefined,
|
|
35
|
+
defaultOpen = false,
|
|
36
|
+
onOpenChange = undefined,
|
|
37
|
+
modal = true,
|
|
38
|
+
dir = 'ltr',
|
|
39
|
+
contentProps = {},
|
|
40
|
+
portalProps = {},
|
|
41
|
+
} ) => (
|
|
42
|
+
<DropdownMenu
|
|
43
|
+
open={ open }
|
|
44
|
+
defaultOpen={ defaultOpen }
|
|
45
|
+
onOpenChange={ onOpenChange }
|
|
46
|
+
modal={ modal }
|
|
47
|
+
dir={ dir }
|
|
48
|
+
>
|
|
49
|
+
<DropdownTrigger className="vip-dropdown-trigger" asChild>
|
|
50
|
+
{ trigger }
|
|
51
|
+
</DropdownTrigger>
|
|
52
|
+
|
|
53
|
+
<DropdownMenuPrimitive.Portal { ...portalProps }>
|
|
54
|
+
<DropdownContent { ...contentProps }>
|
|
55
|
+
{ children }
|
|
56
|
+
<DropdownMenuPrimitive.Arrow sx={ { fill: 'background', boxShadow: 'high' } } />
|
|
57
|
+
</DropdownContent>
|
|
58
|
+
</DropdownMenuPrimitive.Portal>
|
|
59
|
+
</DropdownMenu>
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
// Exports
|
|
63
|
+
export {
|
|
64
|
+
DropdownTrigger,
|
|
65
|
+
DropdownRadioGroup,
|
|
66
|
+
DropdownItemIndicator,
|
|
67
|
+
DropdownLabel,
|
|
68
|
+
DropdownSeparator,
|
|
69
|
+
DropdownSub,
|
|
70
|
+
DropdownSubTrigger,
|
|
71
|
+
DropdownSubContent,
|
|
72
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** @jsxImportSource theme-ui */
|
|
2
|
+
|
|
3
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
|
|
7
|
+
export interface DropdownContentProps {
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const styles = {
|
|
12
|
+
minWidth: 220,
|
|
13
|
+
borderRadius: 2,
|
|
14
|
+
backgroundColor: 'background',
|
|
15
|
+
boxShadow: 'high',
|
|
16
|
+
px: 2,
|
|
17
|
+
py: 1,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const DropdownContent = React.forwardRef< HTMLDivElement, DropdownContentProps >(
|
|
21
|
+
( { className, ...props }, forwardRef ) => (
|
|
22
|
+
<DropdownMenuPrimitive.DropdownMenuContent
|
|
23
|
+
className={ classNames( 'vip-dropdown-menu-content', className ) }
|
|
24
|
+
ref={ forwardRef }
|
|
25
|
+
sx={ styles }
|
|
26
|
+
{ ...props }
|
|
27
|
+
/>
|
|
28
|
+
)
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
DropdownContent.displayName = 'DropdownContent';
|
|
32
|
+
|
|
33
|
+
export const DropdownSubContent = React.forwardRef< HTMLDivElement, DropdownContentProps >(
|
|
34
|
+
( { className, ...props }, forwardRef ) => (
|
|
35
|
+
<DropdownMenuPrimitive.Portal>
|
|
36
|
+
<DropdownMenuPrimitive.DropdownMenuSubContent
|
|
37
|
+
className={ classNames( 'vip-dropdown-menu-sub-content', className ) }
|
|
38
|
+
ref={ forwardRef }
|
|
39
|
+
sx={ styles }
|
|
40
|
+
{ ...props }
|
|
41
|
+
/>
|
|
42
|
+
</DropdownMenuPrimitive.Portal>
|
|
43
|
+
)
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
DropdownSubContent.displayName = 'DropdownSubContent';
|