@aloudata/aloudata-design 2.14.5 → 2.14.7
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/dist/AldSelect/BaseSelect.d.ts +2 -5
- package/dist/AldSelect/BaseSelect.js +15 -4
- package/dist/AldSelect/SelectTrigger.d.ts +3 -3
- package/dist/AldSelect/Selector/MultipleResponsiveSelectedSection.d.ts +5 -1
- package/dist/AldSelect/Selector/MultipleResponsiveSelectedSection.js +22 -4
- package/dist/AldSelect/Selector/MultipleSelector.d.ts +3 -1
- package/dist/AldSelect/Selector/MultipleSelector.js +27 -17
- package/dist/AldSelect/Selector/index.d.ts +3 -1
- package/dist/AldSelect/Selector/index.js +3 -1
- package/dist/AldSelect/components/PopupContent.d.ts +2 -2
- package/dist/AldSelect/hooks/useDisplayMenu.d.ts +2 -3
- package/dist/AldSelect/hooks/useOptions.d.ts +6 -5
- package/dist/AldSelect/hooks/useOptions.js +8 -7
- package/dist/AldSelect/index.js +11 -4
- package/dist/AldSelect/interface.d.ts +13 -5
- package/dist/AldSelect/style/index.less +43 -10
- package/dist/AldSelect/utils/commonUtil.d.ts +2 -3
- package/dist/AldSelect/utils/commonUtil.js +14 -3
- package/dist/Dropdown/index.d.ts +1 -1
- package/dist/Dropdown/index.js +1 -1
- package/dist/LogicTree/components/LogicItem/index.js +58 -18
- package/dist/LogicTree/style/index.less +1 -1
- package/dist/MemberPicker/index.js +61 -16
- package/dist/MemberPicker/interface.d.ts +3 -3
- package/dist/MemberPicker/style/index.less +3 -3
- package/dist/Table/helper.d.ts +1 -1
- package/dist/ald.min.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/locale/default.d.ts +1 -1
- package/dist/locale/zh_CN.js +1 -1
- package/package.json +1 -1
|
@@ -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?:
|
|
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,11 @@ 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({},
|
|
226
|
+
}, placeholder), !_.isEmpty(displayValues) && /*#__PURE__*/React.createElement(Selector, _extends({}, restProps, {
|
|
227
|
+
suffixIcon: suffixIcon,
|
|
219
228
|
size: size,
|
|
229
|
+
mode: mode,
|
|
230
|
+
dropdownRef: dropdownRef,
|
|
220
231
|
displayValues: displayValues,
|
|
221
232
|
onToggleOpen: onToggleOpen,
|
|
222
233
|
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 {
|
|
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
|
|
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,11 @@
|
|
|
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>;
|
|
9
|
+
maxHeight?: number;
|
|
10
|
+
suffixIcon?: React.ReactNode;
|
|
7
11
|
}): React.JSX.Element;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import ScrollArea from "../../ScrollArea";
|
|
3
|
+
import Suffix from "../components/Suffix";
|
|
2
4
|
export default function MultipleResponsiveSelectedSection(params) {
|
|
3
5
|
var displayValues = params.displayValues,
|
|
4
6
|
renderItem = params.renderItem,
|
|
5
|
-
onToggleOpen = params.onToggleOpen
|
|
7
|
+
onToggleOpen = params.onToggleOpen,
|
|
8
|
+
dropdownRef = params.dropdownRef,
|
|
9
|
+
maxHeight = params.maxHeight,
|
|
10
|
+
suffixIcon = params.suffixIcon;
|
|
6
11
|
var multipleSelectedSectionRef = useRef(null);
|
|
7
12
|
useEffect(function () {
|
|
8
13
|
function getSelect() {
|
|
@@ -14,9 +19,10 @@ export default function MultipleResponsiveSelectedSection(params) {
|
|
|
14
19
|
return null;
|
|
15
20
|
}
|
|
16
21
|
function close(e) {
|
|
22
|
+
var _dropdownRef$current, _dropdownRef$current$;
|
|
17
23
|
var target = e.target;
|
|
18
24
|
var select = getSelect();
|
|
19
|
-
if (select && target.contains(
|
|
25
|
+
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
26
|
onToggleOpen(false);
|
|
21
27
|
}
|
|
22
28
|
}
|
|
@@ -24,9 +30,21 @@ export default function MultipleResponsiveSelectedSection(params) {
|
|
|
24
30
|
return function () {
|
|
25
31
|
document.removeEventListener('click', close);
|
|
26
32
|
};
|
|
27
|
-
}, [onToggleOpen]);
|
|
33
|
+
}, [onToggleOpen, dropdownRef]);
|
|
28
34
|
return /*#__PURE__*/React.createElement("div", {
|
|
29
35
|
ref: multipleSelectedSectionRef,
|
|
30
36
|
className: "beta-ald-select-selector-multiple-responsive-selected-section"
|
|
31
|
-
},
|
|
37
|
+
}, /*#__PURE__*/React.createElement(ScrollArea, {
|
|
38
|
+
innerClassName: "beta-ald-select-selector-multiple-responsive-selected-section-inner",
|
|
39
|
+
innerStyle: {
|
|
40
|
+
maxHeight: maxHeight
|
|
41
|
+
}
|
|
42
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
43
|
+
className: "beta-ald-select-selector-multiple-responsive-selected-section-tags"
|
|
44
|
+
}, displayValues.map(renderItem))), /*#__PURE__*/React.createElement(Suffix, {
|
|
45
|
+
showArrow: true,
|
|
46
|
+
allowClear: false,
|
|
47
|
+
icon: suffixIcon,
|
|
48
|
+
displayValues: displayValues
|
|
49
|
+
}));
|
|
32
50
|
}
|
|
@@ -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,13 @@ export default function MultipleSelector(props) {
|
|
|
30
31
|
onToggleOpen = props.onToggleOpen,
|
|
31
32
|
mode = props.mode,
|
|
32
33
|
disabled = props.disabled,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
maxTagPlaceholder = props.maxTagPlaceholder,
|
|
35
|
+
showResponsiveSelectedSection = props.showResponsiveSelectedSection,
|
|
36
|
+
dropdownRef = props.dropdownRef,
|
|
37
|
+
suffixIcon = props.suffixIcon;
|
|
38
|
+
var innerMaxTagPlaceholder = function innerMaxTagPlaceholder(omittedValues) {
|
|
39
|
+
return "+ ".concat(omittedValues.length === displayValues.length ? omittedValues.length - 1 : omittedValues.length);
|
|
40
|
+
};
|
|
38
41
|
var _useState = useState(0),
|
|
39
42
|
_useState2 = _slicedToArray(_useState, 2),
|
|
40
43
|
showItemIndex = _useState2[0],
|
|
@@ -42,9 +45,9 @@ export default function MultipleSelector(props) {
|
|
|
42
45
|
var customizeRenderSelector = function customizeRenderSelector(value, content, itemDisabled, closable, onClose, isPreview) {
|
|
43
46
|
var onMouseDown = function onMouseDown(e) {
|
|
44
47
|
onPreventMouseDown(e);
|
|
45
|
-
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) :
|
|
97
|
-
return typeof
|
|
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
|
};
|
|
@@ -103,15 +106,16 @@ export default function MultipleSelector(props) {
|
|
|
103
106
|
};
|
|
104
107
|
var maxHeight = useMemo(function () {
|
|
105
108
|
if (isMultiple(mode)) {
|
|
109
|
+
var maxRows;
|
|
106
110
|
if (_typeof(mode) === 'object') {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
111
|
+
maxRows = mode.maxRows;
|
|
112
|
+
}
|
|
113
|
+
if (!maxRows) {
|
|
114
|
+
// 2.5行高+2行间距
|
|
115
|
+
return 2.5 * tagHeight + 2 * gap;
|
|
116
|
+
} else {
|
|
117
|
+
// 总行高+总行间距
|
|
118
|
+
return maxRows * tagHeight + (maxRows - 1) * gap;
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
121
|
return undefined;
|
|
@@ -125,6 +129,9 @@ export default function MultipleSelector(props) {
|
|
|
125
129
|
prefixCls: overflowPrefixCls,
|
|
126
130
|
data: displayValues,
|
|
127
131
|
renderItem: renderItem,
|
|
132
|
+
className: classNames({
|
|
133
|
+
'beta-ald-select-selector-overflow-hidden': showItemIndex === -1 && displayValues.length === 1
|
|
134
|
+
}),
|
|
128
135
|
renderRest: renderRest,
|
|
129
136
|
suffix: null,
|
|
130
137
|
itemKey: itemKey,
|
|
@@ -133,7 +140,10 @@ export default function MultipleSelector(props) {
|
|
|
133
140
|
}), showResponsiveSelectedSection && /*#__PURE__*/React.createElement(MultipleResponsiveSelectedSection, {
|
|
134
141
|
displayValues: displayValues,
|
|
135
142
|
renderItem: renderItem,
|
|
136
|
-
|
|
143
|
+
maxHeight: maxHeight,
|
|
144
|
+
suffixIcon: suffixIcon,
|
|
145
|
+
onToggleOpen: onToggleOpen,
|
|
146
|
+
dropdownRef: dropdownRef
|
|
137
147
|
}));
|
|
138
148
|
}
|
|
139
149
|
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 {
|
|
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?:
|
|
7
|
+
menuProps?: SelectMenuProps;
|
|
8
8
|
}): React.JSX.Element;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
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
|
|
2
|
-
import {
|
|
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?:
|
|
9
|
-
menu:
|
|
10
|
-
keyMenuItems: Map<string,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
}, [
|
|
63
|
+
}, [value, menu, options, optionLabelProp]);
|
|
63
64
|
}
|
package/dist/AldSelect/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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?:
|
|
27
|
+
menu?: SelectMenuProps;
|
|
28
28
|
value?: ValueType | null;
|
|
29
29
|
defaultValue?: ValueType | null;
|
|
30
30
|
onChange?: (value: ValueType, option: OptionType | OptionType[]) => void;
|
|
31
|
-
placeholder?:
|
|
31
|
+
placeholder?: React.ReactNode;
|
|
32
32
|
onClear?: () => void;
|
|
33
|
-
dropdownRender?: (menu: React.
|
|
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:
|
|
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 {
|
|
@@ -91,13 +119,17 @@
|
|
|
91
119
|
position: absolute;
|
|
92
120
|
top: -1px;
|
|
93
121
|
left: -1px;
|
|
94
|
-
display: flex;
|
|
95
|
-
gap: 4px;
|
|
96
|
-
flex-wrap: wrap;
|
|
97
|
-
align-items: flex-start;
|
|
98
122
|
border-width: 1px;
|
|
99
123
|
border-style: solid;
|
|
100
124
|
background-color: #fff;
|
|
125
|
+
z-index: 1;
|
|
126
|
+
|
|
127
|
+
.beta-ald-select-selector-multiple-responsive-selected-section-tags {
|
|
128
|
+
align-items: flex-start;
|
|
129
|
+
display: flex !important;
|
|
130
|
+
flex-wrap: wrap;
|
|
131
|
+
gap: 4px;
|
|
132
|
+
}
|
|
101
133
|
}
|
|
102
134
|
}
|
|
103
135
|
|
|
@@ -124,7 +156,7 @@
|
|
|
124
156
|
}
|
|
125
157
|
|
|
126
158
|
.beta-ald-select-popup-container.ald-dropdown-overlay {
|
|
127
|
-
min-width:
|
|
159
|
+
min-width: 0;
|
|
128
160
|
|
|
129
161
|
.beta-ald-select-popup {
|
|
130
162
|
width: 100%;
|
|
@@ -137,6 +169,7 @@
|
|
|
137
169
|
.ald-menu {
|
|
138
170
|
.szh-menu {
|
|
139
171
|
border-radius: 0;
|
|
172
|
+
min-width: 0;
|
|
140
173
|
}
|
|
141
174
|
}
|
|
142
175
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
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[]):
|
|
7
|
+
export declare function convertOptionsToMenu(options: DefaultOptionType[], selectedKeys: React.Key[]): SelectMenuProps;
|