one-design-next 0.0.97 → 0.0.99
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/README.md +5 -18
- package/dist/_genui-types.d.ts +3 -1
- package/dist/_genui-types.js +2 -0
- package/dist/button/style/index.css +3 -0
- package/dist/chat-group/index.d.ts +48 -0
- package/dist/chat-group/index.js +250 -0
- package/dist/chat-group/presence-list.d.ts +29 -0
- package/dist/chat-group/presence-list.js +194 -0
- package/dist/chat-group/style/index.css +387 -0
- package/dist/chat-group/style/index.d.ts +2 -0
- package/dist/chat-group/style/index.js +2 -0
- package/dist/chat-item/index.d.ts +17 -2
- package/dist/chat-item/index.js +78 -10
- package/dist/chat-item/style/index.css +42 -27
- package/dist/chat-list/index.d.ts +61 -2
- package/dist/chat-list/index.js +604 -71
- package/dist/chat-list/style/index.css +266 -25
- package/dist/dropdown/index.d.ts +3 -2
- package/dist/dropdown/index.js +267 -236
- package/dist/dropdown/style/index.css +84 -6
- package/dist/hover-fill/index.d.ts +2 -2
- package/dist/hover-fill/index.js +179 -27
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -1
- package/package.json +2 -2
package/dist/dropdown/index.js
CHANGED
|
@@ -14,11 +14,11 @@ var _excluded = ["asChild", "children"],
|
|
|
14
14
|
_excluded2 = ["sideOffset", "children", "matchWidth", "zIndex", "style", "className", "onCloseAutoFocus", "side", "align"],
|
|
15
15
|
_excluded3 = ["style"],
|
|
16
16
|
_excluded4 = ["inset", "variant", "onSelect", "closeOnClick", "onClick"],
|
|
17
|
-
_excluded5 = ["children", "checked"],
|
|
18
|
-
_excluded6 = ["children"],
|
|
17
|
+
_excluded5 = ["children", "checked", "disabled"],
|
|
18
|
+
_excluded6 = ["children", "disabled"],
|
|
19
19
|
_excluded7 = ["inset", "children"],
|
|
20
20
|
_excluded8 = ["onOpenChange"],
|
|
21
|
-
_excluded9 = ["inset", "children"],
|
|
21
|
+
_excluded9 = ["inset", "icon", "children"],
|
|
22
22
|
_excluded10 = ["sideOffset", "side", "align", "children", "zIndex", "style"],
|
|
23
23
|
_excluded11 = ["style"];
|
|
24
24
|
import { Menu } from '@base-ui/react/menu';
|
|
@@ -26,26 +26,35 @@ import { Slot } from '@radix-ui/react-slot';
|
|
|
26
26
|
import * as React from 'react';
|
|
27
27
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
28
28
|
import Checkbox from "../checkbox";
|
|
29
|
+
import HoverFill from "../hover-fill";
|
|
29
30
|
import Icon from "../icon";
|
|
30
31
|
import Radio from "../radio";
|
|
31
32
|
import ScrollArea from "../scroll-area";
|
|
32
33
|
import "./style";
|
|
34
|
+
function DropdownItemHoverFill(_ref) {
|
|
35
|
+
var disabled = _ref.disabled,
|
|
36
|
+
children = _ref.children;
|
|
37
|
+
return /*#__PURE__*/React.createElement(HoverFill, {
|
|
38
|
+
bgClassName: "odn-dropdown-item-bg",
|
|
39
|
+
disabled: disabled
|
|
40
|
+
}, children);
|
|
41
|
+
}
|
|
33
42
|
|
|
34
43
|
// 基础组件定义 — Base UI Menu(原 Radix DropdownMenu 结构对齐)
|
|
35
|
-
function DropdownMenu(
|
|
36
|
-
var props = Object.assign({}, (_objectDestructuringEmpty(
|
|
44
|
+
function DropdownMenu(_ref2) {
|
|
45
|
+
var props = Object.assign({}, (_objectDestructuringEmpty(_ref2), _ref2));
|
|
37
46
|
return /*#__PURE__*/React.createElement(Menu.Root, props);
|
|
38
47
|
}
|
|
39
|
-
function DropdownMenuPortal(
|
|
40
|
-
var props = Object.assign({}, (_objectDestructuringEmpty(
|
|
48
|
+
function DropdownMenuPortal(_ref3) {
|
|
49
|
+
var props = Object.assign({}, (_objectDestructuringEmpty(_ref3), _ref3));
|
|
41
50
|
return /*#__PURE__*/React.createElement(Menu.Portal, _extends({
|
|
42
51
|
"data-slot": "dropdown-menu-portal"
|
|
43
52
|
}, props));
|
|
44
53
|
}
|
|
45
|
-
var DropdownMenuTrigger = /*#__PURE__*/React.forwardRef(function (
|
|
46
|
-
var asChild =
|
|
47
|
-
children =
|
|
48
|
-
props = _objectWithoutProperties(
|
|
54
|
+
var DropdownMenuTrigger = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
|
|
55
|
+
var asChild = _ref4.asChild,
|
|
56
|
+
children = _ref4.children,
|
|
57
|
+
props = _objectWithoutProperties(_ref4, _excluded);
|
|
49
58
|
if (asChild && /*#__PURE__*/React.isValidElement(children)) {
|
|
50
59
|
var nativeButton = typeof children.type === 'string' && children.type === 'button';
|
|
51
60
|
return /*#__PURE__*/React.createElement(Menu.Trigger, _extends({
|
|
@@ -62,24 +71,25 @@ var DropdownMenuTrigger = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
62
71
|
}, props), children);
|
|
63
72
|
});
|
|
64
73
|
DropdownMenuTrigger.displayName = 'DropdownMenuTrigger';
|
|
65
|
-
var DropdownMenuContent = /*#__PURE__*/React.forwardRef(function (
|
|
66
|
-
var
|
|
67
|
-
sideOffset =
|
|
68
|
-
children =
|
|
69
|
-
matchWidth =
|
|
70
|
-
|
|
71
|
-
zIndex =
|
|
72
|
-
style =
|
|
73
|
-
className =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
side =
|
|
77
|
-
|
|
78
|
-
align =
|
|
79
|
-
rest = _objectWithoutProperties(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
var DropdownMenuContent = /*#__PURE__*/React.forwardRef(function (_ref5, ref) {
|
|
75
|
+
var _ref5$sideOffset = _ref5.sideOffset,
|
|
76
|
+
sideOffset = _ref5$sideOffset === void 0 ? 4 : _ref5$sideOffset,
|
|
77
|
+
children = _ref5.children,
|
|
78
|
+
matchWidth = _ref5.matchWidth,
|
|
79
|
+
_ref5$zIndex = _ref5.zIndex,
|
|
80
|
+
zIndex = _ref5$zIndex === void 0 ? 'var(--odn-z-index-select)' : _ref5$zIndex,
|
|
81
|
+
style = _ref5.style,
|
|
82
|
+
className = _ref5.className,
|
|
83
|
+
onCloseAutoFocus = _ref5.onCloseAutoFocus,
|
|
84
|
+
_ref5$side = _ref5.side,
|
|
85
|
+
side = _ref5$side === void 0 ? 'bottom' : _ref5$side,
|
|
86
|
+
_ref5$align = _ref5.align,
|
|
87
|
+
align = _ref5$align === void 0 ? 'center' : _ref5$align,
|
|
88
|
+
rest = _objectWithoutProperties(_ref5, _excluded2);
|
|
89
|
+
void onCloseAutoFocus;
|
|
90
|
+
var _ref6 = rest,
|
|
91
|
+
restPopupStyle = _ref6.style,
|
|
92
|
+
popupRest = _objectWithoutProperties(_ref6, _excluded3);
|
|
83
93
|
return /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
|
|
84
94
|
side: side,
|
|
85
95
|
align: align,
|
|
@@ -103,22 +113,24 @@ var DropdownMenuContent = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
|
|
|
103
113
|
}, children))));
|
|
104
114
|
});
|
|
105
115
|
DropdownMenuContent.displayName = 'DropdownMenuContent';
|
|
106
|
-
function DropdownMenuGroup(
|
|
107
|
-
var props = Object.assign({}, (_objectDestructuringEmpty(
|
|
116
|
+
function DropdownMenuGroup(_ref7) {
|
|
117
|
+
var props = Object.assign({}, (_objectDestructuringEmpty(_ref7), _ref7));
|
|
108
118
|
return /*#__PURE__*/React.createElement(Menu.Group, _extends({
|
|
109
119
|
"data-slot": "dropdown-menu-group"
|
|
110
120
|
}, props));
|
|
111
121
|
}
|
|
112
|
-
var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (
|
|
113
|
-
var inset =
|
|
114
|
-
|
|
115
|
-
variant =
|
|
116
|
-
onSelect =
|
|
117
|
-
|
|
118
|
-
closeOnClick =
|
|
119
|
-
_onClick =
|
|
120
|
-
props = _objectWithoutProperties(
|
|
121
|
-
return /*#__PURE__*/React.createElement(
|
|
122
|
+
var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_ref8, ref) {
|
|
123
|
+
var inset = _ref8.inset,
|
|
124
|
+
_ref8$variant = _ref8.variant,
|
|
125
|
+
variant = _ref8$variant === void 0 ? 'default' : _ref8$variant,
|
|
126
|
+
onSelect = _ref8.onSelect,
|
|
127
|
+
_ref8$closeOnClick = _ref8.closeOnClick,
|
|
128
|
+
closeOnClick = _ref8$closeOnClick === void 0 ? true : _ref8$closeOnClick,
|
|
129
|
+
_onClick = _ref8.onClick,
|
|
130
|
+
props = _objectWithoutProperties(_ref8, _excluded4);
|
|
131
|
+
return /*#__PURE__*/React.createElement(DropdownItemHoverFill, {
|
|
132
|
+
disabled: props.disabled
|
|
133
|
+
}, /*#__PURE__*/React.createElement(Menu.Item, _extends({
|
|
122
134
|
ref: ref,
|
|
123
135
|
"data-slot": "dropdown-menu-item",
|
|
124
136
|
"data-odn-dropdown-item": true,
|
|
@@ -129,64 +141,72 @@ var DropdownMenuItem = /*#__PURE__*/React.forwardRef(function (_ref7, ref) {
|
|
|
129
141
|
_onClick === null || _onClick === void 0 || _onClick(event);
|
|
130
142
|
onSelect === null || onSelect === void 0 || onSelect(event);
|
|
131
143
|
}
|
|
132
|
-
}, props));
|
|
144
|
+
}, props)));
|
|
133
145
|
});
|
|
134
146
|
DropdownMenuItem.displayName = 'DropdownMenuItem';
|
|
135
|
-
function DropdownMenuCheckboxItem(
|
|
136
|
-
var children =
|
|
137
|
-
checked =
|
|
138
|
-
|
|
139
|
-
|
|
147
|
+
function DropdownMenuCheckboxItem(_ref9) {
|
|
148
|
+
var children = _ref9.children,
|
|
149
|
+
checked = _ref9.checked,
|
|
150
|
+
disabled = _ref9.disabled,
|
|
151
|
+
props = _objectWithoutProperties(_ref9, _excluded5);
|
|
152
|
+
return /*#__PURE__*/React.createElement(DropdownItemHoverFill, {
|
|
153
|
+
disabled: disabled
|
|
154
|
+
}, /*#__PURE__*/React.createElement(Menu.CheckboxItem, _extends({
|
|
140
155
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
141
156
|
"data-odn-dropdown-checkbox-item": true,
|
|
142
|
-
checked: checked
|
|
157
|
+
checked: checked,
|
|
158
|
+
disabled: disabled
|
|
143
159
|
}, props), /*#__PURE__*/React.createElement("span", {
|
|
144
160
|
"data-odn-dropdown-item-indicator": true
|
|
145
|
-
}, /*#__PURE__*/React.createElement(Menu.CheckboxItemIndicator, null, "\u2713")), children);
|
|
161
|
+
}, /*#__PURE__*/React.createElement(Menu.CheckboxItemIndicator, null, "\u2713")), children));
|
|
146
162
|
}
|
|
147
|
-
function DropdownMenuRadioGroup(
|
|
148
|
-
var props = Object.assign({}, (_objectDestructuringEmpty(
|
|
163
|
+
function DropdownMenuRadioGroup(_ref10) {
|
|
164
|
+
var props = Object.assign({}, (_objectDestructuringEmpty(_ref10), _ref10));
|
|
149
165
|
return /*#__PURE__*/React.createElement(Menu.RadioGroup, _extends({
|
|
150
166
|
"data-slot": "dropdown-menu-radio-group"
|
|
151
167
|
}, props));
|
|
152
168
|
}
|
|
153
|
-
function DropdownMenuRadioItem(
|
|
154
|
-
var children =
|
|
155
|
-
|
|
156
|
-
|
|
169
|
+
function DropdownMenuRadioItem(_ref11) {
|
|
170
|
+
var children = _ref11.children,
|
|
171
|
+
disabled = _ref11.disabled,
|
|
172
|
+
props = _objectWithoutProperties(_ref11, _excluded6);
|
|
173
|
+
return /*#__PURE__*/React.createElement(DropdownItemHoverFill, {
|
|
174
|
+
disabled: disabled
|
|
175
|
+
}, /*#__PURE__*/React.createElement(Menu.RadioItem, _extends({
|
|
157
176
|
"data-slot": "dropdown-menu-radio-item",
|
|
158
|
-
"data-odn-dropdown-radio-item": true
|
|
177
|
+
"data-odn-dropdown-radio-item": true,
|
|
178
|
+
disabled: disabled
|
|
159
179
|
}, props), /*#__PURE__*/React.createElement("span", {
|
|
160
180
|
"data-odn-dropdown-item-indicator": true
|
|
161
|
-
}, /*#__PURE__*/React.createElement(Menu.RadioItemIndicator, null, "\u25CF")), children);
|
|
181
|
+
}, /*#__PURE__*/React.createElement(Menu.RadioItemIndicator, null, "\u25CF")), children));
|
|
162
182
|
}
|
|
163
|
-
function DropdownMenuLabel(
|
|
164
|
-
var inset =
|
|
165
|
-
children =
|
|
166
|
-
props = _objectWithoutProperties(
|
|
183
|
+
function DropdownMenuLabel(_ref12) {
|
|
184
|
+
var inset = _ref12.inset,
|
|
185
|
+
children = _ref12.children,
|
|
186
|
+
props = _objectWithoutProperties(_ref12, _excluded7);
|
|
167
187
|
return /*#__PURE__*/React.createElement(Menu.Group, null, /*#__PURE__*/React.createElement(Menu.GroupLabel, _extends({
|
|
168
188
|
"data-slot": "dropdown-menu-label",
|
|
169
189
|
"data-odn-dropdown-label": true,
|
|
170
190
|
"data-inset": inset
|
|
171
191
|
}, props), children));
|
|
172
192
|
}
|
|
173
|
-
function DropdownMenuSeparator(
|
|
174
|
-
var props = Object.assign({}, (_objectDestructuringEmpty(
|
|
193
|
+
function DropdownMenuSeparator(_ref13) {
|
|
194
|
+
var props = Object.assign({}, (_objectDestructuringEmpty(_ref13), _ref13));
|
|
175
195
|
return /*#__PURE__*/React.createElement(Menu.Separator, _extends({
|
|
176
196
|
"data-slot": "dropdown-menu-separator",
|
|
177
197
|
"data-odn-dropdown-separator": true
|
|
178
198
|
}, props));
|
|
179
199
|
}
|
|
180
|
-
function DropdownMenuShortcut(
|
|
181
|
-
var props = Object.assign({}, (_objectDestructuringEmpty(
|
|
200
|
+
function DropdownMenuShortcut(_ref14) {
|
|
201
|
+
var props = Object.assign({}, (_objectDestructuringEmpty(_ref14), _ref14));
|
|
182
202
|
return /*#__PURE__*/React.createElement("span", _extends({
|
|
183
203
|
"data-slot": "dropdown-menu-shortcut",
|
|
184
204
|
"data-odn-dropdown-shortcut": true
|
|
185
205
|
}, props));
|
|
186
206
|
}
|
|
187
|
-
function DropdownMenuSub(
|
|
188
|
-
var onOpenChange =
|
|
189
|
-
props = _objectWithoutProperties(
|
|
207
|
+
function DropdownMenuSub(_ref15) {
|
|
208
|
+
var onOpenChange = _ref15.onOpenChange,
|
|
209
|
+
props = _objectWithoutProperties(_ref15, _excluded8);
|
|
190
210
|
return /*#__PURE__*/React.createElement(Menu.SubmenuRoot, _extends({
|
|
191
211
|
"data-slot": "dropdown-menu-sub"
|
|
192
212
|
}, props, {
|
|
@@ -195,16 +215,20 @@ function DropdownMenuSub(_ref14) {
|
|
|
195
215
|
} : undefined
|
|
196
216
|
}));
|
|
197
217
|
}
|
|
198
|
-
var DropdownMenuSubTrigger = /*#__PURE__*/React.forwardRef(function (
|
|
199
|
-
var inset =
|
|
200
|
-
|
|
201
|
-
|
|
218
|
+
var DropdownMenuSubTrigger = /*#__PURE__*/React.forwardRef(function (_ref16, ref) {
|
|
219
|
+
var inset = _ref16.inset,
|
|
220
|
+
icon = _ref16.icon,
|
|
221
|
+
children = _ref16.children,
|
|
222
|
+
props = _objectWithoutProperties(_ref16, _excluded9);
|
|
202
223
|
return /*#__PURE__*/React.createElement(Menu.SubmenuTrigger, _extends({
|
|
203
224
|
ref: ref,
|
|
204
225
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
205
226
|
"data-odn-dropdown-sub-trigger": true,
|
|
206
227
|
"data-inset": inset
|
|
207
|
-
}, props), /*#__PURE__*/React.createElement(
|
|
228
|
+
}, props), icon && /*#__PURE__*/React.createElement(Icon, {
|
|
229
|
+
name: icon,
|
|
230
|
+
"data-odn-dropdown-item-icon": true
|
|
231
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
208
232
|
"data-odn-dropdown-item-label": true
|
|
209
233
|
}, children), /*#__PURE__*/React.createElement(Icon, {
|
|
210
234
|
"data-odn-dropdown-chevron": true,
|
|
@@ -212,21 +236,21 @@ var DropdownMenuSubTrigger = /*#__PURE__*/React.forwardRef(function (_ref15, ref
|
|
|
212
236
|
}));
|
|
213
237
|
});
|
|
214
238
|
DropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';
|
|
215
|
-
var DropdownMenuSubContent = /*#__PURE__*/React.forwardRef(function (
|
|
216
|
-
var
|
|
217
|
-
sideOffset =
|
|
218
|
-
|
|
219
|
-
side =
|
|
220
|
-
|
|
221
|
-
align =
|
|
222
|
-
children =
|
|
223
|
-
|
|
224
|
-
zIndex =
|
|
225
|
-
style =
|
|
226
|
-
rest = _objectWithoutProperties(
|
|
227
|
-
var
|
|
228
|
-
restPopupStyle =
|
|
229
|
-
popupRest = _objectWithoutProperties(
|
|
239
|
+
var DropdownMenuSubContent = /*#__PURE__*/React.forwardRef(function (_ref17, ref) {
|
|
240
|
+
var _ref17$sideOffset = _ref17.sideOffset,
|
|
241
|
+
sideOffset = _ref17$sideOffset === void 0 ? 4 : _ref17$sideOffset,
|
|
242
|
+
_ref17$side = _ref17.side,
|
|
243
|
+
side = _ref17$side === void 0 ? 'right' : _ref17$side,
|
|
244
|
+
_ref17$align = _ref17.align,
|
|
245
|
+
align = _ref17$align === void 0 ? 'start' : _ref17$align,
|
|
246
|
+
children = _ref17.children,
|
|
247
|
+
_ref17$zIndex = _ref17.zIndex,
|
|
248
|
+
zIndex = _ref17$zIndex === void 0 ? 'var(--odn-z-index-select)' : _ref17$zIndex,
|
|
249
|
+
style = _ref17.style,
|
|
250
|
+
rest = _objectWithoutProperties(_ref17, _excluded10);
|
|
251
|
+
var _ref18 = rest,
|
|
252
|
+
restPopupStyle = _ref18.style,
|
|
253
|
+
popupRest = _objectWithoutProperties(_ref18, _excluded11);
|
|
230
254
|
return /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
|
|
231
255
|
side: side,
|
|
232
256
|
align: align,
|
|
@@ -334,8 +358,7 @@ var addSelectAllToMenu = function addSelectAllToMenu(menu, allowSelectAll, isSel
|
|
|
334
358
|
};
|
|
335
359
|
|
|
336
360
|
// 递归渲染菜单项的辅助函数
|
|
337
|
-
var renderMenuItem = function renderMenuItem(item, index, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping, menuZIndex) {
|
|
338
|
-
var _item$value2;
|
|
361
|
+
var renderMenuItem = function renderMenuItem(item, index, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping, menuZIndex, popupClassName) {
|
|
339
362
|
var key = 'value' in item && item.value || "item-".concat(index);
|
|
340
363
|
switch (item.type) {
|
|
341
364
|
case 'label':
|
|
@@ -350,159 +373,167 @@ var renderMenuItem = function renderMenuItem(item, index, _onSelect, onItemClick
|
|
|
350
373
|
return /*#__PURE__*/React.createElement(DropdownMenuGroup, {
|
|
351
374
|
key: key
|
|
352
375
|
}, item.children.map(function (child, childIndex) {
|
|
353
|
-
return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping, menuZIndex);
|
|
376
|
+
return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping, menuZIndex, popupClassName);
|
|
354
377
|
}));
|
|
355
378
|
default:
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
//
|
|
360
|
-
if (
|
|
361
|
-
//
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
379
|
+
{
|
|
380
|
+
var _item$value2;
|
|
381
|
+
// 'item' or undefined (DropdownMenuItem)
|
|
382
|
+
// 检查是否有 children 属性,如果有则渲染为子菜单
|
|
383
|
+
if ('children' in item && item.children && item.children.length > 0) {
|
|
384
|
+
// 在多选模式下,带 children 的项目可以选择(全选该子菜单)
|
|
385
|
+
if (isSelectable && multiple) {
|
|
386
|
+
// 收集该子菜单所有可选择的子项值
|
|
387
|
+
var collectChildValues = function collectChildValues(items) {
|
|
388
|
+
var values = [];
|
|
389
|
+
items.forEach(function (item) {
|
|
390
|
+
if ('value' in item && item.value && !item.value.startsWith('selectAll')) {
|
|
391
|
+
// 包含当前项的值(无论是否有子项)
|
|
392
|
+
values.push(item.value);
|
|
393
|
+
}
|
|
394
|
+
if ('children' in item && item.children) {
|
|
395
|
+
// 如果有子项,递归收集子项
|
|
396
|
+
values.push.apply(values, _toConsumableArray(collectChildValues(item.children)));
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
return values;
|
|
400
|
+
};
|
|
401
|
+
var childValues = collectChildValues(item.children);
|
|
402
|
+
var allChildrenSelected = Array.isArray(selectedValue) && childValues.length > 0 && childValues.every(function (val) {
|
|
403
|
+
return selectedValue.includes(val);
|
|
373
404
|
});
|
|
374
|
-
return
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
405
|
+
return /*#__PURE__*/React.createElement(DropdownItemHoverFill, {
|
|
406
|
+
key: key,
|
|
407
|
+
disabled: item.disabled
|
|
408
|
+
}, /*#__PURE__*/React.createElement(DropdownMenuSub, null, /*#__PURE__*/React.createElement(DropdownMenuSubTrigger, {
|
|
409
|
+
disabled: item.disabled,
|
|
410
|
+
onClick: function onClick(event) {
|
|
411
|
+
event.preventDefault();
|
|
412
|
+
event.stopPropagation();
|
|
413
|
+
|
|
414
|
+
// 切换该子菜单的全选状态
|
|
415
|
+
var currentValues = Array.isArray(selectedValue) ? selectedValue : [];
|
|
416
|
+
var newValues;
|
|
417
|
+
if (allChildrenSelected) {
|
|
418
|
+
// 如果全选中,则取消选中该子菜单所有项(包括自己)
|
|
419
|
+
var allValuesToRemove = _toConsumableArray(childValues);
|
|
420
|
+
if (item.value) {
|
|
421
|
+
allValuesToRemove.push(item.value);
|
|
422
|
+
}
|
|
423
|
+
newValues = currentValues.filter(function (val) {
|
|
424
|
+
return !allValuesToRemove.includes(val);
|
|
425
|
+
});
|
|
426
|
+
} else {
|
|
427
|
+
// 如果未全选中,则选中该子菜单所有项(包括自己)
|
|
428
|
+
var allValuesToAdd = _toConsumableArray(childValues);
|
|
429
|
+
if (item.value) {
|
|
430
|
+
allValuesToAdd.push(item.value);
|
|
431
|
+
}
|
|
432
|
+
var uniqueValues = new Set([].concat(_toConsumableArray(currentValues), _toConsumableArray(allValuesToAdd)));
|
|
433
|
+
newValues = Array.from(uniqueValues);
|
|
396
434
|
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
// 如果未全选中,则选中该子菜单所有项(包括自己)
|
|
402
|
-
var allValuesToAdd = _toConsumableArray(childValues);
|
|
403
|
-
if (item.value) {
|
|
404
|
-
allValuesToAdd.push(item.value);
|
|
435
|
+
|
|
436
|
+
// 直接调用 rawOnSelect
|
|
437
|
+
if (rawOnSelect) {
|
|
438
|
+
rawOnSelect(newValues);
|
|
405
439
|
}
|
|
406
|
-
var uniqueValues = new Set([].concat(_toConsumableArray(currentValues), _toConsumableArray(allValuesToAdd)));
|
|
407
|
-
newValues = Array.from(uniqueValues);
|
|
408
440
|
}
|
|
441
|
+
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
442
|
+
checked: allChildrenSelected,
|
|
443
|
+
indeterminate: !allChildrenSelected && Array.isArray(selectedValue) && childValues.some(function (val) {
|
|
444
|
+
return selectedValue.includes(val);
|
|
445
|
+
}),
|
|
446
|
+
"data-odn-dropdown-checkbox": true
|
|
447
|
+
}), item.label), /*#__PURE__*/React.createElement(DropdownMenuSubContent, {
|
|
448
|
+
zIndex: menuZIndex,
|
|
449
|
+
className: popupClassName
|
|
450
|
+
}, item.children.map(function (child, childIndex) {
|
|
451
|
+
return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping, menuZIndex, popupClassName);
|
|
452
|
+
}))));
|
|
453
|
+
}
|
|
409
454
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
"data-odn-dropdown-checkbox": true
|
|
421
|
-
}), item.label), /*#__PURE__*/React.createElement(DropdownMenuSubContent, {
|
|
422
|
-
zIndex: menuZIndex
|
|
455
|
+
// 普通子菜单渲染(单选模式或非选择模式)
|
|
456
|
+
return /*#__PURE__*/React.createElement(DropdownItemHoverFill, {
|
|
457
|
+
key: key,
|
|
458
|
+
disabled: item.disabled
|
|
459
|
+
}, /*#__PURE__*/React.createElement(DropdownMenuSub, null, /*#__PURE__*/React.createElement(DropdownMenuSubTrigger, {
|
|
460
|
+
disabled: item.disabled,
|
|
461
|
+
icon: item.icon
|
|
462
|
+
}, item.label), /*#__PURE__*/React.createElement(DropdownMenuSubContent, {
|
|
463
|
+
zIndex: menuZIndex,
|
|
464
|
+
className: popupClassName
|
|
423
465
|
}, item.children.map(function (child, childIndex) {
|
|
424
|
-
return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping, menuZIndex);
|
|
425
|
-
})));
|
|
466
|
+
return renderMenuItem(child, childIndex, _onSelect, onItemClick, isSelectable, multiple, selectedValue, rawOnSelect, menu, layerMapping, menuZIndex, popupClassName);
|
|
467
|
+
}))));
|
|
426
468
|
}
|
|
427
469
|
|
|
428
|
-
//
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
470
|
+
// 普通菜单项
|
|
471
|
+
// 计算是否选中
|
|
472
|
+
var isSelected = false;
|
|
473
|
+
if (isSelectable && selectedValue !== undefined) {
|
|
474
|
+
if (!multiple) {
|
|
475
|
+
isSelected = selectedValue === item.value;
|
|
476
|
+
} else if (Array.isArray(selectedValue)) {
|
|
477
|
+
var _item$value;
|
|
478
|
+
// 对于全选按钮,检查该层的所有选项是否都被选中
|
|
479
|
+
if ((_item$value = item.value) !== null && _item$value !== void 0 && _item$value.startsWith('selectAll') && layerMapping && item.value) {
|
|
480
|
+
var layerValues = layerMapping[item.value];
|
|
481
|
+
if (layerValues) {
|
|
482
|
+
isSelected = layerValues.length > 0 && layerValues.every(function (val) {
|
|
483
|
+
return selectedValue.includes(val);
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
} else {
|
|
487
|
+
// 普通选项,直接检查是否在选中列表中
|
|
488
|
+
isSelected = selectedValue.includes(item.value);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
return /*#__PURE__*/React.createElement(DropdownMenuItem, {
|
|
493
|
+
key: key,
|
|
494
|
+
disabled: item.disabled,
|
|
495
|
+
closeOnClick: !(isSelectable && multiple),
|
|
496
|
+
onSelect: function onSelect(event) {
|
|
497
|
+
// 多选模式下,所有项都不关闭菜单
|
|
498
|
+
var shouldKeepOpen = isSelectable && multiple;
|
|
499
|
+
if (shouldKeepOpen) {
|
|
500
|
+
event.preventDefault();
|
|
501
|
+
}
|
|
502
|
+
_onSelect === null || _onSelect === void 0 || _onSelect(item.value);
|
|
439
503
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
504
|
+
// 只有在非保持打开的情况下才调用 onItemClick(关闭菜单)
|
|
505
|
+
if (!shouldKeepOpen) {
|
|
506
|
+
onItemClick === null || onItemClick === void 0 || onItemClick();
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}, isSelectable && !multiple && /*#__PURE__*/React.createElement(Radio.Group, {
|
|
510
|
+
value: isSelected ? item.value : '',
|
|
511
|
+
options: [{
|
|
512
|
+
label: '',
|
|
513
|
+
value: item.value
|
|
514
|
+
}],
|
|
515
|
+
"data-odn-dropdown-radio": true
|
|
516
|
+
}), isSelectable && multiple && /*#__PURE__*/React.createElement(Checkbox, {
|
|
517
|
+
checked: isSelected,
|
|
518
|
+
indeterminate: (_item$value2 = item.value) !== null && _item$value2 !== void 0 && _item$value2.startsWith('selectAll') && layerMapping && item.value && Array.isArray(selectedValue) ? function () {
|
|
450
519
|
var layerValues = layerMapping[item.value];
|
|
451
520
|
if (layerValues) {
|
|
452
|
-
|
|
521
|
+
var selectedCount = layerValues.filter(function (val) {
|
|
453
522
|
return selectedValue.includes(val);
|
|
454
|
-
});
|
|
523
|
+
}).length;
|
|
524
|
+
// indeterminate 只在部分选中时显示(既不是全选也不是全不选)
|
|
525
|
+
return selectedCount > 0 && selectedCount < layerValues.length;
|
|
455
526
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
527
|
+
return false;
|
|
528
|
+
}() : false,
|
|
529
|
+
"data-odn-dropdown-checkbox": true
|
|
530
|
+
}), item.icon && /*#__PURE__*/React.createElement(Icon, {
|
|
531
|
+
name: item.icon,
|
|
532
|
+
"data-odn-dropdown-item-icon": true
|
|
533
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
534
|
+
"data-odn-dropdown-item-label": true
|
|
535
|
+
}, item.label), item.shortcut && /*#__PURE__*/React.createElement(DropdownMenuShortcut, null, item.shortcut));
|
|
461
536
|
}
|
|
462
|
-
return /*#__PURE__*/React.createElement(DropdownMenuItem, {
|
|
463
|
-
key: key,
|
|
464
|
-
disabled: item.disabled,
|
|
465
|
-
closeOnClick: !(isSelectable && multiple),
|
|
466
|
-
onSelect: function onSelect(event) {
|
|
467
|
-
// 多选模式下,所有项都不关闭菜单
|
|
468
|
-
var shouldKeepOpen = isSelectable && multiple;
|
|
469
|
-
if (shouldKeepOpen) {
|
|
470
|
-
event.preventDefault();
|
|
471
|
-
}
|
|
472
|
-
_onSelect === null || _onSelect === void 0 || _onSelect(item.value);
|
|
473
|
-
|
|
474
|
-
// 只有在非保持打开的情况下才调用 onItemClick(关闭菜单)
|
|
475
|
-
if (!shouldKeepOpen) {
|
|
476
|
-
onItemClick === null || onItemClick === void 0 || onItemClick();
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
}, isSelectable && !multiple && /*#__PURE__*/React.createElement(Radio.Group, {
|
|
480
|
-
value: isSelected ? item.value : '',
|
|
481
|
-
options: [{
|
|
482
|
-
label: '',
|
|
483
|
-
value: item.value
|
|
484
|
-
}],
|
|
485
|
-
"data-odn-dropdown-radio": true
|
|
486
|
-
}), isSelectable && multiple && /*#__PURE__*/React.createElement(Checkbox, {
|
|
487
|
-
checked: isSelected,
|
|
488
|
-
indeterminate: (_item$value2 = item.value) !== null && _item$value2 !== void 0 && _item$value2.startsWith('selectAll') && layerMapping && item.value && Array.isArray(selectedValue) ? function () {
|
|
489
|
-
var layerValues = layerMapping[item.value];
|
|
490
|
-
if (layerValues) {
|
|
491
|
-
var selectedCount = layerValues.filter(function (val) {
|
|
492
|
-
return selectedValue.includes(val);
|
|
493
|
-
}).length;
|
|
494
|
-
// indeterminate 只在部分选中时显示(既不是全选也不是全不选)
|
|
495
|
-
return selectedCount > 0 && selectedCount < layerValues.length;
|
|
496
|
-
}
|
|
497
|
-
return false;
|
|
498
|
-
}() : false,
|
|
499
|
-
"data-odn-dropdown-checkbox": true
|
|
500
|
-
}), item.icon && /*#__PURE__*/React.createElement(Icon, {
|
|
501
|
-
name: item.icon,
|
|
502
|
-
"data-odn-dropdown-item-icon": true
|
|
503
|
-
}), /*#__PURE__*/React.createElement("span", {
|
|
504
|
-
"data-odn-dropdown-item-label": true
|
|
505
|
-
}, item.label), item.shortcut && /*#__PURE__*/React.createElement(DropdownMenuShortcut, null, item.shortcut));
|
|
506
537
|
}
|
|
507
538
|
};
|
|
508
539
|
|
|
@@ -601,7 +632,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
601
632
|
var layerMapping = useMemo(function () {
|
|
602
633
|
var mapping = {};
|
|
603
634
|
var collectLayerValues = function collectLayerValues(items) {
|
|
604
|
-
var processItem = function processItem(item
|
|
635
|
+
var processItem = function processItem(item) {
|
|
605
636
|
// 如果该项有 children,为其创建全选映射
|
|
606
637
|
if ('value' in item && 'children' in item && item.children) {
|
|
607
638
|
// 收集该层的所有后代项值(不包括全选按钮),包括直接子项和所有后代
|
|
@@ -636,7 +667,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
636
667
|
|
|
637
668
|
// 递归处理子项,传递当前项作为父项
|
|
638
669
|
item.children.forEach(function (child) {
|
|
639
|
-
processItem(child
|
|
670
|
+
processItem(child);
|
|
640
671
|
});
|
|
641
672
|
}
|
|
642
673
|
};
|
|
@@ -737,10 +768,10 @@ var Dropdown = function Dropdown(props) {
|
|
|
737
768
|
var parentChildMap = processedMenu ? buildParentChildMap(processedMenu) : {};
|
|
738
769
|
|
|
739
770
|
// 检查每个父项是否应该被自动选中或取消选中
|
|
740
|
-
Object.entries(parentChildMap).forEach(function (
|
|
741
|
-
var
|
|
742
|
-
parent =
|
|
743
|
-
children =
|
|
771
|
+
Object.entries(parentChildMap).forEach(function (_ref19) {
|
|
772
|
+
var _ref20 = _slicedToArray(_ref19, 2),
|
|
773
|
+
parent = _ref20[0],
|
|
774
|
+
children = _ref20[1];
|
|
744
775
|
var allChildrenSelected = children.every(function (child) {
|
|
745
776
|
return processedValues.includes(child);
|
|
746
777
|
});
|
|
@@ -852,7 +883,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
852
883
|
}, [trigger, visible, onVisibleChange]);
|
|
853
884
|
|
|
854
885
|
// 处理状态变化
|
|
855
|
-
var handleOpenChange = useCallback(function (open
|
|
886
|
+
var handleOpenChange = useCallback(function (open) {
|
|
856
887
|
if (trigger === 'click' && !disabled) {
|
|
857
888
|
onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(open);
|
|
858
889
|
}
|
|
@@ -882,7 +913,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
882
913
|
onMouseEnter: handleContentMouseEnter,
|
|
883
914
|
onMouseLeave: handleContentMouseLeave
|
|
884
915
|
}, processedMenu === null || processedMenu === void 0 ? void 0 : processedMenu.map(function (item, index) {
|
|
885
|
-
return renderMenuItem(item, index, onSelect, handleItemClick, isSelectable, multiple, selectedValue, rawOnSelect, processedMenu, layerMapping, zIndex);
|
|
916
|
+
return renderMenuItem(item, index, onSelect, handleItemClick, isSelectable, multiple, selectedValue, rawOnSelect, processedMenu, layerMapping, zIndex, popupClassName);
|
|
886
917
|
}))));
|
|
887
918
|
}
|
|
888
919
|
|
|
@@ -903,7 +934,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
903
934
|
zIndex: zIndex,
|
|
904
935
|
className: popupClassName
|
|
905
936
|
}, processedMenu === null || processedMenu === void 0 ? void 0 : processedMenu.map(function (item, index) {
|
|
906
|
-
return renderMenuItem(item, index, onSelect, undefined, isSelectable, multiple, selectedValue, rawOnSelect, processedMenu, layerMapping, zIndex);
|
|
937
|
+
return renderMenuItem(item, index, onSelect, undefined, isSelectable, multiple, selectedValue, rawOnSelect, processedMenu, layerMapping, zIndex, popupClassName);
|
|
907
938
|
})));
|
|
908
939
|
};
|
|
909
940
|
|