@aloudata/aloudata-design 2.14.5 → 2.14.6

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.
@@ -1,8 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { AlignType } from 'rc-trigger/lib/interface';
3
3
  import { PlacementType } from '../Dropdown';
4
- import { BaseSelectRef, ISelectProps, LabelInValueType } from './interface';
5
- import { MenuProps } from '../Menu';
4
+ import { BaseSelectRef, ISelectProps, LabelInValueType, SelectMenuProps } from './interface';
6
5
  export type RenderNode = React.ReactNode | ((props: any) => React.ReactNode);
7
6
  export type RenderDOMFunc = (props: any) => HTMLElement;
8
7
  export type Mode = 'multiple' | {
@@ -36,11 +35,10 @@ export interface BaseSelectProps extends BaseSelectPrivateProps, ISelectProps, R
36
35
  className?: string;
37
36
  style?: React.CSSProperties;
38
37
  notFoundContent?: React.ReactNode;
39
- placeholder?: string;
40
38
  onClear?: () => void;
41
39
  innerSearchValue?: string;
42
40
  setInnerSearchValue?: (value: string) => void;
43
- displayMenu?: MenuProps;
41
+ displayMenu?: SelectMenuProps;
44
42
  open?: boolean;
45
43
  defaultOpen?: boolean;
46
44
  onOpenChange?: (open: boolean) => void;
@@ -48,7 +46,6 @@ export interface BaseSelectProps extends BaseSelectPrivateProps, ISelectProps, R
48
46
  allowClear?: boolean;
49
47
  showArrow?: boolean;
50
48
  suffixIcon?: React.ReactNode;
51
- dropdownRender?: (menu: React.ReactNode) => React.ReactNode;
52
49
  dropdownAlign?: AlignType;
53
50
  placement?: PlacementType;
54
51
  getPopupContainer?: RenderDOMFunc;
@@ -1,3 +1,4 @@
1
+ var _excluded = ["id", "className", "displayValues", "onDisplayValuesChange", "displayMenu", "notFoundContent", "onClear", "width", "mode", "status", "onOptionSelect", "onClick", "size", "borderLess", "disabled", "placeholder", "open", "defaultOpen", "onOpenChange", "showSearch", "innerSearchValue", "setInnerSearchValue", "allowClear", "showArrow", "prefix", "suffixIcon", "dropdownRender", "overlayStyle", "dropdownStyle", "popupMatchSelectWidth", "placement", "popupClassName", "style", "listHeight"];
1
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); }
2
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; }
3
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; }
@@ -10,6 +11,8 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
10
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
12
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
12
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
15
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
13
16
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
14
17
  import * as React from 'react';
15
18
  import useMergedState from 'rc-util/lib/hooks/useMergedState';
@@ -29,7 +32,7 @@ export function isMultiple(mode) {
29
32
  return !!mode;
30
33
  }
31
34
  export function isResponsive(mode) {
32
- return _typeof(mode) === 'object' && (mode === null || mode === void 0 ? void 0 : mode.responsive);
35
+ return mode === 'multiple' || _typeof(mode) === 'object' && (mode === null || mode === void 0 ? void 0 : mode.responsive);
33
36
  }
