@aloudata/aloudata-design 2.19.0 → 2.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/AldSelect/Selector/MultipleResponsiveSelectedSection.d.ts +1 -1
  2. package/dist/AldSelect/Selector/MultipleResponsiveSelectedSection.js +3 -1
  3. package/dist/AldSelect/Selector/MultipleSelector.js +14 -8
  4. package/dist/AldSelect/Selector/index.js +5 -2
  5. package/dist/AldSelect/utils/commonUtil.js +10 -2
  6. package/dist/Dropdown/index.js +8 -1
  7. package/dist/Icon/components/InProgressFill.d.ts +1 -2
  8. package/dist/Icon/components/InProgressFill.js +1 -1
  9. package/dist/Icon/svg/In-Progress-fill.svg +2 -2
  10. package/dist/InputNumber/style/index.less +51 -4
  11. package/dist/MemberPicker/components/MemberSelection.d.ts +6 -0
  12. package/dist/MemberPicker/components/MemberSelection.js +37 -13
  13. package/dist/MemberPicker/components/Panel.d.ts +8 -0
  14. package/dist/MemberPicker/components/Panel.js +14 -7
  15. package/dist/MemberPicker/components/PanelWrapper.d.ts +9 -1
  16. package/dist/MemberPicker/components/PanelWrapper.js +6 -2
  17. package/dist/MemberPicker/components/SelectedMemberTags.d.ts +2 -1
  18. package/dist/MemberPicker/components/SelectedMemberTags.js +7 -2
  19. package/dist/MemberPicker/components/UserGroupSelection.d.ts +8 -1
  20. package/dist/MemberPicker/components/UserGroupSelection.js +32 -20
  21. package/dist/MemberPicker/index.js +6 -2
  22. package/dist/MemberPicker/interface.d.ts +8 -0
  23. package/dist/Table/components/DndWrapper.d.ts +10 -0
  24. package/dist/Table/components/DndWrapper.js +38 -0
  25. package/dist/Table/hooks/useRowDnd.js +12 -3
  26. package/dist/Table/index.js +2 -5
  27. package/dist/Tabs/style/index.less +1 -0
  28. package/dist/ald.min.css +1 -1
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.js +1 -0
  31. package/dist/notification/demo/index.js +10 -1
  32. package/dist/notification/index.d.ts +1 -0
  33. package/dist/notification/index.js +16 -11
  34. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { DisplayValueType } from '../interface';
3
3
  import { RefTriggerProps } from '../SelectTrigger';
