@hi-ui/check-select 4.0.0-alpha.14 → 4.0.0-alpha.18
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 +204 -132
- package/lib/cjs/CheckSelect.js.map +1 -1
- package/lib/cjs/index.js +0 -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 +59 -33
- package/lib/cjs/use-check-select.js.map +1 -1
- package/lib/esm/CheckSelect.js +202 -129
- package/lib/esm/CheckSelect.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 +58 -32
- package/lib/esm/use-check-select.js.map +1 -1
- package/lib/types/CheckSelect.d.ts +44 -13
- package/lib/types/context.d.ts +6 -20
- package/lib/types/hooks/use-search.d.ts +2 -2
- package/lib/types/types.d.ts +28 -4
- package/lib/types/use-check-select.d.ts +15 -22
- package/package.json +25 -17
- package/lib/cjs/hooks/use-search.js +0 -154
- package/lib/cjs/hooks/use-search.js.map +0 -1
- package/lib/cjs/utils/type-assertion/lib/esm/index.js +0 -42
- package/lib/cjs/utils/type-assertion/lib/esm/index.js.map +0 -1
- package/lib/esm/hooks/use-search.js +0 -144
- package/lib/esm/hooks/use-search.js.map +0 -1
- package/lib/esm/utils/type-assertion/lib/esm/index.js +0 -33
- package/lib/esm/utils/type-assertion/lib/esm/index.js.map +0 -1
@@ -21,14 +21,14 @@ var React = require('react');
|
|
21
21
|
|
22
22
|
var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
|
23
23
|
|
24
|
-
var useSearch = require('./hooks/use-search.js');
|
25
|
-
|
26
24
|
var useCheck = require('@hi-ui/use-check');
|
27
25
|
|
28
26
|
var useLatest = require('@hi-ui/use-latest');
|
29
27
|
|
30
28
|
var useChildren = require('@hi-ui/use-children');
|
31
29
|
|
30
|
+
var treeUtils = require('@hi-ui/tree-utils');
|
31
|
+
|
32
32
|
function _interopDefaultLegacy(e) {
|
33
33
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
34
34
|
'default': e
|
@@ -39,6 +39,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
39
39
|
|
40
40
|
var NOOP_ARRAY = [];
|
41
41
|
var NOOP_VALUE = [];
|
42
|
+
var DEFAULT_FIELD_NAMES = {};
|
42
43
|
|
43
44
|
var useCheckSelect = function useCheckSelect(_a) {
|
44
45
|
var _a$data = _a.data,
|
@@ -53,16 +54,14 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
53
54
|
onSelect = _a.onSelect,
|
54
55
|
_a$emptyContent = _a.emptyContent,
|
55
56
|
emptyContent = _a$emptyContent === void 0 ? '无匹配选项' : _a$emptyContent,
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "filter", "titleRender"]);
|
57
|
+
_a$fieldNames = _a.fieldNames,
|
58
|
+
fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
|
59
|
+
rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "filter", "fieldNames"]);
|
60
60
|
|
61
61
|
var data = React.useMemo(function () {
|
62
62
|
if (children) {
|
63
|
-
var arr = [];
|
64
|
-
|
65
63
|
var dfs = function dfs(child) {
|
64
|
+
var arr = [];
|
66
65
|
var list = useChildren.toArray(child);
|
67
66
|
list.forEach(function (item) {
|
68
67
|
if (! /*#__PURE__*/React__default['default'].isValidElement(item)) return; // @ts-ignore
|
@@ -85,11 +84,13 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
85
84
|
} else if (item.type.HiName === 'CheckSelectOptionGroup') {
|
86
85
|
var _props = item.props;
|
87
86
|
|
88
|
-
var
|
87
|
+
var groupId = _props.groupId,
|
88
|
+
label = _props.label,
|
89
89
|
_children2 = _props.children,
|
90
|
-
_rest2 = tslib.__rest(_props, ["label", "children"]);
|
90
|
+
_rest2 = tslib.__rest(_props, ["groupId", "label", "children"]);
|
91
91
|
|
92
92
|
var optGroup = {
|
93
|
+
groupId: groupId,
|
93
94
|
groupTitle: label,
|
94
95
|
children: [],
|
95
96
|
rootProps: _rest2
|
@@ -111,6 +112,35 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
111
112
|
|
112
113
|
return dataProp;
|
113
114
|
}, [children, dataProp]);
|
115
|
+
/**
|
116
|
+
* 转换对象
|
117
|
+
*/
|
118
|
+
|
119
|
+
var getKeyFields = React.useCallback(function (node, key) {
|
120
|
+
return node[fieldNames[key] || key];
|
121
|
+
}, [fieldNames]);
|
122
|
+
var flattedData = React.useMemo(function () {
|
123
|
+
// @ts-ignore
|
124
|
+
return treeUtils.flattenTree(data, function (node) {
|
125
|
+
if ('groupId' in node.raw) {
|
126
|
+
// @ts-ignore
|
127
|
+
node.id = node.raw.groupId; // @ts-ignore
|
128
|
+
|
129
|
+
node.groupTitle = node.raw.groupTitle; // @ts-ignore
|
130
|
+
|
131
|
+
node.groupId = node.raw.groupId;
|
132
|
+
} else {
|
133
|
+
// TODO:support children field map
|
134
|
+
node.id = getKeyFields(node.raw, 'id'); // @ts-ignore
|
135
|
+
|
136
|
+
node.title = getKeyFields(node.raw, 'title'); // @ts-ignore
|
137
|
+
|
138
|
+
node.disabled = getKeyFields(node.raw, 'disabled');
|
139
|
+
}
|
140
|
+
|
141
|
+
return node;
|
142
|
+
});
|
143
|
+
}, [data, getKeyFields]);
|
114
144
|
|
115
145
|
var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChangeProp),
|
116
146
|
value = _useUncontrolledState[0],
|
@@ -129,34 +159,30 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
129
159
|
allowCheck: allowCheck
|
130
160
|
}),
|
131
161
|
onOptionCheck = _useCheckDefault[0],
|
132
|
-
isSelectedId = _useCheckDefault[1];
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
placeholder: searchPlaceholder,
|
144
|
-
value: inputProps.value,
|
145
|
-
onChange: inputProps.onChange
|
146
|
-
};
|
147
|
-
}, [searchPlaceholder, inputProps]);
|
162
|
+
isSelectedId = _useCheckDefault[1]; // const [inSearch, matchedItems, inputProps, isEmpty, resetSearch] = useSearch(data, filter)
|
163
|
+
// const getSearchInputProps = useCallback(
|
164
|
+
// () => ({
|
165
|
+
// placeholder: searchPlaceholder,
|
166
|
+
// value: inputProps.value,
|
167
|
+
// onChange: inputProps.onChange,
|
168
|
+
// }),
|
169
|
+
// [searchPlaceholder, inputProps]
|
170
|
+
// )
|
171
|
+
|
172
|
+
|
148
173
|
return {
|
149
174
|
rootProps: rest,
|
150
|
-
data: inSearch ? matchedItems : data,
|
175
|
+
// data: inSearch ? matchedItems : data,
|
176
|
+
data: data,
|
177
|
+
flattedData: flattedData,
|
151
178
|
value: value,
|
179
|
+
tryChangeValue: tryChangeValue,
|
152
180
|
onSelect: onOptionCheck,
|
153
181
|
isSelectedId: isSelectedId,
|
154
|
-
emptyContent: emptyContent,
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
resetSearch: resetSearch,
|
159
|
-
titleRender: titleRender
|
182
|
+
emptyContent: emptyContent // getSearchInputProps,
|
183
|
+
// isEmpty,
|
184
|
+
// resetSearch,
|
185
|
+
|
160
186
|
};
|
161
187
|
};
|
162
188
|
|
@@ -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","
|
1
|
+
{"version":3,"file":"use-check-select.js","sources":["../../src/use-check-select.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","NOOP_VALUE","DEFAULT_FIELD_NAMES","useCheckSelect","_a","data","dataProp","children","disabled","valueProp","value","defaultValue","onChangeProp","onChange","onSelect","emptyContent","fieldNames","rest","useMemo","dfs","child","arr","list","toArray","forEach","item","React","isValidElement","type","HiName","props","option","id","title","rootProps","push","groupId","label","optGroup","groupTitle","getKeyFields","useCallback","node","key","flattedData","flattenTree","raw","useUncontrolledState","tryChangeValue","onSelectLatest","useLatestCallback","proxyTryChangeValue","shouldChecked","useCheckDefault","checkedIds","onCheck","allowCheck","onOptionCheck","isSelectedId"],"mappings":"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"}
|
package/lib/esm/CheckSelect.js
CHANGED
@@ -8,19 +8,23 @@
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
9
9
|
*/
|
10
10
|
import { __rest } from 'tslib';
|
11
|
-
import React, { forwardRef,
|
11
|
+
import React, { forwardRef, useCallback, useState, useMemo } from 'react';
|
12
12
|
import { getPrefixCls, cx } from '@hi-ui/classname';
|
13
13
|
import { __DEV__ } from '@hi-ui/env';
|
14
|
-
import Input from '@hi-ui/input';
|
15
14
|
import { useCheckSelect } from './use-check-select.js';
|
16
|
-
import
|
17
|
-
import { DownOutlined, SearchOutlined } from '@hi-ui/icons';
|
15
|
+
import { UpOutlined, DownOutlined } from '@hi-ui/icons';
|
18
16
|
import { CheckSelectProvider, useCheckSelectContext } from './context.js';
|
19
|
-
import { useLatestCallback } from '@hi-ui/use-latest';
|
17
|
+
import { useLatestCallback, useLatestRef } from '@hi-ui/use-latest';
|
20
18
|
import Checkbox from '@hi-ui/checkbox';
|
21
|
-
import {
|
22
|
-
import { isFunction } from '
|
19
|
+
import { TagInputMock } from '@hi-ui/tag-input';
|
20
|
+
import { isFunction, isArrayNonEmpty } from '@hi-ui/type-assertion';
|
23
21
|
import VirtualList from 'rc-virtual-list';
|
22
|
+
import { Picker } from '@hi-ui/picker';
|
23
|
+
import { uniqBy } from 'lodash';
|
24
|
+
import { Highlighter } from '@hi-ui/highlighter';
|
25
|
+
import { useToggle } from '@hi-ui/use-toggle';
|
26
|
+
import { times } from '@hi-ui/times';
|
27
|
+
import { useAsyncSearch, useTreeCustomSearch, useFilterSearch, useSearchMode } from '@hi-ui/use-search-mode';
|
24
28
|
var _role = 'check-select';
|
25
29
|
|
26
30
|
var _prefix = getPrefixCls(_role);
|
@@ -32,19 +36,14 @@ var _prefix = getPrefixCls(_role);
|
|
32
36
|
var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
33
37
|
var _a$prefixCls = _a.prefixCls,
|
34
38
|
prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
|
35
|
-
_a$role = _a.role,
|
36
|
-
role = _a$role === void 0 ? _role : _a$role,
|
37
39
|
className = _a.className,
|
38
40
|
children = _a.children,
|
39
41
|
_a$disabled = _a.disabled,
|
40
42
|
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
41
43
|
_a$clearable = _a.clearable,
|
42
|
-
clearable = _a$clearable === void 0 ?
|
43
|
-
_a$
|
44
|
-
|
45
|
-
_a$wrap = _a.wrap,
|
46
|
-
wrap = _a$wrap === void 0 ? true : _a$wrap,
|
47
|
-
placeholder = _a.placeholder,
|
44
|
+
clearable = _a$clearable === void 0 ? true : _a$clearable,
|
45
|
+
_a$placeholder = _a.placeholder,
|
46
|
+
placeholder = _a$placeholder === void 0 ? '请选择' : _a$placeholder,
|
48
47
|
displayRenderProp = _a.displayRender,
|
49
48
|
onSelectProp = _a.onSelect,
|
50
49
|
height = _a.height,
|
@@ -52,31 +51,19 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
52
51
|
itemHeight = _a$itemHeight === void 0 ? 40 : _a$itemHeight,
|
53
52
|
_a$virtual = _a.virtual,
|
54
53
|
virtual = _a$virtual === void 0 ? true : _a$virtual,
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
var
|
65
|
-
menuVisible =
|
66
|
-
|
67
|
-
|
68
|
-
var onOpenLatest = useLatestCallback(onOpen);
|
69
|
-
var onCloseLatest = useLatestCallback(onClose);
|
70
|
-
var closeMenu = useCallback(function () {
|
71
|
-
if (disabled) return;
|
72
|
-
setMenuVisible(false);
|
73
|
-
onOpenLatest();
|
74
|
-
}, [disabled, onOpenLatest]);
|
75
|
-
var openMenu = useCallback(function () {
|
76
|
-
if (disabled) return;
|
77
|
-
setMenuVisible(true);
|
78
|
-
onCloseLatest();
|
79
|
-
}, [disabled, onCloseLatest]);
|
54
|
+
appearance = _a.appearance,
|
55
|
+
invalid = _a.invalid,
|
56
|
+
dataSource = _a.dataSource,
|
57
|
+
filterOption = _a.filterOption,
|
58
|
+
searchableProp = _a.searchable,
|
59
|
+
titleRender = _a.titleRender,
|
60
|
+
renderExtraFooter = _a.renderExtraFooter,
|
61
|
+
rest = __rest(_a, ["prefixCls", "role", "className", "children", "disabled", "clearable", "wrap", "placeholder", "displayRender", "onSelect", "popper", "height", "itemHeight", "virtual", "onOpen", "onClose", "appearance", "invalid", "dataSource", "filterOption", "searchable", "titleRender", "renderExtraFooter"]);
|
62
|
+
|
63
|
+
var _useToggle = useToggle(),
|
64
|
+
menuVisible = _useToggle[0],
|
65
|
+
menuVisibleAction = _useToggle[1];
|
66
|
+
|
80
67
|
var displayRender = useCallback(function (item) {
|
81
68
|
if (isFunction(displayRenderProp)) {
|
82
69
|
return displayRenderProp(item);
|
@@ -84,20 +71,90 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
84
71
|
|
85
72
|
return item.title;
|
86
73
|
}, [displayRenderProp]);
|
87
|
-
var
|
74
|
+
var onSelect = useLatestCallback(function (value, item, shouldChecked) {
|
75
|
+
onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(value, item, shouldChecked);
|
76
|
+
|
77
|
+
if (shouldChecked) {
|
78
|
+
// TODO:as useCheckList
|
79
|
+
setSelectedItems(function (prev) {
|
80
|
+
return [].concat(prev, [item]);
|
81
|
+
});
|
82
|
+
}
|
83
|
+
});
|
88
84
|
|
89
85
|
var _b = useCheckSelect(Object.assign(Object.assign({}, rest), {
|
90
86
|
children: children,
|
91
|
-
onSelect:
|
87
|
+
onSelect: onSelect
|
92
88
|
})),
|
93
|
-
rootProps = _b.rootProps,
|
94
89
|
context = __rest(_b, ["rootProps"]);
|
95
90
|
|
96
91
|
var value = context.value,
|
97
92
|
tryChangeValue = context.tryChangeValue,
|
98
|
-
|
93
|
+
flattedData = context.flattedData; // ************************** 异步搜索 ************************* //
|
94
|
+
// TODO: 支持对 Item 传入 状态
|
95
|
+
|
96
|
+
var _c = useAsyncSearch({
|
97
|
+
dataSource: dataSource
|
98
|
+
}),
|
99
|
+
loading = _c.loading,
|
100
|
+
hasError = _c.hasError,
|
101
|
+
dataSourceStrategy = __rest(_c, ["loading", "hasError"]);
|
102
|
+
|
103
|
+
var customSearchStrategy = useTreeCustomSearch({
|
104
|
+
data: flattedData,
|
105
|
+
filterOption: filterOption
|
106
|
+
});
|
107
|
+
var filterSearchStrategy = useFilterSearch({
|
108
|
+
data: flattedData,
|
109
|
+
flattedData: flattedData,
|
110
|
+
searchMode: searchableProp ? 'filter' : undefined
|
111
|
+
});
|
112
|
+
|
113
|
+
var _useSearchMode = useSearchMode({
|
114
|
+
searchable: searchableProp,
|
115
|
+
strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy]
|
116
|
+
}),
|
117
|
+
stateInSearch = _useSearchMode.state,
|
118
|
+
searchable = _useSearchMode.searchable,
|
119
|
+
searchMode = _useSearchMode.searchMode,
|
120
|
+
onSearch = _useSearchMode.onSearch,
|
121
|
+
searchValue = _useSearchMode.keyword; // 拦截 titleRender,自定义高亮展示
|
122
|
+
|
123
|
+
|
124
|
+
var proxyTitleRender = useCallback(function (node) {
|
125
|
+
if (titleRender) {
|
126
|
+
var _ret = titleRender(node);
|
127
|
+
|
128
|
+
if (_ret && _ret !== true) return _ret;
|
129
|
+
} // 本地搜索执行默认高亮规则
|
130
|
+
|
131
|
+
|
132
|
+
var highlight = !!searchValue && (searchMode === 'highlight' || searchMode === 'filter');
|
133
|
+
var ret = highlight ? /*#__PURE__*/React.createElement(Checkbox, {
|
134
|
+
checked: node.checked,
|
135
|
+
disabled: node.disabled
|
136
|
+
}, /*#__PURE__*/React.createElement(Highlighter, {
|
137
|
+
keyword: searchValue
|
138
|
+
}, node.title)) : true;
|
139
|
+
return ret;
|
140
|
+
}, [titleRender, searchValue, searchMode]);
|
141
|
+
var shouldUseSearch = !!searchValue && !hasError;
|
142
|
+
var selectProps = {
|
143
|
+
data: shouldUseSearch ? stateInSearch.data : flattedData,
|
144
|
+
titleRender: proxyTitleRender
|
145
|
+
}; // 搜索时临时选中缓存数据
|
146
|
+
|
147
|
+
var _useState = useState([]),
|
148
|
+
selectedItems = _useState[0],
|
149
|
+
setSelectedItems = _useState[1]; // 下拉菜单不能合并(因为树形数据,不知道是第几级)
|
150
|
+
|
151
|
+
|
152
|
+
var mergedData = useMemo(function () {
|
153
|
+
var nextData = selectedItems.concat(flattedData);
|
154
|
+
return uniqBy(nextData, 'id');
|
155
|
+
}, [selectedItems, flattedData]);
|
99
156
|
var virtualData = useMemo(function () {
|
100
|
-
return
|
157
|
+
return selectProps.data.reduce(function (acc, cur, index) {
|
101
158
|
if ('groupTitle' in cur) {
|
102
159
|
acc.push({
|
103
160
|
id: "group-" + index,
|
@@ -110,35 +167,53 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
110
167
|
acc.push(cur);
|
111
168
|
return acc;
|
112
169
|
}, []);
|
113
|
-
}, [
|
114
|
-
var cls = cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
|
115
|
-
|
116
|
-
var TagInput$1 = wrap ? TagInput : TagInputMock;
|
170
|
+
}, [selectProps.data]);
|
171
|
+
var cls = cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
|
117
172
|
return /*#__PURE__*/React.createElement(CheckSelectProvider, {
|
118
173
|
value: context
|
119
|
-
}, /*#__PURE__*/React.createElement(
|
174
|
+
}, /*#__PURE__*/React.createElement(Picker, Object.assign({
|
120
175
|
ref: ref,
|
121
|
-
role: role,
|
122
176
|
className: cls
|
123
|
-
},
|
124
|
-
ref: setTargetElRef,
|
125
|
-
onClick: openMenu,
|
126
|
-
disabled: disabled,
|
127
|
-
clearable: clearable,
|
128
|
-
placeholder: placeholder,
|
129
|
-
data: selectData,
|
130
|
-
value: value,
|
131
|
-
wrap: wrap,
|
132
|
-
onChange: tryChangeValue,
|
133
|
-
displayRender: displayRender,
|
134
|
-
suffix: /*#__PURE__*/React.createElement(DownOutlined, null)
|
135
|
-
}), /*#__PURE__*/React.createElement(Popper, Object.assign({}, popper, {
|
136
|
-
attachEl: targetElRef,
|
177
|
+
}, rest, {
|
137
178
|
visible: menuVisible,
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
179
|
+
onOpen: function onOpen() {
|
180
|
+
// setViewSelected(false)
|
181
|
+
menuVisibleAction.on();
|
182
|
+
},
|
183
|
+
disabled: disabled,
|
184
|
+
onClose: menuVisibleAction.off,
|
185
|
+
// value={value}
|
186
|
+
// onChange={tryChangeValue}
|
187
|
+
// data={mergedData}
|
188
|
+
searchable: searchable,
|
189
|
+
onSearch: onSearch,
|
190
|
+
loading: loading,
|
191
|
+
footer: renderExtraFooter ? renderExtraFooter() : null,
|
192
|
+
trigger: /*#__PURE__*/React.createElement(TagInputMock // ref={targetElementRef}
|
193
|
+
// onClick={openMenu}
|
194
|
+
// disabled={disabled}
|
195
|
+
, {
|
196
|
+
// ref={targetElementRef}
|
197
|
+
// onClick={openMenu}
|
198
|
+
// disabled={disabled}
|
199
|
+
clearable: clearable,
|
200
|
+
placeholder: placeholder,
|
201
|
+
// @ts-ignore
|
202
|
+
displayRender: displayRender,
|
203
|
+
suffix: menuVisible ? /*#__PURE__*/React.createElement(UpOutlined, null) : /*#__PURE__*/React.createElement(DownOutlined, null),
|
204
|
+
focused: menuVisible,
|
205
|
+
appearance: appearance,
|
206
|
+
value: value,
|
207
|
+
onChange: tryChangeValue,
|
208
|
+
data: mergedData,
|
209
|
+
// @ts-ignore
|
210
|
+
invalid: invalid,
|
211
|
+
onExpand: function onExpand() {
|
212
|
+
// setViewSelected(true)
|
213
|
+
menuVisibleAction.on();
|
214
|
+
}
|
215
|
+
})
|
216
|
+
}), isArrayNonEmpty(virtualData) ? /*#__PURE__*/React.createElement(VirtualList, {
|
142
217
|
itemKey: "id",
|
143
218
|
fullHeight: false,
|
144
219
|
height: height,
|
@@ -147,12 +222,14 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
147
222
|
data: virtualData
|
148
223
|
}, function (node) {
|
149
224
|
/* 反向 map,搜索删选数据时会对数据进行处理 */
|
150
|
-
return 'groupTitle' in node ? /*#__PURE__*/React.createElement(CheckSelectOptionGroup,
|
225
|
+
return 'groupTitle' in node ? /*#__PURE__*/React.createElement(CheckSelectOptionGroup, {
|
151
226
|
label: node.groupTitle
|
152
|
-
}
|
153
|
-
option: node
|
154
|
-
|
155
|
-
|
227
|
+
}) : /*#__PURE__*/React.createElement(CheckSelectOption, {
|
228
|
+
option: node,
|
229
|
+
depth: node.depth,
|
230
|
+
titleRender: proxyTitleRender
|
231
|
+
});
|
232
|
+
}) : null));
|
156
233
|
}); // @ts-ignore
|
157
234
|
|
158
235
|
CheckSelect.HiName = 'CheckSelect';
|
@@ -161,77 +238,55 @@ if (__DEV__) {
|
|
161
238
|
CheckSelect.displayName = 'CheckSelect';
|
162
239
|
}
|
163
240
|
|
164
|
-
var searchPrefix = getPrefixCls('check-select-search');
|
165
|
-
/**
|
166
|
-
* TODO: What is CheckSelectSearch
|
167
|
-
*/
|
168
|
-
|
169
|
-
var CheckSelectSearch = /*#__PURE__*/forwardRef(function (_a, ref) {
|
170
|
-
var _a$prefixCls2 = _a.prefixCls,
|
171
|
-
prefixCls = _a$prefixCls2 === void 0 ? searchPrefix : _a$prefixCls2,
|
172
|
-
className = _a.className,
|
173
|
-
rest = __rest(_a, ["prefixCls", "className"]);
|
174
|
-
|
175
|
-
var _useCheckSelectContex = useCheckSelectContext(),
|
176
|
-
isEmpty = _useCheckSelectContex.isEmpty,
|
177
|
-
emptyContent = _useCheckSelectContex.emptyContent,
|
178
|
-
getSearchInputProps = _useCheckSelectContex.getSearchInputProps;
|
179
|
-
|
180
|
-
return /*#__PURE__*/React.createElement("div", Object.assign({
|
181
|
-
ref: ref,
|
182
|
-
className: cx(prefixCls, className)
|
183
|
-
}, rest), /*#__PURE__*/React.createElement(Input, Object.assign({}, getSearchInputProps(), {
|
184
|
-
appearance: "underline",
|
185
|
-
prefix: /*#__PURE__*/React.createElement(SearchOutlined, null)
|
186
|
-
})), isEmpty ? /*#__PURE__*/React.createElement("span", {
|
187
|
-
className: prefixCls + "__empty"
|
188
|
-
}, emptyContent) : null);
|
189
|
-
});
|
190
|
-
|
191
|
-
if (__DEV__) {
|
192
|
-
CheckSelectSearch.displayName = 'CheckSelectSearch';
|
193
|
-
}
|
194
|
-
|
195
241
|
var optionPrefix = getPrefixCls('check-select-option');
|
196
242
|
/**
|
197
243
|
* TODO: What is CheckSelectOption
|
198
244
|
*/
|
199
245
|
|
200
246
|
var CheckSelectOption = /*#__PURE__*/forwardRef(function (_a, ref) {
|
201
|
-
var _a$
|
202
|
-
prefixCls = _a$
|
247
|
+
var _a$prefixCls2 = _a.prefixCls,
|
248
|
+
prefixCls = _a$prefixCls2 === void 0 ? optionPrefix : _a$prefixCls2,
|
203
249
|
className = _a.className,
|
204
250
|
_a$option = _a.option,
|
205
251
|
option = _a$option === void 0 ? {} : _a$option,
|
206
252
|
onClick = _a.onClick,
|
207
|
-
|
253
|
+
titleRender = _a.titleRender,
|
254
|
+
depth = _a.depth,
|
255
|
+
rest = __rest(_a, ["prefixCls", "className", "children", "option", "onClick", "titleRender", "depth"]);
|
208
256
|
|
209
|
-
var
|
210
|
-
isSelectedId =
|
211
|
-
onSelect =
|
212
|
-
titleRender = _useCheckSelectContex2.titleRender;
|
257
|
+
var _useCheckSelectContex = useCheckSelectContext(),
|
258
|
+
isSelectedId = _useCheckSelectContex.isSelectedId,
|
259
|
+
onSelect = _useCheckSelectContex.onSelect;
|
213
260
|
|
214
|
-
var
|
215
|
-
|
261
|
+
var id = option.id,
|
262
|
+
_option$disabled = option.disabled,
|
216
263
|
disabled = _option$disabled === void 0 ? false : _option$disabled;
|
217
|
-
var
|
264
|
+
var selected = isSelectedId(id);
|
265
|
+
var eventNodeRef = useLatestRef(Object.assign({}, option, {
|
266
|
+
disabled: disabled,
|
267
|
+
checked: selected
|
268
|
+
}));
|
269
|
+
var cls = cx(prefixCls, className, selected && prefixCls + "--selected", disabled && prefixCls + "--disabled");
|
218
270
|
var handleOptionCheck = useCallback(function (evt) {
|
219
|
-
onSelect(option, !
|
271
|
+
onSelect(option, !selected);
|
220
272
|
onClick === null || onClick === void 0 ? void 0 : onClick(evt);
|
221
|
-
}, [onSelect, option,
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
273
|
+
}, [onSelect, option, selected, onClick]);
|
274
|
+
var renderTitle = useCallback(function (node, titleRender) {
|
275
|
+
// 如果 titleRender 返回 `true`,则使用默认 title
|
276
|
+
var title = titleRender ? titleRender(node) : true;
|
277
|
+
return /*#__PURE__*/React.createElement("div", {
|
278
|
+
className: prefixCls + "__title"
|
279
|
+
}, title === true ? /*#__PURE__*/React.createElement(Checkbox, {
|
280
|
+
checked: node.checked,
|
281
|
+
disabled: node.disabled
|
282
|
+
}, node.title) : title);
|
283
|
+
}, [prefixCls]);
|
226
284
|
return /*#__PURE__*/React.createElement("div", Object.assign({
|
227
285
|
ref: ref,
|
228
286
|
className: cls
|
229
287
|
}, rest, {
|
230
288
|
onClick: handleOptionCheck
|
231
|
-
}),
|
232
|
-
checked: checked,
|
233
|
-
disabled: option.disabled
|
234
|
-
}, option.title) : title);
|
289
|
+
}), renderIndent(prefixCls, depth), renderTitle(eventNodeRef.current, titleRender));
|
235
290
|
}); // @ts-ignore
|
236
291
|
|
237
292
|
CheckSelectOption.HiName = 'CheckSelectOption';
|
@@ -239,14 +294,15 @@ CheckSelectOption.HiName = 'CheckSelectOption';
|
|
239
294
|
if (__DEV__) {
|
240
295
|
CheckSelectOption.displayName = 'CheckSelectOption';
|
241
296
|
}
|
297
|
+
|
298
|
+
var optionGroupPrefix = getPrefixCls('select-option-group');
|
242
299
|
/**
|
243
300
|
* TODO: What is CheckSelectOptionGroup
|
244
301
|
*/
|
245
302
|
|
246
|
-
|
247
303
|
var CheckSelectOptionGroup = /*#__PURE__*/forwardRef(function (_a, ref) {
|
248
|
-
var _a$
|
249
|
-
prefixCls = _a$
|
304
|
+
var _a$prefixCls3 = _a.prefixCls,
|
305
|
+
prefixCls = _a$prefixCls3 === void 0 ? optionGroupPrefix : _a$prefixCls3,
|
250
306
|
className = _a.className,
|
251
307
|
label = _a.label,
|
252
308
|
rest = __rest(_a, ["prefixCls", "className", "children", "label", "onClick"]);
|
@@ -263,6 +319,23 @@ CheckSelectOptionGroup.HiName = 'CheckSelectOptionGroup';
|
|
263
319
|
if (__DEV__) {
|
264
320
|
CheckSelectOptionGroup.displayName = 'CheckSelectOptionGroup';
|
265
321
|
}
|
322
|
+
/**
|
323
|
+
* 渲染空白占位
|
324
|
+
*/
|
325
|
+
|
326
|
+
|
327
|
+
var renderIndent = function renderIndent(prefixCls, depth) {
|
328
|
+
return times(depth, function (index) {
|
329
|
+
return /*#__PURE__*/React.createElement("span", {
|
330
|
+
key: index,
|
331
|
+
style: {
|
332
|
+
alignSelf: 'stretch'
|
333
|
+
}
|
334
|
+
}, /*#__PURE__*/React.createElement("span", {
|
335
|
+
className: cx(prefixCls + "__indent")
|
336
|
+
}));
|
337
|
+
});
|
338
|
+
};
|
266
339
|
|
267
|
-
export { CheckSelect, CheckSelectOption, CheckSelectOptionGroup
|
340
|
+
export { CheckSelect, CheckSelectOption, CheckSelectOptionGroup };
|
268
341
|
//# sourceMappingURL=CheckSelect.js.map
|