@hi-ui/check-cascader 4.2.1 → 4.2.3
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/CHANGELOG.md +41 -0
- package/lib/cjs/CheckCascader.js +73 -123
- package/lib/cjs/CheckCascaderMenu.js +33 -69
- package/lib/cjs/CheckCascaderMenuList.js +43 -78
- package/lib/cjs/context.js +0 -9
- package/lib/cjs/hooks/use-async-switch.js +10 -50
- package/lib/cjs/hooks/use-cache/lib/esm/index.js +3 -10
- package/lib/cjs/hooks/use-check.js +9 -22
- package/lib/cjs/hooks/use-select.js +3 -10
- package/lib/cjs/icons/index.js +3 -20
- package/lib/cjs/index.js +0 -3
- package/lib/cjs/styles/index.scss.js +1 -4
- package/lib/cjs/utils/index.js +8 -49
- package/lib/esm/CheckCascader.js +65 -84
- package/lib/esm/CheckCascaderMenu.js +23 -36
- package/lib/esm/CheckCascaderMenuList.js +40 -49
- package/lib/esm/context.js +0 -4
- package/lib/esm/hooks/use-async-switch.js +6 -28
- package/lib/esm/hooks/use-cache/lib/esm/index.js +3 -5
- package/lib/esm/hooks/use-check.js +10 -16
- package/lib/esm/hooks/use-select.js +3 -5
- package/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/utils/index.js +8 -43
- package/package.json +26 -26
package/lib/cjs/utils/index.js
CHANGED
@@ -9,21 +9,15 @@
|
|
9
9
|
*/
|
10
10
|
'use strict';
|
11
11
|
|
12
|
-
Object.defineProperty(exports, '__esModule', {
|
13
|
-
value: true
|
14
|
-
});
|
15
|
-
|
16
12
|
var treeUtils = require('@hi-ui/tree-utils');
|
17
|
-
|
18
13
|
var typeAssertion = require('@hi-ui/type-assertion');
|
14
|
+
|
19
15
|
/**
|
20
16
|
* 扁平化树数据结构,基于前序遍历
|
21
17
|
*
|
22
18
|
* @param treeData
|
23
19
|
* @returns
|
24
20
|
*/
|
25
|
-
|
26
|
-
|
27
21
|
var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
28
22
|
/**
|
29
23
|
* 转换对象
|
@@ -32,10 +26,8 @@ var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
|
32
26
|
if (fieldNames) {
|
33
27
|
return node[fieldNames[key] || key];
|
34
28
|
}
|
35
|
-
|
36
29
|
return node[key];
|
37
30
|
};
|
38
|
-
|
39
31
|
return treeUtils.baseFlattenTree({
|
40
32
|
tree: treeData,
|
41
33
|
childrenFieldName: function childrenFieldName(node) {
|
@@ -43,7 +35,6 @@ var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
|
43
35
|
},
|
44
36
|
transform: function transform(node) {
|
45
37
|
var _a, _b, _c, _d;
|
46
|
-
|
47
38
|
var flattedNode = node;
|
48
39
|
var raw = node.raw;
|
49
40
|
flattedNode.id = getKeyFields(raw, 'id');
|
@@ -56,7 +47,6 @@ var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
|
56
47
|
}
|
57
48
|
});
|
58
49
|
};
|
59
|
-
|
60
50
|
var getActiveMenus = function getActiveMenus(data, selectedIds) {
|
61
51
|
if (data.length === 0) return [];
|
62
52
|
var root = data[0].parent;
|
@@ -67,28 +57,23 @@ var getActiveMenus = function getActiveMenus(data, selectedIds) {
|
|
67
57
|
return selectedIds === id;
|
68
58
|
});
|
69
59
|
if (!selectedOption) return menu;
|
70
|
-
|
71
60
|
if (selectedOption.children) {
|
72
61
|
menu = [selectedOption.children];
|
73
62
|
} else {
|
74
63
|
menu = [];
|
75
64
|
}
|
76
|
-
|
77
65
|
while (selectedOption.parent) {
|
78
66
|
menu.push(selectedOption.parent.children);
|
79
67
|
selectedOption = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.parent;
|
80
68
|
}
|
81
|
-
|
82
69
|
return menu.reverse();
|
83
70
|
};
|
84
|
-
|
85
71
|
var getFlattedMenus = function getFlattedMenus(data) {
|
86
72
|
return [data.filter(function (_ref2) {
|
87
73
|
var checkable = _ref2.checkable;
|
88
74
|
return checkable;
|
89
75
|
})];
|
90
76
|
};
|
91
|
-
|
92
77
|
var getActiveMenuIds = function getActiveMenuIds(data, selectedIds) {
|
93
78
|
if (data.length === 0) return [];
|
94
79
|
var selectedOption = data.find(function (_ref3) {
|
@@ -101,7 +86,6 @@ var getActiveMenuIds = function getActiveMenuIds(data, selectedIds) {
|
|
101
86
|
return id;
|
102
87
|
});
|
103
88
|
};
|
104
|
-
|
105
89
|
function getCascaderItemEventData(node, requiredProps) {
|
106
90
|
return Object.assign(Object.assign({}, node), requiredProps);
|
107
91
|
}
|
@@ -112,19 +96,14 @@ function getCascaderItemEventData(node, requiredProps) {
|
|
112
96
|
* @param nodeEntries 所有数据的Map 集合
|
113
97
|
* @param type 数据回显方式
|
114
98
|
*/
|
115
|
-
|
116
|
-
|
117
99
|
var processCheckedIds = function processCheckedIds(type, checkedIds, flattenData, allowCheck) {
|
118
100
|
var keySet = new Set(checkedIds);
|
119
|
-
|
120
101
|
switch (type) {
|
121
102
|
case 'CHILD':
|
122
103
|
return checkedIds.filter(function (id) {
|
123
104
|
var node = treeUtils.fFindNodeById(flattenData, id);
|
124
|
-
|
125
105
|
if (node) {
|
126
106
|
var children = node.children;
|
127
|
-
|
128
107
|
if (typeAssertion.isArrayNonEmpty(children)) {
|
129
108
|
if (children.filter(allowCheck).every(function (node) {
|
130
109
|
return keySet.has(node.id);
|
@@ -132,48 +111,38 @@ var processCheckedIds = function processCheckedIds(type, checkedIds, flattenData
|
|
132
111
|
return false;
|
133
112
|
}
|
134
113
|
}
|
135
|
-
}
|
136
|
-
|
137
|
-
|
114
|
+
}
|
115
|
+
// 没有孩子节点,保留
|
138
116
|
return true;
|
139
117
|
});
|
140
|
-
|
141
118
|
case 'PARENT':
|
142
119
|
return checkedIds.filter(function (id) {
|
143
120
|
var node = treeUtils.fFindNodeById(flattenData, id);
|
144
|
-
|
145
121
|
if (node) {
|
146
122
|
// 向上递归遍历是否被勾选
|
147
123
|
var ancestors = treeUtils.getNodeAncestors(node);
|
148
|
-
|
149
124
|
if (ancestors.some(function (parent) {
|
150
125
|
return keySet.has(parent.id);
|
151
126
|
})) {
|
152
127
|
return false;
|
153
128
|
}
|
154
129
|
}
|
155
|
-
|
156
130
|
return true;
|
157
131
|
});
|
158
132
|
}
|
159
|
-
|
160
133
|
return checkedIds;
|
161
134
|
};
|
162
135
|
/**
|
163
136
|
* 根据传入的 checkedIds 解析全选/半选数据
|
164
137
|
*/
|
165
|
-
|
166
|
-
|
167
138
|
var parseCheckDataDirty = function parseCheckDataDirty(type, checkedIds, flattenData, allowCheck) {
|
168
139
|
switch (type) {
|
169
140
|
case 'CHILD':
|
170
141
|
case 'PARENT':
|
171
142
|
return dirtyCheck(checkedIds, flattenData, allowCheck);
|
172
143
|
}
|
173
|
-
|
174
144
|
return checkedIds;
|
175
145
|
};
|
176
|
-
|
177
146
|
function dirtyCheck(checkedIds, flattenData, allowCheck) {
|
178
147
|
var nodeEntities = flattenData.reduce(function (prev, cur) {
|
179
148
|
prev[cur.id] = cur;
|
@@ -183,18 +152,16 @@ function dirtyCheck(checkedIds, flattenData, allowCheck) {
|
|
183
152
|
return !!nodeEntities[id];
|
184
153
|
}));
|
185
154
|
var depthEntities = new Map();
|
186
|
-
var maxDepth = 0;
|
187
|
-
|
155
|
+
var maxDepth = 0;
|
156
|
+
// Convert entities by depth for calculation
|
188
157
|
Object.keys(nodeEntities).forEach(function (id) {
|
189
158
|
var entity = nodeEntities[id];
|
190
159
|
var depth = entity.depth;
|
191
160
|
var depthSet = depthEntities.get(depth);
|
192
|
-
|
193
161
|
if (!depthSet) {
|
194
162
|
depthSet = new Set();
|
195
163
|
depthEntities.set(depth, depthSet);
|
196
164
|
}
|
197
|
-
|
198
165
|
depthSet.add(entity);
|
199
166
|
maxDepth = Math.max(maxDepth, depth);
|
200
167
|
});
|
@@ -206,8 +173,6 @@ function dirtyCheck(checkedIds, flattenData, allowCheck) {
|
|
206
173
|
* 1. 把所有嵌套孩子节点 allowCheck 的都标记为 checked
|
207
174
|
* 2. 祖先节点从下至上维护 checked 状态
|
208
175
|
*/
|
209
|
-
|
210
|
-
|
211
176
|
function fillCheck(checkedIds, depthEntities, nodeEntities, maxDepth, allowCheck) {
|
212
177
|
var checkedIdsSet = new Set(checkedIds);
|
213
178
|
checkedIdsSet.forEach(function (id) {
|
@@ -216,37 +181,31 @@ function fillCheck(checkedIds, depthEntities, nodeEntities, maxDepth, allowCheck
|
|
216
181
|
nestedChildren.forEach(function (child) {
|
217
182
|
checkedIdsSet.add(child.id);
|
218
183
|
});
|
219
|
-
});
|
220
|
-
|
184
|
+
});
|
185
|
+
// 缓存中间结果,优化查询
|
221
186
|
var visitedIds = new Map();
|
222
|
-
|
223
187
|
for (var depth = maxDepth - 1; depth >= 0; --depth) {
|
224
188
|
var entities = depthEntities.get(depth);
|
225
189
|
entities === null || entities === void 0 ? void 0 : entities.forEach(function (entity) {
|
226
190
|
var id = entity.id,
|
227
|
-
|
191
|
+
children = entity.children;
|
228
192
|
if (visitedIds.has(id)) return;
|
229
|
-
|
230
193
|
if (typeAssertion.isArrayNonEmpty(children)) {
|
231
194
|
var shouldChecked = !children.some(function (child) {
|
232
195
|
if (visitedIds.has(child.id)) {
|
233
196
|
return !visitedIds.get(child.id);
|
234
197
|
}
|
235
|
-
|
236
198
|
return !checkedIdsSet.has(child.id);
|
237
199
|
});
|
238
200
|
visitedIds.set(id, shouldChecked);
|
239
|
-
|
240
201
|
if (shouldChecked && allowCheck(entity)) {
|
241
202
|
checkedIdsSet.add(id);
|
242
203
|
}
|
243
204
|
}
|
244
205
|
});
|
245
206
|
}
|
246
|
-
|
247
207
|
return Array.from(checkedIdsSet);
|
248
208
|
}
|
249
|
-
|
250
209
|
exports.flattenTreeData = flattenTreeData;
|
251
210
|
exports.getActiveMenuIds = getActiveMenuIds;
|
252
211
|
exports.getActiveMenus = getActiveMenus;
|
package/lib/esm/CheckCascader.js
CHANGED
@@ -25,109 +25,96 @@ import { useLatestCallback } from '@hi-ui/use-latest';
|
|
25
25
|
import { isUndef, isFunction, isArrayNonEmpty } from '@hi-ui/type-assertion';
|
26
26
|
import { useLocaleContext } from '@hi-ui/core';
|
27
27
|
import { callAllFuncs } from '@hi-ui/func-utils';
|
28
|
-
|
29
28
|
var _prefix = getPrefixCls('check-cascader');
|
30
|
-
|
31
29
|
var NOOP_ARRAY = [];
|
32
30
|
/**
|
33
31
|
* 多项级联选择器
|
34
32
|
*/
|
35
|
-
|
36
33
|
var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
|
37
34
|
var _a$prefixCls = _a.prefixCls,
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
35
|
+
prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
|
36
|
+
className = _a.className,
|
37
|
+
_a$defaultValue = _a.defaultValue,
|
38
|
+
defaultValue = _a$defaultValue === void 0 ? NOOP_ARRAY : _a$defaultValue,
|
39
|
+
valueProp = _a.value,
|
40
|
+
onChange = _a.onChange,
|
41
|
+
_a$data = _a.data,
|
42
|
+
data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
|
43
|
+
placeholderProp = _a.placeholder,
|
44
|
+
clearable = _a.clearable,
|
45
|
+
onSelect = _a.onSelect,
|
46
|
+
expandTrigger = _a.expandTrigger,
|
47
|
+
_a$disabled = _a.disabled,
|
48
|
+
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
49
|
+
changeOnSelect = _a.changeOnSelect,
|
50
|
+
titleRender = _a.render,
|
51
|
+
displayRender = _a.displayRender,
|
52
|
+
checkCascaded = _a.checkCascaded,
|
53
|
+
onLoadChildren = _a.onLoadChildren,
|
54
|
+
appearance = _a.appearance,
|
55
|
+
invalid = _a.invalid,
|
56
|
+
filterOption = _a.filterOption,
|
57
|
+
searchableProp = _a.searchable,
|
58
|
+
onSearchProp = _a.onSearch,
|
59
|
+
overlayClassName = _a.overlayClassName,
|
60
|
+
_a$type = _a.type,
|
61
|
+
type = _a$type === void 0 ? 'tree' : _a$type,
|
62
|
+
checkedMode = _a.checkedMode,
|
63
|
+
visible = _a.visible,
|
64
|
+
onOpen = _a.onOpen,
|
65
|
+
onClose = _a.onClose,
|
66
|
+
tagInputProps = _a.tagInputProps,
|
67
|
+
_a$size = _a.size,
|
68
|
+
size = _a$size === void 0 ? 'md' : _a$size,
|
69
|
+
renderExtraFooter = _a.renderExtraFooter,
|
70
|
+
dropdownColumnRender = _a.dropdownColumnRender,
|
71
|
+
rest = __rest(_a, ["prefixCls", "className", "defaultValue", "value", "onChange", "data", "placeholder", "clearable", "onSelect", "expandTrigger", "disabled", "emptyContent", "changeOnSelect", "render", "displayRender", "checkCascaded", "searchPlaceholder", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "overlayClassName", "type", "checkedMode", "visible", "onOpen", "onClose", "tagInputProps", "size", "renderExtraFooter", "dropdownColumnRender"]);
|
76
72
|
var i18n = useLocaleContext();
|
77
73
|
var placeholder = isUndef(placeholderProp) ? i18n.get('checkCascader.placeholder') : placeholderProp;
|
78
74
|
var flatted = type === 'flatted';
|
79
|
-
|
80
75
|
var _useUncontrolledToggl = useUncontrolledToggle({
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
76
|
+
visible: visible,
|
77
|
+
disabled: disabled,
|
78
|
+
onOpen: onOpen,
|
79
|
+
onClose: onClose
|
80
|
+
}),
|
81
|
+
menuVisible = _useUncontrolledToggl[0],
|
82
|
+
menuVisibleAction = _useUncontrolledToggl[1];
|
89
83
|
var _useCache = useCache(data),
|
90
|
-
|
91
|
-
|
92
|
-
|
84
|
+
cascaderData = _useCache[0],
|
85
|
+
setCascaderData = _useCache[1];
|
93
86
|
var flattedData = useMemo(function () {
|
94
87
|
return flattenTreeData(cascaderData);
|
95
88
|
}, [cascaderData]);
|
96
|
-
|
97
89
|
var _useUncontrolledState = useUncontrolledState(defaultValue, valueProp, onChange),
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
90
|
+
_value = _useUncontrolledState[0],
|
91
|
+
tryChangeValue = _useUncontrolledState[1];
|
92
|
+
// 内部实现使用尾部 id
|
102
93
|
var value = _value.map(function (path) {
|
103
94
|
return path[path.length - 1];
|
104
95
|
});
|
105
|
-
|
106
96
|
var proxyOnChange = useLatestCallback(function (value, item, shouldChecked) {
|
107
97
|
var flattedItems = flattedData;
|
108
98
|
var itemsPaths = value.map(function (lastId) {
|
109
99
|
var item = flattedItems.find(function (item) {
|
110
100
|
return item.id === lastId;
|
111
101
|
});
|
112
|
-
|
113
102
|
if (item) {
|
114
103
|
return getTopDownAncestors(item).map(function (_ref) {
|
115
104
|
var id = _ref.id;
|
116
105
|
return id;
|
117
106
|
});
|
118
|
-
}
|
119
|
-
|
120
|
-
|
107
|
+
}
|
108
|
+
// 对于传入的数据未匹配到,保持不变吐出去
|
121
109
|
var idPaths = _value.find(function (item) {
|
122
110
|
return item[item.length - 1] === lastId;
|
123
111
|
});
|
124
|
-
|
125
112
|
return idPaths || [lastId];
|
126
113
|
});
|
127
114
|
tryChangeValue(itemsPaths);
|
128
|
-
});
|
115
|
+
});
|
116
|
+
// ************************** 搜索 ************************* //
|
129
117
|
// 无法做异步搜索,因为下拉菜单不能合并(因为树形数据,不知道是第几级)
|
130
|
-
|
131
118
|
var customSearchStrategy = useTreeCustomSearch({
|
132
119
|
data: flattedData,
|
133
120
|
filterOption: filterOption
|
@@ -140,33 +127,29 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
140
127
|
return !node.checkable;
|
141
128
|
}
|
142
129
|
});
|
143
|
-
|
144
130
|
var _useSearchMode = useSearchMode({
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
131
|
+
searchable: searchableProp,
|
132
|
+
strategies: [customSearchStrategy, upMatchSearchStrategy]
|
133
|
+
}),
|
134
|
+
stateInSearch = _useSearchMode.state,
|
135
|
+
searchable = _useSearchMode.searchable,
|
136
|
+
searchMode = _useSearchMode.searchMode,
|
137
|
+
onSearch = _useSearchMode.onSearch,
|
138
|
+
searchValue = _useSearchMode.keyword;
|
139
|
+
// 拦截 titleRender,自定义高亮展示
|
155
140
|
var proxyTitleRender = useCallback(function (node) {
|
156
141
|
if (titleRender) {
|
157
142
|
var _ret = titleRender(node);
|
158
|
-
|
159
143
|
if (_ret && _ret !== true) return _ret;
|
160
|
-
}
|
161
|
-
|
162
|
-
|
144
|
+
}
|
145
|
+
// 本地搜索执行默认高亮规则
|
163
146
|
var highlight = !!searchValue && searchMode === 'upMatch';
|
164
147
|
var found = false;
|
165
148
|
var ret = highlight ? /*#__PURE__*/React.createElement("span", {
|
166
149
|
className: cx("title__text", "title__text--cols")
|
167
150
|
}, getNodeAncestorsWithMe(node).map(function (item) {
|
168
151
|
var title = item.title,
|
169
|
-
|
152
|
+
id = item.id;
|
170
153
|
var raw = /*#__PURE__*/React.createElement("span", {
|
171
154
|
className: "title__text--col",
|
172
155
|
key: id
|
@@ -250,9 +233,7 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
250
233
|
dropdownColumnRender: dropdownColumnRender
|
251
234
|
}) : null);
|
252
235
|
});
|
253
|
-
|
254
236
|
if (__DEV__) {
|
255
237
|
CheckCascader.displayName = 'CheckCascader';
|
256
238
|
}
|
257
|
-
|
258
239
|
export { CheckCascader };
|
@@ -15,40 +15,34 @@ import { useCheckCascaderContext } from './context.js';
|
|
15
15
|
import { getCascaderItemEventData } from './utils/index.js';
|
16
16
|
import { getNodeAncestorsWithMe } from '@hi-ui/tree-utils';
|
17
17
|
var _role = 'check-cascader-menu';
|
18
|
-
|
19
18
|
var _prefix = getPrefixCls(_role);
|
20
|
-
|
21
19
|
var CheckCascaderMenu = function CheckCascaderMenu(_ref) {
|
22
20
|
var _ref$prefixCls = _ref.prefixCls,
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
21
|
+
prefixCls = _ref$prefixCls === void 0 ? _prefix : _ref$prefixCls,
|
22
|
+
_ref$role = _ref.role,
|
23
|
+
role = _ref$role === void 0 ? _role : _ref$role,
|
24
|
+
className = _ref.className,
|
25
|
+
style = _ref.style,
|
26
|
+
menu = _ref.data,
|
27
|
+
getCascaderItemRequiredProps = _ref.getCascaderItemRequiredProps;
|
31
28
|
var _useCheckCascaderCont = useCheckCascaderContext(),
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
29
|
+
_useCheckCascaderCont2 = _useCheckCascaderCont.flatted,
|
30
|
+
flatted = _useCheckCascaderCont2 === void 0 ? false : _useCheckCascaderCont2,
|
31
|
+
_useCheckCascaderCont3 = _useCheckCascaderCont.changeOnSelect,
|
32
|
+
changeOnSelect = _useCheckCascaderCont3 === void 0 ? false : _useCheckCascaderCont3,
|
33
|
+
_useCheckCascaderCont4 = _useCheckCascaderCont.disabled,
|
34
|
+
disabledContext = _useCheckCascaderCont4 === void 0 ? false : _useCheckCascaderCont4,
|
35
|
+
onLoadChildren = _useCheckCascaderCont.onLoadChildren,
|
36
|
+
expandTrigger = _useCheckCascaderCont.expandTrigger,
|
37
|
+
onCheck = _useCheckCascaderCont.onCheck,
|
38
|
+
onSelect = _useCheckCascaderCont.onSelect,
|
39
|
+
titleRender = _useCheckCascaderCont.titleRender;
|
44
40
|
var renderTitle = useCallback(function (option) {
|
45
41
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
46
42
|
var title = titleRender ? titleRender(option) : true;
|
47
|
-
|
48
43
|
if (title !== true) {
|
49
44
|
return title;
|
50
45
|
}
|
51
|
-
|
52
46
|
return flatted ? /*#__PURE__*/React.createElement("span", {
|
53
47
|
className: cx("title__text", "title__text--cols")
|
54
48
|
}, getNodeAncestorsWithMe(option).reverse().map(function (item, index) {
|
@@ -71,14 +65,14 @@ var CheckCascaderMenu = function CheckCascaderMenu(_ref) {
|
|
71
65
|
role: role
|
72
66
|
}, menu.map(function (option) {
|
73
67
|
var _a;
|
74
|
-
|
75
68
|
var eventOption = getCascaderItemEventData(option, getCascaderItemRequiredProps(option));
|
76
69
|
var selected = eventOption.selected,
|
77
|
-
|
78
|
-
|
79
|
-
|
70
|
+
checked = eventOption.checked,
|
71
|
+
loading = eventOption.loading,
|
72
|
+
semiChecked = eventOption.semiChecked;
|
80
73
|
var disabled = disabledContext || option.disabled;
|
81
|
-
var optionCls = cx(prefixCls + "-option", option.checkable && checked && prefixCls + "-option--checked",
|
74
|
+
var optionCls = cx(prefixCls + "-option", option.checkable && checked && prefixCls + "-option--checked",
|
75
|
+
// 此处 option.children?.length || !option.checkable 的含义是
|
82
76
|
// 如果存在子节点,则可以展现选择态
|
83
77
|
// 不存在子节点,如不是可勾选item,则可以展现勾选态
|
84
78
|
selected && (((_a = option.children) === null || _a === void 0 ? void 0 : _a.length) || !option.checkable) && prefixCls + "-option--selected", loading && prefixCls + "-option--loading", disabled && prefixCls + "-option--disabled");
|
@@ -91,7 +85,6 @@ var CheckCascaderMenu = function CheckCascaderMenu(_ref) {
|
|
91
85
|
onClick: function onClick(evt) {
|
92
86
|
if (disabled) return;
|
93
87
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventOption);
|
94
|
-
|
95
88
|
if (changeOnSelect) {
|
96
89
|
onCheck === null || onCheck === void 0 ? void 0 : onCheck(eventOption, !checked);
|
97
90
|
}
|
@@ -121,18 +114,14 @@ var CheckCascaderMenu = function CheckCascaderMenu(_ref) {
|
|
121
114
|
/**
|
122
115
|
* 渲染菜单子项的展开提示图标
|
123
116
|
*/
|
124
|
-
|
125
|
-
|
126
117
|
var renderSuffix = function renderSuffix(prefixCls, node, loading, onLoadChildren) {
|
127
118
|
if (loading) {
|
128
119
|
return /*#__PURE__*/React.createElement("span", {
|
129
120
|
className: cx(prefixCls + "-switcher", prefixCls + "-switcher--loading")
|
130
121
|
}, defaultLoadingIcon);
|
131
122
|
}
|
132
|
-
|
133
123
|
var hasChildren = node.children && node.children.length > 0;
|
134
124
|
var canLoadChildren = onLoadChildren && !node.children && !node.isLeaf;
|
135
|
-
|
136
125
|
if (hasChildren || canLoadChildren) {
|
137
126
|
return /*#__PURE__*/React.createElement("span", {
|
138
127
|
className: cx(prefixCls + "-switcher"),
|
@@ -141,10 +130,8 @@ var renderSuffix = function renderSuffix(prefixCls, node, loading, onLoadChildre
|
|
141
130
|
}
|
142
131
|
}, defaultSuffixIcon);
|
143
132
|
}
|
144
|
-
|
145
133
|
return /*#__PURE__*/React.createElement("span", {
|
146
134
|
className: cx(prefixCls + "-switcher", prefixCls + "-switcher--noop")
|
147
135
|
}, defaultLeafIcon);
|
148
136
|
};
|
149
|
-
|
150
137
|
export { CheckCascaderMenu };
|