@automattic/vip-design-system 0.17.0 → 0.18.2-0
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/.storybook/main.js +1 -0
- package/build/system/Dialog/Dialog.stories.js +1 -1
- package/build/system/Dropdown/Dropdown.js +79 -0
- package/build/system/Dropdown/Dropdown.stories.js +201 -0
- package/build/system/Dropdown/Dropdown.test.js +76 -0
- package/build/system/Dropdown/DropdownContent.js +55 -0
- package/build/system/Dropdown/DropdownItem.js +97 -0
- package/build/system/Dropdown/DropdownLabel.js +41 -0
- package/build/system/Dropdown/DropdownSeparator.js +40 -0
- package/build/system/Dropdown/index.js +48 -0
- package/build/system/NewConfirmationDialog/NewConfirmationDialog.js +1 -1
- package/build/system/NewDialog/DialogContent.js +2 -4
- package/build/system/NewDialog/DialogDescription.js +3 -2
- package/build/system/NewDialog/DialogTitle.js +5 -2
- package/build/system/NewDialog/NewDialog.js +32 -7
- package/build/system/NewDialog/NewDialog.stories.js +44 -8
- package/build/system/Tooltip/Tooltip.js +44 -42
- package/build/system/index.js +5 -1
- package/package.json +9 -6
- package/src/system/Dialog/Dialog.stories.jsx +1 -1
- package/src/system/Dropdown/Dropdown.js +66 -0
- package/src/system/Dropdown/Dropdown.stories.jsx +157 -0
- package/src/system/Dropdown/Dropdown.test.js +33 -0
- package/src/system/Dropdown/DropdownContent.js +30 -0
- package/src/system/Dropdown/DropdownItem.js +73 -0
- package/src/system/Dropdown/DropdownLabel.js +20 -0
- package/src/system/Dropdown/DropdownSeparator.js +19 -0
- package/src/system/Dropdown/index.js +54 -0
- package/src/system/NewConfirmationDialog/NewConfirmationDialog.js +1 -1
- package/src/system/NewDialog/DialogContent.js +2 -2
- package/src/system/NewDialog/DialogDescription.js +6 -2
- package/src/system/NewDialog/DialogTitle.js +6 -2
- package/src/system/NewDialog/NewDialog.js +26 -6
- package/src/system/NewDialog/NewDialog.stories.jsx +33 -3
- package/src/system/Tooltip/Tooltip.js +38 -36
- package/src/system/index.js +2 -0
package/.storybook/main.js
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.DropdownTrigger = exports.DropdownSubTrigger = exports.DropdownSubContent = exports.DropdownSub = exports.DropdownSeparator = exports.DropdownRadioGroup = exports.DropdownLabel = exports.DropdownItemIndicator = exports.Dropdown = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var DropdownMenuPrimitive = _interopRequireWildcard(require("@radix-ui/react-dropdown-menu"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
var _DropdownContent = require("./DropdownContent");
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
+
|
|
22
|
+
/** @jsxImportSource theme-ui */
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* External dependencies
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Internal dependencies
|
|
30
|
+
*/
|
|
31
|
+
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
32
|
+
var DropdownTrigger = DropdownMenuPrimitive.Trigger;
|
|
33
|
+
exports.DropdownTrigger = DropdownTrigger;
|
|
34
|
+
var DropdownRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
35
|
+
exports.DropdownRadioGroup = DropdownRadioGroup;
|
|
36
|
+
var DropdownItemIndicator = DropdownMenuPrimitive.DropdownMenuItemIndicator;
|
|
37
|
+
exports.DropdownItemIndicator = DropdownItemIndicator;
|
|
38
|
+
var DropdownLabel = DropdownMenuPrimitive.DropdownMenuLabel;
|
|
39
|
+
exports.DropdownLabel = DropdownLabel;
|
|
40
|
+
var DropdownSeparator = DropdownMenuPrimitive.DropdownMenuSeparator;
|
|
41
|
+
exports.DropdownSeparator = DropdownSeparator;
|
|
42
|
+
var DropdownSub = DropdownMenuPrimitive.DropdownMenuSub;
|
|
43
|
+
exports.DropdownSub = DropdownSub;
|
|
44
|
+
var DropdownSubTrigger = DropdownMenuPrimitive.DropdownMenuSubTrigger;
|
|
45
|
+
exports.DropdownSubTrigger = DropdownSubTrigger;
|
|
46
|
+
var DropdownSubContent = DropdownMenuPrimitive.DropdownMenuSubContent;
|
|
47
|
+
exports.DropdownSubContent = DropdownSubContent;
|
|
48
|
+
|
|
49
|
+
var Dropdown = function Dropdown(_ref) {
|
|
50
|
+
var trigger = _ref.trigger,
|
|
51
|
+
children = _ref.children;
|
|
52
|
+
|
|
53
|
+
var firstChild = _react["default"].useMemo(function () {
|
|
54
|
+
var _React$Children$only, _React$Children$only$;
|
|
55
|
+
|
|
56
|
+
return /*#__PURE__*/_react["default"].isValidElement(children) ? (_React$Children$only = _react["default"].Children.only(children)) == null ? void 0 : (_React$Children$only$ = _React$Children$only.type) == null ? void 0 : _React$Children$only$.displayName : '';
|
|
57
|
+
}, [children]);
|
|
58
|
+
|
|
59
|
+
return (0, _jsxRuntime.jsxs)(DropdownMenu, {
|
|
60
|
+
children: [(0, _jsxRuntime.jsx)(DropdownTrigger, {
|
|
61
|
+
asChild: true,
|
|
62
|
+
children: trigger
|
|
63
|
+
}), (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.Portal, {
|
|
64
|
+
children: firstChild === 'DropdownContent' ? children : (0, _jsxRuntime.jsxs)(_DropdownContent.DropdownContent, {
|
|
65
|
+
children: [children, (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.Arrow, {
|
|
66
|
+
sx: {
|
|
67
|
+
fill: 'white'
|
|
68
|
+
}
|
|
69
|
+
})]
|
|
70
|
+
})
|
|
71
|
+
})]
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.Dropdown = Dropdown;
|
|
76
|
+
Dropdown.propTypes = {
|
|
77
|
+
trigger: _propTypes["default"].node.isRequired,
|
|
78
|
+
children: _propTypes["default"].node.isRequired
|
|
79
|
+
}; // Exports
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports["default"] = exports.WithDialogState = exports.Default = exports.ComplexOptions = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _reactIcons = require("@radix-ui/react-icons");
|
|
11
|
+
|
|
12
|
+
var Dropdown = _interopRequireWildcard(require("."));
|
|
13
|
+
|
|
14
|
+
var _Button = require("../Button");
|
|
15
|
+
|
|
16
|
+
var _NewConfirmationDialog = require("../NewConfirmationDialog");
|
|
17
|
+
|
|
18
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
/** @jsxImportSource theme-ui */
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* External dependencies
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
/**
|
|
32
|
+
* Internal dependencies
|
|
33
|
+
*/
|
|
34
|
+
var _default = {
|
|
35
|
+
title: 'Dropdown',
|
|
36
|
+
component: Dropdown.Root
|
|
37
|
+
};
|
|
38
|
+
exports["default"] = _default;
|
|
39
|
+
|
|
40
|
+
var Default = function Default() {
|
|
41
|
+
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
42
|
+
children: [(0, _jsxRuntime.jsxs)(Dropdown.Root, {
|
|
43
|
+
trigger: (0, _jsxRuntime.jsx)(_Button.Button, {
|
|
44
|
+
children: "Open"
|
|
45
|
+
}),
|
|
46
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
47
|
+
children: "All"
|
|
48
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
49
|
+
children: "Completed"
|
|
50
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
51
|
+
children: "Running"
|
|
52
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
53
|
+
children: "Cancelled"
|
|
54
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Separator, {}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
55
|
+
children: "Errored"
|
|
56
|
+
})]
|
|
57
|
+
}), (0, _jsxRuntime.jsxs)("p", {
|
|
58
|
+
children: ["This component is based on the Radix Dropdown. You can find all available options, props and features in the", ' ', (0, _jsxRuntime.jsx)("a", {
|
|
59
|
+
href: "https://www.radix-ui.com/docs/primitives/components/dropdown-menu",
|
|
60
|
+
target: "_blank",
|
|
61
|
+
rel: "noopener noreferrer",
|
|
62
|
+
children: "Dropdown Documentation page."
|
|
63
|
+
})]
|
|
64
|
+
})]
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
exports.Default = Default;
|
|
69
|
+
|
|
70
|
+
var ComplexOptions = function ComplexOptions() {
|
|
71
|
+
var _React$useState = _react["default"].useState(true),
|
|
72
|
+
bookmarksChecked = _React$useState[0],
|
|
73
|
+
setBookmarksChecked = _React$useState[1];
|
|
74
|
+
|
|
75
|
+
var _React$useState2 = _react["default"].useState(false),
|
|
76
|
+
urlsChecked = _React$useState2[0],
|
|
77
|
+
setUrlsChecked = _React$useState2[1];
|
|
78
|
+
|
|
79
|
+
var _React$useState3 = _react["default"].useState('pedro'),
|
|
80
|
+
person = _React$useState3[0],
|
|
81
|
+
setPerson = _React$useState3[1];
|
|
82
|
+
|
|
83
|
+
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
84
|
+
children: [(0, _jsxRuntime.jsxs)(Dropdown.Root, {
|
|
85
|
+
trigger: (0, _jsxRuntime.jsx)(_Button.Button, {
|
|
86
|
+
children: "See options"
|
|
87
|
+
}),
|
|
88
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
89
|
+
children: "New Tab"
|
|
90
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
91
|
+
children: "New Window"
|
|
92
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
93
|
+
disabled: true,
|
|
94
|
+
children: "New Private Window"
|
|
95
|
+
}), (0, _jsxRuntime.jsxs)(Dropdown.Sub, {
|
|
96
|
+
children: [(0, _jsxRuntime.jsxs)(Dropdown.SubTrigger, {
|
|
97
|
+
children: ["More Tools", (0, _jsxRuntime.jsx)(_reactIcons.ChevronRightIcon, {})]
|
|
98
|
+
}), (0, _jsxRuntime.jsxs)(Dropdown.SubContent, {
|
|
99
|
+
sideOffset: 2,
|
|
100
|
+
alignOffset: -5,
|
|
101
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
102
|
+
children: "Save Page As\u2026"
|
|
103
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
104
|
+
children: "Create Shortcut\u2026"
|
|
105
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
106
|
+
children: "Name Window\u2026"
|
|
107
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Separator, {}), (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
108
|
+
children: "Developer Tools"
|
|
109
|
+
})]
|
|
110
|
+
})]
|
|
111
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Separator, {}), (0, _jsxRuntime.jsxs)(Dropdown.CheckboxItem, {
|
|
112
|
+
checked: bookmarksChecked,
|
|
113
|
+
onCheckedChange: setBookmarksChecked,
|
|
114
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.ItemIndicator, {
|
|
115
|
+
children: (0, _jsxRuntime.jsx)(_reactIcons.CheckIcon, {})
|
|
116
|
+
}), "Show Bookmarks"]
|
|
117
|
+
}), (0, _jsxRuntime.jsxs)(Dropdown.CheckboxItem, {
|
|
118
|
+
checked: urlsChecked,
|
|
119
|
+
onCheckedChange: setUrlsChecked,
|
|
120
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.ItemIndicator, {
|
|
121
|
+
children: (0, _jsxRuntime.jsx)(_reactIcons.CheckIcon, {})
|
|
122
|
+
}), "Show Full URLs"]
|
|
123
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Separator, {}), (0, _jsxRuntime.jsx)(Dropdown.Label, {
|
|
124
|
+
children: "People"
|
|
125
|
+
}), (0, _jsxRuntime.jsxs)(Dropdown.RadioGroup, {
|
|
126
|
+
value: person,
|
|
127
|
+
onValueChange: setPerson,
|
|
128
|
+
children: [(0, _jsxRuntime.jsxs)(Dropdown.RadioItem, {
|
|
129
|
+
value: "pedro",
|
|
130
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.ItemIndicator, {
|
|
131
|
+
children: (0, _jsxRuntime.jsx)(_reactIcons.DotFilledIcon, {})
|
|
132
|
+
}), "Pedro Duarte"]
|
|
133
|
+
}), (0, _jsxRuntime.jsxs)(Dropdown.RadioItem, {
|
|
134
|
+
value: "colm",
|
|
135
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.ItemIndicator, {
|
|
136
|
+
children: (0, _jsxRuntime.jsx)(_reactIcons.DotFilledIcon, {})
|
|
137
|
+
}), "Colm Tuite"]
|
|
138
|
+
})]
|
|
139
|
+
})]
|
|
140
|
+
}), (0, _jsxRuntime.jsxs)("p", {
|
|
141
|
+
children: ["This component is based on the Radix Dropdown. You can find all available options, props and features in the", ' ', (0, _jsxRuntime.jsx)("a", {
|
|
142
|
+
href: "https://www.radix-ui.com/docs/primitives/components/dropdown-menu",
|
|
143
|
+
target: "_blank",
|
|
144
|
+
rel: "noopener noreferrer",
|
|
145
|
+
children: "Dropdown Documentation page."
|
|
146
|
+
})]
|
|
147
|
+
})]
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
exports.ComplexOptions = ComplexOptions;
|
|
152
|
+
|
|
153
|
+
var WithDialogState = function WithDialogState() {
|
|
154
|
+
var _React$useState4 = _react["default"].useState(false),
|
|
155
|
+
alertOpen = _React$useState4[0],
|
|
156
|
+
setAlertOpen = _React$useState4[1];
|
|
157
|
+
|
|
158
|
+
var _React$useState5 = _react["default"].useState(false),
|
|
159
|
+
menuOpen = _React$useState5[0],
|
|
160
|
+
setMenuOpen = _React$useState5[1];
|
|
161
|
+
|
|
162
|
+
var triggerRef = _react["default"].useRef();
|
|
163
|
+
|
|
164
|
+
return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
165
|
+
children: [(0, _jsxRuntime.jsx)("p", {
|
|
166
|
+
children: "In this example, you can see how to trigger a Dialog from the Dropdown and still keep the focus back to the dropdown once the Dialog is closed. This example is important to keep accessibility."
|
|
167
|
+
}), (0, _jsxRuntime.jsx)(Dropdown.Root, {
|
|
168
|
+
open: menuOpen,
|
|
169
|
+
onOpenChange: setMenuOpen,
|
|
170
|
+
trigger: (0, _jsxRuntime.jsx)(_Button.Button, {
|
|
171
|
+
ref: triggerRef,
|
|
172
|
+
children: "Open"
|
|
173
|
+
}),
|
|
174
|
+
children: (0, _jsxRuntime.jsxs)(Dropdown.Content, {
|
|
175
|
+
hidden: alertOpen,
|
|
176
|
+
children: [(0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
177
|
+
children: "Copy"
|
|
178
|
+
}), (0, _jsxRuntime.jsx)(_NewConfirmationDialog.NewConfirmationDialog, {
|
|
179
|
+
title: 'Are you sure?',
|
|
180
|
+
description: 'Please confirm that',
|
|
181
|
+
body: "Bla bleh.",
|
|
182
|
+
needsConfirm: true,
|
|
183
|
+
open: alertOpen,
|
|
184
|
+
onOpenChange: setAlertOpen,
|
|
185
|
+
onConfirm: function onConfirm() {
|
|
186
|
+
setMenuOpen(false);
|
|
187
|
+
triggerRef.current.focus();
|
|
188
|
+
},
|
|
189
|
+
trigger: (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
190
|
+
onSelect: function onSelect(event) {
|
|
191
|
+
return event.preventDefault();
|
|
192
|
+
},
|
|
193
|
+
children: "Click here"
|
|
194
|
+
})
|
|
195
|
+
})]
|
|
196
|
+
})
|
|
197
|
+
})]
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
exports.WithDialogState = WithDialogState;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
+
|
|
7
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
|
+
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
|
|
11
|
+
var _react = require("@testing-library/react");
|
|
12
|
+
|
|
13
|
+
var _jestAxe = require("jest-axe");
|
|
14
|
+
|
|
15
|
+
var Dropdown = _interopRequireWildcard(require("."));
|
|
16
|
+
|
|
17
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
18
|
+
|
|
19
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
|
+
|
|
21
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* External dependencies
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Internal dependencies
|
|
29
|
+
*/
|
|
30
|
+
var defaultProps = {
|
|
31
|
+
trigger: (0, _jsxRuntime.jsx)("button", {
|
|
32
|
+
children: "Trigger"
|
|
33
|
+
})
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var getButton = function getButton() {
|
|
37
|
+
return _react.screen.getByRole('button', {
|
|
38
|
+
name: 'Trigger'
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
describe('<Dropdown />', function () {
|
|
43
|
+
it('renders the Dropdown component', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
44
|
+
var _render, container;
|
|
45
|
+
|
|
46
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
47
|
+
while (1) {
|
|
48
|
+
switch (_context.prev = _context.next) {
|
|
49
|
+
case 0:
|
|
50
|
+
_render = (0, _react.render)((0, _jsxRuntime.jsx)(Dropdown.Root, (0, _extends2["default"])({}, defaultProps, {
|
|
51
|
+
children: (0, _jsxRuntime.jsx)(Dropdown.Item, {
|
|
52
|
+
children: "My Item"
|
|
53
|
+
})
|
|
54
|
+
}))), container = _render.container;
|
|
55
|
+
expect(getButton()).toBeInTheDocument();
|
|
56
|
+
|
|
57
|
+
_react.fireEvent.click(getButton()); // Check for accessibility issues
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
_context.t0 = expect;
|
|
61
|
+
_context.next = 6;
|
|
62
|
+
return (0, _jestAxe.axe)(container);
|
|
63
|
+
|
|
64
|
+
case 6:
|
|
65
|
+
_context.t1 = _context.sent;
|
|
66
|
+
_context.next = 9;
|
|
67
|
+
return (0, _context.t0)(_context.t1).toHaveNoViolations();
|
|
68
|
+
|
|
69
|
+
case 9:
|
|
70
|
+
case "end":
|
|
71
|
+
return _context.stop();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}, _callee);
|
|
75
|
+
})));
|
|
76
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.styles = exports.DropdownSubContent = exports.DropdownContent = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var DropdownMenuPrimitive = _interopRequireWildcard(require("@radix-ui/react-dropdown-menu"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
/** @jsxImportSource theme-ui */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* External dependencies
|
|
24
|
+
*/
|
|
25
|
+
var styles = {
|
|
26
|
+
minWidth: 220,
|
|
27
|
+
borderRadius: 6,
|
|
28
|
+
backgroundColor: 'background',
|
|
29
|
+
boxShadow: 'high',
|
|
30
|
+
px: 2,
|
|
31
|
+
py: 1
|
|
32
|
+
};
|
|
33
|
+
exports.styles = styles;
|
|
34
|
+
|
|
35
|
+
var DropdownContent = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
36
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.DropdownMenuContent, (0, _extends2["default"])({
|
|
37
|
+
ref: forwardRef,
|
|
38
|
+
sx: styles
|
|
39
|
+
}, props));
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
exports.DropdownContent = DropdownContent;
|
|
43
|
+
DropdownContent.displayName = 'DropdownContent';
|
|
44
|
+
|
|
45
|
+
var DropdownSubContent = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
46
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.Portal, {
|
|
47
|
+
children: (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.DropdownMenuSubContent, (0, _extends2["default"])({
|
|
48
|
+
ref: forwardRef,
|
|
49
|
+
sx: styles
|
|
50
|
+
}, props))
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
exports.DropdownSubContent = DropdownSubContent;
|
|
55
|
+
DropdownSubContent.displayName = 'DropdownSubContent';
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.styles = exports.DropdownSubTrigger = exports.DropdownRadioItem = exports.DropdownItem = exports.DropdownCheckboxItem = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var DropdownMenuPrimitive = _interopRequireWildcard(require("@radix-ui/react-dropdown-menu"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
/** @jsxImportSource theme-ui */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* External dependencies
|
|
24
|
+
*/
|
|
25
|
+
var styles = {
|
|
26
|
+
unset: 'all',
|
|
27
|
+
cursor: 'pointer',
|
|
28
|
+
display: 'flex',
|
|
29
|
+
alignItems: 'center',
|
|
30
|
+
flexDirection: 'row',
|
|
31
|
+
textAlign: 'left',
|
|
32
|
+
height: 25,
|
|
33
|
+
textDecoration: 'none',
|
|
34
|
+
position: 'relative',
|
|
35
|
+
m: 0,
|
|
36
|
+
color: 'heading',
|
|
37
|
+
px: 2,
|
|
38
|
+
paddingLeft: 10,
|
|
39
|
+
py: 1,
|
|
40
|
+
'&:hover, &:focus': {
|
|
41
|
+
backgroundColor: 'hover'
|
|
42
|
+
},
|
|
43
|
+
'&[data-disabled]': {
|
|
44
|
+
color: 'muted',
|
|
45
|
+
pointerEvents: 'none'
|
|
46
|
+
},
|
|
47
|
+
'&[data-highlighted]': {
|
|
48
|
+
backgroundColor: 'hover',
|
|
49
|
+
color: 'primary'
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.styles = styles;
|
|
53
|
+
|
|
54
|
+
var DropdownItem = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
55
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.DropdownMenuItem, (0, _extends2["default"])({
|
|
56
|
+
ref: forwardRef,
|
|
57
|
+
sx: styles
|
|
58
|
+
}, props));
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
exports.DropdownItem = DropdownItem;
|
|
62
|
+
DropdownItem.displayName = 'DropdownItem';
|
|
63
|
+
|
|
64
|
+
var DropdownCheckboxItem = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
65
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.CheckboxItem, (0, _extends2["default"])({
|
|
66
|
+
ref: forwardRef,
|
|
67
|
+
sx: styles
|
|
68
|
+
}, props));
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
exports.DropdownCheckboxItem = DropdownCheckboxItem;
|
|
72
|
+
DropdownCheckboxItem.displayName = 'DropdownCheckboxItem';
|
|
73
|
+
|
|
74
|
+
var DropdownRadioItem = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
75
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.RadioItem, (0, _extends2["default"])({
|
|
76
|
+
ref: forwardRef,
|
|
77
|
+
sx: styles
|
|
78
|
+
}, props));
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
exports.DropdownRadioItem = DropdownRadioItem;
|
|
82
|
+
DropdownRadioItem.displayName = 'DropdownRadioItem';
|
|
83
|
+
|
|
84
|
+
var DropdownSubTrigger = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
85
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.SubTrigger, (0, _extends2["default"])({
|
|
86
|
+
ref: forwardRef,
|
|
87
|
+
sx: (0, _extends2["default"])({}, styles, {
|
|
88
|
+
'&[data-state="open"]': {
|
|
89
|
+
background: 'highlight',
|
|
90
|
+
color: 'primary'
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
}, props));
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
exports.DropdownSubTrigger = DropdownSubTrigger;
|
|
97
|
+
DropdownSubTrigger.displayName = 'DropdownSubTrigger';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.styles = exports.DropdownLabel = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var DropdownMenuPrimitive = _interopRequireWildcard(require("@radix-ui/react-dropdown-menu"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
/** @jsxImportSource theme-ui */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* External dependencies
|
|
24
|
+
*/
|
|
25
|
+
var styles = {
|
|
26
|
+
paddingLeft: 10,
|
|
27
|
+
fontSize: 12,
|
|
28
|
+
lineHeight: '25px',
|
|
29
|
+
color: 'muted'
|
|
30
|
+
};
|
|
31
|
+
exports.styles = styles;
|
|
32
|
+
|
|
33
|
+
var DropdownLabel = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
34
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.DropdownMenuLabel, (0, _extends2["default"])({
|
|
35
|
+
ref: forwardRef,
|
|
36
|
+
sx: styles
|
|
37
|
+
}, props));
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
exports.DropdownLabel = DropdownLabel;
|
|
41
|
+
DropdownLabel.displayName = 'DropdownLabel';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.styles = exports.DropdownSeparator = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var DropdownMenuPrimitive = _interopRequireWildcard(require("@radix-ui/react-dropdown-menu"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("theme-ui/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
/** @jsxImportSource theme-ui */
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* External dependencies
|
|
24
|
+
*/
|
|
25
|
+
var styles = {
|
|
26
|
+
height: '1px',
|
|
27
|
+
backgroundColor: 'border',
|
|
28
|
+
my: '5px'
|
|
29
|
+
};
|
|
30
|
+
exports.styles = styles;
|
|
31
|
+
|
|
32
|
+
var DropdownSeparator = /*#__PURE__*/_react["default"].forwardRef(function (props, forwardRef) {
|
|
33
|
+
return (0, _jsxRuntime.jsx)(DropdownMenuPrimitive.DropdownMenuSeparator, (0, _extends2["default"])({
|
|
34
|
+
ref: forwardRef,
|
|
35
|
+
sx: styles
|
|
36
|
+
}, props));
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
exports.DropdownSeparator = DropdownSeparator;
|
|
40
|
+
DropdownSeparator.displayName = 'DropdownSeparator';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports["default"] = exports.Trigger = exports.SubTrigger = exports.SubContent = exports.Sub = exports.Separator = exports.Root = exports.RadioItem = exports.RadioGroup = exports.Label = exports.ItemIndicator = exports.Item = exports.Content = exports.CheckboxItem = void 0;
|
|
5
|
+
|
|
6
|
+
var _Dropdown = require("./Dropdown");
|
|
7
|
+
|
|
8
|
+
var _DropdownItem = require("./DropdownItem");
|
|
9
|
+
|
|
10
|
+
var _DropdownSeparator = require("./DropdownSeparator");
|
|
11
|
+
|
|
12
|
+
var _DropdownContent = require("./DropdownContent");
|
|
13
|
+
|
|
14
|
+
var _DropdownLabel = require("./DropdownLabel");
|
|
15
|
+
|
|
16
|
+
/** @jsxImportSource theme-ui */
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Internal dependencies
|
|
20
|
+
*/
|
|
21
|
+
var Root = _Dropdown.Dropdown;
|
|
22
|
+
exports.Root = Root;
|
|
23
|
+
var Content = _DropdownContent.DropdownContent;
|
|
24
|
+
exports.Content = Content;
|
|
25
|
+
var Trigger = _Dropdown.DropdownTrigger;
|
|
26
|
+
exports.Trigger = Trigger;
|
|
27
|
+
var Item = _DropdownItem.DropdownItem;
|
|
28
|
+
exports.Item = Item;
|
|
29
|
+
var CheckboxItem = _DropdownItem.DropdownCheckboxItem;
|
|
30
|
+
exports.CheckboxItem = CheckboxItem;
|
|
31
|
+
var RadioGroup = _Dropdown.DropdownRadioGroup;
|
|
32
|
+
exports.RadioGroup = RadioGroup;
|
|
33
|
+
var RadioItem = _DropdownItem.DropdownRadioItem;
|
|
34
|
+
exports.RadioItem = RadioItem;
|
|
35
|
+
var ItemIndicator = _Dropdown.DropdownItemIndicator;
|
|
36
|
+
exports.ItemIndicator = ItemIndicator;
|
|
37
|
+
var Label = _DropdownLabel.DropdownLabel;
|
|
38
|
+
exports.Label = Label;
|
|
39
|
+
var Separator = _DropdownSeparator.DropdownSeparator;
|
|
40
|
+
exports.Separator = Separator;
|
|
41
|
+
var Sub = _Dropdown.DropdownSub;
|
|
42
|
+
exports.Sub = Sub;
|
|
43
|
+
var SubTrigger = _DropdownItem.DropdownSubTrigger;
|
|
44
|
+
exports.SubTrigger = SubTrigger;
|
|
45
|
+
var SubContent = _DropdownContent.DropdownSubContent;
|
|
46
|
+
exports.SubContent = SubContent;
|
|
47
|
+
var _default = _Dropdown.Dropdown;
|
|
48
|
+
exports["default"] = _default;
|
|
@@ -114,7 +114,7 @@ NewConfirmationDialog.propTypes = {
|
|
|
114
114
|
needsConfirm: _propTypes["default"].bool,
|
|
115
115
|
trigger: _propTypes["default"].node,
|
|
116
116
|
onConfirm: _propTypes["default"].func,
|
|
117
|
-
title: _propTypes["default"].node,
|
|
117
|
+
title: _propTypes["default"].node.isRequired,
|
|
118
118
|
body: _propTypes["default"].node,
|
|
119
119
|
label: _propTypes["default"].node
|
|
120
120
|
};
|