@primer/components 32.1.1-rc.b4502a34 → 33.0.0-rc.9f3670b7
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/CHANGELOG.md +15 -1
- package/contributor-docs/CONTRIBUTING.md +14 -58
- package/dist/browser.esm.js +104 -108
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +104 -108
- package/dist/browser.umd.js.map +1 -1
- package/docs/content/BranchName.md +6 -5
- package/docs/content/Details.md +4 -8
- package/docs/content/Heading.md +5 -10
- package/docs/content/Label.md +6 -7
- package/docs/content/ProgressBar.mdx +7 -6
- package/docs/content/Text.md +0 -6
- package/docs/content/{ActionList2.mdx → drafts/ActionList2.mdx} +5 -9
- package/docs/content/drafts/ActionMenu2.mdx +251 -0
- package/docs/content/status.mdx +1 -1
- package/docs/content/system-props.mdx +1 -1
- package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +9 -1
- package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +1 -1
- package/lib/ActionList2/Divider.d.ts +3 -2
- package/lib/ActionList2/Divider.js +10 -5
- package/lib/ActionList2/Item.js +21 -5
- package/lib/ActionList2/List.js +11 -1
- package/lib/ActionList2/MenuContext.d.ts +10 -0
- package/lib/ActionList2/MenuContext.js +15 -0
- package/lib/ActionList2/Selection.js +11 -0
- package/lib/ActionList2/index.d.ts +1 -2
- package/lib/ActionMenu2.d.ts +310 -0
- package/lib/ActionMenu2.js +91 -0
- package/lib/Avatar.d.ts +1 -2
- package/lib/Avatar.js +1 -1
- package/lib/BranchName.d.ts +1 -2
- package/lib/BranchName.js +1 -1
- package/lib/Details.d.ts +1 -2
- package/lib/Details.js +1 -3
- package/lib/Dropdown.d.ts +2 -66
- package/lib/Heading.d.ts +1 -2
- package/lib/Heading.js +1 -6
- package/lib/ProgressBar.d.ts +16 -11
- package/lib/ProgressBar.js +6 -10
- package/lib/Spinner.d.ts +1 -2
- package/lib/Spinner.js +1 -3
- package/lib/__tests__/Avatar.test.js +4 -2
- package/lib/__tests__/Avatar.types.test.d.ts +3 -0
- package/lib/__tests__/Avatar.types.test.js +31 -0
- package/lib/__tests__/BranchName.types.test.d.ts +3 -0
- package/lib/__tests__/BranchName.types.test.js +28 -0
- package/lib/__tests__/Details.types.test.d.ts +3 -0
- package/lib/__tests__/Details.types.test.js +28 -0
- package/lib/__tests__/Heading.test.js +63 -30
- package/lib/__tests__/Heading.types.test.d.ts +3 -0
- package/lib/__tests__/Heading.types.test.js +28 -0
- package/lib/drafts.d.ts +1 -0
- package/lib/drafts.js +13 -0
- package/lib/stories/ActionMenu2.stories.js +433 -0
- package/lib-esm/ActionList2/Divider.d.ts +3 -2
- package/lib-esm/ActionList2/Divider.js +8 -5
- package/lib-esm/ActionList2/Item.js +19 -5
- package/lib-esm/ActionList2/List.js +9 -1
- package/lib-esm/ActionList2/MenuContext.d.ts +10 -0
- package/lib-esm/ActionList2/MenuContext.js +3 -0
- package/lib-esm/ActionList2/Selection.js +9 -0
- package/lib-esm/ActionList2/index.d.ts +1 -2
- package/lib-esm/ActionMenu2.d.ts +310 -0
- package/lib-esm/ActionMenu2.js +67 -0
- package/lib-esm/Avatar.d.ts +1 -2
- package/lib-esm/Avatar.js +2 -2
- package/lib-esm/BranchName.d.ts +1 -2
- package/lib-esm/BranchName.js +2 -2
- package/lib-esm/Details.d.ts +1 -2
- package/lib-esm/Details.js +1 -2
- package/lib-esm/Dropdown.d.ts +2 -66
- package/lib-esm/Heading.d.ts +1 -2
- package/lib-esm/Heading.js +2 -6
- package/lib-esm/ProgressBar.d.ts +16 -11
- package/lib-esm/ProgressBar.js +7 -11
- package/lib-esm/Spinner.d.ts +1 -2
- package/lib-esm/Spinner.js +1 -2
- package/lib-esm/__tests__/Avatar.test.js +4 -2
- package/lib-esm/__tests__/Avatar.types.test.d.ts +3 -0
- package/lib-esm/__tests__/Avatar.types.test.js +16 -0
- package/lib-esm/__tests__/BranchName.types.test.d.ts +3 -0
- package/lib-esm/__tests__/BranchName.types.test.js +13 -0
- package/lib-esm/__tests__/Details.types.test.d.ts +3 -0
- package/lib-esm/__tests__/Details.types.test.js +13 -0
- package/lib-esm/__tests__/Heading.test.js +62 -30
- package/lib-esm/__tests__/Heading.types.test.d.ts +3 -0
- package/lib-esm/__tests__/Heading.types.test.js +13 -0
- package/lib-esm/drafts.d.ts +1 -0
- package/lib-esm/drafts.js +2 -1
- package/lib-esm/stories/ActionMenu2.stories.js +376 -0
- package/package.json +1 -1
- package/src/ActionList2/Divider.tsx +13 -8
- package/src/ActionList2/Item.tsx +13 -3
- package/src/ActionList2/List.tsx +6 -2
- package/src/ActionList2/MenuContext.tsx +6 -0
- package/src/ActionList2/Selection.tsx +9 -0
- package/src/ActionMenu2.tsx +94 -0
- package/src/Avatar.tsx +2 -4
- package/src/BranchName.tsx +3 -3
- package/src/Details.tsx +1 -5
- package/src/Heading.tsx +2 -9
- package/src/ProgressBar.tsx +11 -10
- package/src/Spinner.tsx +1 -3
- package/src/__tests__/Avatar.test.tsx +1 -1
- package/src/__tests__/Avatar.types.test.tsx +11 -0
- package/src/__tests__/BranchName.types.test.tsx +11 -0
- package/src/__tests__/Details.types.test.tsx +11 -0
- package/src/__tests__/Heading.test.tsx +71 -25
- package/src/__tests__/Heading.types.test.tsx +11 -0
- package/src/drafts.ts +1 -0
- package/src/stories/ActionMenu2.stories.tsx +551 -0
- package/stats.html +1 -1
@@ -0,0 +1,433 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.SimpleListStory = SimpleListStory;
|
7
|
+
exports.ActionsStory = ActionsStory;
|
8
|
+
exports.ExternalAnchor = ExternalAnchor;
|
9
|
+
exports.ControlledMenu = ControlledMenu;
|
10
|
+
exports.CustomAnchor = CustomAnchor;
|
11
|
+
exports.MemexTableMenu = MemexTableMenu;
|
12
|
+
exports.MemexViewOptionsMenu = MemexViewOptionsMenu;
|
13
|
+
exports.UnexpectedSelectionVariant = UnexpectedSelectionVariant;
|
14
|
+
exports.default = void 0;
|
15
|
+
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
17
|
+
|
18
|
+
var _ = require("..");
|
19
|
+
|
20
|
+
var _BaseStyles = _interopRequireDefault(require("../BaseStyles"));
|
21
|
+
|
22
|
+
var _ActionMenu = require("../ActionMenu2");
|
23
|
+
|
24
|
+
var _ActionList = require("../ActionList2");
|
25
|
+
|
26
|
+
var _Button = _interopRequireWildcard(require("../Button"));
|
27
|
+
|
28
|
+
var _Box = _interopRequireDefault(require("../Box"));
|
29
|
+
|
30
|
+
var _Text = _interopRequireDefault(require("../Text"));
|
31
|
+
|
32
|
+
var _TextInput = _interopRequireDefault(require("../TextInput"));
|
33
|
+
|
34
|
+
var _StyledOcticon = _interopRequireDefault(require("../StyledOcticon"));
|
35
|
+
|
36
|
+
var _FormGroup = _interopRequireDefault(require("../FormGroup"));
|
37
|
+
|
38
|
+
var _octiconsReact = require("@primer/octicons-react");
|
39
|
+
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
41
|
+
|
42
|
+
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; }
|
43
|
+
|
44
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
45
|
+
|
46
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
47
|
+
|
48
|
+
const meta = {
|
49
|
+
title: 'Composite components/ActionMenu2',
|
50
|
+
component: _ActionMenu.ActionMenu,
|
51
|
+
decorators: [Story => /*#__PURE__*/_react.default.createElement(_.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_BaseStyles.default, null, /*#__PURE__*/_react.default.createElement(Story, null)))],
|
52
|
+
parameters: {
|
53
|
+
controls: {
|
54
|
+
disabled: true
|
55
|
+
}
|
56
|
+
}
|
57
|
+
};
|
58
|
+
var _default = meta;
|
59
|
+
exports.default = _default;
|
60
|
+
|
61
|
+
function SimpleListStory() {
|
62
|
+
const [actionFired, fireAction] = _react.default.useState('');
|
63
|
+
|
64
|
+
const onSelect = name => fireAction(name);
|
65
|
+
|
66
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Simple Menu"), /*#__PURE__*/_react.default.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, null, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Button, null, "Menu"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
67
|
+
onSelect: () => onSelect('Copy link')
|
68
|
+
}, "Copy link", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
69
|
+
onSelect: () => onSelect('Quote reply')
|
70
|
+
}, "Quote reply", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
71
|
+
onSelect: () => onSelect('Edit comment')
|
72
|
+
}, "Edit comment", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
73
|
+
variant: "danger",
|
74
|
+
onSelect: () => onSelect('Delete file')
|
75
|
+
}, "Delete file", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318D")))));
|
76
|
+
}
|
77
|
+
|
78
|
+
SimpleListStory.storyName = 'Simple Menu';
|
79
|
+
|
80
|
+
function ActionsStory() {
|
81
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Actions"), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, {
|
82
|
+
overlayProps: {
|
83
|
+
width: 'medium'
|
84
|
+
}
|
85
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Button, {
|
86
|
+
"aria-label": "Open Actions Menu"
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_octiconsReact.ServerIcon, null)), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ServerIcon, null)), "Open current Codespace", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Description, {
|
88
|
+
variant: "block"
|
89
|
+
}, "Your existing Codespace will be opened to its previous state, and you'll be asked to manually switch to new-branch."), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318O")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.PlusCircleIcon, null)), "Create new Codespace", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Description, {
|
90
|
+
variant: "block"
|
91
|
+
}, "Create a brand new Codespace with a fresh image and checkout this branch."), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318C")))));
|
92
|
+
}
|
93
|
+
|
94
|
+
ActionsStory.storyName = 'Actions';
|
95
|
+
|
96
|
+
function ExternalAnchor() {
|
97
|
+
const [actionFired, fireAction] = _react.default.useState('');
|
98
|
+
|
99
|
+
const onSelect = name => fireAction(name);
|
100
|
+
|
101
|
+
const [open, setOpen] = _react.default.useState(false);
|
102
|
+
|
103
|
+
const triggerRef = /*#__PURE__*/_react.default.createRef();
|
104
|
+
|
105
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "External Anchor"), /*#__PURE__*/_react.default.createElement("h2", null, "External Open State: ", open ? 'Open' : 'Closed'), /*#__PURE__*/_react.default.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
106
|
+
ref: triggerRef,
|
107
|
+
onClick: () => setOpen(!open)
|
108
|
+
}, open ? 'Close Menu' : 'Open Menu')), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, {
|
109
|
+
open: open,
|
110
|
+
onOpenChange: setOpen,
|
111
|
+
anchorRef: triggerRef
|
112
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
113
|
+
onSelect: () => onSelect('Copy link')
|
114
|
+
}, "Copy link", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
115
|
+
onSelect: () => onSelect('Quote reply')
|
116
|
+
}, "Quote reply", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
117
|
+
onSelect: () => onSelect('Edit comment')
|
118
|
+
}, "Edit comment", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
119
|
+
variant: "danger",
|
120
|
+
onSelect: () => onSelect('Delete file')
|
121
|
+
}, "Delete file", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318D")))));
|
122
|
+
}
|
123
|
+
|
124
|
+
ExternalAnchor.storyName = 'External Anchor';
|
125
|
+
|
126
|
+
function ControlledMenu() {
|
127
|
+
const [actionFired, fireAction] = _react.default.useState('');
|
128
|
+
|
129
|
+
const onSelect = name => fireAction(name);
|
130
|
+
|
131
|
+
const [open, setOpen] = _react.default.useState(false);
|
132
|
+
|
133
|
+
const triggerRef = /*#__PURE__*/_react.default.createRef();
|
134
|
+
|
135
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Controlled Menu"), /*#__PURE__*/_react.default.createElement("h2", null, "External Open State: ", open ? 'Open' : 'Closed'), /*#__PURE__*/_react.default.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
136
|
+
ref: triggerRef,
|
137
|
+
onClick: () => setOpen(!open)
|
138
|
+
}, open ? 'Close Menu' : 'Open Menu')), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, {
|
139
|
+
open: open,
|
140
|
+
onOpenChange: setOpen,
|
141
|
+
overlayProps: {
|
142
|
+
// Because the component is controlled from outside, but the anchor is still internal,
|
143
|
+
// clicking the external button should not be counted as "clicking outside"
|
144
|
+
ignoreClickRefs: [triggerRef]
|
145
|
+
}
|
146
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Button, null, "Anchor"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
147
|
+
onSelect: () => onSelect('Copy link')
|
148
|
+
}, "Copy link", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
149
|
+
onSelect: () => onSelect('Quote reply')
|
150
|
+
}, "Quote reply", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
151
|
+
onSelect: () => onSelect('Edit comment')
|
152
|
+
}, "Edit comment", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
153
|
+
variant: "danger",
|
154
|
+
onSelect: () => onSelect('Delete file')
|
155
|
+
}, "Delete file", /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.TrailingVisual, null, "\u2318D")))));
|
156
|
+
}
|
157
|
+
|
158
|
+
ControlledMenu.storyName = 'Controlled Menu';
|
159
|
+
|
160
|
+
function CustomAnchor() {
|
161
|
+
const [actionFired, fireAction] = _react.default.useState('');
|
162
|
+
|
163
|
+
const onSelect = name => fireAction(name);
|
164
|
+
|
165
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Custom Anchor"), /*#__PURE__*/_react.default.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, null, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Anchor, null, /*#__PURE__*/_react.default.createElement("summary", {
|
166
|
+
style: {
|
167
|
+
cursor: 'pointer'
|
168
|
+
},
|
169
|
+
"aria-label": "Open column options"
|
170
|
+
}, /*#__PURE__*/_react.default.createElement(_octiconsReact.KebabHorizontalIcon, null))), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
171
|
+
onSelect: () => onSelect('Rename')
|
172
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.PencilIcon, null)), "Rename"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
173
|
+
onSelect: () => onSelect('Archive')
|
174
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArchiveIcon, null)), "Archive all cards"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
175
|
+
variant: "danger",
|
176
|
+
onSelect: () => onSelect('Delete file')
|
177
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.TrashIcon, null)), "Delete"))));
|
178
|
+
}
|
179
|
+
|
180
|
+
CustomAnchor.storyName = 'Custom Anchor';
|
181
|
+
|
182
|
+
function MemexTableMenu() {
|
183
|
+
const [name, setName] = _react.default.useState('Estimate');
|
184
|
+
|
185
|
+
const inputRef = /*#__PURE__*/_react.default.createRef();
|
186
|
+
/** To add custom components to the Menu,
|
187
|
+
* you need to switch to a controlled menu
|
188
|
+
*/
|
189
|
+
|
190
|
+
|
191
|
+
const [open, setOpen] = _react.default.useState(false);
|
192
|
+
|
193
|
+
const handleKeyPress = event => {
|
194
|
+
if (event.key === 'Enter') {
|
195
|
+
setName(event.currentTarget.value);
|
196
|
+
setOpen(false);
|
197
|
+
}
|
198
|
+
};
|
199
|
+
/** This requires inside knowledge. If you to do this with onBlur
|
200
|
+
* on the input, it doesn't work :(
|
201
|
+
*/
|
202
|
+
|
203
|
+
|
204
|
+
const handleClickOutside = () => {
|
205
|
+
if (inputRef.current) setName(inputRef.current.value);
|
206
|
+
setOpen(false);
|
207
|
+
};
|
208
|
+
|
209
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Memex Table Menu"), /*#__PURE__*/_react.default.createElement(_Box.default, {
|
210
|
+
sx: {
|
211
|
+
width: 200,
|
212
|
+
display: 'flex',
|
213
|
+
justifyContent: 'space-between',
|
214
|
+
p: 2,
|
215
|
+
border: '1px solid',
|
216
|
+
borderColor: 'border.default'
|
217
|
+
}
|
218
|
+
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
219
|
+
sx: {
|
220
|
+
fontSize: 0,
|
221
|
+
fontWeight: 'bold'
|
222
|
+
}
|
223
|
+
}, name), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, {
|
224
|
+
open: open,
|
225
|
+
onOpenChange: setOpen,
|
226
|
+
overlayProps: {
|
227
|
+
onClickOutside: handleClickOutside
|
228
|
+
}
|
229
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Button, {
|
230
|
+
"aria-label": "Open Estimate column options menu",
|
231
|
+
sx: {
|
232
|
+
p: 0,
|
233
|
+
display: 'flex',
|
234
|
+
alignItems: 'center',
|
235
|
+
justifyContent: 'center'
|
236
|
+
}
|
237
|
+
}, /*#__PURE__*/_react.default.createElement(_octiconsReact.TriangleDownIcon, null)), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
|
238
|
+
ref: inputRef,
|
239
|
+
sx: {
|
240
|
+
m: 2
|
241
|
+
},
|
242
|
+
defaultValue: name,
|
243
|
+
onKeyPress: handleKeyPress
|
244
|
+
}), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Divider, {
|
245
|
+
sx: {
|
246
|
+
m: 0
|
247
|
+
}
|
248
|
+
}), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, "Sort ascending (123...)"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, "Sort descending (123...)"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, "Filter by values"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, "Group by values"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
249
|
+
disabled: true
|
250
|
+
}, "Hide field"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
251
|
+
variant: "danger"
|
252
|
+
}, "Delete file")))));
|
253
|
+
}
|
254
|
+
|
255
|
+
MemexTableMenu.storyName = 'Memex Table Menu';
|
256
|
+
/* copied from github/memex */
|
257
|
+
|
258
|
+
const LayoutToggleItem = ({
|
259
|
+
selected,
|
260
|
+
children,
|
261
|
+
Icon,
|
262
|
+
...props
|
263
|
+
}) => {
|
264
|
+
return /*#__PURE__*/_react.default.createElement(_FormGroup.default, {
|
265
|
+
sx: {
|
266
|
+
flex: 'auto',
|
267
|
+
borderRadius: 2,
|
268
|
+
border: '1px solid',
|
269
|
+
borderColor: selected ? 'accent.emphasis' : 'border.default',
|
270
|
+
textAlign: 'center',
|
271
|
+
cursor: 'pointer',
|
272
|
+
backgroundColor: selected ? 'accent.subtle' : '',
|
273
|
+
boxShadow: selected ? theme => `inset 0 0 0 1px ${theme.colors.accent.emphasis}` : '',
|
274
|
+
mb: 2,
|
275
|
+
mt: 1,
|
276
|
+
'&:hover': {
|
277
|
+
backgroundColor: !selected ? 'canvas.subtle' : ''
|
278
|
+
},
|
279
|
+
'&:first-of-type': {
|
280
|
+
borderTopRightRadius: '0px',
|
281
|
+
borderBottomRightRadius: '0px',
|
282
|
+
borderRight: selected ? undefined : '0'
|
283
|
+
},
|
284
|
+
'&:last-of-type': {
|
285
|
+
borderTopLeftRadius: '0px',
|
286
|
+
borderBottomLeftRadius: '0px',
|
287
|
+
borderLeft: selected ? undefined : '0'
|
288
|
+
}
|
289
|
+
}
|
290
|
+
}, /*#__PURE__*/_react.default.createElement(_FormGroup.default.Label, _extends({
|
291
|
+
htmlFor: "layout-selector",
|
292
|
+
sx: {
|
293
|
+
fontWeight: 'normal',
|
294
|
+
cursor: 'pointer',
|
295
|
+
px: 3,
|
296
|
+
py: 2,
|
297
|
+
mb: 0
|
298
|
+
}
|
299
|
+
}, props), /*#__PURE__*/_react.default.createElement(_Box.default, {
|
300
|
+
sx: {
|
301
|
+
textAlign: 'center',
|
302
|
+
flexDirection: 'column',
|
303
|
+
m: 'auto',
|
304
|
+
alignItems: 'center',
|
305
|
+
display: 'flex'
|
306
|
+
}
|
307
|
+
}, /*#__PURE__*/_react.default.createElement(Icon, {
|
308
|
+
size: "medium"
|
309
|
+
}), /*#__PURE__*/_react.default.createElement(_Text.default, {
|
310
|
+
sx: {
|
311
|
+
color: selected ? 'fg.default' : 'fg.muted',
|
312
|
+
fontSize: 0
|
313
|
+
}
|
314
|
+
}, children))));
|
315
|
+
};
|
316
|
+
|
317
|
+
LayoutToggleItem.displayName = "LayoutToggleItem";
|
318
|
+
|
319
|
+
/* copied from github/memex */
|
320
|
+
const ViewChangeButtons = ({
|
321
|
+
setOpen
|
322
|
+
}) => /*#__PURE__*/_react.default.createElement(_Box.default, {
|
323
|
+
sx: {
|
324
|
+
display: 'flex'
|
325
|
+
}
|
326
|
+
}, /*#__PURE__*/_react.default.createElement(_Button.ButtonInvisible, {
|
327
|
+
onClick: () => setOpen(false),
|
328
|
+
sx: {
|
329
|
+
flex: 'auto',
|
330
|
+
minWidth: '50%',
|
331
|
+
borderRight: '1px solid',
|
332
|
+
borderColor: 'border.default',
|
333
|
+
borderRadius: 0,
|
334
|
+
mt: -2,
|
335
|
+
mb: -2,
|
336
|
+
py: 3,
|
337
|
+
'&:hover': {
|
338
|
+
bg: 'canvas.inset'
|
339
|
+
}
|
340
|
+
}
|
341
|
+
}, "Save changes"), /*#__PURE__*/_react.default.createElement(_Button.ButtonInvisible, {
|
342
|
+
onClick: () => setOpen(false),
|
343
|
+
sx: {
|
344
|
+
flex: 'auto',
|
345
|
+
color: 'fg.muted',
|
346
|
+
borderRadius: 0,
|
347
|
+
mt: -2,
|
348
|
+
mb: -2,
|
349
|
+
py: 3,
|
350
|
+
fontWeight: 'normal',
|
351
|
+
'&:hover': {
|
352
|
+
bg: 'canvas.inset'
|
353
|
+
}
|
354
|
+
}
|
355
|
+
}, "Discard changes"));
|
356
|
+
|
357
|
+
ViewChangeButtons.displayName = "ViewChangeButtons";
|
358
|
+
|
359
|
+
function MemexViewOptionsMenu() {
|
360
|
+
const [open, setOpen] = _react.default.useState(false);
|
361
|
+
|
362
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Memex View Options Menu"), /*#__PURE__*/_react.default.createElement(_Box.default, {
|
363
|
+
sx: {
|
364
|
+
display: 'flex',
|
365
|
+
alignItems: 'center'
|
366
|
+
}
|
367
|
+
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
368
|
+
sx: {
|
369
|
+
fontSize: 1,
|
370
|
+
mr: 3
|
371
|
+
}
|
372
|
+
}, /*#__PURE__*/_react.default.createElement(_StyledOcticon.default, {
|
373
|
+
icon: _octiconsReact.ProjectIcon,
|
374
|
+
sx: {
|
375
|
+
mr: 2
|
376
|
+
}
|
377
|
+
}), "React"), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, {
|
378
|
+
open: open,
|
379
|
+
onOpenChange: setOpen,
|
380
|
+
overlayProps: {
|
381
|
+
width: 'medium'
|
382
|
+
}
|
383
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Button, {
|
384
|
+
"aria-label": "Open View options menu",
|
385
|
+
sx: {
|
386
|
+
p: 0,
|
387
|
+
width: 18,
|
388
|
+
height: 18,
|
389
|
+
display: 'flex',
|
390
|
+
alignItems: 'center',
|
391
|
+
justifyContent: 'center'
|
392
|
+
}
|
393
|
+
}, /*#__PURE__*/_react.default.createElement(_octiconsReact.TriangleDownIcon, null)), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Group, {
|
394
|
+
title: "Layout"
|
395
|
+
}, /*#__PURE__*/_react.default.createElement("li", {
|
396
|
+
style: {
|
397
|
+
listStyle: 'none'
|
398
|
+
}
|
399
|
+
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
|
400
|
+
sx: {
|
401
|
+
mx: 3,
|
402
|
+
display: 'flex'
|
403
|
+
}
|
404
|
+
}, /*#__PURE__*/_react.default.createElement(LayoutToggleItem, {
|
405
|
+
selected: true,
|
406
|
+
Icon: _octiconsReact.TableIcon
|
407
|
+
}, "Table"), /*#__PURE__*/_react.default.createElement(LayoutToggleItem, {
|
408
|
+
selected: false,
|
409
|
+
Icon: _octiconsReact.ProjectIcon
|
410
|
+
}, "Board")))), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Group, {
|
411
|
+
title: "Configuration"
|
412
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ListUnorderedIcon, null)), "Title, Assignees, Status, Labels, Repositories"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ListUnorderedIcon, null)), "group: none"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowDownIcon, null)), "sort: manual"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.SearchIcon, null)), "Search or filter this view")), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.PencilIcon, null)), "Rename view"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.VersionsIcon, null)), "Save changes to new view"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
413
|
+
disabled: true
|
414
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.TrashIcon, null)), "Delete view"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement("li", {
|
415
|
+
style: {
|
416
|
+
listStyle: 'none'
|
417
|
+
}
|
418
|
+
}, /*#__PURE__*/_react.default.createElement(ViewChangeButtons, {
|
419
|
+
setOpen: setOpen
|
420
|
+
}))))));
|
421
|
+
}
|
422
|
+
|
423
|
+
MemexViewOptionsMenu.storyName = 'Memex View Options Menu';
|
424
|
+
|
425
|
+
function UnexpectedSelectionVariant() {
|
426
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Expect error if selectionVariant is passed"), /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu, null, /*#__PURE__*/_react.default.createElement(_ActionMenu.ActionMenu.Button, null, "Menu"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList, {
|
427
|
+
selectionVariant: "multiple"
|
428
|
+
}, /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, "Copy link"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, "Quote reply"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, null, "Edit comment"), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(_ActionList.ActionList.Item, {
|
429
|
+
variant: "danger"
|
430
|
+
}, "Delete file"))));
|
431
|
+
}
|
432
|
+
|
433
|
+
UnexpectedSelectionVariant.storyName = 'Unexpected selectionVariant';
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
1
|
+
import React from 'react';
|
2
|
+
import { SxProp } from '../sx';
|
2
3
|
/**
|
3
4
|
* Visually separates `Item`s or `Group`s in an `ActionList`.
|
4
5
|
*/
|
5
|
-
export declare
|
6
|
+
export declare const Divider: React.FC<SxProp>;
|
@@ -1,23 +1,26 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import Box from '../Box';
|
3
3
|
import { get } from '../constants';
|
4
|
-
|
4
|
+
import { merge } from '../sx';
|
5
5
|
/**
|
6
6
|
* Visually separates `Item`s or `Group`s in an `ActionList`.
|
7
7
|
*/
|
8
|
-
|
8
|
+
|
9
|
+
export const Divider = ({
|
10
|
+
sx = {}
|
11
|
+
}) => {
|
9
12
|
return /*#__PURE__*/React.createElement(Box, {
|
10
13
|
as: "li",
|
11
14
|
role: "separator",
|
12
|
-
sx: {
|
15
|
+
sx: merge({
|
13
16
|
height: 1,
|
14
17
|
backgroundColor: 'actionListItem.inlineDivider',
|
15
18
|
marginTop: theme => `calc(${get('space.2')(theme)} - 1px)`,
|
16
19
|
marginBottom: 2,
|
17
20
|
listStyle: 'none' // hide the ::marker inserted by browser's stylesheet
|
18
21
|
|
19
|
-
},
|
22
|
+
}, sx),
|
20
23
|
"data-component": "ActionList.Divider"
|
21
24
|
});
|
22
|
-
}
|
25
|
+
};
|
23
26
|
Divider.displayName = "Divider";
|
@@ -8,6 +8,7 @@ import Box from '../Box';
|
|
8
8
|
import sx, { merge } from '../sx';
|
9
9
|
import createSlots from '../utils/create-slots';
|
10
10
|
import { ListContext } from './List';
|
11
|
+
import { MenuContext } from './MenuContext';
|
11
12
|
import { Selection } from './Selection';
|
12
13
|
export const getVariantStyles = (variant, disabled) => {
|
13
14
|
if (disabled) {
|
@@ -54,6 +55,7 @@ export const Item = /*#__PURE__*/React.forwardRef(({
|
|
54
55
|
onSelect,
|
55
56
|
sx: sxProp = {},
|
56
57
|
id,
|
58
|
+
role,
|
57
59
|
_PrivateItemWrapper,
|
58
60
|
...props
|
59
61
|
}, forwardedRef) => {
|
@@ -61,6 +63,10 @@ export const Item = /*#__PURE__*/React.forwardRef(({
|
|
61
63
|
variant: listVariant,
|
62
64
|
showDividers
|
63
65
|
} = React.useContext(ListContext);
|
66
|
+
const {
|
67
|
+
itemRole,
|
68
|
+
afterSelect
|
69
|
+
} = React.useContext(MenuContext);
|
64
70
|
const {
|
65
71
|
theme
|
66
72
|
} = useTheme();
|
@@ -135,16 +141,23 @@ export const Item = /*#__PURE__*/React.forwardRef(({
|
|
135
141
|
const clickHandler = React.useCallback(event => {
|
136
142
|
if (typeof onSelect !== 'function') return;
|
137
143
|
if (disabled) return;
|
138
|
-
|
139
|
-
|
144
|
+
|
145
|
+
if (!event.defaultPrevented) {
|
146
|
+
onSelect(event); // if this Item is inside a Menu, close the Menu
|
147
|
+
|
148
|
+
if (typeof afterSelect === 'function') afterSelect();
|
149
|
+
}
|
150
|
+
}, [onSelect, disabled, afterSelect]);
|
140
151
|
const keyPressHandler = React.useCallback(event => {
|
141
152
|
if (typeof onSelect !== 'function') return;
|
142
153
|
if (disabled) return;
|
143
154
|
|
144
155
|
if (!event.defaultPrevented && [' ', 'Enter'].includes(event.key)) {
|
145
|
-
onSelect(event);
|
156
|
+
onSelect(event); // if this Item is inside a Menu, close the Menu
|
157
|
+
|
158
|
+
if (typeof afterSelect === 'function') afterSelect();
|
146
159
|
}
|
147
|
-
}, [onSelect, disabled]); // use props.id if provided, otherwise generate one.
|
160
|
+
}, [onSelect, disabled, afterSelect]); // use props.id if provided, otherwise generate one.
|
148
161
|
|
149
162
|
const labelId = useSSRSafeId(id);
|
150
163
|
const inlineDescriptionId = useSSRSafeId(id && `${id}--inline-description`);
|
@@ -166,7 +179,8 @@ export const Item = /*#__PURE__*/React.forwardRef(({
|
|
166
179
|
"aria-disabled": disabled ? true : undefined,
|
167
180
|
tabIndex: disabled || _PrivateItemWrapper ? undefined : 0,
|
168
181
|
"aria-labelledby": `${labelId} ${slots.InlineDescription ? inlineDescriptionId : ''}`,
|
169
|
-
"aria-describedby": slots.BlockDescription ? blockDescriptionId : undefined
|
182
|
+
"aria-describedby": slots.BlockDescription ? blockDescriptionId : undefined,
|
183
|
+
role: role || itemRole
|
170
184
|
}, props), /*#__PURE__*/React.createElement(ItemWrapper, null, /*#__PURE__*/React.createElement(Selection, {
|
171
185
|
selected: selected
|
172
186
|
}), slots.LeadingVisual, /*#__PURE__*/React.createElement(Box, {
|
@@ -3,6 +3,7 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
3
3
|
import React from 'react';
|
4
4
|
import styled from 'styled-components';
|
5
5
|
import sx, { merge } from '../sx';
|
6
|
+
import { MenuContext } from './MenuContext';
|
6
7
|
export const ListContext = /*#__PURE__*/React.createContext({});
|
7
8
|
const ListBox = styled.ul.withConfig({
|
8
9
|
displayName: "List__ListBox",
|
@@ -12,6 +13,7 @@ export const List = /*#__PURE__*/React.forwardRef(({
|
|
12
13
|
variant = 'inset',
|
13
14
|
selectionVariant,
|
14
15
|
showDividers = false,
|
16
|
+
role,
|
15
17
|
sx: sxProp = {},
|
16
18
|
...props
|
17
19
|
}, forwardedRef) => {
|
@@ -21,8 +23,14 @@ export const List = /*#__PURE__*/React.forwardRef(({
|
|
21
23
|
// reset ul styles
|
22
24
|
paddingY: variant === 'inset' ? 2 : 0
|
23
25
|
};
|
26
|
+
/** if list is inside a Menu, it will get a role from the Menu */
|
27
|
+
|
28
|
+
const {
|
29
|
+
listRole
|
30
|
+
} = React.useContext(MenuContext);
|
24
31
|
return /*#__PURE__*/React.createElement(ListBox, _extends({
|
25
|
-
sx: merge(styles, sxProp)
|
32
|
+
sx: merge(styles, sxProp),
|
33
|
+
role: role || listRole
|
26
34
|
}, props, {
|
27
35
|
ref: forwardedRef
|
28
36
|
}), /*#__PURE__*/React.createElement(ListContext.Provider, {
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/** This context can be used by components that compose ActionList inside a Menu */
|
2
|
+
import React from 'react';
|
3
|
+
declare type ContextProps = {
|
4
|
+
parent?: string;
|
5
|
+
listRole?: string;
|
6
|
+
itemRole?: string;
|
7
|
+
afterSelect?: () => void;
|
8
|
+
};
|
9
|
+
export declare const MenuContext: React.Context<ContextProps>;
|
10
|
+
export {};
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
2
2
|
import { CheckIcon } from '@primer/octicons-react';
|
3
3
|
import { ListContext } from './List';
|
4
4
|
import { GroupContext } from './Group';
|
5
|
+
import { MenuContext } from './MenuContext';
|
5
6
|
import { LeadingVisualContainer } from './Visuals';
|
6
7
|
export const Selection = ({
|
7
8
|
selected
|
@@ -12,6 +13,9 @@ export const Selection = ({
|
|
12
13
|
const {
|
13
14
|
selectionVariant: groupSelectionVariant
|
14
15
|
} = React.useContext(GroupContext);
|
16
|
+
const {
|
17
|
+
parent
|
18
|
+
} = React.useContext(MenuContext);
|
15
19
|
/** selectionVariant in Group can override the selectionVariant in List root */
|
16
20
|
|
17
21
|
const selectionVariant = typeof groupSelectionVariant !== 'undefined' ? groupSelectionVariant : listSelectionVariant; // if selectionVariant is not set on List, don't show selection
|
@@ -22,6 +26,11 @@ export const Selection = ({
|
|
22
26
|
return null;
|
23
27
|
}
|
24
28
|
|
29
|
+
if (parent === 'ActionMenu') {
|
30
|
+
throw new Error('ActionList cannot have a selectionVariant inside ActionMenu, please use DropdownMenu or SelectPanel instead. More information: https://primer.style/design/components/action-list#application');
|
31
|
+
return null;
|
32
|
+
}
|
33
|
+
|
25
34
|
if (selectionVariant === 'single') {
|
26
35
|
return /*#__PURE__*/React.createElement(LeadingVisualContainer, null, selected && /*#__PURE__*/React.createElement(CheckIcon, null));
|
27
36
|
}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
/// <reference types="react" />
|
2
|
-
import { Divider } from './Divider';
|
3
2
|
export type { ListProps as ActionListProps } from './List';
|
4
3
|
export type { GroupProps } from './Group';
|
5
4
|
export type { ItemProps } from './Item';
|
@@ -26,7 +25,7 @@ export declare const ActionList: import("@radix-ui/react-polymorphic").ForwardRe
|
|
26
25
|
referrerPolicy?: import("react").HTMLAttributeReferrerPolicy | undefined;
|
27
26
|
}>;
|
28
27
|
/** Visually separates `Item`s or `Group`s in an `ActionList`. */
|
29
|
-
Divider:
|
28
|
+
Divider: import("react").FC<import("../sx").SxProp>;
|
30
29
|
/** Secondary text which provides additional information about an `Item`. */
|
31
30
|
Description: import("react").FC<import("./Description").DescriptionProps>;
|
32
31
|
/** Icon (or similar) positioned before `Item` text. */
|