4
4
  export default function MultipleResponsiveSelectedSection(params: {
5
5
  displayValues: DisplayValueType[];
6
- renderItem: (valueItem: DisplayValueType) => React.JSX.Element | null;
6
+ renderItem: (valueItem: DisplayValueType, index?: number) => React.JSX.Element | null;
7
7
  onToggleOpen: (open: boolean) => void;
8
8
  dropdownRef: RefObject<RefTriggerProps>;
9
9
  maxHeight?: number;
@@ -41,7 +41,9 @@ export default function MultipleResponsiveSelectedSection(params) {
41
41
  }
42
42
  }, /*#__PURE__*/React.createElement("div", {
43
43
  className: "beta-ald-select-selector-multiple-responsive-selected-section-tags"
44
- }, displayValues.map(renderItem))), /*#__PURE__*/React.createElement(Suffix, {
44
+ }, displayValues.map(function (item, index) {
45
+ return renderItem(item, index);
46
+ }))), /*#__PURE__*/React.createElement(Suffix, {
45
47
  showArrow: true,
46
48
  allowClear: false,
47
49
  icon: suffixIcon,
@@ -42,14 +42,14 @@ export default function MultipleSelector(props) {
42
42
  _useState2 = _slicedToArray(_useState, 2),
43
43
  showItemIndex = _useState2[0],
44
44
  setShowItemIndex = _useState2[1];
45
- var customizeRenderSelector = function customizeRenderSelector(value, content, itemDisabled, closable, onClose, isPreview) {
45
+ var customizeRenderSelector = function customizeRenderSelector(value, content, itemDisabled, closable, onClose, isPreview, uniqueKey) {
46
46
  var onMouseDown = function onMouseDown(e) {
47
47
  onPreventMouseDown(e);
48
48
  };
49
49
  return /*#__PURE__*/React.createElement("span", {
50
50
  className: "beta-ald-select-custom-tag-render-wrapper",
51
51
  onMouseDown: onMouseDown,
52
- key: value
52
+ key: uniqueKey !== null && uniqueKey !== void 0 ? uniqueKey : value
53
53
  }, tagRender === null || tagRender === void 0 ? void 0 : tagRender({
54
54
  label: content,
55
55
  value: value,
@@ -58,10 +58,10 @@ export default function MultipleSelector(props) {
58
58
  onClose: onClose !== null && onClose !== void 0 ? onClose : function () {}
59
59
  }, isPreview));
60
60
  };
61
- var defaultRenderSelector = function defaultRenderSelector(item, content, itemDisabled, closable, _onClose, isPreview) {
61
+ var defaultRenderSelector = function defaultRenderSelector(item, content, itemDisabled, closable, _onClose, isPreview, uniqueKey) {
62
62
  return /*#__PURE__*/React.createElement(Tag, {
63
63
  disabled: itemDisabled,
64
- key: item === null || item === void 0 ? void 0 : item.value,
64
+ key: uniqueKey !== null && uniqueKey !== void 0 ? uniqueKey : item === null || item === void 0 ? void 0 : item.value,
65
65
  size: "small",
66
66
  closable: isPreview ? false : closable,
67
67
  onClose: function onClose(e) {
@@ -72,7 +72,8 @@ export default function MultipleSelector(props) {
72
72
  };
73
73
  var isResponsiveMode = isResponsive(mode);
74
74
  var showSelectedSection = isShowSelectedSection(mode);
75
- var renderItem = function renderItem(valueItem) {
75
+ var renderItem = function renderItem(valueItem, index) {
76
+ var _valueItem$key;
76
77
  var itemDisabled = valueItem.disabled,
77
78
  label = valueItem.label,
78
79
  value = valueItem.value;
@@ -97,7 +98,10 @@ export default function MultipleSelector(props) {
97
98
  if (_.isNil(value)) {
98
99
  return null;
99
100
  }
100
- return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, !!itemDisabled, closable, onClose, isPreview) : defaultRenderSelector(valueItem, displayLabel, !!itemDisabled, closable, onClose, isPreview);
101
+
102
+ // 生成唯一的 key,如果 value 可能重复,使用 value + index 组合
103
+ var uniqueKey = (_valueItem$key = valueItem.key) !== null && _valueItem$key !== void 0 ? _valueItem$key : value !== undefined && value !== null ? "".concat(value, "-").concat(index !== null && index !== void 0 ? index : '') : "item-".concat(index !== null && index !== void 0 ? index : '');
104
+ return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, !!itemDisabled, closable, onClose, isPreview, uniqueKey) : defaultRenderSelector(valueItem, displayLabel, !!itemDisabled, closable, onClose, isPreview, uniqueKey);
101
105
  };
102
106
  var renderRest = function renderRest(omittedValues) {
103
107
  if (displayValues.length === 1) {
@@ -132,7 +136,7 @@ export default function MultipleSelector(props) {
132
136
  className: "beta-ald-select-selector beta-ald-select-selector-multiple-responsive"
133
137
  }, showItemIndex === -1 && displayValues.length > 0 && /*#__PURE__*/React.createElement("div", {
134
138
  className: "beta-ald-select-selector-overflow-item-first"
135
- }, renderItem(displayValues[0])), /*#__PURE__*/React.createElement(Overflow, {
139
+ }, renderItem(displayValues[0], 0)), /*#__PURE__*/React.createElement(Overflow, {
136
140
  prefixCls: overflowPrefixCls,
137
141
  data: displayValues,
138
142
  renderItem: renderItem,
@@ -161,5 +165,7 @@ export default function MultipleSelector(props) {
161
165
  }
162
166
  }, /*#__PURE__*/React.createElement("div", {
163
167
  className: "beta-ald-select-selector-multiple-default-tags"
164
- }, displayValues.map(renderItem)));
168
+ }, displayValues.map(function (item, index) {
169
+ return renderItem(item, index);
170
+ })));
165
171
  }
@@ -21,7 +21,10 @@ export default function Selector(props) {
21
21
  }
22
22
  return /*#__PURE__*/React.createElement("div", {
23
23
  className: classNames('beta-ald-select-selector')
24
- }, displayValues.map(function (item) {
25
- return item.label;
24
+ }, displayValues.map(function (item, index) {
25
+ var _item$value;
26
+ return /*#__PURE__*/React.createElement("span", {
27
+ key: (_item$value = item.value) !== null && _item$value !== void 0 ? _item$value : "item-".concat(index)
28
+ }, item.label);
26
29
  }));
27
30
  }
@@ -18,11 +18,19 @@ export var toString = function toString(value) {
18
18
  /** Is client side and not jsdom */
19
19
  export var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;
20
20
  export function convertOptionsToMenu(options, selectedKeys) {
21
+ // 使用 Map 来跟踪每个 key 出现的次数,确保 key 的唯一性
22
+ var keyCountMap = new Map();
21
23
  return {
22
- items: options.map(function (option) {
24
+ items: options.map(function (option, index) {
25
+ var _keyCountMap$get;
26
+ var baseKey = toString(option.value);
27
+ // 如果 key 已存在,添加索引后缀确保唯一性
28
+ var count = (_keyCountMap$get = keyCountMap.get(baseKey)) !== null && _keyCountMap$get !== void 0 ? _keyCountMap$get : 0;
29
+ keyCountMap.set(baseKey, count + 1);
30
+ var uniqueKey = count > 0 ? "".concat(baseKey, "-").concat(index) : baseKey;
23
31
  return _objectSpread(_objectSpread({}, option), {}, {
24
32
  label: option.label,
25
- key: toString(option.value),
33
+ key: uniqueKey,
26
34
  disabled: option.disabled,
27
35
  onClick: option.onClick,
28
36
  className: option.className,
@@ -79,7 +79,14 @@ export default function Dropdown(props) {
79
79
  width: typeof popupMatchTriggerWidth === 'number' ? "".concat(popupMatchTriggerWidth, "px") : "".concat(rects.reference.width, "px")
80
80
  });
81
81
  }
82
- }) : undefined],
82
+ }) : size({
83
+ apply: function apply(_ref2) {
84
+ var elements = _ref2.elements;
85
+ Object.assign(elements.floating.style, {
86
+ minWidth: '144px'
87
+ });
88
+ }
89
+ })],
83
90
  whileElementsMounted: autoUpdatePos ? autoUpdate : undefined
84
91
  }),
85
92
  refs = _useFloating.refs,
@@ -1,4 +1,3 @@
1
- import type { SVGProps } from 'react';
2
1
  import * as React from 'react';
3
2
  interface SVGRProps {
4
3
  size?: number | string;
@@ -7,5 +6,5 @@ interface SVGRProps {
7
6
  desc?: string;
8
7
  descId?: string;
9
8
  }
10
- declare const Memo: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<SVGProps<SVGSVGElement> & SVGRProps, "ref"> & React.RefAttributes<SVGSVGElement>>>;
9
+ declare const Memo: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<React.SVGProps<SVGSVGElement> & SVGRProps, "ref"> & React.RefAttributes<SVGSVGElement>>>;
11
10
  export default Memo;
@@ -24,7 +24,7 @@ var InProgressFill = function InProgressFill(_ref, ref) {
24
24
  }, desc) : null, title ? /*#__PURE__*/React.createElement("title", {
25
25
  id: titleId
26
26
  }, title) : null, /*#__PURE__*/React.createElement("g", {
27
- fill: "#2986F4"
27
+ fill: "currentColor"
28
28
  }, /*#__PURE__*/React.createElement("path", {
29
29
  d: "M15 10a5 5 0 0 1-5 5V5a5 5 0 0 1 5 5Z"
30
30
  }), /*#__PURE__*/React.createElement("path", {
@@ -1,8 +1,8 @@
1
1
  <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
2
  <g id=" Icon / Fill / Interface / In-Progress-fill">
3
3
  <g id="Icon">
4
- <path d="M15.0001 10C15.0001 12.7614 12.7615 15 10.0001 15V5.00001C12.7615 5.00001 15.0001 7.23858 15.0001 10Z" fill="#2986F4"/>
5
- <path fill-rule="evenodd" clip-rule="evenodd" d="M18.3334 10C18.3334 14.6024 14.6025 18.3333 10.0001 18.3333C5.39771 18.3333 1.66675 14.6024 1.66675 10C1.66675 5.39763 5.39771 1.66667 10.0001 1.66667C14.6025 1.66667 18.3334 5.39763 18.3334 10ZM16.6667 10C16.6667 13.6819 13.682 16.6667 10.0001 16.6667C6.31818 16.6667 3.33341 13.6819 3.33341 10C3.33341 6.31811 6.31818 3.33334 10.0001 3.33334C13.682 3.33334 16.6667 6.31811 16.6667 10Z" fill="#2986F4"/>
4
+ <path d="M15.0001 10C15.0001 12.7614 12.7615 15 10.0001 15V5.00001C12.7615 5.00001 15.0001 7.23858 15.0001 10Z" fill="currentColor"/>
5
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M18.3334 10C18.3334 14.6024 14.6025 18.3333 10.0001 18.3333C5.39771 18.3333 1.66675 14.6024 1.66675 10C1.66675 5.39763 5.39771 1.66667 10.0001 1.66667C14.6025 1.66667 18.3334 5.39763 18.3334 10ZM16.6667 10C16.6667 13.6819 13.682 16.6667 10.0001 16.6667C6.31818 16.6667 3.33341 13.6819 3.33341 10C3.33341 6.31811 6.31818 3.33334 10.0001 3.33334C13.682 3.33334 16.6667 6.31811 16.6667 10Z" fill="currentColor"/>
6
6
  </g>
7
7
  </g>
8
8
  </svg>
@@ -17,13 +17,18 @@
17
17
  @inputNumber-padding-small: 0 7px;
18
18
 
19
19
  //默认 - 使用CSS变量映射
20
- @inputNumber-bg-color: var(--background-default);
21
- @inputNumber-border-color: var(--border-default);
20
+ @inputNumber-bg-color: var(--interaction-background-form-field);
21
+ @inputNumber-border-color: var(--interaction-border-neutral-normal);
22
22
  @inputNumber-color: var(--content-primary);
23
23
  @inputNumber-wrapper-bg-color: var(--background-neutral-subtle);
24
+
25
+ //hover
26
+ @inputNumber-hover-bg-color: var(--interaction-background-form-field);
27
+ @inputNumber-hover-border-color: var(--interaction-border-hover);
24
28
  //激活
25
29
  @inputNumber-active-bg-color: var(--background-default);
26
- @inputNumber-active-border-color: var(--interaction-border-selected);
30
+ @inputNumber-active-border-color: var(--interaction-border-hover);
31
+ @inputNumber-active-outline-color: var(--global-blue-500);
27
32
 
28
33
  //disable
29
34
  @inputNumber-disabled-bg-color: var(--global-cool-gray-alpha-50);
@@ -47,6 +52,7 @@
47
52
  background-color: @inputNumber-bg-color;
48
53
  border-color: @inputNumber-border-color;
49
54
  border-radius: @inputNumber-border-radius-middle;
55
+ overflow: hidden;
50
56
  box-shadow: none;
51
57
 
52
58
  .ant-input-number-input-wrap {
@@ -55,6 +61,7 @@
55
61
  .ant-input-number-input {
56
62
  height: 100%;
57
63
  caret-color: @inputNumber-cursor-color;
64
+ border-radius: 0;
58
65
  }
59
66
  }
60
67
 
@@ -156,11 +163,16 @@
156
163
  }
157
164
  }
158
165
 
159
- &:hover:not(.ald-input-number-disabled),
166
+ &:hover:not(.ald-input-number-disabled) {
167
+ background-color: @inputNumber-hover-bg-color;
168
+ border-color: @inputNumber-hover-border-color;
169
+ }
170
+
160
171
  &-focused {
161
172
  background-color: @inputNumber-active-bg-color;
162
173
  border-color: @inputNumber-active-border-color;
163
174
  box-shadow: none;
175
+ outline: @inputNumber-active-outline-color solid 1px;
164
176
  }
165
177
  }
166
178
 
@@ -172,6 +184,16 @@
172
184
  border-color: @inputNumber-border-color;
173
185
  box-shadow: none;
174
186
 
187
+ &:hover {
188
+ border-color: @inputNumber-hover-border-color;
189
+ }
190
+
191
+ &:focus {
192
+ border-color: @inputNumber-active-border-color;
193
+ box-shadow: none;
194
+ outline: @inputNumber-active-outline-color solid 1px;
195
+ }
196
+
175
197
  &.ald-input-number-large {
176
198
  font-size: @inputNumber-font-size-large;
177
199
  border-radius: @inputNumber-border-radius-large;
@@ -273,6 +295,18 @@
273
295
  color: @inputNumber-addon-disable-color;
274
296
  }
275
297
  }
298
+
299
+ .ant-input-number-focused {
300
+ outline: none !important;
301
+ }
302
+
303
+ .ant-input-number-handler-wrap {
304
+ border-radius: 0 !important;
305
+
306
+ .ant-input-number-handler {
307
+ border-radius: 0 !important;
308
+ }
309
+ }
276
310
  }
277
311
  }
278
312
 
@@ -281,3 +315,16 @@
281
315
  ).ant-input-number.ant-input-number {
282
316
  border-color: var(--border-negative-strong);
283
317
  }
318
+
319
+ .ald-input-number.ant-input-number-affix-wrapper {
320
+ border-color: @inputNumber-border-color;
321
+
322
+ &:hover {
323
+ border-color: @inputNumber-hover-border-color;
324
+ }
325
+
326
+ &-focused {
327
+ border-color: @inputNumber-hover-border-color;
328
+ outline: @inputNumber-hover-border-color solid 1px;
329
+ }
330
+ }
@@ -11,6 +11,12 @@ interface IMemberSelectionProps {
11
11
  width: number;
12
12
  filterItem?: (item: IUser) => boolean;
13
13
  lockedIds: Array<TUserValue | TUserGroupValue>;
14
+ renderItem?: (item: IUser, context: {
15
+ isSelected: boolean;
16
+ disabled: boolean;
17
+ onClick: () => void;
18
+ originNode: React.ReactNode;
19
+ }) => React.ReactNode;
14
20
  }
15
21
  export declare const OPTION_HEIGHT = 36;
16
22
  export declare const WRAPPER_HEIGHT = 300;
@@ -31,7 +31,8 @@ export default function MemberSelection(props) {
31
31
  loading = props.loading,
32
32
  width = props.width,
33
33
  lockedIds = props.lockedIds,
34
- filterItem = props.filterItem;
34
+ filterItem = props.filterItem,
35
+ renderItem = props.renderItem;
35
36
  var filteredList = useMemo(function () {
36
37
  return userList.filter(function (item) {
37
38
  if (filterItem) {
@@ -114,17 +115,7 @@ export default function MemberSelection(props) {
114
115
  type: user.type
115
116
  });
116
117
  var disabled = index !== -1;
117
- return /*#__PURE__*/React.createElement("div", {
118
- key: virtualItem.key,
119
- style: {
120
- position: 'absolute',
121
- top: 0,
122
- left: 0,
123
- width: '100%',
124
- height: "".concat(virtualItem.size, "px"),
125
- transform: "translateY(".concat(virtualItem.start, "px)")
126
- }
127
- }, multiple ? /*#__PURE__*/React.createElement(MultipleOption, {
118
+ var originNode = multiple ? /*#__PURE__*/React.createElement(MultipleOption, {
128
119
  key: user.userId,
129
120
  user: user,
130
121
  disabled: disabled,
@@ -141,6 +132,39 @@ export default function MemberSelection(props) {
141
132
  onChange: function onChange(selected, user) {
142
133
  if (isUser(user)) _onChange(selected, user);
143
134
  }
144
- }));
135
+ });
136
+ if (renderItem) {
137
+ return /*#__PURE__*/React.createElement("div", {
138
+ key: virtualItem.key,
139
+ style: {
140
+ position: 'absolute',
141
+ top: 0,
142
+ left: 0,
143
+ width: '100%',
144
+ height: "".concat(virtualItem.size, "px"),
145
+ transform: "translateY(".concat(virtualItem.start, "px)")
146
+ }
147
+ }, renderItem(user, {
148
+ isSelected: isSelected,
149
+ disabled: disabled,
150
+ onClick: function onClick() {
151
+ if (!disabled) {
152
+ _onChange(!isSelected, user);
153
+ }
154
+ },
155
+ originNode: originNode
156
+ }));
157
+ }
158
+ return /*#__PURE__*/React.createElement("div", {
159
+ key: virtualItem.key,
160
+ style: {
161
+ position: 'absolute',
162
+ top: 0,
163
+ left: 0,
164
+ width: '100%',
165
+ height: "".concat(virtualItem.size, "px"),
166
+ transform: "translateY(".concat(virtualItem.start, "px)")
167
+ }
168
+ }, originNode);
145
169
  })))));
146
170
  }
@@ -14,6 +14,14 @@ interface IPanelProps {
14
14
  className?: string;
15
15
  lockedIds: Array<TUserValue | TUserGroupValue>;
16
16
  footer?: ReactNode;
17
+ renderItem?: (item: IUser | IUserGroup, context: {
18
+ isSelected: boolean;
19
+ disabled: boolean;
20
+ onClick: () => void;
21
+ onNextLevel?: () => void;
22
+ originNode: ReactNode;
23
+ }) => ReactNode;
24
+ renderSelectedTag?: (user: IUser | IUserGroup, originNode: ReactNode) => ReactNode;
17
25
  }
18
26
  export declare const userDisplayNameIsRepeated: (userList: TUser, displayName?: string) => boolean;
19
27
  export default function Panel(props: IPanelProps): React.JSX.Element;
@@ -44,7 +44,9 @@ export default function Panel(props) {
44
44
  className = props.className,
45
45
  lockedIds = props.lockedIds,
46
46
  footer = props.footer,
47
- onCancel = props.onCancel;
47
+ onCancel = props.onCancel,
48
+ renderItem = props.renderItem,
49
+ renderSelectedTag = props.renderSelectedTag;
48
50
  var _useState = useState([]),
49
51
  _useState2 = _slicedToArray(_useState, 2),
50
52
  selectedUsers = _useState2[0],
@@ -101,7 +103,8 @@ export default function Panel(props) {
101
103
  onSearchValueChange: onSearchValueChange,
102
104
  multiple: true,
103
105
  lockedIds: lockedIds,
104
- loading: props.loading
106
+ loading: props.loading,
107
+ renderItem: renderItem
105
108
  });
106
109
  var userGroupSelection = /*#__PURE__*/React.createElement(UserGroupSelection, {
107
110
  className: 'ald-member-picker-member-selection-multiple',
@@ -112,7 +115,8 @@ export default function Panel(props) {
112
115
  onSearchValueChange: onSearchValueChange,
113
116
  multiple: true,
114
117
  lockedIds: lockedIds,
115
- loading: props.loading
118
+ loading: props.loading,
119
+ renderItem: renderItem
116
120
  });
117
121
  if (type === EMemberPicker.USER) {
118
122
  return userSelection;
@@ -136,7 +140,7 @@ export default function Panel(props) {
136
140
  className: "ald-member-tabs"
137
141
  });
138
142
  }
139
- }, [t, dataList, panelwidth, selectedUsers, onSelectionChange, onSearchValueChange, lockedIds, props.loading, type]);
143
+ }, [t, dataList, panelwidth, selectedUsers, onSelectionChange, onSearchValueChange, lockedIds, props.loading, type, renderItem]);
140
144
  return /*#__PURE__*/React.createElement("div", {
141
145
  className: classNames(className, 'ald-member-picker-wrapper', (_classNames = {}, _defineProperty(_classNames, 'ald-member-picker-multiple', multiple), _defineProperty(_classNames, 'ald-member-picker-single', !multiple), _classNames)),
142
146
  style: {
@@ -150,7 +154,8 @@ export default function Panel(props) {
150
154
  width: (panelwidth - 3) / 2,
151
155
  onRemove: onRemove,
152
156
  lockedIds: lockedIds,
153
- userList: dataList
157
+ userList: dataList,
158
+ renderSelectedTag: renderSelectedTag
154
159
  }), /*#__PURE__*/React.createElement(SelectorFooter, {
155
160
  className: 'ald-member-picker-selector-footer',
156
161
  onCancel: onCancel,
@@ -167,7 +172,8 @@ export default function Panel(props) {
167
172
  onSearchValueChange: onSearchValueChange,
168
173
  multiple: false && multiple,
169
174
  lockedIds: lockedIds,
170
- loading: props.loading
175
+ loading: props.loading,
176
+ renderItem: renderItem
171
177
  }), type === EMemberPicker.GROUP && /*#__PURE__*/React.createElement(UserGroupSelection, {
172
178
  className: 'ald-member-picker-member-selection-multiple',
173
179
  userGroupList: dataList.filter(isUserGroup),
@@ -177,6 +183,7 @@ export default function Panel(props) {
177
183
  onSearchValueChange: onSearchValueChange,
178
184
  multiple: false,
179
185
  lockedIds: lockedIds,
180
- loading: props.loading
186
+ loading: props.loading,
187
+ renderItem: renderItem
181
188
  })));
182
189
  }
@@ -12,6 +12,14 @@ interface IProps {
12
12
  lockedIds?: Array<TUserValue | TUserGroupValue>;
13
13
  showUserId?: boolean;
14
14
  footer?: ReactNode;
15
+ renderItem?: (item: IUser | IUserGroup, context: {
16
+ isSelected: boolean;
17
+ disabled: boolean;
18
+ onClick: () => void;
19
+ onNextLevel?: () => void;
20
+ originNode: ReactNode;
21
+ }) => ReactNode;
22
+ renderSelectedTag?: (user: IUser | IUserGroup, originNode: ReactNode) => ReactNode;
15
23
  }
16
- export declare const PanelWrapper: ({ type, value, multiple, dropdownWidth, onChange, onCancel, className, footer, lockedIds, }: IProps) => React.JSX.Element;
24
+ export declare const PanelWrapper: ({ type, value, multiple, dropdownWidth, onChange, onCancel, className, footer, lockedIds, renderItem, renderSelectedTag, }: IProps) => React.JSX.Element;
17
25
  export default PanelWrapper;
@@ -24,7 +24,9 @@ export var PanelWrapper = function PanelWrapper(_ref) {
24
24
  className = _ref.className,
25
25
  footer = _ref.footer,
26
26
  _ref$lockedIds = _ref.lockedIds,
27
- lockedIds = _ref$lockedIds === void 0 ? [] : _ref$lockedIds;
27
+ lockedIds = _ref$lockedIds === void 0 ? [] : _ref$lockedIds,
28
+ renderItem = _ref.renderItem,
29
+ renderSelectedTag = _ref.renderSelectedTag;
28
30
  var _useContext = useContext(LocaleContext),
29
31
  locale = _useContext.locale;
30
32
  var t = getTranslator(locale);
@@ -136,7 +138,9 @@ export var PanelWrapper = function PanelWrapper(_ref) {
136
138
  className: className,
137
139
  onCancel: onCancel,
138
140
  lockedIds: lockedIds,
139
- footer: footer
141
+ footer: footer,
142
+ renderItem: renderItem,
143
+ renderSelectedTag: renderSelectedTag
140
144
  });
141
145
  };
