@aloudata/aloudata-design 2.13.17 → 2.14.0
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 +70 -0
- package/dist/AldSelect/BaseSelect.js +236 -0
- package/dist/AldSelect/SelectTrigger.d.ts +23 -0
- package/dist/AldSelect/SelectTrigger.js +73 -0
- package/dist/AldSelect/Selector/MultipleResponsiveSelectedSection.d.ts +7 -0
- package/dist/AldSelect/Selector/MultipleResponsiveSelectedSection.js +32 -0
- package/dist/AldSelect/Selector/MultipleSelector.d.ts +12 -0
- package/dist/AldSelect/Selector/MultipleSelector.js +148 -0
- package/dist/AldSelect/Selector/index.d.ts +9 -0
- package/dist/AldSelect/Selector/index.js +25 -0
- package/dist/AldSelect/components/PopupContent.d.ts +8 -0
- package/dist/AldSelect/components/PopupContent.js +15 -0
- package/dist/AldSelect/components/SearchBox.d.ts +9 -0
- package/dist/AldSelect/components/SearchBox.js +26 -0
- package/dist/AldSelect/components/Suffix.d.ts +11 -0
- package/dist/AldSelect/components/Suffix.js +36 -0
- package/dist/AldSelect/hooks/useCache.d.ts +6 -0
- package/dist/AldSelect/hooks/useCache.js +50 -0
- package/dist/AldSelect/hooks/useDisplayMenu.d.ts +3 -0
- package/dist/AldSelect/hooks/useDisplayMenu.js +60 -0
- package/dist/AldSelect/hooks/useLayoutEffect.d.ts +5 -0
- package/dist/AldSelect/hooks/useLayoutEffect.js +17 -0
- package/dist/AldSelect/hooks/useOptions.d.ts +11 -0
- package/dist/AldSelect/hooks/useOptions.js +63 -0
- package/dist/AldSelect/index.d.ts +4 -0
- package/dist/AldSelect/index.js +224 -0
- package/dist/AldSelect/interface.d.ts +91 -0
- package/dist/AldSelect/interface.js +1 -0
- package/dist/AldSelect/style/color.less +54 -0
- package/dist/AldSelect/style/index.d.ts +1 -0
- package/dist/AldSelect/style/index.js +1 -0
- package/dist/AldSelect/style/index.less +138 -0
- package/dist/AldSelect/style/size.less +63 -0
- package/dist/AldSelect/utils/commonUtil.d.ts +8 -0
- package/dist/AldSelect/utils/commonUtil.js +22 -0
- package/dist/AldSelect/utils/getWidthStyle.d.ts +2 -0
- package/dist/AldSelect/utils/getWidthStyle.js +18 -0
- package/dist/AldSelect/utils/keyUtil.d.ts +2 -0
- package/dist/AldSelect/utils/keyUtil.js +10 -0
- package/dist/AldSelect/utils/valueUtil.d.ts +22 -0
- package/dist/AldSelect/utils/valueUtil.js +131 -0
- package/dist/Dropdown/index.d.ts +5 -0
- package/dist/Dropdown/index.js +25 -6
- package/dist/Form/index.d.ts +1 -1
- package/dist/Form/index.js +1 -0
- package/dist/Icon/components/ArrowDownRightFill.d.ts +10 -0
- package/dist/Icon/components/ArrowDownRightFill.js +35 -0
- package/dist/Icon/components/CloseCircleRightFill.d.ts +10 -0
- package/dist/Icon/components/CloseCircleRightFill.js +35 -0
- package/dist/Icon/index.d.ts +2 -0
- package/dist/Icon/index.js +3 -1
- package/dist/Icon/svg/arrow-down-right-fill.svg +5 -0
- package/dist/Icon/svg/close-circle-right-fill.svg +5 -0
- package/dist/Input/components/Password/index.js +1 -0
- package/dist/Menu/index.d.ts +4 -0
- package/dist/Menu/index.js +5 -4
- package/dist/ScrollArea/index.d.ts +1 -0
- package/dist/ScrollArea/index.js +9 -1
- package/dist/Table/helper.d.ts +1 -1
- package/dist/_utils/prefixCls.d.ts +4 -0
- package/dist/_utils/prefixCls.js +16 -0
- package/dist/ald.min.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -1
- package/dist/index.less +1 -0
- package/dist/locale/default.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export default function PopupContent(props) {
|
|
4
|
+
var content = props.content,
|
|
5
|
+
notFoundContent = props.notFoundContent,
|
|
6
|
+
dropdownRender = props.dropdownRender,
|
|
7
|
+
menuProps = props.menuProps;
|
|
8
|
+
var popupContent;
|
|
9
|
+
if (_.isNil(menuProps) || _.isEmpty(menuProps.items)) {
|
|
10
|
+
popupContent = notFoundContent;
|
|
11
|
+
} else {
|
|
12
|
+
popupContent = dropdownRender ? dropdownRender(content) : content;
|
|
13
|
+
}
|
|
14
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, popupContent);
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare function SearchBox({ showSearch, value, onChange, onBlur, }: {
|
|
3
|
+
showSearch?: boolean;
|
|
4
|
+
value?: string;
|
|
5
|
+
onChange?: (value: string) => void;
|
|
6
|
+
onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
7
|
+
}): React.JSX.Element | null;
|
|
8
|
+
declare const _default: React.MemoExoticComponent<typeof SearchBox>;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Input from "../../Input";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import SearchLine from "../../Icon/components/SearchLine";
|
|
4
|
+
function SearchBox(_ref) {
|
|
5
|
+
var _ref$showSearch = _ref.showSearch,
|
|
6
|
+
showSearch = _ref$showSearch === void 0 ? false : _ref$showSearch,
|
|
7
|
+
_ref$value = _ref.value,
|
|
8
|
+
value = _ref$value === void 0 ? '' : _ref$value,
|
|
9
|
+
_onChange = _ref.onChange,
|
|
10
|
+
onBlur = _ref.onBlur;
|
|
11
|
+
if (!showSearch) return null;
|
|
12
|
+
return /*#__PURE__*/React.createElement(Input, {
|
|
13
|
+
className: "beta-ald-select-search-box",
|
|
14
|
+
value: value,
|
|
15
|
+
size: "small",
|
|
16
|
+
bordered: false,
|
|
17
|
+
onBlur: onBlur,
|
|
18
|
+
prefix: /*#__PURE__*/React.createElement(SearchLine, {
|
|
19
|
+
size: 16
|
|
20
|
+
}),
|
|
21
|
+
onChange: function onChange(e) {
|
|
22
|
+
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e.target.value);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export default /*#__PURE__*/React.memo(SearchBox);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DisplayValueType } from '../interface';
|
|
3
|
+
export default function Suffix({ showArrow, allowClear, isActive, isHover, icon, onClear, displayValues, }: {
|
|
4
|
+
showArrow?: boolean;
|
|
5
|
+
allowClear?: boolean;
|
|
6
|
+
isActive?: boolean;
|
|
7
|
+
isHover?: boolean;
|
|
8
|
+
icon: React.ReactNode;
|
|
9
|
+
onClear?: () => void;
|
|
10
|
+
displayValues: DisplayValueType[];
|
|
11
|
+
}): React.JSX.Element | null;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import prefixCls from "../../_utils/prefixCls";
|
|
3
|
+
import { ArrowDownRightFill, CloseCircleRightFill } from "../../Icon";
|
|
4
|
+
export default function Suffix(_ref) {
|
|
5
|
+
var showArrow = _ref.showArrow,
|
|
6
|
+
allowClear = _ref.allowClear,
|
|
7
|
+
isActive = _ref.isActive,
|
|
8
|
+
isHover = _ref.isHover,
|
|
9
|
+
icon = _ref.icon,
|
|
10
|
+
onClear = _ref.onClear,
|
|
11
|
+
displayValues = _ref.displayValues;
|
|
12
|
+
var classNames = prefixCls('select');
|
|
13
|
+
if ((isActive || isHover) && allowClear && displayValues.length > 0) {
|
|
14
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
15
|
+
className: classNames('suffix', 'clear'),
|
|
16
|
+
onClick: function onClick(event) {
|
|
17
|
+
event.stopPropagation();
|
|
18
|
+
event.preventDefault();
|
|
19
|
+
onClear === null || onClear === void 0 ? void 0 : onClear();
|
|
20
|
+
}
|
|
21
|
+
}, /*#__PURE__*/React.createElement(CloseCircleRightFill, {
|
|
22
|
+
size: 16,
|
|
23
|
+
color: "#6B7280"
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
if (showArrow) {
|
|
27
|
+
var dropdownIcon = icon || /*#__PURE__*/React.createElement(ArrowDownRightFill, {
|
|
28
|
+
color: "#6B7280",
|
|
29
|
+
size: 16
|
|
30
|
+
});
|
|
31
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
32
|
+
className: classNames('suffix', 'arrow')
|
|
33
|
+
}, dropdownIcon);
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DefaultOptionType, LabelInValueType, RawValueType } from '../interface';
|
|
2
|
+
/**
|
|
3
|
+
* Cache `value` related LabeledValue & options.
|
|
4
|
+
*/
|
|
5
|
+
declare const _default: (labeledValues: LabelInValueType[], valueOptions: Map<RawValueType, DefaultOptionType>) => [LabelInValueType[], (val: RawValueType) => DefaultOptionType];
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,50 @@
|
|
|
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); }
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* Cache `value` related LabeledValue & options.
|
|
10
|
+
*/
|
|
11
|
+
export default (function (labeledValues, valueOptions) {
|
|
12
|
+
var cacheRef = React.useRef({
|
|
13
|
+
values: new Map(),
|
|
14
|
+
options: new Map()
|
|
15
|
+
});
|
|
16
|
+
var filledLabeledValues = React.useMemo(function () {
|
|
17
|
+
var _cacheRef$current = cacheRef.current,
|
|
18
|
+
prevValueCache = _cacheRef$current.values,
|
|
19
|
+
prevOptionCache = _cacheRef$current.options;
|
|
20
|
+
|
|
21
|
+
// Fill label by cache
|
|
22
|
+
var patchedValues = labeledValues.map(function (item) {
|
|
23
|
+
if (item.label === undefined) {
|
|
24
|
+
var _prevValueCache$get;
|
|
25
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
26
|
+
label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return item;
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Refresh cache
|
|
33
|
+
var valueCache = new Map();
|
|
34
|
+
var optionCache = new Map();
|
|
35
|
+
patchedValues.forEach(function (item) {
|
|
36
|
+
valueCache.set(item.value, item);
|
|
37
|
+
var option = valueOptions.get(item.value) || prevOptionCache.get(item.value);
|
|
38
|
+
if (option) {
|
|
39
|
+
optionCache.set(item.value, option);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
cacheRef.current.values = valueCache;
|
|
43
|
+
cacheRef.current.options = optionCache;
|
|
44
|
+
return patchedValues;
|
|
45
|
+
}, [labeledValues, valueOptions]);
|
|
46
|
+
var getOption = React.useCallback(function (val) {
|
|
47
|
+
return valueOptions.get(val) || cacheRef.current.options.get(val);
|
|
48
|
+
}, [valueOptions]);
|
|
49
|
+
return [filledLabeledValues, getOption];
|
|
50
|
+
});
|
|
@@ -0,0 +1,60 @@
|
|
|
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); }
|
|
7
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
11
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
12
|
+
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; }
|
|
13
|
+
import { useCallback, useMemo } from 'react';
|
|
14
|
+
import { isDivideMenuItem, isHeaderMenuItem, isSubMenuItem } from "../../Menu";
|
|
15
|
+
export default function useDisplayMenu(menu, filterOptions, innerSearchValue) {
|
|
16
|
+
var items = menu.items;
|
|
17
|
+
var filter = useCallback(function (inputValue, option) {
|
|
18
|
+
if (filterOptions) {
|
|
19
|
+
return filterOptions(inputValue, option);
|
|
20
|
+
}
|
|
21
|
+
var toBeSearched = option.label || option.value || '';
|
|
22
|
+
return toBeSearched.toString().includes(inputValue);
|
|
23
|
+
}, [filterOptions]);
|
|
24
|
+
var findFilteredItems = useCallback(function (currentItems) {
|
|
25
|
+
return currentItems.filter(function (item) {
|
|
26
|
+
if (isSubMenuItem(item)) {
|
|
27
|
+
return findFilteredItems(item.children);
|
|
28
|
+
} else if (isHeaderMenuItem(item)) {
|
|
29
|
+
return true;
|
|
30
|
+
} else if (isDivideMenuItem(item)) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return filter === null || filter === void 0 ? void 0 : filter(innerSearchValue || '', {
|
|
34
|
+
label: item.label,
|
|
35
|
+
value: item.key
|
|
36
|
+
});
|
|
37
|
+
}).reduceRight(function (prev, current) {
|
|
38
|
+
var prevItem = prev[0];
|
|
39
|
+
if (isHeaderMenuItem(current) || isDivideMenuItem(current)) {
|
|
40
|
+
if (!prevItem || isHeaderMenuItem(prevItem) || isDivideMenuItem(prevItem)) {
|
|
41
|
+
return prev;
|
|
42
|
+
}
|
|
43
|
+
} else if (isSubMenuItem(current)) {
|
|
44
|
+
if (current.children.length === 0) {
|
|
45
|
+
return prev;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return [current].concat(_toConsumableArray(prev));
|
|
49
|
+
}, []);
|
|
50
|
+
}, [innerSearchValue, filter]);
|
|
51
|
+
var filteredItems = useMemo(function () {
|
|
52
|
+
return findFilteredItems(items);
|
|
53
|
+
}, [findFilteredItems, items]);
|
|
54
|
+
if (!innerSearchValue) {
|
|
55
|
+
return menu;
|
|
56
|
+
}
|
|
57
|
+
return _objectSpread(_objectSpread({}, menu), {}, {
|
|
58
|
+
items: filteredItems
|
|
59
|
+
});
|
|
60
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { isBrowserClient } from "../utils/commonUtil";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Wrap `React.useLayoutEffect` which will not throw warning message in test env
|
|
7
|
+
*/
|
|
8
|
+
export default function useLayoutEffect(effect, deps) {
|
|
9
|
+
// Never happen in test env
|
|
10
|
+
if (isBrowserClient) {
|
|
11
|
+
/* istanbul ignore next */
|
|
12
|
+
React.useLayoutEffect(effect, deps);
|
|
13
|
+
} else {
|
|
14
|
+
React.useEffect(effect, deps);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/* eslint-enable */
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DefaultOptionType, DraftValueType, RawValueType } from '../interface';
|
|
2
|
+
import { ItemType, MenuProps, SubMenuType } from '../../Menu';
|
|
3
|
+
export declare function isRawValue(value: DraftValueType): value is RawValueType;
|
|
4
|
+
/**
|
|
5
|
+
* Parse `children` to `options` if `options` is not provided.
|
|
6
|
+
* Then flatten the `options`.
|
|
7
|
+
*/
|
|
8
|
+
export default function useOptions<OptionType extends DefaultOptionType>(menu?: MenuProps, options?: OptionType[], value?: DraftValueType): {
|
|
9
|
+
menu: MenuProps;
|
|
10
|
+
keyMenuItems: Map<string, ItemType | SubMenuType>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
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; }
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
5
|
+
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); }
|
|
6
|
+
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); }
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { isDivideMenuItem, isHeaderMenuItem, isSubMenuItem } from "../../Menu";
|
|
9
|
+
import { convertOptionsToMenu, toArray } from "../utils/commonUtil";
|
|
10
|
+
export function isRawValue(value) {
|
|
11
|
+
return !value || _typeof(value) !== 'object';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parse `children` to `options` if `options` is not provided.
|
|
15
|
+
* Then flatten the `options`.
|
|
16
|
+
*/
|
|
17
|
+
export default function useOptions(menu, options, value) {
|
|
18
|
+
return React.useMemo(function () {
|
|
19
|
+
var selectedKeys = [];
|
|
20
|
+
if (value) {
|
|
21
|
+
var valueList = toArray(value);
|
|
22
|
+
valueList.forEach(function (val) {
|
|
23
|
+
if (isRawValue(val)) {
|
|
24
|
+
selectedKeys.push(val.toString());
|
|
25
|
+
} else {
|
|
26
|
+
var key = val.value;
|
|
27
|
+
if (key) {
|
|
28
|
+
selectedKeys.push(key.toString());
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
var mergedMenu = menu ? _objectSpread(_objectSpread({}, menu), {}, {
|
|
34
|
+
items: (menu === null || menu === void 0 ? void 0 : menu.items) || [],
|
|
35
|
+
selectedKeys: selectedKeys
|
|
36
|
+
}) : convertOptionsToMenu(options || [], selectedKeys);
|
|
37
|
+
var keyMenuItems = new Map();
|
|
38
|
+
// const labelMenuItems = new Map<React.ReactNode, MenuItemType>();
|
|
39
|
+
|
|
40
|
+
function dig(menuItems) {
|
|
41
|
+
// for loop to speed up collection speed
|
|
42
|
+
for (var i = 0; i < menuItems.length; i += 1) {
|
|
43
|
+
var menuItem = menuItems[i];
|
|
44
|
+
if (isDivideMenuItem(menuItem) || isHeaderMenuItem(menuItem)) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (isSubMenuItem(menuItem)) {
|
|
48
|
+
dig(menuItem.children);
|
|
49
|
+
continue;
|
|
50
|
+
} else {
|
|
51
|
+
keyMenuItems.set(menuItem.key, menuItem);
|
|
52
|
+
// labelMenuItems.set(menuItem.label, menuItem);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
dig(mergedMenu.items || []);
|
|
58
|
+
return {
|
|
59
|
+
menu: mergedMenu,
|
|
60
|
+
keyMenuItems: keyMenuItems
|
|
61
|
+
};
|
|
62
|
+
}, [options, menu, value]);
|
|
63
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
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 _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
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
4
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
9
|
+
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; }
|
|
10
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
11
|
+
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); }
|
|
12
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
13
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
+
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; }
|
|
16
|
+
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; } }
|
|
17
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
+
import React, { forwardRef, useCallback, useMemo } from 'react';
|
|
19
|
+
import useOptions, { isRawValue } from "./hooks/useOptions";
|
|
20
|
+
import useMergedState from 'rc-util/lib/hooks/useMergedState';
|
|
21
|
+
import { toArray } from "./utils/commonUtil";
|
|
22
|
+
import useCache from "./hooks/useCache";
|
|
23
|
+
import BaseSelect, { isMultiple } from "./BaseSelect";
|
|
24
|
+
import { injectPropsWithOption } from "./utils/valueUtil";
|
|
25
|
+
import useDisplayMenu from "./hooks/useDisplayMenu";
|
|
26
|
+
export default /*#__PURE__*/forwardRef(function AldSelect(props, ref) {
|
|
27
|
+
var value = props.value,
|
|
28
|
+
defaultValue = props.defaultValue,
|
|
29
|
+
mode = props.mode,
|
|
30
|
+
menu = props.menu,
|
|
31
|
+
options = props.options,
|
|
32
|
+
onChange = props.onChange,
|
|
33
|
+
onSelect = props.onSelect,
|
|
34
|
+
onDeselect = props.onDeselect,
|
|
35
|
+
labelInValue = props.labelInValue,
|
|
36
|
+
filterOption = props.filterOption,
|
|
37
|
+
searchValue = props.searchValue;
|
|
38
|
+
|
|
39
|
+
// =========================== Values ===========================
|
|
40
|
+
var _useMergedState = useMergedState(defaultValue, {
|
|
41
|
+
value: value
|
|
42
|
+
}),
|
|
43
|
+
_useMergedState2 = _slicedToArray(_useMergedState, 2),
|
|
44
|
+
internalValue = _useMergedState2[0],
|
|
45
|
+
setInternalValue = _useMergedState2[1];
|
|
46
|
+
var parsedOptions = useOptions(menu, options, internalValue);
|
|
47
|
+
var mergedMenu = parsedOptions.menu,
|
|
48
|
+
keyMenuItems = parsedOptions.keyMenuItems;
|
|
49
|
+
var multiple = mode && isMultiple(mode);
|
|
50
|
+
// ============================== SearchValue ==============================
|
|
51
|
+
var _useMergedState3 = useMergedState(undefined, {
|
|
52
|
+
value: searchValue
|
|
53
|
+
}),
|
|
54
|
+
_useMergedState4 = _slicedToArray(_useMergedState3, 2),
|
|
55
|
+
innerSearchValue = _useMergedState4[0],
|
|
56
|
+
setInnerSearchValue = _useMergedState4[1];
|
|
57
|
+
// ========================= Wrap Value =========================
|
|
58
|
+
var convert2LabelValues = React.useCallback(function (draftValues) {
|
|
59
|
+
// Convert to array
|
|
60
|
+
var valueList = toArray(draftValues);
|
|
61
|
+
|
|
62
|
+
// Convert to labelInValue type
|
|
63
|
+
return valueList.map(function (val) {
|
|
64
|
+
var rawValue;
|
|
65
|
+
var rawLabel;
|
|
66
|
+
var rawDisabled;
|
|
67
|
+
if (isRawValue(val)) {
|
|
68
|
+
rawValue = val;
|
|
69
|
+
} else {
|
|
70
|
+
rawLabel = val.label;
|
|
71
|
+
rawValue = val.value;
|
|
72
|
+
}
|
|
73
|
+
var menuItem = keyMenuItems.get(rawValue.toString());
|
|
74
|
+
if (menuItem) {
|
|
75
|
+
// Fill missing props
|
|
76
|
+
if (rawLabel === undefined) {
|
|
77
|
+
rawLabel = menuItem.label;
|
|
78
|
+
}
|
|
79
|
+
rawDisabled = menuItem.disabled;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
label: rawLabel,
|
|
83
|
+
value: rawValue,
|
|
84
|
+
disabled: rawDisabled
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
}, [keyMenuItems]);
|
|
88
|
+
|
|
89
|
+
// Merged value with LabelValueType
|
|
90
|
+
var rawLabeledValues = React.useMemo(function () {
|
|
91
|
+
var values = convert2LabelValues(internalValue);
|
|
92
|
+
return values;
|
|
93
|
+
}, [internalValue, convert2LabelValues]);
|
|
94
|
+
|
|
95
|
+
// Fill label with cache to avoid option remove
|
|
96
|
+
var _useCache = useCache(rawLabeledValues, keyMenuItems),
|
|
97
|
+
_useCache2 = _slicedToArray(_useCache, 2),
|
|
98
|
+
mergedValues = _useCache2[0],
|
|
99
|
+
getMixedOption = _useCache2[1];
|
|
100
|
+
var displayValues = React.useMemo(function () {
|
|
101
|
+
// `null` need show as placeholder instead
|
|
102
|
+
if (!mode && mergedValues.length === 1) {
|
|
103
|
+
var firstValue = mergedValues[0];
|
|
104
|
+
if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return mergedValues.map(function (item) {
|
|
109
|
+
var _item$label;
|
|
110
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
111
|
+
label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : item.value
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}, [mode, mergedValues]);
|
|
115
|
+
|
|
116
|
+
// =========================== Change ===========================
|
|
117
|
+
var triggerChange = useCallback(function (values) {
|
|
118
|
+
var labeledValues = convert2LabelValues(values);
|
|
119
|
+
setInternalValue(labeledValues);
|
|
120
|
+
if (onChange && (
|
|
121
|
+
// Trigger event only when value changed
|
|
122
|
+
labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {
|
|
123
|
+
var _mergedValues$index;
|
|
124
|
+
return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);
|
|
125
|
+
}))) {
|
|
126
|
+
var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {
|
|
127
|
+
return v.value;
|
|
128
|
+
});
|
|
129
|
+
var returnOptions = labeledValues.map(function (v) {
|
|
130
|
+
return injectPropsWithOption(getMixedOption(v.value));
|
|
131
|
+
});
|
|
132
|
+
onChange(
|
|
133
|
+
// Value
|
|
134
|
+
multiple ? returnValues : returnValues[0],
|
|
135
|
+
// Option
|
|
136
|
+
multiple ? returnOptions : returnOptions[0]);
|
|
137
|
+
}
|
|
138
|
+
}, [convert2LabelValues, setInternalValue, onChange, mergedValues, labelInValue, multiple, getMixedOption]);
|
|
139
|
+
// ========================= OptionList =========================
|
|
140
|
+
var triggerSelect = function triggerSelect(val, selected, type) {
|
|
141
|
+
var getSelectEnt = function getSelectEnt() {
|
|
142
|
+
var option = getMixedOption(val);
|
|
143
|
+
return [labelInValue ? {
|
|
144
|
+
label: option.label,
|
|
145
|
+
value: val
|
|
146
|
+
} : val, injectPropsWithOption(option)];
|
|
147
|
+
};
|
|
148
|
+
if (selected && onSelect) {
|
|
149
|
+
var _getSelectEnt = getSelectEnt(),
|
|
150
|
+
_getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),
|
|
151
|
+
wrappedValue = _getSelectEnt2[0],
|
|
152
|
+
option = _getSelectEnt2[1];
|
|
153
|
+
onSelect(wrappedValue, option);
|
|
154
|
+
} else if (!selected && onDeselect && type !== 'clear') {
|
|
155
|
+
var _getSelectEnt3 = getSelectEnt(),
|
|
156
|
+
_getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),
|
|
157
|
+
_wrappedValue = _getSelectEnt4[0],
|
|
158
|
+
_option = _getSelectEnt4[1];
|
|
159
|
+
onDeselect(_wrappedValue, _option);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
// Used for OptionList selection
|
|
163
|
+
var onOptionSelect = function onOptionSelect(val) {
|
|
164
|
+
var selected = displayValues.find(function (item) {
|
|
165
|
+
return item.value.toString() === val;
|
|
166
|
+
});
|
|
167
|
+
if (isMultiple(mode)) {
|
|
168
|
+
if (!selected) {
|
|
169
|
+
triggerSelect(val, true, 'add');
|
|
170
|
+
} else {
|
|
171
|
+
triggerSelect(val, false, 'remove');
|
|
172
|
+
}
|
|
173
|
+
} else {
|
|
174
|
+
triggerSelect(val, true, 'add');
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
// ======================= Display Change =======================
|
|
178
|
+
// BaseSelect display values change
|
|
179
|
+
var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {
|
|
180
|
+
triggerChange(nextValues);
|
|
181
|
+
var type = info.type,
|
|
182
|
+
values = info.values;
|
|
183
|
+
if (type === 'remove' || type === 'clear') {
|
|
184
|
+
values.forEach(function (item) {
|
|
185
|
+
triggerSelect(item.value, false, type);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
var selectMenu = useMemo(function () {
|
|
190
|
+
return _objectSpread(_objectSpread({}, mergedMenu), {}, {
|
|
191
|
+
items: (mergedMenu === null || mergedMenu === void 0 ? void 0 : mergedMenu.items) || [],
|
|
192
|
+
onClick: function onClick(menuInfo) {
|
|
193
|
+
var _mergedMenu$onClick;
|
|
194
|
+
if (mode && isMultiple(mode)) {
|
|
195
|
+
if (displayValues.find(function (item) {
|
|
196
|
+
return item.value.toString() === menuInfo.key;
|
|
197
|
+
})) {
|
|
198
|
+
triggerChange(displayValues.filter(function (item) {
|
|
199
|
+
return item.value.toString() !== menuInfo.key;
|
|
200
|
+
}).map(function (item) {
|
|
201
|
+
return item.value;
|
|
202
|
+
}));
|
|
203
|
+
} else {
|
|
204
|
+
triggerChange([].concat(_toConsumableArray(displayValues), [menuInfo.key]));
|
|
205
|
+
}
|
|
206
|
+
} else {
|
|
207
|
+
triggerChange(menuInfo.key);
|
|
208
|
+
}
|
|
209
|
+
mergedMenu === null || mergedMenu === void 0 ? void 0 : (_mergedMenu$onClick = mergedMenu.onClick) === null || _mergedMenu$onClick === void 0 ? void 0 : _mergedMenu$onClick.call(mergedMenu, menuInfo);
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}, [mergedMenu, mode, displayValues, triggerChange]);
|
|
213
|
+
var displayMenu = useDisplayMenu(selectMenu, filterOption, innerSearchValue);
|
|
214
|
+
return /*#__PURE__*/React.createElement(BaseSelect, _extends({}, props, {
|
|
215
|
+
ref: ref,
|
|
216
|
+
displayValues: displayValues,
|
|
217
|
+
onDisplayValuesChange: onDisplayValuesChange,
|
|
218
|
+
setInnerSearchValue: setInnerSearchValue,
|
|
219
|
+
innerSearchValue: innerSearchValue,
|
|
220
|
+
onOptionSelect: onOptionSelect,
|
|
221
|
+
menu: selectMenu,
|
|
222
|
+
displayMenu: displayMenu
|
|
223
|
+
}));
|
|
224
|
+
});
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { PlacementType } from '../Dropdown';
|
|
3
|
+
import { MenuProps } from '../Menu';
|
|
4
|
+
import { CustomTagProps, Mode } from './BaseSelect';
|
|
5
|
+
type ArrayElementType<T> = T extends (infer E)[] ? E : T;
|
|
6
|
+
export interface ISelectProps<ValueType = any, OptionType extends BaseOptionType = DefaultOptionType> {
|
|
7
|
+
prefix?: React.ReactNode;
|
|
8
|
+
size?: 'small' | 'middle' | 'large';
|
|
9
|
+
mode?: Mode;
|
|
10
|
+
status?: 'success' | 'error';
|
|
11
|
+
suffixIcon?: React.ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
id?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
showSearch?: boolean;
|
|
16
|
+
searchValue?: string;
|
|
17
|
+
allowClear?: boolean;
|
|
18
|
+
showArrow?: boolean;
|
|
19
|
+
borderLess?: boolean;
|
|
20
|
+
width?: 'auto' | 'fill' | number;
|
|
21
|
+
dropdownClassName?: string;
|
|
22
|
+
popupClassName?: string;
|
|
23
|
+
placement?: PlacementType;
|
|
24
|
+
labelInValue?: boolean;
|
|
25
|
+
options?: OptionType[];
|
|
26
|
+
menu?: MenuProps;
|
|
27
|
+
value?: ValueType | null;
|
|
28
|
+
defaultValue?: ValueType | null;
|
|
29
|
+
onChange?: (value: ValueType, option: OptionType | OptionType[]) => void;
|
|
30
|
+
placeholder?: string;
|
|
31
|
+
onClear?: () => void;
|
|
32
|
+
dropdownRender?: (menu: React.ReactNode) => React.ReactNode;
|
|
33
|
+
dropdownStyle?: React.CSSProperties;
|
|
34
|
+
overlayStyle?: React.CSSProperties;
|
|
35
|
+
style?: React.CSSProperties;
|
|
36
|
+
open?: boolean;
|
|
37
|
+
onOpenChange?: (open: boolean) => void;
|
|
38
|
+
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
|
|
39
|
+
onInputKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
40
|
+
popupMatchSelectWidth?: boolean;
|
|
41
|
+
onSelect?: SelectHandler<ArrayElementType<ValueType>, OptionType>;
|
|
42
|
+
onDeselect?: SelectHandler<ArrayElementType<ValueType>, OptionType>;
|
|
43
|
+
notFoundContent?: React.ReactNode;
|
|
44
|
+
filterOption?: (inputValue: string, option: OptionType) => boolean;
|
|
45
|
+
tagRender?: (props: CustomTagProps, isPreview?: boolean) => React.ReactNode;
|
|
46
|
+
maxTagPlaceholder?: React.ReactNode | ((omittedValues: DisplayValueType[]) => React.ReactNode);
|
|
47
|
+
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
48
|
+
}
|
|
49
|
+
export interface BaseOptionType {
|
|
50
|
+
disabled?: boolean;
|
|
51
|
+
[name: string]: any;
|
|
52
|
+
}
|
|
53
|
+
export type SelectHandler<ValueType = any, OptionType extends BaseOptionType = DefaultOptionType> = ((value: RawValueType | LabelInValueType, option: OptionType) => void) | ((value: ValueType, option: OptionType) => void);
|
|
54
|
+
export interface BaseSelectRef {
|
|
55
|
+
focus: () => void;
|
|
56
|
+
blur: () => void;
|
|
57
|
+
open: () => void;
|
|
58
|
+
close: () => void;
|
|
59
|
+
}
|
|
60
|
+
export interface DisplayValueType {
|
|
61
|
+
key?: React.Key;
|
|
62
|
+
value?: RawValueType;
|
|
63
|
+
label?: React.ReactNode;
|
|
64
|
+
title?: React.ReactNode;
|
|
65
|
+
disabled?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export type ScrollAlign = 'top' | 'bottom' | 'auto';
|
|
68
|
+
export type ScrollConfig = {
|
|
69
|
+
index: number;
|
|
70
|
+
align?: ScrollAlign;
|
|
71
|
+
offset?: number;
|
|
72
|
+
} | {
|
|
73
|
+
key: React.Key;
|
|
74
|
+
align?: ScrollAlign;
|
|
75
|
+
offset?: number;
|
|
76
|
+
};
|
|
77
|
+
export type RawValueType = string | number;
|
|
78
|
+
export interface LabelInValueType {
|
|
79
|
+
label: React.ReactNode;
|
|
80
|
+
value: RawValueType;
|
|
81
|
+
disabled?: boolean;
|
|
82
|
+
}
|
|
83
|
+
export type DraftValueType = RawValueType | LabelInValueType | DisplayValueType | (RawValueType | LabelInValueType | DisplayValueType)[];
|
|
84
|
+
export type RenderDOMFunc = (triggerNode: HTMLElement) => HTMLElement;
|
|
85
|
+
export type DisplayInfoType = 'add' | 'remove' | 'clear';
|
|
86
|
+
export interface DefaultOptionType extends BaseOptionType {
|
|
87
|
+
label?: React.ReactNode;
|
|
88
|
+
value?: string | number | null;
|
|
89
|
+
children?: Omit<DefaultOptionType, 'children'>[];
|
|
90
|
+
}
|
|
91
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|