@hi-ui/cascader 4.1.2 → 4.1.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 +53 -0
- package/lib/cjs/Cascader.js +87 -140
- package/lib/cjs/CascaderMenuList.js +27 -56
- package/lib/cjs/context.js +0 -6
- package/lib/cjs/hooks/use-async-switch.js +7 -33
- package/lib/cjs/hooks/use-cache/lib/esm/index.js +3 -7
- package/lib/cjs/hooks/use-select.js +3 -14
- 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/use-cascader.js +33 -50
- package/lib/cjs/utils/index.js +1 -21
- package/lib/esm/Cascader.js +84 -113
- package/lib/esm/CascaderMenuList.js +25 -41
- package/lib/esm/context.js +0 -4
- package/lib/esm/hooks/use-async-switch.js +5 -22
- package/lib/esm/hooks/use-cache/lib/esm/index.js +3 -5
- package/lib/esm/hooks/use-select.js +3 -9
- package/lib/esm/styles/index.scss.js +0 -2
- package/lib/esm/use-cascader.js +33 -42
- package/lib/esm/utils/index.js +1 -18
- package/package.json +22 -22
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,58 @@
|
|
1
1
|
# @hi-ui/cascader
|
2
2
|
|
3
|
+
## 4.1.4
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- fix: 修复 rollup3 打包 cjs 模块问题
|
8
|
+
- Updated dependencies
|
9
|
+
- @hi-ui/env@4.0.3
|
10
|
+
- @hi-ui/core@4.0.7
|
11
|
+
- @hi-ui/use-check-state@4.0.3
|
12
|
+
- @hi-ui/use-data-source@4.0.3
|
13
|
+
- @hi-ui/use-latest@4.0.3
|
14
|
+
- @hi-ui/use-search-mode@4.1.3
|
15
|
+
- @hi-ui/use-toggle@4.0.3
|
16
|
+
- @hi-ui/use-uncontrolled-state@4.0.3
|
17
|
+
- @hi-ui/icons@4.0.17
|
18
|
+
- @hi-ui/highlighter@4.0.7
|
19
|
+
- @hi-ui/input@4.0.12
|
20
|
+
- @hi-ui/picker@4.1.3
|
21
|
+
- @hi-ui/popper@4.1.2
|
22
|
+
- @hi-ui/spinner@4.0.7
|
23
|
+
- @hi-ui/array-utils@4.0.3
|
24
|
+
- @hi-ui/classname@4.0.3
|
25
|
+
- @hi-ui/func-utils@4.0.3
|
26
|
+
- @hi-ui/tree-utils@4.1.3
|
27
|
+
- @hi-ui/type-assertion@4.0.3
|
28
|
+
|
29
|
+
## 4.1.3
|
30
|
+
|
31
|
+
### Patch Changes
|
32
|
+
|
33
|
+
- [#2672](https://github.com/XiaoMi/hiui/pull/2672) [`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e) Thanks [@zyprepare](https://github.com/zyprepare)! - build: 升级到 rollup3,重新构建发布组件
|
34
|
+
|
35
|
+
- Updated dependencies [[`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e)]:
|
36
|
+
- @hi-ui/core@4.0.6
|
37
|
+
- @hi-ui/use-check-state@4.0.2
|
38
|
+
- @hi-ui/use-data-source@4.0.2
|
39
|
+
- @hi-ui/use-latest@4.0.2
|
40
|
+
- @hi-ui/use-search-mode@4.1.2
|
41
|
+
- @hi-ui/use-toggle@4.0.2
|
42
|
+
- @hi-ui/use-uncontrolled-state@4.0.2
|
43
|
+
- @hi-ui/icons@4.0.16
|
44
|
+
- @hi-ui/highlighter@4.0.6
|
45
|
+
- @hi-ui/input@4.0.11
|
46
|
+
- @hi-ui/picker@4.1.2
|
47
|
+
- @hi-ui/popper@4.1.1
|
48
|
+
- @hi-ui/spinner@4.0.6
|
49
|
+
- @hi-ui/array-utils@4.0.2
|
50
|
+
- @hi-ui/classname@4.0.2
|
51
|
+
- @hi-ui/env@4.0.2
|
52
|
+
- @hi-ui/func-utils@4.0.2
|
53
|
+
- @hi-ui/tree-utils@4.1.2
|
54
|
+
- @hi-ui/type-assertion@4.0.2
|
55
|
+
|
3
56
|
## 4.1.2
|
4
57
|
|
5
58
|
### Patch Changes
|
package/lib/cjs/Cascader.js
CHANGED
@@ -10,150 +10,114 @@
|
|
10
10
|
'use strict';
|
11
11
|
|
12
12
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
13
|
Object.defineProperty(exports, '__esModule', {
|
15
14
|
value: true
|
16
15
|
});
|
17
|
-
|
18
16
|
var tslib = require('tslib');
|
19
|
-
|
20
17
|
var React = require('react');
|
21
|
-
|
22
18
|
var classname = require('@hi-ui/classname');
|
23
|
-
|
24
19
|
var env = require('@hi-ui/env');
|
25
|
-
|
26
20
|
var useToggle = require('@hi-ui/use-toggle');
|
27
|
-
|
28
21
|
var useCascader = require('./use-cascader.js');
|
29
|
-
|
30
22
|
var input = require('@hi-ui/input');
|
31
|
-
|
32
23
|
var icons = require('@hi-ui/icons');
|
33
|
-
|
34
24
|
var index$1 = require('./utils/index.js');
|
35
|
-
|
36
25
|
var context = require('./context.js');
|
37
|
-
|
38
26
|
var treeUtils = require('@hi-ui/tree-utils');
|
39
|
-
|
40
27
|
var typeAssertion = require('@hi-ui/type-assertion');
|
41
|
-
|
42
28
|
var picker = require('@hi-ui/picker');
|
43
|
-
|
44
29
|
var useSearchMode = require('@hi-ui/use-search-mode');
|
45
|
-
|
46
30
|
var arrayUtils = require('@hi-ui/array-utils');
|
47
|
-
|
48
31
|
var index = require('./hooks/use-cache/lib/esm/index.js');
|
49
|
-
|
50
32
|
var core = require('@hi-ui/core');
|
51
|
-
|
52
33
|
var funcUtils = require('@hi-ui/func-utils');
|
53
|
-
|
54
34
|
var CascaderMenuList = require('./CascaderMenuList.js');
|
55
|
-
|
56
35
|
var Highlighter = require('@hi-ui/highlighter');
|
57
|
-
|
58
|
-
function _interopDefaultLegacy(e) {
|
36
|
+
function _interopDefaultCompat(e) {
|
59
37
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
60
38
|
'default': e
|
61
39
|
};
|
62
40
|
}
|
63
|
-
|
64
|
-
var
|
65
|
-
|
66
|
-
var Highlighter__default = /*#__PURE__*/_interopDefaultLegacy(Highlighter);
|
67
|
-
|
41
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
42
|
+
var Highlighter__default = /*#__PURE__*/_interopDefaultCompat(Highlighter);
|
68
43
|
var _prefix = classname.getPrefixCls('cascader');
|
69
|
-
|
70
44
|
var NOOP_ARRAY = [];
|
71
45
|
/**
|
72
46
|
* 级联选择器
|
73
47
|
* Trigger + MenuList + Search
|
74
48
|
*/
|
75
|
-
|
76
49
|
var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
77
50
|
var _props$prefixCls = props.prefixCls,
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
51
|
+
prefixCls = _props$prefixCls === void 0 ? _prefix : _props$prefixCls,
|
52
|
+
className = props.className,
|
53
|
+
placeholderProp = props.placeholder,
|
54
|
+
_props$disabled = props.disabled,
|
55
|
+
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
56
|
+
_props$clearable = props.clearable,
|
57
|
+
clearable = _props$clearable === void 0 ? true : _props$clearable,
|
58
|
+
_props$type = props.type,
|
59
|
+
type = _props$type === void 0 ? 'tree' : _props$type,
|
60
|
+
fieldNames = props.fieldNames,
|
61
|
+
_props$expandTrigger = props.expandTrigger,
|
62
|
+
expandTrigger = _props$expandTrigger === void 0 ? 'click' : _props$expandTrigger,
|
63
|
+
displayRenderProp = props.displayRender,
|
64
|
+
onSelectProp = props.onSelect,
|
65
|
+
onLoadChildren = props.onLoadChildren,
|
66
|
+
appearance = props.appearance,
|
67
|
+
invalid = props.invalid,
|
68
|
+
filterOption = props.filterOption,
|
69
|
+
searchableProp = props.searchable,
|
70
|
+
onSearchProp = props.onSearch,
|
71
|
+
titleRender = props.render,
|
72
|
+
overlayClassName = props.overlayClassName,
|
73
|
+
_props$data = props.data,
|
74
|
+
data = _props$data === void 0 ? NOOP_ARRAY : _props$data,
|
75
|
+
_props$flattedSearchR = props.flattedSearchResult,
|
76
|
+
flattedSearchResult = _props$flattedSearchR === void 0 ? true : _props$flattedSearchR,
|
77
|
+
visible = props.visible,
|
78
|
+
_props$size = props.size,
|
79
|
+
size = _props$size === void 0 ? 'md' : _props$size,
|
80
|
+
onOpen = props.onOpen,
|
81
|
+
onClose = props.onClose,
|
82
|
+
renderExtraFooter = props.renderExtraFooter,
|
83
|
+
dropdownColumnRender = props.dropdownColumnRender,
|
84
|
+
rest = tslib.__rest(props, ["prefixCls", "className", "placeholder", "disabled", "clearable", "type", "fieldNames", "expandTrigger", "displayRender", "onSelect", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "onSearch", "render", "overlayClassName", "data", "flattedSearchResult", "visible", "size", "onOpen", "onClose", "renderExtraFooter", "dropdownColumnRender"]);
|
113
85
|
var i18n = core.useLocaleContext();
|
114
86
|
var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('cascader.placeholder') : placeholderProp;
|
115
|
-
|
116
87
|
var _useUncontrolledToggl = useToggle.useUncontrolledToggle({
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
88
|
+
visible: visible,
|
89
|
+
disabled: disabled,
|
90
|
+
onOpen: onOpen,
|
91
|
+
onClose: onClose
|
92
|
+
}),
|
93
|
+
menuVisible = _useUncontrolledToggl[0],
|
94
|
+
menuVisibleAction = _useUncontrolledToggl[1];
|
95
|
+
// 搜索时临时选中缓存数据
|
126
96
|
var _useState = React.useState(null),
|
127
|
-
|
128
|
-
|
129
|
-
|
97
|
+
selectedItem = _useState[0],
|
98
|
+
setSelectedItem = _useState[1];
|
130
99
|
var onSelect = function onSelect(value, item, itemPaths) {
|
131
100
|
onSelectProp === null || onSelectProp === void 0 ? void 0 : onSelectProp(value, item, itemPaths);
|
132
|
-
setSelectedItem(item);
|
133
|
-
|
101
|
+
setSelectedItem(item);
|
102
|
+
// 关闭弹窗
|
134
103
|
menuVisibleAction.off();
|
135
|
-
};
|
136
|
-
|
137
|
-
|
104
|
+
};
|
105
|
+
// 拦截 titleRender,自定义高亮展示
|
138
106
|
var proxyTitleRender = function proxyTitleRender(node) {
|
139
107
|
// 本地搜索执行默认高亮规则
|
140
108
|
var highlight = !!searchValue && searchMode === 'upMatch';
|
141
|
-
|
142
109
|
if (highlight) {
|
143
110
|
return flattedSearchResult ? renderHighlightTitles(searchValue, node, titleRender) : renderHighlightTitle(searchValue, node, titleRender);
|
144
111
|
}
|
145
|
-
|
146
112
|
return typeAssertion.isFunction(titleRender) ? titleRender(node) : true;
|
147
113
|
};
|
148
|
-
|
149
114
|
var _useCache = index.useCache(data),
|
150
|
-
|
151
|
-
|
152
|
-
|
115
|
+
cascaderData = _useCache[0],
|
116
|
+
setCascaderData = _useCache[1];
|
153
117
|
var flattedData = React.useMemo(function () {
|
154
118
|
return index$1.flattenTreeData(cascaderData, fieldNames);
|
155
|
-
}, [cascaderData, fieldNames]);
|
156
|
-
|
119
|
+
}, [cascaderData, fieldNames]);
|
120
|
+
// ************************** 异步搜索 ************************* //
|
157
121
|
var customSearchStrategy = useSearchMode.useTreeCustomSearch({
|
158
122
|
data: flattedData,
|
159
123
|
filterOption: filterOption
|
@@ -164,80 +128,70 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
164
128
|
enabled: searchableProp,
|
165
129
|
exclude: function exclude(node) {
|
166
130
|
return node.disabled;
|
167
|
-
}
|
131
|
+
}
|
132
|
+
// exclude: (option: FlattedCascaderDataItem) => {
|
168
133
|
// return checkCanLoadChildren(option, onLoadChildren)
|
169
134
|
// },
|
170
|
-
|
171
135
|
});
|
172
136
|
|
173
137
|
var _useSearchMode = useSearchMode.useSearchMode({
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
138
|
+
searchable: searchableProp,
|
139
|
+
strategies: [customSearchStrategy, upMatchSearchStrategy]
|
140
|
+
}),
|
141
|
+
stateInSearch = _useSearchMode.state,
|
142
|
+
searchable = _useSearchMode.searchable,
|
143
|
+
searchMode = _useSearchMode.searchMode,
|
144
|
+
onSearch = _useSearchMode.onSearch,
|
145
|
+
searchValue = _useSearchMode.keyword;
|
183
146
|
var displayRender = function displayRender(item) {
|
184
147
|
var itemPaths = treeUtils.getTopDownAncestors(item);
|
185
|
-
|
186
148
|
if (displayRenderProp) {
|
187
149
|
var eventOption = index$1.getItemEventData(item, getItemRequiredProps(item));
|
188
150
|
return displayRenderProp(eventOption, itemPaths.map(function (item) {
|
189
151
|
return index$1.getItemEventData(item, getItemRequiredProps(item));
|
190
152
|
}));
|
191
153
|
}
|
192
|
-
|
193
154
|
var mergedTitle = itemPaths.reduce(function (acc, item, index, _ref) {
|
194
155
|
var length = _ref.length;
|
195
156
|
acc.push(item.title);
|
196
|
-
|
197
157
|
if (length - 1 !== index) {
|
198
158
|
acc.push('/');
|
199
159
|
}
|
200
|
-
|
201
160
|
return acc;
|
202
161
|
}, []);
|
203
162
|
return /*#__PURE__*/React__default["default"].createElement("span", {
|
204
163
|
className: "title__text"
|
205
164
|
}, mergedTitle);
|
206
165
|
};
|
207
|
-
|
208
|
-
|
209
|
-
|
166
|
+
var shouldUseSearch = !!searchValue;
|
167
|
+
// 搜索的结果列表也采用 flatted 模式进行展示
|
210
168
|
var flatted = shouldUseSearch ? flattedSearchResult : type === 'flatted';
|
211
|
-
|
212
169
|
var _a = useCascader.useCascader(Object.assign(Object.assign({}, rest), {
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
170
|
+
disabled: disabled,
|
171
|
+
fieldNames: fieldNames,
|
172
|
+
flatted: flatted,
|
173
|
+
onSelect: onSelect,
|
174
|
+
onLoadChildren: onLoadChildren,
|
175
|
+
data: data,
|
176
|
+
// @ts-ignore
|
177
|
+
cascaderData: cascaderData,
|
178
|
+
setCascaderData: setCascaderData,
|
179
|
+
flattedData: flattedData
|
180
|
+
})),
|
181
|
+
rootProps = _a.rootProps,
|
182
|
+
context$1 = tslib.__rest(_a, ["rootProps"]);
|
227
183
|
var value = context$1.value,
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
184
|
+
tryChangeValue = context$1.tryChangeValue,
|
185
|
+
reset = context$1.reset,
|
186
|
+
menuList = context$1.menuList,
|
187
|
+
getItemRequiredProps = context$1.getItemRequiredProps;
|
232
188
|
var showData = React.useMemo(function () {
|
233
189
|
if (shouldUseSearch) {
|
234
190
|
if (!flattedSearchResult) {
|
235
191
|
return index$1.getFilteredMenuList(menuList, stateInSearch.data);
|
236
192
|
}
|
237
|
-
|
238
193
|
return typeAssertion.isArrayNonEmpty(stateInSearch.data) ? [stateInSearch.data] : [];
|
239
194
|
}
|
240
|
-
|
241
195
|
return menuList;
|
242
196
|
}, [shouldUseSearch, flattedSearchResult, stateInSearch.data, menuList]);
|
243
197
|
React.useEffect(function () {
|
@@ -245,14 +199,13 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
245
199
|
if (!menuVisible) {
|
246
200
|
reset();
|
247
201
|
}
|
248
|
-
}, [menuVisible, reset]);
|
249
|
-
|
202
|
+
}, [menuVisible, reset]);
|
203
|
+
// 下拉菜单不能合并(因为树形数据,不知道是第几级)
|
250
204
|
var mergedData = React.useMemo(function () {
|
251
205
|
if (selectedItem) {
|
252
206
|
var nextData = [selectedItem].concat(flattedData);
|
253
207
|
return arrayUtils.uniqBy(nextData, 'id');
|
254
208
|
}
|
255
|
-
|
256
209
|
return flattedData;
|
257
210
|
}, [selectedItem, flattedData]);
|
258
211
|
var cls = classname.cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
|
@@ -297,11 +250,9 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
297
250
|
})
|
298
251
|
}), typeAssertion.isArrayNonEmpty(showData) ? /*#__PURE__*/React__default["default"].createElement(CascaderMenuList.CascaderMenuList, null) : null));
|
299
252
|
});
|
300
|
-
|
301
253
|
if (env.__DEV__) {
|
302
254
|
Cascader.displayName = 'Cascader';
|
303
255
|
}
|
304
|
-
|
305
256
|
var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleRender) {
|
306
257
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
307
258
|
var title = titleRender ? titleRender(option, keyword) : true;
|
@@ -311,23 +262,20 @@ var renderHighlightTitle = function renderHighlightTitle(keyword, option, titleR
|
|
311
262
|
keyword: keyword
|
312
263
|
}, option.title);
|
313
264
|
};
|
314
|
-
|
315
265
|
var renderHighlightTitles = function renderHighlightTitles(keyword, option, titleRender) {
|
316
266
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
317
267
|
var title = titleRender ? titleRender(option, keyword) : true;
|
318
268
|
if (title !== true) return title;
|
319
|
-
|
320
269
|
if (typeof option.title !== 'string') {
|
321
270
|
console.info('WARNING: The `option.title` should be `string` when searchable is enabled.');
|
322
271
|
return option.title;
|
323
272
|
}
|
324
|
-
|
325
273
|
var found = false;
|
326
274
|
return /*#__PURE__*/React__default["default"].createElement("span", {
|
327
275
|
className: classname.cx("title__text", "title__text--cols")
|
328
276
|
}, treeUtils.getNodeAncestorsWithMe(option).map(function (item) {
|
329
277
|
var title = item.title,
|
330
|
-
|
278
|
+
id = item.id;
|
331
279
|
var raw = /*#__PURE__*/React__default["default"].createElement("span", {
|
332
280
|
className: "title__text--col",
|
333
281
|
key: id
|
@@ -347,5 +295,4 @@ var renderHighlightTitles = function renderHighlightTitles(keyword, option, titl
|
|
347
295
|
}, keyword), afterStr);
|
348
296
|
}).reverse());
|
349
297
|
};
|
350
|
-
|
351
298
|
exports.Cascader = Cascader;
|
@@ -10,49 +10,34 @@
|
|
10
10
|
'use strict';
|
11
11
|
|
12
12
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
13
|
Object.defineProperty(exports, '__esModule', {
|
15
14
|
value: true
|
16
15
|
});
|
17
|
-
|
18
16
|
var tslib = require('tslib');
|
19
|
-
|
20
17
|
var React = require('react');
|
21
|
-
|
22
18
|
var classname = require('@hi-ui/classname');
|
23
|
-
|
24
19
|
var env = require('@hi-ui/env');
|
25
|
-
|
26
20
|
var index$1 = require('./icons/index.js');
|
27
|
-
|
28
21
|
var index = require('./utils/index.js');
|
29
|
-
|
30
22
|
var context = require('./context.js');
|
31
|
-
|
32
23
|
var treeUtils = require('@hi-ui/tree-utils');
|
33
|
-
|
34
24
|
var typeAssertion = require('@hi-ui/type-assertion');
|
35
|
-
|
36
|
-
function _interopDefaultLegacy(e) {
|
25
|
+
function _interopDefaultCompat(e) {
|
37
26
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
38
27
|
'default': e
|
39
28
|
};
|
40
29
|
}
|
41
|
-
|
42
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
43
|
-
|
30
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
44
31
|
var menuListPrefix = classname.getPrefixCls('cascader-menu-list');
|
45
32
|
var CascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
46
33
|
var _a$prefixCls = _a.prefixCls,
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
34
|
+
prefixCls = _a$prefixCls === void 0 ? menuListPrefix : _a$prefixCls,
|
35
|
+
className = _a.className,
|
36
|
+
rest = tslib.__rest(_a, ["prefixCls", "className"]);
|
51
37
|
var _useCascaderContext = context.useCascaderContext(),
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
38
|
+
flatted = _useCascaderContext.flatted,
|
39
|
+
menuList = _useCascaderContext.menuList,
|
40
|
+
dropdownColumnRender = _useCascaderContext.dropdownColumnRender;
|
56
41
|
var cls = classname.cx(prefixCls, className, flatted && prefixCls + "--flatted");
|
57
42
|
return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
58
43
|
ref: ref,
|
@@ -61,38 +46,33 @@ var CascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
61
46
|
return typeAssertion.isArrayNonEmpty(menu) ? typeAssertion.isFunction(dropdownColumnRender) ? dropdownColumnRender( /*#__PURE__*/React__default["default"].createElement(CascaderMenu, {
|
62
47
|
key: menuIndex,
|
63
48
|
data: menu
|
64
|
-
}), menuIndex) : /*#__PURE__*/React__default["default"].createElement(CascaderMenu, {
|
49
|
+
}), menuIndex) : ( /*#__PURE__*/React__default["default"].createElement(CascaderMenu, {
|
65
50
|
key: menuIndex,
|
66
51
|
data: menu
|
67
|
-
}) : null;
|
52
|
+
})) : null;
|
68
53
|
}));
|
69
54
|
});
|
70
|
-
|
71
55
|
if (env.__DEV__) {
|
72
56
|
CascaderMenuList.displayName = 'CascaderMenuList';
|
73
57
|
}
|
74
|
-
|
75
58
|
var menuPrefix = classname.getPrefixCls('cascader-menu');
|
76
|
-
|
77
59
|
var CascaderMenu = function CascaderMenu(_ref) {
|
78
60
|
var _ref$prefixCls = _ref.prefixCls,
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
61
|
+
prefixCls = _ref$prefixCls === void 0 ? menuPrefix : _ref$prefixCls,
|
62
|
+
_ref$role = _ref.role,
|
63
|
+
role = _ref$role === void 0 ? 'menu' : _ref$role,
|
64
|
+
className = _ref.className,
|
65
|
+
style = _ref.style,
|
66
|
+
menu = _ref.data;
|
86
67
|
var _useCascaderContext2 = context.useCascaderContext(),
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
68
|
+
flatted = _useCascaderContext2.flatted,
|
69
|
+
disabledContext = _useCascaderContext2.disabled,
|
70
|
+
expandTrigger = _useCascaderContext2.expandTrigger,
|
71
|
+
onItemClick = _useCascaderContext2.onItemClick,
|
72
|
+
onItemHover = _useCascaderContext2.onItemHover,
|
73
|
+
titleRender = _useCascaderContext2.titleRender,
|
74
|
+
onLoadChildren = _useCascaderContext2.onLoadChildren,
|
75
|
+
getItemRequiredProps = _useCascaderContext2.getItemRequiredProps;
|
96
76
|
var cls = classname.cx(prefixCls, className);
|
97
77
|
return /*#__PURE__*/React__default["default"].createElement("ul", {
|
98
78
|
className: cls,
|
@@ -101,8 +81,8 @@ var CascaderMenu = function CascaderMenu(_ref) {
|
|
101
81
|
}, menu.map(function (option) {
|
102
82
|
var eventOption = index.getItemEventData(option, getItemRequiredProps(option));
|
103
83
|
var selected = eventOption.selected,
|
104
|
-
|
105
|
-
|
84
|
+
loading = eventOption.loading,
|
85
|
+
active = eventOption.active;
|
106
86
|
var disabled = disabledContext || option.disabled;
|
107
87
|
var optionCls = classname.cx(prefixCls + "-option", active && prefixCls + "-option--active", loading && prefixCls + "-option--loading", disabled && prefixCls + "-option--disabled", selected && prefixCls + "-option--selected");
|
108
88
|
return /*#__PURE__*/React__default["default"].createElement("li", {
|
@@ -117,39 +97,32 @@ var CascaderMenu = function CascaderMenu(_ref) {
|
|
117
97
|
},
|
118
98
|
onMouseEnter: function onMouseEnter() {
|
119
99
|
if (disabled) return;
|
120
|
-
|
121
100
|
if (expandTrigger === 'hover') {
|
122
101
|
onItemHover(eventOption);
|
123
102
|
}
|
124
103
|
}
|
125
|
-
}, flatted ? renderFlattedTitle(eventOption, titleRender) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, renderDefaultTitle(eventOption, titleRender), renderSuffix(prefixCls, option, loading, onLoadChildren))));
|
104
|
+
}, flatted ? renderFlattedTitle(eventOption, titleRender) : ( /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, renderDefaultTitle(eventOption, titleRender), renderSuffix(prefixCls, option, loading, onLoadChildren)))));
|
126
105
|
}));
|
127
106
|
};
|
128
107
|
/**
|
129
108
|
* 渲染菜单子项的展开提示图标
|
130
109
|
*/
|
131
|
-
|
132
|
-
|
133
110
|
var renderSuffix = function renderSuffix(prefixCls, item, loading, onLoadChildren) {
|
134
111
|
if (loading) {
|
135
112
|
return /*#__PURE__*/React__default["default"].createElement("span", {
|
136
113
|
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--loading")
|
137
114
|
}, index$1.defaultLoadingIcon);
|
138
115
|
}
|
139
|
-
|
140
116
|
var canLoadChildren = index.checkCanLoadChildren(item, onLoadChildren);
|
141
|
-
|
142
117
|
if (canLoadChildren) {
|
143
118
|
return /*#__PURE__*/React__default["default"].createElement("span", {
|
144
119
|
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--arrow")
|
145
120
|
}, index$1.defaultSuffixIcon);
|
146
121
|
}
|
147
|
-
|
148
122
|
return /*#__PURE__*/React__default["default"].createElement("span", {
|
149
123
|
className: classname.cx(prefixCls + "-switcher", prefixCls + "-switcher--noop")
|
150
124
|
}, index$1.defaultLeafIcon);
|
151
125
|
};
|
152
|
-
|
153
126
|
var renderFlattedTitle = function renderFlattedTitle(option, titleRender) {
|
154
127
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
155
128
|
var title = titleRender ? titleRender(option) : true;
|
@@ -163,7 +136,6 @@ var renderFlattedTitle = function renderFlattedTitle(option, titleRender) {
|
|
163
136
|
}, item.title);
|
164
137
|
}));
|
165
138
|
};
|
166
|
-
|
167
139
|
var renderDefaultTitle = function renderDefaultTitle(option, titleRender) {
|
168
140
|
// 如果 titleRender 返回 `true`,则使用默认 title
|
169
141
|
var title = titleRender ? titleRender(option) : true;
|
@@ -172,6 +144,5 @@ var renderDefaultTitle = function renderDefaultTitle(option, titleRender) {
|
|
172
144
|
className: "title__text"
|
173
145
|
}, option.title);
|
174
146
|
};
|
175
|
-
|
176
147
|
exports.CascaderMenu = CascaderMenu;
|
177
148
|
exports.CascaderMenuList = CascaderMenuList;
|
package/lib/cjs/context.js
CHANGED
@@ -12,21 +12,15 @@
|
|
12
12
|
Object.defineProperty(exports, '__esModule', {
|
13
13
|
value: true
|
14
14
|
});
|
15
|
-
|
16
15
|
var React = require('react');
|
17
|
-
|
18
16
|
var cascaderContext = /*#__PURE__*/React.createContext(null);
|
19
17
|
var CascaderProvider = cascaderContext.Provider;
|
20
|
-
|
21
18
|
var useCascaderContext = function useCascaderContext() {
|
22
19
|
var context = React.useContext(cascaderContext);
|
23
|
-
|
24
20
|
if (!context) {
|
25
21
|
throw new Error('The cascaderContext context should using in Cascader.');
|
26
22
|
}
|
27
|
-
|
28
23
|
return context;
|
29
24
|
};
|
30
|
-
|
31
25
|
exports.CascaderProvider = CascaderProvider;
|
32
26
|
exports.useCascaderContext = useCascaderContext;
|