142
146
  export default PanelWrapper;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { IUserGroup, TUser, TUserGroupValue, TUserValue } from '../../ConfigProvider/getUserList';
3
3
  import { IUser } from '../interface';
4
4
  interface ISelectedMemberTagsProps {
@@ -8,6 +8,7 @@ interface ISelectedMemberTagsProps {
8
8
  width: number;
9
9
  lockedIds: Array<TUserValue | TUserGroupValue>;
10
10
  userList: TUser;
11
+ renderSelectedTag?: (user: IUser | IUserGroup, originNode: ReactNode) => ReactNode;
11
12
  }
12
13
  export default function SelectedMemberTags(props: ISelectedMemberTagsProps): React.JSX.Element;
13
14
  export {};
@@ -14,7 +14,8 @@ export default function SelectedMemberTags(props) {
14
14
  selectedUsers = props.selectedUsers,
15
15
  width = props.width,
16
16
  _props$lockedIds = props.lockedIds,
17
- lockedIds = _props$lockedIds === void 0 ? [] : _props$lockedIds;
17
+ lockedIds = _props$lockedIds === void 0 ? [] : _props$lockedIds,
18
+ renderSelectedTag = props.renderSelectedTag;
18
19
  var _ConfigProvider$useGe = ConfigProvider.useGetUserList(),
19
20
  getMemberPickerItemMoreInfoKey = _ConfigProvider$useGe.getMemberPickerItemMoreInfoKey;
20
21
  var _useContext = useContext(LocaleContext),
@@ -46,7 +47,7 @@ export default function SelectedMemberTags(props) {
46
47
  });
47
48
  hasLocked = _index !== -1;
48
49
  }
