@hi-ui/check-cascader 4.2.2 → 4.2.4
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 +61 -0
- package/lib/cjs/CheckCascader.js +71 -111
- package/lib/cjs/CheckCascaderMenu.js +31 -56
- package/lib/cjs/CheckCascaderMenuList.js +42 -67
- package/lib/cjs/context.js +0 -6
- package/lib/cjs/hooks/use-async-switch.js +8 -38
- package/lib/cjs/hooks/use-cache/lib/esm/index.js +3 -7
- package/lib/cjs/hooks/use-check.js +9 -19
- package/lib/cjs/hooks/use-select.js +3 -7
- package/lib/cjs/icons/index.js +2 -9
- package/lib/cjs/index.js +0 -3
- package/lib/cjs/styles/index.scss.js +0 -3
- package/lib/cjs/utils/index.js +8 -46
- package/lib/esm/CheckCascader.js +69 -88
- package/lib/esm/CheckCascaderMenu.js +28 -41
- 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 +0 -2
- package/lib/esm/utils/index.js +8 -43
- package/package.json +26 -26
package/lib/cjs/utils/index.js
CHANGED
@@ -12,18 +12,15 @@
|
|
12
12
|
Object.defineProperty(exports, '__esModule', {
|
13
13
|
value: true
|
14
14
|
});
|
15
|
-
|
16
15
|
var treeUtils = require('@hi-ui/tree-utils');
|
17
|
-
|
18
16
|
var typeAssertion = require('@hi-ui/type-assertion');
|
17
|
+
|
19
18
|
/**
|
20
19
|
* 扁平化树数据结构,基于前序遍历
|
21
20
|
*
|
22
21
|
* @param treeData
|
23
22
|
* @returns
|
24
23
|
*/
|
25
|
-
|
26
|
-
|
27
24
|
var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
28
25
|
/**
|
29
26
|
* 转换对象
|
@@ -32,10 +29,8 @@ var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
|
32
29
|
if (fieldNames) {
|
33
30
|
return node[fieldNames[key] || key];
|
34
31
|
}
|
35
|
-
|
36
32
|
return node[key];
|
37
33
|
};
|
38
|
-
|
39
34
|
return treeUtils.baseFlattenTree({
|
40
35
|
tree: treeData,
|
41
36
|
childrenFieldName: function childrenFieldName(node) {
|
@@ -43,7 +38,6 @@ var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
|
43
38
|
},
|
44
39
|
transform: function transform(node) {
|
45
40
|
var _a, _b, _c, _d;
|
46
|
-
|
47
41
|
var flattedNode = node;
|
48
42
|
var raw = node.raw;
|
49
43
|
flattedNode.id = getKeyFields(raw, 'id');
|
@@ -56,7 +50,6 @@ var flattenTreeData = function flattenTreeData(treeData, fieldNames) {
|
|
56
50
|
}
|
57
51
|
});
|
58
52
|
};
|
59
|
-
|
60
53
|
var getActiveMenus = function getActiveMenus(data, selectedIds) {
|
61
54
|
if (data.length === 0) return [];
|
62
55
|
var root = data[0].parent;
|
@@ -67,28 +60,23 @@ var getActiveMenus = function getActiveMenus(data, selectedIds) {
|
|
67
60
|
return selectedIds === id;
|
68
61
|
});
|
69
62
|
if (!selectedOption) return menu;
|
70
|
-
|
71
63
|
if (selectedOption.children) {
|
72
64
|
menu = [selectedOption.children];
|
73
65
|
} else {
|
74
66
|
menu = [];
|
75
67
|
}
|
76
|
-
|
77
68
|
while (selectedOption.parent) {
|
78
69
|
menu.push(selectedOption.parent.children);
|
79
70
|
selectedOption = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.parent;
|
80
71
|
}
|
81
|
-
|
82
72
|
return menu.reverse();
|
83
73
|
};
|
84
|
-
|
85
74
|
var getFlattedMenus = function getFlattedMenus(data) {
|
86
75
|
return [data.filter(function (_ref2) {
|
87
76
|
var checkable = _ref2.checkable;
|
88
77
|
return checkable;
|
89
78
|
})];
|
90
79
|
};
|
91
|
-
|
92
80
|
var getActiveMenuIds = function getActiveMenuIds(data, selectedIds) {
|
93
81
|
if (data.length === 0) return [];
|
94
82
|
var selectedOption = data.find(function (_ref3) {
|
@@ -101,7 +89,6 @@ var getActiveMenuIds = function getActiveMenuIds(data, selectedIds) {
|
|
101
89
|
return id;
|
102
90
|
});
|
103
91
|
};
|
104
|
-
|
105
92
|
function getCascaderItemEventData(node, requiredProps) {
|
106
93
|
return Object.assign(Object.assign({}, node), requiredProps);
|
107
94
|
}
|
@@ -112,19 +99,14 @@ function getCascaderItemEventData(node, requiredProps) {
|
|
112
99
|
* @param nodeEntries 所有数据的Map 集合
|
113
100
|
* @param type 数据回显方式
|
114
101
|
*/
|
115
|
-
|
116
|
-
|
117
102
|
var processCheckedIds = function processCheckedIds(type, checkedIds, flattenData, allowCheck) {
|
118
103
|
var keySet = new Set(checkedIds);
|
119
|
-
|
120
104
|
switch (type) {
|
121
105
|
case 'CHILD':
|
122
106
|
return checkedIds.filter(function (id) {
|
123
107
|
var node = treeUtils.fFindNodeById(flattenData, id);
|
124
|
-
|
125
108
|
if (node) {
|
126
109
|
var children = node.children;
|
127
|
-
|
128
110
|
if (typeAssertion.isArrayNonEmpty(children)) {
|
129
111
|
if (children.filter(allowCheck).every(function (node) {
|
130
112
|
return keySet.has(node.id);
|
@@ -132,48 +114,38 @@ var processCheckedIds = function processCheckedIds(type, checkedIds, flattenData
|
|
132
114
|
return false;
|
133
115
|
}
|
134
116
|
}
|
135
|
-
}
|
136
|
-
|
137
|
-
|
117
|
+
}
|
118
|
+
// 没有孩子节点,保留
|
138
119
|
return true;
|
139
120
|
});
|
140
|
-
|
141
121
|
case 'PARENT':
|
142
122
|
return checkedIds.filter(function (id) {
|
143
123
|
var node = treeUtils.fFindNodeById(flattenData, id);
|
144
|
-
|
145
124
|
if (node) {
|
146
125
|
// 向上递归遍历是否被勾选
|
147
126
|
var ancestors = treeUtils.getNodeAncestors(node);
|
148
|
-
|
149
127
|
if (ancestors.some(function (parent) {
|
150
128
|
return keySet.has(parent.id);
|
151
129
|
})) {
|
152
130
|
return false;
|
153
131
|
}
|
154
132
|
}
|
155
|
-
|
156
133
|
return true;
|
157
134
|
});
|
158
135
|
}
|
159
|
-
|
160
136
|
return checkedIds;
|
161
137
|
};
|
162
138
|
/**
|
163
139
|
* 根据传入的 checkedIds 解析全选/半选数据
|
164
140
|
*/
|
165
|
-
|
166
|
-
|
167
141
|
var parseCheckDataDirty = function parseCheckDataDirty(type, checkedIds, flattenData, allowCheck) {
|
168
142
|
switch (type) {
|
169
143
|
case 'CHILD':
|
170
144
|
case 'PARENT':
|
171
145
|
return dirtyCheck(checkedIds, flattenData, allowCheck);
|
172
146
|
}
|
173
|
-
|
174
147
|
return checkedIds;
|
175
148
|
};
|
176
|
-
|
177
149
|
function dirtyCheck(checkedIds, flattenData, allowCheck) {
|
178
150
|
var nodeEntities = flattenData.reduce(function (prev, cur) {
|
179
151
|
prev[cur.id] = cur;
|
@@ -183,18 +155,16 @@ function dirtyCheck(checkedIds, flattenData, allowCheck) {
|
|
183
155
|
return !!nodeEntities[id];
|
184
156
|
}));
|
185
157
|
var depthEntities = new Map();
|
186
|
-
var maxDepth = 0;
|
187
|
-
|
158
|
+
var maxDepth = 0;
|
159
|
+
// Convert entities by depth for calculation
|
188
160
|
Object.keys(nodeEntities).forEach(function (id) {
|
189
161
|
var entity = nodeEntities[id];
|
190
162
|
var depth = entity.depth;
|
191
163
|
var depthSet = depthEntities.get(depth);
|
192
|
-
|
193
164
|
if (!depthSet) {
|
194
165
|
depthSet = new Set();
|
195
166
|
depthEntities.set(depth, depthSet);
|
196
167
|
}
|
197
|
-
|
198
168
|
depthSet.add(entity);
|
199
169
|
maxDepth = Math.max(maxDepth, depth);
|
200
170
|
});
|
@@ -206,8 +176,6 @@ function dirtyCheck(checkedIds, flattenData, allowCheck) {
|
|
206
176
|
* 1. 把所有嵌套孩子节点 allowCheck 的都标记为 checked
|
207
177
|
* 2. 祖先节点从下至上维护 checked 状态
|
208
178
|
*/
|
209
|
-
|
210
|
-
|
211
179
|
function fillCheck(checkedIds, depthEntities, nodeEntities, maxDepth, allowCheck) {
|
212
180
|
var checkedIdsSet = new Set(checkedIds);
|
213
181
|
checkedIdsSet.forEach(function (id) {
|
@@ -216,37 +184,31 @@ function fillCheck(checkedIds, depthEntities, nodeEntities, maxDepth, allowCheck
|
|
216
184
|
nestedChildren.forEach(function (child) {
|
217
185
|
checkedIdsSet.add(child.id);
|
218
186
|
});
|
219
|
-
});
|
220
|
-
|
187
|
+
});
|
188
|
+
// 缓存中间结果,优化查询
|
221
189
|
var visitedIds = new Map();
|
222
|
-
|
223
190
|
for (var depth = maxDepth - 1; depth >= 0; --depth) {
|
224
191
|
var entities = depthEntities.get(depth);
|
225
192
|
entities === null || entities === void 0 ? void 0 : entities.forEach(function (entity) {
|
226
193
|
var id = entity.id,
|
227
|
-
|
194
|
+
children = entity.children;
|
228
195
|
if (visitedIds.has(id)) return;
|
229
|
-
|
230
196
|
if (typeAssertion.isArrayNonEmpty(children)) {
|
231
197
|
var shouldChecked = !children.some(function (child) {
|
232
198
|
if (visitedIds.has(child.id)) {
|
233
199
|
return !visitedIds.get(child.id);
|
234
200
|
}
|
235
|
-
|
236
201
|
return !checkedIdsSet.has(child.id);
|
237
202
|
});
|
238
203
|
visitedIds.set(id, shouldChecked);
|
239
|
-
|
240
204
|
if (shouldChecked && allowCheck(entity)) {
|
241
205
|
checkedIdsSet.add(id);
|
242
206
|
}
|
243
207
|
}
|
244
208
|
});
|
245
209
|
}
|
246
|
-
|
247
210
|
return Array.from(checkedIdsSet);
|
248
211
|
}
|
249
|
-
|
250
212
|
exports.flattenTreeData = flattenTreeData;
|
251
213
|
exports.getActiveMenuIds = getActiveMenuIds;
|
252
214
|
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
|
-
var ret = highlight ? /*#__PURE__*/React.createElement("span", {
|
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
|
@@ -186,7 +169,7 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
186
169
|
}, beforeStr, /*#__PURE__*/React.createElement("span", {
|
187
170
|
className: "title__text--matched"
|
188
171
|
}, resultStr), afterStr);
|
189
|
-
}).reverse()) : true;
|
172
|
+
}).reverse())) : true;
|
190
173
|
return ret;
|
191
174
|
}, [titleRender, searchValue, searchMode]);
|
192
175
|
var shouldUseSearch = !!searchValue;
|
@@ -230,7 +213,7 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
230
213
|
data: flattedData,
|
231
214
|
invalid: invalid
|
232
215
|
}))
|
233
|
-
}), isArrayNonEmpty(selectProps.data) ? /*#__PURE__*/React.createElement(CheckCascaderMenuList, {
|
216
|
+
}), isArrayNonEmpty(selectProps.data) ? ( /*#__PURE__*/React.createElement(CheckCascaderMenuList, {
|
234
217
|
disabled: disabled,
|
235
218
|
value: value,
|
236
219
|
// @ts-ignore
|
@@ -248,11 +231,9 @@ var CheckCascader = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
248
231
|
onChangeData: setCascaderData,
|
249
232
|
checkedMode: checkedMode,
|
250
233
|
dropdownColumnRender: dropdownColumnRender
|
251
|
-
}) : null);
|
234
|
+
})) : null);
|
252
235
|
});
|
253
|
-
|
254
236
|
if (__DEV__) {
|
255
237
|
CheckCascader.displayName = 'CheckCascader';
|
256
238
|
}
|
257
|
-
|
258
239
|
export { CheckCascader };
|
@@ -15,50 +15,44 @@ 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
|
-
return flatted ? /*#__PURE__*/React.createElement("span", {
|
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) {
|
55
49
|
return /*#__PURE__*/React.createElement("span", {
|
56
50
|
className: "title__text--col",
|
57
51
|
key: item.id
|
58
52
|
}, item.title);
|
59
|
-
})) : /*#__PURE__*/React.createElement("span", {
|
53
|
+
}))) : ( /*#__PURE__*/React.createElement("span", {
|
60
54
|
className: "title__text"
|
61
|
-
}, option.title);
|
55
|
+
}, option.title));
|
62
56
|
}, [titleRender, flatted]);
|
63
57
|
var isCheckableMenu = menu.some(function (_ref2) {
|
64
58
|
var checkable = _ref2.checkable;
|
@@ -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
|
}
|
@@ -101,7 +94,7 @@ var CheckCascaderMenu = function CheckCascaderMenu(_ref) {
|
|
101
94
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventOption);
|
102
95
|
}
|
103
96
|
}
|
104
|
-
}, option.checkable ? /*#__PURE__*/React.createElement(Checkbox, {
|
97
|
+
}, option.checkable ? ( /*#__PURE__*/React.createElement(Checkbox, {
|
105
98
|
className: prefixCls + "-checkbox",
|
106
99
|
indeterminate: semiChecked,
|
107
100
|
checked: checked,
|
@@ -115,24 +108,20 @@ var CheckCascaderMenu = function CheckCascaderMenu(_ref) {
|
|
115
108
|
onCheck === null || onCheck === void 0 ? void 0 : onCheck(eventOption, !checked);
|
116
109
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventOption);
|
117
110
|
}
|
118
|
-
}) : null, renderTitle(eventOption), flatted ? null : renderSuffix(prefixCls, option, loading, onLoadChildren)));
|
111
|
+
})) : null, renderTitle(eventOption), flatted ? null : renderSuffix(prefixCls, option, loading, onLoadChildren)));
|
119
112
|
}));
|
120
113
|
};
|
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 };
|