@hi-ui/check-select 4.0.0-alpha.5 → 4.0.0-alpha.9
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/lib/cjs/CheckSelect.js +122 -38
- package/lib/cjs/CheckSelect.js.map +1 -1
- package/lib/cjs/context.js +7 -7
- package/lib/cjs/context.js.map +1 -1
- package/lib/cjs/hooks/use-search.js +83 -10
- package/lib/cjs/hooks/use-search.js.map +1 -1
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/styles/index.scss.js +1 -1
- package/lib/cjs/use-check-select.js +40 -23
- package/lib/cjs/use-check-select.js.map +1 -1
- package/lib/cjs/utils/type-assertion/lib/esm/index.js +42 -0
- package/lib/cjs/utils/type-assertion/lib/esm/index.js.map +1 -0
- package/lib/esm/CheckSelect.js +120 -40
- package/lib/esm/CheckSelect.js.map +1 -1
- package/lib/esm/context.js +6 -6
- package/lib/esm/context.js.map +1 -1
- package/lib/esm/hooks/use-search.js +82 -10
- package/lib/esm/hooks/use-search.js.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/styles/index.scss.js +1 -1
- package/lib/esm/use-check-select.js +40 -23
- package/lib/esm/use-check-select.js.map +1 -1
- package/lib/esm/utils/type-assertion/lib/esm/index.js +33 -0
- package/lib/esm/utils/type-assertion/lib/esm/index.js.map +1 -0
- package/lib/types/CheckSelect.d.ts +38 -34
- package/lib/types/context.d.ts +10 -532
- package/lib/types/hooks/index.d.ts +0 -1
- package/lib/types/hooks/use-search.d.ts +2 -2
- package/lib/types/types.d.ts +16 -5
- package/lib/types/use-check-select.d.ts +65 -269
- package/package.json +13 -12
- package/lib/types/hooks/use-cache.d.ts +0 -8
@@ -31,41 +31,58 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
31
31
|
_a$emptyContent = _a.emptyContent,
|
32
32
|
emptyContent = _a$emptyContent === void 0 ? '无匹配选项' : _a$emptyContent,
|
33
33
|
searchPlaceholder = _a.searchPlaceholder,
|
34
|
+
filter = _a.filter,
|
34
35
|
titleRender = _a.titleRender,
|
35
|
-
rest = __rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "titleRender"]);
|
36
|
+
rest = __rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "filter", "titleRender"]);
|
36
37
|
|
37
38
|
var data = useMemo(function () {
|
38
39
|
if (children) {
|
39
|
-
var
|
40
|
-
|
41
|
-
|
42
|
-
var dfs = function dfs(list) {
|
40
|
+
var dfs = function dfs(child) {
|
41
|
+
var list = toArray(child);
|
42
|
+
var arr = [];
|
43
43
|
list.forEach(function (item) {
|
44
44
|
if (! /*#__PURE__*/React.isValidElement(item)) return; // @ts-ignore
|
45
45
|
|
46
|
-
if (item.type
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
46
|
+
if (item.type.HiName === 'CheckSelectOption') {
|
47
|
+
var props = item.props;
|
48
|
+
|
49
|
+
var _value = props.value,
|
50
|
+
_children = props.children,
|
51
|
+
_disabled = props.disabled,
|
52
|
+
_rest = __rest(props, ["value", "children", "disabled", "groupTitle"]);
|
53
|
+
|
54
|
+
var option = {
|
55
|
+
id: _value,
|
56
|
+
title: _children,
|
57
|
+
disabled: _disabled,
|
58
|
+
rootProps: _rest
|
59
|
+
};
|
60
|
+
arr.push(option); // @ts-ignore
|
61
|
+
} else if (item.type.HiName === 'CheckSelectOptionGroup') {
|
62
|
+
var _props = item.props;
|
53
63
|
|
54
|
-
|
64
|
+
var label = _props.label,
|
65
|
+
_children2 = _props.children,
|
66
|
+
_rest2 = __rest(_props, ["label", "children"]);
|
67
|
+
|
68
|
+
var optGroup = {
|
69
|
+
groupTitle: label,
|
70
|
+
children: [],
|
71
|
+
rootProps: _rest2
|
72
|
+
}; // @ts-ignore
|
73
|
+
|
74
|
+
if (_children2) {
|
75
|
+
// @ts-ignore
|
76
|
+
optGroup.children = dfs(_children2);
|
55
77
|
}
|
78
|
+
|
79
|
+
arr.push(optGroup);
|
56
80
|
}
|
57
81
|
});
|
82
|
+
return arr;
|
58
83
|
};
|
59
84
|
|
60
|
-
dfs(
|
61
|
-
return arr.map(function (_ref) {
|
62
|
-
var props = _ref.props;
|
63
|
-
return {
|
64
|
-
id: props.value,
|
65
|
-
title: props.children,
|
66
|
-
disabled: props.disabled || false
|
67
|
-
};
|
68
|
-
});
|
85
|
+
return dfs(children);
|
69
86
|
}
|
70
87
|
|
71
88
|
return dataProp;
|
@@ -90,7 +107,7 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
90
107
|
onOptionCheck = _useCheckDefault[0],
|
91
108
|
isSelectedId = _useCheckDefault[1];
|
92
109
|
|
93
|
-
var _useSearch = useSearch(data),
|
110
|
+
var _useSearch = useSearch(data, filter),
|
94
111
|
inSearch = _useSearch[0],
|
95
112
|
matchedItems = _useSearch[1],
|
96
113
|
inputProps = _useSearch[2],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-check-select.js","sources":["../../src/use-check-select.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","NOOP_VALUE","useCheckSelect","_a","data","dataProp","children","disabled","valueProp","value","defaultValue","onChangeProp","onChange","onSelect","emptyContent","searchPlaceholder","titleRender","rest","useMemo","list","toArray","arr","
|
1
|
+
{"version":3,"file":"use-check-select.js","sources":["../../src/use-check-select.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","NOOP_VALUE","useCheckSelect","_a","data","dataProp","children","disabled","valueProp","value","defaultValue","onChangeProp","onChange","onSelect","emptyContent","searchPlaceholder","filter","titleRender","rest","useMemo","dfs","child","list","toArray","arr","forEach","item","React","isValidElement","type","HiName","props","option","id","title","rootProps","push","label","optGroup","groupTitle","useUncontrolledState","tryChangeValue","onSelectLatest","useLatestCallback","proxyTryChangeValue","useCallback","shouldChecked","useCheckDefault","checkedIds","onCheck","allowCheck","onOptionCheck","isSelectedId","useSearch","inSearch","matchedItems","inputProps","isEmpty","resetSearch","getSearchInputProps","placeholder"],"mappings":"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"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/** @LICENSE
|
2
|
+
* @hi-ui/check-select
|
3
|
+
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-select#readme
|
4
|
+
*
|
5
|
+
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
+
*
|
7
|
+
* This source code is licensed under the MIT license found in the
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
9
|
+
*/
|
10
|
+
import '@babel/runtime/helpers/esm/typeof';
|
11
|
+
/**
|
12
|
+
* Assert is an array
|
13
|
+
*/
|
14
|
+
|
15
|
+
var isArray = Array.isArray;
|
16
|
+
/**
|
17
|
+
* Assert is an array and `array.length > 0`
|
18
|
+
*/
|
19
|
+
|
20
|
+
var isArrayNonEmpty = function isArrayNonEmpty(arg) {
|
21
|
+
return isArray(arg) && arg.length > 0;
|
22
|
+
};
|
23
|
+
/**
|
24
|
+
* Assert is function
|
25
|
+
*/
|
26
|
+
|
27
|
+
|
28
|
+
var isFunction = function isFunction(arg) {
|
29
|
+
return typeof arg === 'function';
|
30
|
+
};
|
31
|
+
|
32
|
+
export { isArray, isArrayNonEmpty, isFunction };
|
33
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../../utils/type-assertion/lib/esm/index.js"],"sourcesContent":["import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/** @LICENSE\n * @hi-ui/type-assertion\n * https://github.com/XiaoMi/hiui/tree/master/packages/utils/type-assertion#readme\n *\n * Copyright (c) HIUI <mi-hiui@xiaomi.com>.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * Assert is Nullish\n */\nvar isNullish = function isNullish(arg) {\n return arg === null || arg === undefined;\n};\n/**\n * Assert is an objectLike\n * TODO: Assert the return type\n */\n\n\nvar isObjectLike = function isObjectLike(arg) {\n return !!arg && _typeof(arg) === 'object';\n};\n/**\n * Assert is an object\n */\n\n\nvar isObject = function isObject(arg) {\n return isObjectLike(arg) && arg.constructor === Object;\n};\n/**\n * Assert is a dom element\n */\n\n\nvar isElement = function isElement(arg) {\n return isObjectLike(arg) && arg.constructor !== Object && arg.nodeType === 1;\n};\n/**\n * Assert is an Promise\n */\n\n\nvar isPromise = function isPromise(arg) {\n return (isObjectLike(arg) || typeof arg === 'function') && typeof arg.then === 'function';\n};\n/**\n * Assert is an array\n */\n\n\nvar isArray = Array.isArray;\n/**\n * Assert is an array and `array.length > 0`\n */\n\nvar isArrayNonEmpty = function isArrayNonEmpty(arg) {\n return isArray(arg) && arg.length > 0;\n};\n/**\n * Assert is numeric\n */\n\n\nvar isNumeric = function isNumeric(arg) {\n return !Number.isNaN(Number(arg));\n};\n/**\n * Assert is function\n */\n\n\nvar isFunction = function isFunction(arg) {\n return typeof arg === 'function';\n};\n\nexport { isArray, isArrayNonEmpty, isElement, isFunction, isNullish, isNumeric, isObject, isPromise };\n//# sourceMappingURL=index.js.map\n"],"names":["isArray","Array","isArrayNonEmpty","arg","isFunction"],"mappings":";;;;;;;;;;AAiCA;;;;IAGaA,OAAO,GAAoCC,KAAK,CAACD;AAE9D;;;;IAGaE,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,GAAA,EAAA;SAAiCH,OAAO,CAAPA,GAAO,CAAPA,IAAgBG,GAAG,CAAHA,MAAAA,GAAa;;AAO7F;;;;;IAGaC,UAAU,GAAG,SAAbA,UAAa,CAAAD,GAAA,EAAA;SACxB,OAAAA,GAAA,KAAe;;;"}
|
@@ -1,28 +1,28 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import
|
2
|
+
import { UseSelectProps } from './use-check-select';
|
3
|
+
import type { HiBaseHTMLFieldProps, HiBaseHTMLProps } from '@hi-ui/core';
|
3
4
|
import { PopperProps } from '@hi-ui/popper';
|
4
|
-
import { CheckSelectItem } from './types';
|
5
5
|
/**
|
6
6
|
* TODO: What is CheckSelect
|
7
7
|
*/
|
8
8
|
export declare const CheckSelect: React.ForwardRefExoticComponent<CheckSelectProps & React.RefAttributes<HTMLDivElement | null>>;
|
9
|
-
export interface CheckSelectProps extends Omit<
|
9
|
+
export interface CheckSelectProps extends Omit<HiBaseHTMLFieldProps<'div'>, 'onChange' | 'onSelect' | 'defaultValue'>, UseSelectProps {
|
10
10
|
/**
|
11
|
-
*
|
11
|
+
* 自定义控制 popper 行为
|
12
12
|
*/
|
13
|
-
|
13
|
+
popper?: PopperProps;
|
14
14
|
/**
|
15
|
-
*
|
15
|
+
* 设置虚拟滚动容器的可视高度
|
16
16
|
*/
|
17
|
-
|
17
|
+
height?: number;
|
18
18
|
/**
|
19
|
-
*
|
19
|
+
* 设置虚拟列表每项的固定高度
|
20
20
|
*/
|
21
|
-
|
21
|
+
itemHeight?: number;
|
22
22
|
/**
|
23
|
-
*
|
23
|
+
* 设置 `true` 开启虚拟滚动
|
24
24
|
*/
|
25
|
-
|
25
|
+
virtual?: boolean;
|
26
26
|
/**
|
27
27
|
* 是否可搜索(仅在 title 为字符串时支持)
|
28
28
|
*/
|
@@ -32,45 +32,49 @@ export interface CheckSelectProps extends Omit<HiBaseHTMLProps<'div'>, 'onChange
|
|
32
32
|
*/
|
33
33
|
clearable?: boolean;
|
34
34
|
/**
|
35
|
-
*
|
36
|
-
*/
|
37
|
-
disabled?: boolean;
|
38
|
-
/**
|
39
|
-
* 设置选项为空时展示的内容
|
35
|
+
* 是否开启换行全展示
|
40
36
|
*/
|
41
|
-
|
37
|
+
wrap?: boolean;
|
42
38
|
/**
|
43
|
-
*
|
39
|
+
* 是否点击清理 tags
|
44
40
|
*/
|
45
|
-
|
41
|
+
onClear?: () => void;
|
46
42
|
/**
|
47
|
-
*
|
43
|
+
* 自定义尺寸
|
48
44
|
*/
|
49
|
-
|
45
|
+
size?: 'sm' | 'md' | 'lg';
|
50
46
|
/**
|
51
|
-
*
|
47
|
+
* 面板打开时回调
|
52
48
|
*/
|
53
|
-
|
49
|
+
onOpen?: () => void;
|
54
50
|
/**
|
55
|
-
*
|
51
|
+
* 面板关闭时回调
|
56
52
|
*/
|
57
|
-
|
58
|
-
/**
|
59
|
-
* 自定义控制 popper 行为
|
60
|
-
*/
|
61
|
-
popper?: PopperProps;
|
53
|
+
onClose?: () => void;
|
62
54
|
/**
|
63
|
-
*
|
55
|
+
* 自定义 input 后缀 icon
|
64
56
|
*/
|
65
|
-
|
57
|
+
suffixIcon?: React.ReactNode;
|
66
58
|
/**
|
67
|
-
*
|
59
|
+
* 自定义清除 tags 的 icon
|
68
60
|
*/
|
69
|
-
|
61
|
+
clearIcon?: React.ReactNode;
|
70
62
|
}
|
71
|
-
|
63
|
+
/**
|
64
|
+
* TODO: What is CheckSelectSearch
|
65
|
+
*/
|
66
|
+
export declare const CheckSelectSearch: React.ForwardRefExoticComponent<Pick<SelectSearchProps, string | number> & React.RefAttributes<HTMLInputElement | null>>;
|
72
67
|
export interface SelectSearchProps extends HiBaseHTMLProps {
|
73
68
|
}
|
69
|
+
/**
|
70
|
+
* TODO: What is CheckSelectOption
|
71
|
+
*/
|
74
72
|
export declare const CheckSelectOption: React.ForwardRefExoticComponent<Pick<CheckSelectOptionProps, string | number> & React.RefAttributes<HTMLDivElement | null>>;
|
75
73
|
export interface CheckSelectOptionProps extends HiBaseHTMLProps {
|
76
74
|
}
|
75
|
+
/**
|
76
|
+
* TODO: What is CheckSelectOptionGroup
|
77
|
+
*/
|
78
|
+
export declare const CheckSelectOptionGroup: React.ForwardRefExoticComponent<Pick<CheckSelectOptionProps, string | number> & React.RefAttributes<HTMLDivElement | null>>;
|
79
|
+
export interface CheckSelectOptionGroupProps extends HiBaseHTMLProps {
|
80
|
+
}
|