49
- return /*#__PURE__*/React.createElement("div", {
50
+ var originNode = /*#__PURE__*/React.createElement("div", {
50
51
  className: 'ald-member-picker-selected-member-tag',
51
52
  key: getId(user)
52
53
  }, /*#__PURE__*/React.createElement("div", {
@@ -73,5 +74,9 @@ export default function SelectedMemberTags(props) {
73
74
  (_props$onRemove = props.onRemove) === null || _props$onRemove === void 0 ? void 0 : _props$onRemove.call(props, user);
74
75
  }
75
76
  }));
77
+ if (renderSelectedTag) {
78
+ return renderSelectedTag(user, originNode);
79
+ }
80
+ return originNode;
76
81
  }))));
77
82
  }
@@ -11,6 +11,13 @@ interface IProps {
11
11
  width: number;
12
12
  lockedIds: Array<TUserValue | TUserGroupValue>;
13
13
  filterItem?: (item: IUserGroup) => boolean;
14
+ renderItem?: (item: IUserGroup, context: {
15
+ isSelected: boolean;
16
+ disabled: boolean;
17
+ onClick: () => void;
18
+ onNextLevel?: () => void;
19
+ originNode: React.ReactNode;
20
+ }) => React.ReactNode;
14
21
  }
15
- declare const UserGroupSelection: ({ className, userGroupList, multiple, onChange, selectedUsersGroup: selectedUsersGroups, loading, width, lockedIds, filterItem, }: IProps) => React.JSX.Element;
22
+ declare const UserGroupSelection: ({ className, userGroupList, multiple, onChange, selectedUsersGroup: selectedUsersGroups, loading, width, lockedIds, filterItem, renderItem, }: IProps) => React.JSX.Element;
16
23
  export default UserGroupSelection;