34
37
  var BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {
35
38
  var _setClassNames;
@@ -69,10 +72,12 @@ var BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {
69
72
  placement = props.placement,
70
73
  popupClassName = props.popupClassName,
71
74
  style = props.style,
72
- listHeight = props.listHeight;
75
+ listHeight = props.listHeight,
76
+ restProps = _objectWithoutProperties(props, _excluded);
73
77
  var setClassNames = prefixCls('select');
74
78
  var selectRef = useRef(null);
75
79
  var widthStyle = getWidthStyle(width);
80
+ var dropdownRef = useRef(null);
76
81
  var isResponsiveMode = isResponsive(mode);
77
82
  var isMultipleMode = isMultiple(mode);
78
83
  /** Used for component focused management */
@@ -189,11 +194,14 @@ var BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {
189
194
  open: !!mergedOpen,
190
195
  notFoundContent: notFoundContent,
191
196
  menu: showMenu,
197
+ ref: dropdownRef,
192
198
  showSearch: showSearch,
193
199
  searchValue: innerSearchValue,
194
200
  setInnerSearchValue: setInnerSearchValue,
195
201
  popupMatchSelectWidth: popupMatchSelectWidth,
196
- overlayClassName: popupClassName,
202
+ overlayClassName: popupClassName
203
+ // @ts-ignore
204
+ ,
197
205
  dropdownRender: dropdownRender,
198
206
  overlayStyle: overlayStyle || dropdownStyle,
199
207
  listHeight: listHeight,
@@ -215,8 +223,10 @@ var BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {
215
223
  className: setClassNames('prefix')
216
224
  }, prefix), _.isEmpty(displayValues) && /*#__PURE__*/React.createElement("div", {
217
225
  className: setClassNames('placeholder')
218
- }, placeholder), !_.isEmpty(displayValues) && /*#__PURE__*/React.createElement(Selector, _extends({}, props, {
226
+ }, placeholder), !_.isEmpty(displayValues) && /*#__PURE__*/React.createElement(Selector, _extends({}, restProps, {
219
227
  size: size,
228
+ mode: mode,
229
+ dropdownRef: dropdownRef,
220
230
  displayValues: displayValues,
221
231
  onToggleOpen: onToggleOpen,
222
232
  onRemove: onSelectorRemove,
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { ScrollTo } from 'rc-virtual-list/lib/List';
3
- import { DropdownProps } from '..';
3
+ import { IDropdownProps } from '../Dropdown';
4
4
  import { SelectOptionType } from '../Select';
5
5
  export interface RefTriggerProps {
6
6
  getPopupElement: () => HTMLDivElement | null;
@@ -10,10 +10,10 @@ export interface RefSelectorProps {
10
10
  blur: () => void;
11
11
  scrollTo?: ScrollTo;
12
12
  }
13
- export interface SelectTriggerProps extends DropdownProps {
13
+ export interface SelectTriggerProps extends IDropdownProps {
14
14
  open: boolean;
15
15
  notFoundContent?: React.ReactNode;
16
- popupMatchSelectWidth?: boolean;
16
+ popupMatchSelectWidth?: boolean | number;
17
17
  showSearch?: boolean;
18
18
  searchValue?: string;
19
19
  setInnerSearchValue?: (value: string) => void;
@@ -1,7 +1,9 @@
1
- import React from 'react';
1
+ import React, { RefObject } from 'react';
2
2
  import { DisplayValueType } from '../interface';
3
+ import { RefTriggerProps } from '../SelectTrigger';
3
4
  export default function MultipleResponsiveSelectedSection(params: {
4
5
  displayValues: DisplayValueType[];
5
6
  renderItem: (valueItem: DisplayValueType) => React.JSX.Element | null;
6
7
  onToggleOpen: (open: boolean) => void;
8
+ dropdownRef: RefObject<RefTriggerProps>;
7
9
  }): React.JSX.Element;
@@ -2,7 +2,8 @@ import React, { useEffect, useRef } from 'react';
2
2
  export default function MultipleResponsiveSelectedSection(params) {
3
3
  var displayValues = params.displayValues,
4
4
  renderItem = params.renderItem,
5
- onToggleOpen = params.onToggleOpen;
5
+ onToggleOpen = params.onToggleOpen,
6
+ dropdownRef = params.dropdownRef;
6
7
  var multipleSelectedSectionRef = useRef(null);
7
8
  useEffect(function () {
8
9
  function getSelect() {
@@ -14,9 +15,10 @@ export default function MultipleResponsiveSelectedSection(params) {
14
15
  return null;
15
16
  }
16
17
  function close(e) {
18
+ var _dropdownRef$current, _dropdownRef$current$;
17
19
  var target = e.target;
18
20
  var select = getSelect();
19
- if (select && target.contains(select)) {
21
+ if (select && !select.contains(target) && !((_dropdownRef$current = dropdownRef.current) !== null && _dropdownRef$current !== void 0 && (_dropdownRef$current$ = _dropdownRef$current.getPopupElement()) !== null && _dropdownRef$current$ !== void 0 && _dropdownRef$current$.contains(target))) {
20
22
  onToggleOpen(false);
21
23
  }
22
24
  }
@@ -24,7 +26,7 @@ export default function MultipleResponsiveSelectedSection(params) {
24
26
  return function () {
25
27
  document.removeEventListener('click', close);
26
28
  };
27
- }, [onToggleOpen]);
29
+ }, [onToggleOpen, dropdownRef]);
28
30
  return /*#__PURE__*/React.createElement("div", {
29
31
  ref: multipleSelectedSectionRef,
30
32
  className: "beta-ald-select-selector-multiple-responsive-selected-section"
@@ -1,12 +1,14 @@
1
- import React from 'react';
1
+ import React, { RefObject } from 'react';
2
2
  import { SelectorProps } from './index';
3
3
  import { DisplayValueType } from '../interface';
4
4
  import { CustomTagProps } from '../BaseSelect';
5
+ import { RefTriggerProps } from '../SelectTrigger';
5
6
  interface MultipleSelectorProps extends SelectorProps {
6
7
  onRemove: (value: DisplayValueType) => void;
7
8
  onToggleOpen: (open?: boolean) => void;
8
9
  tagRender?: (props: CustomTagProps, isPreview?: boolean) => React.ReactNode;
9
10
  maxTagPlaceholder?: React.ReactNode | ((omittedValues: DisplayValueType[]) => React.ReactNode);
11
+ dropdownRef: RefObject<RefTriggerProps>;
10
12
  }
11
13
  export default function MultipleSelector(props: MultipleSelectorProps): React.JSX.Element;
12
14
  export {};
@@ -9,6 +9,7 @@ import React, { useMemo, useState } from 'react';
9
9
  import Tag from "../../Tag";
10
10
  import { isMultiple, isResponsive } from "../BaseSelect";
11
11
  import ScrollArea from "../../ScrollArea";
12
+ import classNames from 'classnames';
12
13
  import _ from 'lodash';
13
14
  import Overflow from 'rc-overflow';
14
15
  import MultipleResponsiveSelectedSection from "./MultipleResponsiveSelectedSection";
@@ -30,11 +31,12 @@ export default function MultipleSelector(props) {
30
31
  onToggleOpen = props.onToggleOpen,
31
32
  mode = props.mode,
32
33
  disabled = props.disabled,
33
- _props$maxTagPlacehol = props.maxTagPlaceholder,
34
- maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {
35
- return "+ ".concat(omittedValues.length === displayValues.length ? omittedValues.length - 1 : omittedValues.length, " ...");
36
- } : _props$maxTagPlacehol,
37
- showResponsiveSelectedSection = props.showResponsiveSelectedSection;
34
+ maxTagPlaceholder = props.maxTagPlaceholder,
35
+ showResponsiveSelectedSection = props.showResponsiveSelectedSection,
36
+ dropdownRef = props.dropdownRef;
37
+ var innerMaxTagPlaceholder = function innerMaxTagPlaceholder(omittedValues) {
38
+ return "+ ".concat(omittedValues.length === displayValues.length ? omittedValues.length - 1 : omittedValues.length);
39
+ };
38
40
  var _useState = useState(0),
39
41
  _useState2 = _slicedToArray(_useState, 2),
40
42
  showItemIndex = _useState2[0],
@@ -45,6 +47,7 @@ export default function MultipleSelector(props) {
45
47
  onToggleOpen(!open);
46
48
  };
47
49
  return /*#__PURE__*/React.createElement("span", {
50
+ className: "beta-ald-select-custom-tag-render-wrapper",
48
51
  onMouseDown: onMouseDown,
49
52
  key: value
50
53
  }, tagRender === null || tagRender === void 0 ? void 0 : tagRender({
@@ -93,8 +96,8 @@ export default function MultipleSelector(props) {
93
96
  if (displayValues.length === 1) {
94
97
  return null;
95
98
  }
96
- var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues.length === displayValues.length ? omittedValues.slice(1, omittedValues.length) : omittedValues) : maxTagPlaceholder;
97
- return typeof tagRender === 'function' ? customizeRenderSelector(undefined, content, false, false, undefined) : defaultRenderSelector({
99
+ var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues.length === displayValues.length ? omittedValues.slice(1, omittedValues.length) : omittedValues) : innerMaxTagPlaceholder(omittedValues.length === displayValues.length ? omittedValues.slice(1, omittedValues.length) : omittedValues);
100
+ return typeof maxTagPlaceholder === 'function' ? content : defaultRenderSelector({
98
101
  title: content
99
102
  }, content, false);
100
103
  };
@@ -125,6 +128,9 @@ export default function MultipleSelector(props) {
125
128
  prefixCls: overflowPrefixCls,
126
129
  data: displayValues,
127
130
  renderItem: renderItem,
131
+ className: classNames({
132
+ 'beta-ald-select-selector-overflow-hidden': showItemIndex === -1 && displayValues.length === 1
133
+ }),
128
134
  renderRest: renderRest,
129
135
  suffix: null,
130
136
  itemKey: itemKey,
@@ -133,7 +139,8 @@ export default function MultipleSelector(props) {
133
139
  }), showResponsiveSelectedSection && /*#__PURE__*/React.createElement(MultipleResponsiveSelectedSection, {
134
140
  displayValues: displayValues,
135
141
  renderItem: renderItem,
136
- onToggleOpen: onToggleOpen
142
+ onToggleOpen: onToggleOpen,
143
+ dropdownRef: dropdownRef
137
144
  }));
138
145
  }
139
146
  return /*#__PURE__*/React.createElement(ScrollArea, {
@@ -1,9 +1,11 @@
1
1
  import { DisplayValueType, ISelectProps, LabelInValueType } from '../interface';
2
- import React from 'react';
2
+ import React, { RefObject } from 'react';
3
+ import { RefTriggerProps } from '../SelectTrigger';
3
4
  export interface SelectorProps extends ISelectProps {
4
5
  displayValues: LabelInValueType[];
5
6
  onRemove: (value: DisplayValueType) => void;
6
7
  onToggleOpen: (open?: boolean) => void;
7
8
  showResponsiveSelectedSection: boolean;
9
+ dropdownRef: RefObject<RefTriggerProps>;
8
10
  }
9
11
  export default function Selector(props: SelectorProps): React.JSX.Element;
@@ -9,10 +9,12 @@ export default function Selector(props) {
9
9
  displayValues = props.displayValues,
10
10
  onRemove = props.onRemove,
11
11
  onToggleOpen = props.onToggleOpen,
12
- showResponsiveSelectedSection = props.showResponsiveSelectedSection;
12
+ showResponsiveSelectedSection = props.showResponsiveSelectedSection,
13
+ dropdownRef = props.dropdownRef;
13
14
  if (isMultiple(mode)) {
14
15
  return /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, {
15
16
  onRemove: onRemove,
17
+ dropdownRef: dropdownRef,
16
18
  onToggleOpen: onToggleOpen,
17
19
  showResponsiveSelectedSection: showResponsiveSelectedSection
18
20
  }));
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { MenuProps } from '../../Menu';
2
+ import { SelectMenuProps } from '../interface';
3
3
  export default function PopupContent(props: {
4
4
  content: React.ReactNode;
5
5
  notFoundContent: React.ReactNode;
6
6
  dropdownRender?: (menu: React.ReactNode) => React.ReactNode;
7
- menuProps?: MenuProps;
7
+ menuProps?: SelectMenuProps;
8
8
  }): React.JSX.Element;
@@ -1,3 +1,2 @@
1
- import { MenuProps } from '../../Menu';
2
- import { DefaultOptionType } from '../interface';
3
- export default function useDisplayMenu(menu: MenuProps, filterOptions?: (inputValue: string, option: DefaultOptionType) => boolean, innerSearchValue?: string): MenuProps;
1
+ import { DefaultOptionType, SelectMenuProps } from '../interface';
2
+ export default function useDisplayMenu(menu: SelectMenuProps, filterOptions?: (inputValue: string, option: DefaultOptionType) => boolean, innerSearchValue?: string): SelectMenuProps;
@@ -1,11 +1,12 @@
1
- import type { DefaultOptionType, DraftValueType, RawValueType } from '../interface';
2
- import { ItemType, MenuProps, SubMenuType } from '../../Menu';
1
+ import * as React from 'react';
2
+ import type { DefaultOptionType, DraftValueType, RawValueType, SelectItemType, SelectMenuItemType, SelectMenuProps } from '../interface';
3
3
  export declare function isRawValue(value: DraftValueType): value is RawValueType;
4
4
  /**
5
5
  * Parse `children` to `options` if `options` is not provided.
6
6
  * Then flatten the `options`.
7
7
  */
8
- export default function useOptions<OptionType extends DefaultOptionType>(menu?: MenuProps, options?: OptionType[], value?: DraftValueType): {
9
- menu: MenuProps;
10
- keyMenuItems: Map<string, ItemType | SubMenuType>;
8
+ export default function useOptions<OptionType extends DefaultOptionType>(menu?: SelectMenuProps, options?: OptionType[], value?: DraftValueType, optionLabelProp?: string): {
9
+ menu: SelectMenuProps;
10
+ keyMenuItems: Map<string, SelectItemType>;
11
+ labelMenuItems: Map<React.ReactNode, SelectMenuItemType>;
11
12
  };
@@ -14,7 +14,7 @@ export function isRawValue(value) {
14
14
  * Parse `children` to `options` if `options` is not provided.
15
15
  * Then flatten the `options`.
16
16
  */
17
- export default function useOptions(menu, options, value) {
17
+ export default function useOptions(menu, options, value, optionLabelProp) {
18
18
  return React.useMemo(function () {
19
19
  var selectedKeys = [];
20
20
  if (value) {
@@ -35,8 +35,7 @@ export default function useOptions(menu, options, value) {
35
35
  selectedKeys: selectedKeys
36
36
  }) : convertOptionsToMenu(options || [], selectedKeys);
37
37
  var keyMenuItems = new Map();
38
- // const labelMenuItems = new Map<React.ReactNode, MenuItemType>();
39
-
38
+ var labelMenuItems = new Map();
40
39
  function dig(menuItems) {
41
40
  // for loop to speed up collection speed
42
41
  for (var i = 0; i < menuItems.length; i += 1) {
@@ -49,15 +48,17 @@ export default function useOptions(menu, options, value) {
49
48
  continue;
50
49
  } else {
51
50
  keyMenuItems.set(menuItem.key, menuItem);
52
- // labelMenuItems.set(menuItem.label, menuItem);
51
+ if (optionLabelProp) {
52
+ labelMenuItems.set(menuItem[optionLabelProp], menuItem);
53
+ }
53
54
  }
54
55
  }
55
56
  }
56
-
57
57
  dig(mergedMenu.items || []);
58
58
  return {
59
59
  menu: mergedMenu,
60
- keyMenuItems: keyMenuItems
60
+ keyMenuItems: keyMenuItems,
61
+ labelMenuItems: labelMenuItems
61
62
  };
62
- }, [options, menu, value]);
63
+ }, [value, menu, options, optionLabelProp]);
63
64
  }
@@ -34,7 +34,8 @@ export default /*#__PURE__*/forwardRef(function AldSelect(props, ref) {
34
34
  onDeselect = props.onDeselect,
35
35
  labelInValue = props.labelInValue,
36
36
  filterOption = props.filterOption,
37
- searchValue = props.searchValue;
37
+ searchValue = props.searchValue,
38
+ optionLabelProp = props.optionLabelProp;
38
39
 
39
40
  // =========================== Values ===========================
40
41
  var _useMergedState = useMergedState(defaultValue, {
@@ -67,14 +68,20 @@ export default /*#__PURE__*/forwardRef(function AldSelect(props, ref) {
67
68
  if (isRawValue(val)) {
68
69
  rawValue = val;
69
70
  } else {
71
+ var _ref;
70
72
  rawLabel = val.label;
71
- rawValue = val.value;
73
+ // @ts-ignore val.key是为了兼容存在key的情况
74
+ rawValue = (_ref = val.value) !== null && _ref !== void 0 ? _ref : val.key;
72
75
  }
73
76
  var menuItem = keyMenuItems.get(rawValue.toString());
74
77
  if (menuItem) {
75
78
  // Fill missing props
76
79
  if (rawLabel === undefined) {
77
- rawLabel = menuItem.label;
80
+ if (optionLabelProp) {
81
+ rawLabel = menuItem[optionLabelProp] || menuItem.label;
82
+ } else {
83
+ rawLabel = menuItem.label;
84
+ }
78
85
  }
79
86
  rawDisabled = menuItem.disabled;
80
87
  }
@@ -84,7 +91,7 @@ export default /*#__PURE__*/forwardRef(function AldSelect(props, ref) {
84
91
  disabled: rawDisabled
85
92
  };
86
93
  });
87
- }, [keyMenuItems]);
94
+ }, [keyMenuItems, optionLabelProp]);
88
95
 
89
96
  // Merged value with LabelValueType
90
97
  var rawLabeledValues = React.useMemo(function () {
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { PlacementType } from '../Dropdown';
3
- import { MenuProps } from '../Menu';
3
+ import { ItemType, MenuDividerType, MenuHeaderType, MenuProps, SubMenuType } from '../Menu';
4
4
  import { CustomTagProps, Mode } from './BaseSelect';
5
5
  type ArrayElementType<T> = T extends (infer E)[] ? E : T;
6
6
  export interface ISelectProps<ValueType = any, OptionType extends BaseOptionType = DefaultOptionType> {
@@ -24,13 +24,13 @@ export interface ISelectProps<ValueType = any, OptionType extends BaseOptionType
24
24
  placement?: PlacementType;
25
25
  labelInValue?: boolean;
26
26
  options?: OptionType[];
27
- menu?: MenuProps;
27
+ menu?: SelectMenuProps;
28
28
  value?: ValueType | null;
29
29
  defaultValue?: ValueType | null;
30
30
  onChange?: (value: ValueType, option: OptionType | OptionType[]) => void;
31
- placeholder?: string;
31
+ placeholder?: React.ReactNode;
32
32
  onClear?: () => void;
33
- dropdownRender?: (menu: React.ReactNode) => React.ReactNode;
33
+ dropdownRender?: (menu: React.ReactElement) => React.ReactElement;
34
34
  dropdownStyle?: React.CSSProperties;
35
35
  overlayStyle?: React.CSSProperties;
36
36
  style?: React.CSSProperties;
@@ -38,7 +38,7 @@ export interface ISelectProps<ValueType = any, OptionType extends BaseOptionType
38
38
  onOpenChange?: (open: boolean) => void;
39
39
  getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
40
40
  onInputKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
41
- popupMatchSelectWidth?: boolean;
41
+ popupMatchSelectWidth?: boolean | number;
42
42
  onSelect?: SelectHandler<ArrayElementType<ValueType>, OptionType>;
43
43
  onDeselect?: SelectHandler<ArrayElementType<ValueType>, OptionType>;
44
44
  notFoundContent?: React.ReactNode;
@@ -46,6 +46,7 @@ export interface ISelectProps<ValueType = any, OptionType extends BaseOptionType
46
46
  tagRender?: (props: CustomTagProps, isPreview?: boolean) => React.ReactNode;
47
47
  maxTagPlaceholder?: React.ReactNode | ((omittedValues: DisplayValueType[]) => React.ReactNode);
48
48
  onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
49
+ optionLabelProp?: string;
49
50
  }
50
51
  export interface BaseOptionType {
51
52
  disabled?: boolean;
@@ -89,4 +90,11 @@ export interface DefaultOptionType extends BaseOptionType {
89
90
  value?: string | number | null;
90
91
  children?: Omit<DefaultOptionType, 'children'>[];
91
92
  }
93
+ export interface SelectItemType extends ItemType {
94
+ [key: string]: any;
95
+ }
96
+ export type SelectMenuItemType = SelectItemType | MenuDividerType | SubMenuType | MenuHeaderType;
97
+ export interface SelectMenuProps extends Omit<MenuProps, 'items'> {
98
+ items: SelectMenuItemType[];
99
+ }
92
100
  export {};
@@ -46,7 +46,7 @@
46
46
  }
47
47
 
48
48
  .beta-ald-select-selector:not(.beta-ald-select-selector-multiple-default) {
49
- min-width: 0;
49
+ min-width: 10px;
50
50
  overflow: hidden;
51
51
  white-space: nowrap;
52
52
  text-overflow: ellipsis;
@@ -55,17 +55,19 @@
55
55
  .beta-ald-select-selector-multiple-responsive {
56
56
  display: flex;
57
57
  align-items: center;
58
- line-height: 0;
58
+ // line-height: 0;
59
59
  gap: 4px;
60
60
 
61
61
  .beta-ald-select-selector-overflow {
62
- width: 100%;
63
- flex-grow: 1;
64
- flex-shrink: 1;
62
+ max-width: 100%;
65
63
  display: flex;
66
64
  gap: 4px;
65
+ flex: auto;
67
66
 
68
67
  .beta-ald-select-selector-overflow-item {
68
+ display: flex;
69
+ align-items: center;
70
+
69
71
  .ald-tag-content {
70
72
  display: flex;
71
73
  align-items: center;
@@ -74,9 +76,18 @@
74
76
  text-overflow: ellipsis;
75
77
  white-space: nowrap;
76
78
  }
79
+
80
+ .beta-ald-select-custom-tag-render-wrapper {
81
+ display: flex;
82
+ align-items: center;
83
+ }
77
84
  }
78
85
  }
79
86
 
87
+ .beta-ald-select-selector-overflow-hidden {
88
+ display: none;
89
+ }
90
+
80
91
  .beta-ald-select-selector-overflow-item-first {
81
92
  display: flex;
82
93
  min-width: 32px;
@@ -84,6 +95,23 @@
84
95
  overflow: hidden;
85
96
  text-overflow: ellipsis;
86
97
  white-space: nowrap;
98
+
99
+ > div,
100
+ > span {
101
+ min-width: 0;
102
+ flex: 1;
103
+ }
104
+
105
+ .beta-ald-select-custom-tag-render-wrapper {
106
+ display: flex;
107
+ align-items: center;
108
+
109
+ > div,
110
+ > span {
111
+ min-width: 0;
112
+ flex: 1;
113
+ }
114
+ }
87
115
  }
88
116
 
89
117
  .beta-ald-select-selector-multiple-responsive-selected-section {
@@ -98,6 +126,7 @@
98
126
  border-width: 1px;
99
127
  border-style: solid;
100
128
  background-color: #fff;
129
+ z-index: 1;
101
130
  }
102
131
  }
103
132
 
@@ -124,7 +153,7 @@
124
153
  }
125
154
 
126
155
  .beta-ald-select-popup-container.ald-dropdown-overlay {
127
- min-width: 194px;
156
+ min-width: 0;
128
157
 
129
158
  .beta-ald-select-popup {
130
159
  width: 100%;
@@ -137,6 +166,7 @@
137
166
  .ald-menu {
138
167
  .szh-menu {
139
168
  border-radius: 0;
169
+ min-width: 0;
140
170
  }
141
171
  }
142
172
  }
@@ -1,8 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { MenuProps } from '../../Menu';
3
- import { DefaultOptionType } from '../interface';
2
+ import { DefaultOptionType, SelectMenuProps } from '../interface';
4
3
  export declare function toArray<T>(value: T | T[]): T[];
5
4
  export declare const isClient: false | HTMLElement;
6
5
  /** Is client side and not jsdom */
7
6
  export declare const isBrowserClient: false | HTMLElement;
8
- export declare function convertOptionsToMenu(options: DefaultOptionType[], selectedKeys: React.Key[]): MenuProps;
7
+ export declare function convertOptionsToMenu(options: DefaultOptionType[], selectedKeys: React.Key[]): SelectMenuProps;
@@ -1,3 +1,9 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ 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; }
3
+ 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; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1
7
  export function toArray(value) {
2
8
  if (Array.isArray(value)) {
3
9
  return value;
@@ -12,10 +18,15 @@ export function convertOptionsToMenu(options, selectedKeys) {
12
18
  return {
13
19
  items: options.map(function (option) {
14
20
  var _option$value;
15
- return {
21
+ return _objectSpread(_objectSpread({}, option), {}, {
16
22
  label: option.label,
17
- key: ((_option$value = option.value) === null || _option$value === void 0 ? void 0 : _option$value.toString()) || ''
18
- };
23
+ key: ((_option$value = option.value) === null || _option$value === void 0 ? void 0 : _option$value.toString()) || '',
24
+ disabled: option.disabled,
25
+ onClick: option.onClick,
26
+ className: option.className,
27
+ danger: option.danger,
28
+ icon: option.icon
29
+ });
19
30
  }),
20
31
  selectedKeys: selectedKeys
21
32
  };
@@ -85,6 +85,6 @@ export interface IDropdownProps {
85
85
  * @description 菜单是否跟随触发元素宽度
86
86
  * @default false
87
87
  */
88
- popupMatchTriggerWidth?: boolean;
88
+ popupMatchTriggerWidth?: boolean | number;
89
89
  }
90
90
  export default function Dropdown(props: IDropdownProps): React.JSX.Element;
@@ -75,7 +75,7 @@ export default function Dropdown(props) {
75
75
  var rects = _ref.rects,
76
76
  elements = _ref.elements;
77
77
  Object.assign(elements.floating.style, {
78
- width: "".concat(rects.reference.width, "px")
78
+ width: typeof popupMatchTriggerWidth === 'number' ? "".concat(popupMatchTriggerWidth, "px") : "".concat(rects.reference.width, "px")
79
79
  });
80
80
  }
81
81
  }) : undefined],
@@ -13,7 +13,7 @@ import DragLightLine from "../../../Icon/components/DragLightLine";
13
13
  import PlusIcon from "../../../Icon/components/SignLightLine";
14
14
  import TrashLightLine from "../../../Icon/components/TrashLightLine";
15
15
  import IconButton from "../../../IconButton";
16
- import Select from "../../../Select";
16
+ import AldSelect from "../../../AldSelect";
17
17
  import TextLink from "../../../TextLink";
18
18
  import { LocaleContext, getTranslator } from "../../../locale/default";
19
19
  import { ELogicType, ENodeType } from "../../type";
@@ -260,10 +260,11 @@ export default function LogicItem(_ref) {
260
260
  size: 16,
261
261
  color: "#374151",
262
262
  className: "ald-logic-tree-node-drag-icon"
263
- })), /*#__PURE__*/React.createElement(Select, {
263
+ })), /*#__PURE__*/React.createElement(AldSelect, {
264
264
  options: logicOptions,
265
265
  className: "ald-logic-tree-select-relation",
266
266
  size: "small",
267
+ popupMatchSelectWidth: false,
267
268
  value: _logicType,
268
269
  onChange: onChangeRelation,
269
270
  disabled: nodes.length <= 1
@@ -1,6 +1,6 @@
1
1
  @import '../../TextLink/style/index.less';
2
2
  @import '../../IconButton/style/index.less';
3
- @import '../../Select/style/index.less';
3
+ @import '../../AldSelect/style/index.less';
4
4
  @import './DisplayLogicItem.less';
5
5
  @import './LoginItem.less';
6
6