@@ -35,7 +35,8 @@ var UserGroupSelection = function UserGroupSelection(_ref) {
35
35
  loading = _ref.loading,
36
36
  width = _ref.width,
37
37
  lockedIds = _ref.lockedIds,
38
- filterItem = _ref.filterItem;
38
+ filterItem = _ref.filterItem,
39
+ renderItem = _ref.renderItem;
39
40
  var _useContext = useContext(LocaleContext),
40
41
  locale = _useContext.locale;
41
42
  var t = getTranslator(locale);
@@ -174,7 +175,16 @@ var UserGroupSelection = function UserGroupSelection(_ref) {
174
175
  type: userGroup.type
175
176
  });
176
177
  var disabled = index !== -1;
177
- return multiple ? /*#__PURE__*/React.createElement(MultipleOption, {
178
+ var hasNextLevel = userGroupList.some(function (group) {
179
+ return group.parentId === userGroup.groupId;
180
+ }) || isAsync;
181
+ var onNextLevel = function onNextLevel() {
182
+ setGroupPath(function (prev) {
183
+ return [].concat(_toConsumableArray(prev), [userGroup]);
184
+ });
185
+ setSearchKey('');
186
+ };
187
+ var originNode = multiple ? /*#__PURE__*/React.createElement(MultipleOption, {
178
188
  key: userGroup.groupId,
179
189
  user: userGroup,
180
190
  disabled: disabled,
@@ -184,15 +194,8 @@ var UserGroupSelection = function UserGroupSelection(_ref) {
184
194
  _onChange(selected, userGroup);
185
195
  }
186
196
  },
187
- hasNextLevel: userGroupList.some(function (group) {
188
- return group.parentId === userGroup.groupId;
189
- }) || isAsync,
190
- onNextLevel: function onNextLevel(userGroup) {
191
- setGroupPath(function (prev) {
192
- return [].concat(_toConsumableArray(prev), [userGroup]);
193
- });
194
- setSearchKey('');
195
- }
197
+ hasNextLevel: hasNextLevel,
198
+ onNextLevel: onNextLevel
196
199
  }) : /*#__PURE__*/React.createElement(SingleOption, {
197
200
  key: userGroup.groupId,
198
201
  user: userGroup,
@@ -203,16 +206,25 @@ var UserGroupSelection = function UserGroupSelection(_ref) {
203
206
  _onChange(selected, userGroup);
204
207
  }
205
208
  },
206
- hasNextLevel: userGroupList.some(function (group) {
207
- return group.parentId === userGroup.groupId;
208
- }) || isAsync,
209
- onNextLevel: function onNextLevel(userGroup) {
210
- setGroupPath(function (prev) {
211
- return [].concat(_toConsumableArray(prev), [userGroup]);
212
- });
213
- setSearchKey('');
214
- }
209
+ hasNextLevel: hasNextLevel,
210
+ onNextLevel: onNextLevel
215
211
  });
212
+ if (renderItem) {
213
+ return /*#__PURE__*/React.createElement("div", {
214
+ key: userGroup.groupId
215
+ }, renderItem(userGroup, {
216
+ isSelected: isSelected,
217
+ disabled: disabled,
218
+ onClick: function onClick() {
219
+ if (isUserGroup(userGroup) && !disabled) {
220
+ _onChange(!isSelected, userGroup);
221
+ }
222
+ },
223
+ onNextLevel: hasNextLevel ? onNextLevel : undefined,
224
+ originNode: originNode
225
+ }));
226
+ }
227
+ return originNode;
216
228
  })))));
217
229
  };
218
230
  export default UserGroupSelection;
@@ -1,4 +1,4 @@
1
- var _excluded = ["value", "type", "onChange", "multiple", "dropdownWidth", "open", "onOpenChange", "placeholder", "className", "allowClear", "disabled", "onClear", "size", "prefix", "lockedIds", "footer", "onCancel", "filterItem", "mode"];
1
+ var _excluded = ["value", "type", "onChange", "multiple", "dropdownWidth", "open", "onOpenChange", "placeholder", "className", "allowClear", "disabled", "onClear", "size", "prefix", "lockedIds", "footer", "onCancel", "filterItem", "mode", "renderItem", "renderSelectedTag"];
2
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -60,6 +60,8 @@ var Component = function Component(props) {
60
60
  _onCancel = props.onCancel,
61
61
  filterItem = props.filterItem,
62
62
  propsMode = props.mode,
63
+ renderItem = props.renderItem,
64
+ renderSelectedTag = props.renderSelectedTag,
63
65
  restProps = _objectWithoutProperties(props, _excluded);
64
66
  var _ConfigProvider$useGe = ConfigProvider.useGetUserList(),
65
67
  getUsersByIds = _ConfigProvider$useGe.getUsersByIds,
@@ -368,7 +370,9 @@ var Component = function Component(props) {
368
370
  onCancel: function onCancel() {
369
371
  _onCancel === null || _onCancel === void 0 ? void 0 : _onCancel();
370
372
  setDropdownOpen(false);
371
- }
373
+ },
374
+ renderItem: renderItem,
375
+ renderSelectedTag: renderSelectedTag
372
376
  }));
373
377
  }
374
378
  }));