@kdcloudjs/kdesign 1.6.22 → 1.6.24
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 +10 -0
- package/dist/kdesign-complete.less +141 -9
- package/dist/kdesign.css +156 -11
- package/dist/kdesign.css.map +1 -1
- package/dist/kdesign.js +652 -66
- package/dist/kdesign.js.map +1 -1
- package/dist/kdesign.min.css +3 -3
- package/dist/kdesign.min.js +8 -8
- package/dist/kdesign.min.js.map +1 -1
- package/es/_utils/usePopper.js +5 -1
- package/es/cascader/cascader.d.ts +7 -3
- package/es/cascader/cascader.js +243 -37
- package/es/cascader/style/index.css +144 -6
- package/es/cascader/style/index.less +122 -5
- package/es/cascader/style/token.less +3 -0
- package/es/cascader/util.d.ts +26 -0
- package/es/cascader/util.js +301 -0
- package/es/config-provider/compDefaultProps.d.ts +1 -0
- package/es/config-provider/compDefaultProps.js +1 -0
- package/es/select/option.js +3 -2
- package/es/select/style/index.css +1 -1
- package/es/select/style/index.less +1 -1
- package/es/stepper/style/index.css +10 -3
- package/es/stepper/style/index.less +12 -3
- package/es/stepper/style/token.less +3 -0
- package/es/tooltip/tooltip.js +1 -1
- package/es/tree/utils/treeUtils.js +2 -2
- package/lib/_utils/usePopper.js +5 -1
- package/lib/cascader/cascader.d.ts +7 -3
- package/lib/cascader/cascader.js +280 -56
- package/lib/cascader/style/index.css +144 -6
- package/lib/cascader/style/index.less +122 -5
- package/lib/cascader/style/token.less +3 -0
- package/lib/cascader/util.d.ts +26 -0
- package/lib/cascader/util.js +353 -0
- package/lib/config-provider/compDefaultProps.d.ts +1 -0
- package/lib/config-provider/compDefaultProps.js +1 -0
- package/lib/select/option.js +3 -2
- package/lib/select/style/index.css +1 -1
- package/lib/select/style/index.less +1 -1
- package/lib/stepper/style/index.css +10 -3
- package/lib/stepper/style/index.less +12 -3
- package/lib/stepper/style/token.less +3 -0
- package/lib/tooltip/tooltip.js +1 -1
- package/lib/tree/utils/treeUtils.js +2 -2
- package/package.json +1 -1
package/es/_utils/usePopper.js
CHANGED
|
@@ -556,7 +556,11 @@ function usePopper(locatorElement, popperElement, props) {
|
|
|
556
556
|
focus: 'mousedown',
|
|
557
557
|
contextMenu: 'mousedown'
|
|
558
558
|
};
|
|
559
|
-
|
|
559
|
+
|
|
560
|
+
if (matchTrigger('hover')) {
|
|
561
|
+
popperNode === null || popperNode === void 0 ? void 0 : popperNode.addEventListener('mouseleave', debounceHidePopper);
|
|
562
|
+
}
|
|
563
|
+
|
|
560
564
|
Array.isArray(trigger) ? trigger.forEach(function (action) {
|
|
561
565
|
return document.addEventListener(mapEvent[action], debounceHidePopper);
|
|
562
566
|
}) : document.addEventListener(mapEvent[trigger], debounceHidePopper);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { PopperProps } from '../_utils/usePopper';
|
|
3
3
|
export interface CascaderOptionType {
|
|
4
|
-
value?: string
|
|
4
|
+
value?: string;
|
|
5
5
|
label?: React.ReactNode;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
isLeaf?: boolean;
|
|
@@ -14,9 +14,12 @@ declare type FieldNames = {
|
|
|
14
14
|
value: string;
|
|
15
15
|
children: string;
|
|
16
16
|
};
|
|
17
|
+
export declare type KeysDataType = {
|
|
18
|
+
[key: string]: CascaderOptionType;
|
|
19
|
+
};
|
|
17
20
|
export declare const CascaderPlacement: ["topLeft", "topRight", "bottomLeft", "bottomRight"];
|
|
18
21
|
export declare type CascaderPlacementType = typeof CascaderPlacement[number];
|
|
19
|
-
export declare type CascaderValueType =
|
|
22
|
+
export declare type CascaderValueType = (string | string[])[];
|
|
20
23
|
export declare type CascaderExpandTrigger = 'click' | 'hover';
|
|
21
24
|
export interface CascaderProps extends PopperProps {
|
|
22
25
|
id?: string;
|
|
@@ -37,6 +40,7 @@ export interface CascaderProps extends PopperProps {
|
|
|
37
40
|
notFoundContent?: string;
|
|
38
41
|
value?: CascaderValueType;
|
|
39
42
|
children?: React.ReactNode;
|
|
43
|
+
mode?: 'single' | 'multiple';
|
|
40
44
|
style?: React.CSSProperties;
|
|
41
45
|
suffixIcon?: React.ReactNode;
|
|
42
46
|
expandIcon?: React.ReactNode;
|
package/es/cascader/cascader.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
|
|
2
1
|
import _extends from "@babel/runtime-corejs3/helpers/extends";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime-corejs3/helpers/toConsumableArray";
|
|
3
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
3
4
|
import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
|
|
4
5
|
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
5
6
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
7
|
+
import _JSON$stringify from "@babel/runtime-corejs3/core-js-stable/json/stringify";
|
|
6
8
|
import _spliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/splice";
|
|
7
9
|
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
|
|
8
|
-
import
|
|
10
|
+
import React, { useMemo, useCallback } from 'react';
|
|
9
11
|
import classNames from 'classnames';
|
|
10
12
|
import { tuple } from '../_utils/type';
|
|
11
13
|
import { getCompProps } from '../_utils';
|
|
@@ -14,6 +16,9 @@ import usePopper from '../_utils/usePopper';
|
|
|
14
16
|
import Input from '../input';
|
|
15
17
|
import Icon from '../icon';
|
|
16
18
|
import Empty from '../empty';
|
|
19
|
+
import Checkbox from '../checkbox';
|
|
20
|
+
import Tag from '../tag';
|
|
21
|
+
import { flattenAll, useChecked, getHalfChecked, getChecked, getMultipleCheckValue, getAllCheckedKeys } from './util';
|
|
17
22
|
export var CascaderPlacement = tuple('topLeft', 'topRight', 'bottomLeft', 'bottomRight');
|
|
18
23
|
var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
19
24
|
var _React$useContext = React.useContext(ConfigContext),
|
|
@@ -23,14 +28,19 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
23
28
|
|
|
24
29
|
|
|
25
30
|
var allProps = getCompProps('Cascader', userDefaultProps, props);
|
|
26
|
-
var
|
|
31
|
+
var mode = allProps.mode,
|
|
32
|
+
style = allProps.style,
|
|
27
33
|
options = allProps.options,
|
|
34
|
+
bordered = allProps.bordered,
|
|
35
|
+
disabled = allProps.disabled,
|
|
28
36
|
children = allProps.children,
|
|
29
37
|
loadData = allProps.loadData,
|
|
38
|
+
clearIcon = allProps.clearIcon,
|
|
30
39
|
className = allProps.className,
|
|
31
40
|
fieldNames = allProps.fieldNames,
|
|
32
41
|
placeholder = allProps.placeholder,
|
|
33
42
|
defaultValue = allProps.defaultValue,
|
|
43
|
+
maxTagPlaceholder = allProps.maxTagPlaceholder,
|
|
34
44
|
displayRender = allProps.displayRender,
|
|
35
45
|
expandTrigger = allProps.expandTrigger,
|
|
36
46
|
changeOnSelect = allProps.changeOnSelect,
|
|
@@ -45,6 +55,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
45
55
|
var prefixCls = getPrefixCls(pkgPrefixCls, 'cascader', customPrefixcls);
|
|
46
56
|
var pickerRef = React.useRef();
|
|
47
57
|
var triggerRef = React.useRef();
|
|
58
|
+
var wrapperRef = React.useRef();
|
|
48
59
|
var mergeRef = ref || pickerRef;
|
|
49
60
|
|
|
50
61
|
var _React$useState = React.useState(!!props.popperVisible || !!props.popupVisible || defaultPopupVisible),
|
|
@@ -79,8 +90,23 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
79
90
|
React.useEffect(function () {
|
|
80
91
|
props.value && setValue(props.value);
|
|
81
92
|
}, [props.value]);
|
|
93
|
+
var isMultiple = useMemo(function () {
|
|
94
|
+
return mode === 'multiple';
|
|
95
|
+
}, [mode]);
|
|
96
|
+
|
|
97
|
+
var _useMemo = useMemo(function () {
|
|
98
|
+
return flattenAll(options, []);
|
|
99
|
+
}, [options]),
|
|
100
|
+
flattenData = _useMemo.flattenData,
|
|
101
|
+
keysData = _useMemo.keysData;
|
|
102
|
+
|
|
103
|
+
var _useChecked = useChecked(value, flattenData, keysData, isMultiple),
|
|
104
|
+
_useChecked2 = _slicedToArray(_useChecked, 2),
|
|
105
|
+
checkedKeys = _useChecked2[0],
|
|
106
|
+
halfCheckedKeys = _useChecked2[1];
|
|
107
|
+
|
|
82
108
|
React.useEffect(function () {
|
|
83
|
-
if (value && (options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
109
|
+
if (!isMultiple && value && (options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
84
110
|
var _currentOptions = [];
|
|
85
111
|
var _menus = [options];
|
|
86
112
|
|
|
@@ -104,7 +130,39 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
104
130
|
setMenus(_menus);
|
|
105
131
|
setCurrentOptions(_currentOptions);
|
|
106
132
|
}
|
|
107
|
-
}, [options, value, selectedOptions, fieldNames]);
|
|
133
|
+
}, [options, value, selectedOptions, fieldNames, isMultiple]);
|
|
134
|
+
React.useEffect(function () {
|
|
135
|
+
if (isMultiple && value && (options === null || options === void 0 ? void 0 : options.length) > 0) {
|
|
136
|
+
var _currentOptions2 = [];
|
|
137
|
+
var lastselectedOptions = value[(value === null || value === void 0 ? void 0 : value.length) - 1] || [];
|
|
138
|
+
var _menus2 = [options];
|
|
139
|
+
|
|
140
|
+
var scanOptions = function scanOptions(options) {
|
|
141
|
+
options.forEach(function (option) {
|
|
142
|
+
var _a;
|
|
143
|
+
|
|
144
|
+
if (_includesInstanceProperty(lastselectedOptions).call(lastselectedOptions, String(option[fieldNames.value]))) {
|
|
145
|
+
_currentOptions2.push(option);
|
|
146
|
+
|
|
147
|
+
if ((_a = option[fieldNames.children]) === null || _a === void 0 ? void 0 : _a.length) {
|
|
148
|
+
_menus2.push(option[fieldNames.children]);
|
|
149
|
+
|
|
150
|
+
scanOptions(option[fieldNames.children]);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
scanOptions(options);
|
|
157
|
+
var newMultipleOptions = value === null || value === void 0 ? void 0 : _mapInstanceProperty(value).call(value, function (item) {
|
|
158
|
+
return Array.isArray(item) ? _mapInstanceProperty(item).call(item, function (key) {
|
|
159
|
+
return keysData[key];
|
|
160
|
+
}) : [];
|
|
161
|
+
});
|
|
162
|
+
setMenus(_menus2);
|
|
163
|
+
setCurrentOptions(newMultipleOptions);
|
|
164
|
+
}
|
|
165
|
+
}, [options, value, fieldNames, isMultiple]);
|
|
108
166
|
React.useEffect(function () {
|
|
109
167
|
var _a;
|
|
110
168
|
|
|
@@ -112,12 +170,30 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
112
170
|
(_a = mergeRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
113
171
|
}
|
|
114
172
|
}, [allProps.autoFocus, mergeRef]);
|
|
173
|
+
React.useEffect(function () {
|
|
174
|
+
var _a;
|
|
115
175
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
176
|
+
(_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseup', function (e) {
|
|
177
|
+
var _a;
|
|
178
|
+
|
|
179
|
+
var isCloseBtn = ((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.className.indexOf('kd-tag-close-icon')) > -1;
|
|
120
180
|
|
|
181
|
+
if (isCloseBtn) {
|
|
182
|
+
e.stopPropagation();
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}, []);
|
|
186
|
+
var labels = useMemo(function () {
|
|
187
|
+
return !isMultiple ? _mapInstanceProperty(currentOptions).call(currentOptions, function (_ref) {
|
|
188
|
+
var label = _ref[fieldNames.label];
|
|
189
|
+
return label;
|
|
190
|
+
}) : _mapInstanceProperty(currentOptions).call(currentOptions, function (option) {
|
|
191
|
+
return _mapInstanceProperty(option).call(option, function (_ref2) {
|
|
192
|
+
var label = _ref2[fieldNames.label];
|
|
193
|
+
return label;
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
}, [currentOptions, fieldNames.label, isMultiple]);
|
|
121
197
|
var allowClear = allProps.allowClear && value.length > 0;
|
|
122
198
|
var locatorProps = {
|
|
123
199
|
style: style,
|
|
@@ -125,7 +201,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
125
201
|
className: classNames("".concat(prefixCls, "-picker"), className, {
|
|
126
202
|
expand: visible,
|
|
127
203
|
allowClear: allowClear,
|
|
128
|
-
disabled:
|
|
204
|
+
disabled: disabled
|
|
129
205
|
})
|
|
130
206
|
};
|
|
131
207
|
|
|
@@ -137,7 +213,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
137
213
|
value: value,
|
|
138
214
|
placeholder: placeholder,
|
|
139
215
|
readOnly: true,
|
|
140
|
-
disabled:
|
|
216
|
+
disabled: disabled,
|
|
141
217
|
className: classNames("".concat(prefixCls, "-picker-input"), {
|
|
142
218
|
expand: visible
|
|
143
219
|
}),
|
|
@@ -149,47 +225,167 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
149
225
|
})
|
|
150
226
|
};
|
|
151
227
|
|
|
152
|
-
if (
|
|
228
|
+
if (bordered) {
|
|
153
229
|
inputProps.borderType = 'bordered';
|
|
154
230
|
}
|
|
155
231
|
|
|
156
|
-
var
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
232
|
+
var renderSuffix = function renderSuffix() {
|
|
233
|
+
var _classNames;
|
|
234
|
+
|
|
235
|
+
var suffixIcon = allProps.suffixIcon; // 选择器下拉icon样式
|
|
236
|
+
|
|
237
|
+
var arrowIconCls = classNames((_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-icon-arrow"), true), _defineProperty(_classNames, "".concat(prefixCls, "-icon-arrow-up"), visible), _defineProperty(_classNames, "".concat(prefixCls, "-icon-arrow-down"), !visible), _defineProperty(_classNames, "".concat(prefixCls, "-icon-arrow-focus"), visible), _classNames));
|
|
238
|
+
var iconShow = allowClear && !disabled && currentOptions.length > 0;
|
|
239
|
+
var clearIconCls = classNames(_defineProperty({}, "".concat(prefixCls, "-icon-clear"), true));
|
|
240
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, iconShow && /*#__PURE__*/React.createElement("span", {
|
|
241
|
+
onClick: handleClear,
|
|
242
|
+
className: clearIconCls
|
|
243
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
244
|
+
type: "close-solid"
|
|
245
|
+
}) || clearIcon), /*#__PURE__*/React.createElement("span", {
|
|
246
|
+
className: arrowIconCls
|
|
247
|
+
}, suffixIcon || /*#__PURE__*/React.createElement(Icon, {
|
|
248
|
+
type: "arrow-down"
|
|
249
|
+
})));
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
var handleMaxTagHolder = useCallback(function () {
|
|
253
|
+
if (typeof maxTagPlaceholder === 'function') {
|
|
254
|
+
return /*#__PURE__*/React.createElement(Tag, {
|
|
255
|
+
type: "edit",
|
|
256
|
+
disabled: disabled
|
|
257
|
+
}, maxTagPlaceholder(currentOptions));
|
|
258
|
+
} else {
|
|
259
|
+
return /*#__PURE__*/React.createElement(Tag, {
|
|
260
|
+
type: "edit",
|
|
261
|
+
disabled: disabled
|
|
262
|
+
}, maxTagPlaceholder);
|
|
263
|
+
}
|
|
264
|
+
}, [disabled, maxTagPlaceholder, currentOptions]);
|
|
265
|
+
|
|
266
|
+
var handleRemove = function handleRemove(e, opt) {
|
|
267
|
+
e.stopPropagation();
|
|
268
|
+
onMultipleChecked(_toConsumableArray(opt).pop(), false);
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
var renderMultiple = function renderMultiple() {
|
|
272
|
+
var _classNames3, _classNames4;
|
|
273
|
+
|
|
274
|
+
var maxTagCount = allProps.maxTagCount,
|
|
275
|
+
maxTagPlaceholder = allProps.maxTagPlaceholder;
|
|
276
|
+
var multipleCls = classNames((_classNames3 = {
|
|
277
|
+
disabled: disabled
|
|
278
|
+
}, _defineProperty(_classNames3, "".concat(prefixCls, "-multiple"), true), _defineProperty(_classNames3, "".concat(prefixCls, "-bordered"), bordered), _classNames3));
|
|
279
|
+
var itemCls = classNames((_classNames4 = {}, _defineProperty(_classNames4, "".concat(prefixCls, "-selection-item"), true), _defineProperty(_classNames4, "".concat(prefixCls, "-tag-describe"), true), _classNames4));
|
|
280
|
+
var TagStyle = {
|
|
281
|
+
margin: '2px 8px 2px 0',
|
|
282
|
+
maxWidth: '100%'
|
|
283
|
+
};
|
|
284
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
285
|
+
className: multipleCls,
|
|
286
|
+
ref: triggerRef,
|
|
287
|
+
style: style
|
|
288
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
289
|
+
className: "".concat(prefixCls, "-multiple-wrapper"),
|
|
290
|
+
ref: wrapperRef
|
|
291
|
+
}, Array.isArray(currentOptions) && /*#__PURE__*/React.createElement(React.Fragment, null, _mapInstanceProperty(currentOptions).call(currentOptions, function (option, index) {
|
|
292
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
293
|
+
key: _JSON$stringify(labels[index]),
|
|
294
|
+
className: classNames("".concat(prefixCls, "-selection-tag"))
|
|
295
|
+
}, (!maxTagCount || index <= maxTagCount - 1) && /*#__PURE__*/React.createElement(Tag, {
|
|
296
|
+
type: "edit",
|
|
297
|
+
style: TagStyle,
|
|
298
|
+
closable: true,
|
|
299
|
+
onClose: function onClose(e) {
|
|
300
|
+
return handleRemove(e, option);
|
|
301
|
+
}
|
|
302
|
+
}, displayRender(labels[index], option)));
|
|
303
|
+
}), maxTagCount && currentOptions.length > maxTagCount ? maxTagPlaceholder ? handleMaxTagHolder() : /*#__PURE__*/React.createElement("span", {
|
|
304
|
+
className: itemCls
|
|
305
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
306
|
+
className: "".concat(prefixCls, "-tag-describe-content")
|
|
307
|
+
}, "\u5171", currentOptions.length, "\u9879")) : null), /*#__PURE__*/React.createElement("span", {
|
|
308
|
+
className: "".concat(prefixCls, "-placeholder")
|
|
309
|
+
}, !currentOptions.length && placeholder), /*#__PURE__*/React.createElement("span", {
|
|
310
|
+
className: "".concat(prefixCls, "-suffix")
|
|
311
|
+
}, renderSuffix())));
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
var renderSingle = function renderSingle() {
|
|
315
|
+
return /*#__PURE__*/React.createElement("span", _extends({}, locatorProps, {
|
|
316
|
+
ref: mergeRef
|
|
317
|
+
}), React.Children.count(children) === 1 && children.type ? /*#__PURE__*/React.cloneElement(children, {
|
|
318
|
+
ref: triggerRef
|
|
319
|
+
}) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
320
|
+
ref: triggerRef
|
|
321
|
+
}, /*#__PURE__*/React.createElement(Input, _extends({}, inputProps)), /*#__PURE__*/React.createElement("span", {
|
|
322
|
+
className: "".concat(prefixCls, "-picker-label")
|
|
323
|
+
}, (labels === null || labels === void 0 ? void 0 : labels.length) ? displayRender(labels, currentOptions) : '')), allowClear && /*#__PURE__*/React.createElement(Icon, {
|
|
324
|
+
type: "close-solid",
|
|
325
|
+
className: "".concat(prefixCls, "-picker-close"),
|
|
326
|
+
onClick: handleClear
|
|
327
|
+
})));
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
var cascaderLocator = isMultiple ? renderMultiple() : renderSingle();
|
|
169
331
|
|
|
170
332
|
var onExpend = function onExpend(index, opt, opts) {
|
|
171
333
|
_spliceInstanceProperty(selectedOptions).call(selectedOptions, index, selectedOptions.length - index, opt);
|
|
172
334
|
|
|
173
335
|
setSelectedOptions(selectedOptions);
|
|
174
336
|
|
|
337
|
+
if (!(opts === null || opts === void 0 ? void 0 : opts.length) && opt.isLeaf !== false || changeOnSelect) {
|
|
338
|
+
onChange(selectedOptions);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
!(opts === null || opts === void 0 ? void 0 : opts.length) && opt.isLeaf !== false && setVisible(false);
|
|
342
|
+
|
|
175
343
|
var newMenus = _toConsumableArray(menus);
|
|
176
344
|
|
|
177
345
|
if ((opts === null || opts === void 0 ? void 0 : opts.length) || opt.isLeaf === false) {
|
|
178
346
|
_spliceInstanceProperty(newMenus).call(newMenus, index + 1, newMenus.length - index + 1, opts);
|
|
179
347
|
}
|
|
180
348
|
|
|
181
|
-
|
|
182
|
-
|
|
349
|
+
setMenus(newMenus);
|
|
350
|
+
loadData && opt.isLeaf === false && !(opts === null || opts === void 0 ? void 0 : opts.length) && loadData(selectedOptions);
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
var onMultipleExpend = function onMultipleExpend(index, opt, opts) {
|
|
354
|
+
_spliceInstanceProperty(selectedOptions).call(selectedOptions, index, selectedOptions.length - index, opt);
|
|
355
|
+
|
|
356
|
+
setSelectedOptions(selectedOptions);
|
|
357
|
+
|
|
358
|
+
var newMenus = _toConsumableArray(menus);
|
|
359
|
+
|
|
360
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.length) || opt.isLeaf === false) {
|
|
361
|
+
_spliceInstanceProperty(newMenus).call(newMenus, index + 1, newMenus.length - index + 1, opts);
|
|
183
362
|
}
|
|
184
363
|
|
|
185
|
-
!(opts === null || opts === void 0 ? void 0 : opts.length) && opt.isLeaf !== false && setVisible(false);
|
|
186
364
|
setMenus(newMenus);
|
|
187
365
|
loadData && opt.isLeaf === false && !(opts === null || opts === void 0 ? void 0 : opts.length) && loadData(selectedOptions);
|
|
188
366
|
};
|
|
189
367
|
|
|
368
|
+
var onMultipleChecked = function onMultipleChecked(opt, checked) {
|
|
369
|
+
var _a;
|
|
370
|
+
|
|
371
|
+
var checkState = getAllCheckedKeys(opt.value, checked, checkedKeys, keysData, halfCheckedKeys);
|
|
372
|
+
var newValue = getMultipleCheckValue(value, opt, checked, flattenData, checkState.checkedKeys);
|
|
373
|
+
var newMultipleOptions = newValue === null || newValue === void 0 ? void 0 : _mapInstanceProperty(newValue).call(newValue, function (item) {
|
|
374
|
+
return Array.isArray(item) ? _mapInstanceProperty(item).call(item, function (key) {
|
|
375
|
+
return keysData[key];
|
|
376
|
+
}) : [];
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
if (!('value' in props)) {
|
|
380
|
+
setValue(newValue);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, newValue, newMultipleOptions);
|
|
384
|
+
};
|
|
385
|
+
|
|
190
386
|
var onChange = function onChange(selectedOptions) {
|
|
191
|
-
var selectedValue = _mapInstanceProperty(selectedOptions).call(selectedOptions, function (
|
|
192
|
-
var value =
|
|
387
|
+
var selectedValue = _mapInstanceProperty(selectedOptions).call(selectedOptions, function (_ref3) {
|
|
388
|
+
var value = _ref3[fieldNames.value];
|
|
193
389
|
return value;
|
|
194
390
|
});
|
|
195
391
|
|
|
@@ -216,24 +412,21 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
216
412
|
label = opt[fieldNames.label],
|
|
217
413
|
children = opt[fieldNames.children];
|
|
218
414
|
var expendEvent = expandTrigger === 'click' || !(children && children.length) ? 'onClick' : 'onMouseEnter';
|
|
415
|
+
var selected = selectedOptions[index] && selectedOptions[index][fieldNames.value] === value;
|
|
219
416
|
var optionProps = {
|
|
220
417
|
role: 'menuitem',
|
|
221
418
|
className: classNames("".concat(prefixCls, "-menu-item"), {
|
|
222
419
|
disabled: opt.disabled,
|
|
223
420
|
last: !(children === null || children === void 0 ? void 0 : children.length) && isLeaf !== false,
|
|
224
|
-
selected:
|
|
421
|
+
selected: selected
|
|
225
422
|
})
|
|
226
423
|
};
|
|
227
424
|
|
|
228
425
|
if (!opt.disabled) {
|
|
229
|
-
optionProps[expendEvent] = onExpend.bind(null, index, opt, children);
|
|
426
|
+
optionProps[expendEvent] = isMultiple ? onMultipleExpend.bind(null, index, opt, children) : onExpend.bind(null, index, opt, children);
|
|
230
427
|
}
|
|
231
428
|
|
|
232
|
-
|
|
233
|
-
key: value
|
|
234
|
-
}, optionProps, {
|
|
235
|
-
title: label
|
|
236
|
-
}), /*#__PURE__*/React.createElement("span", {
|
|
429
|
+
var node = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
237
430
|
className: "".concat(prefixCls, "-menu-item-label")
|
|
238
431
|
}, label), loading ? /*#__PURE__*/React.createElement(Icon, {
|
|
239
432
|
type: "loadding-circle",
|
|
@@ -241,6 +434,19 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
241
434
|
}) : ((children === null || children === void 0 ? void 0 : children.length) || isLeaf === false) && (props.expandIcon || /*#__PURE__*/React.createElement(Icon, {
|
|
242
435
|
type: "arrow-right"
|
|
243
436
|
})));
|
|
437
|
+
return /*#__PURE__*/React.createElement("li", _extends({
|
|
438
|
+
key: value
|
|
439
|
+
}, optionProps, {
|
|
440
|
+
title: label
|
|
441
|
+
}), isMultiple ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
|
|
442
|
+
checked: getChecked(checkedKeys, value),
|
|
443
|
+
indeterminate: getHalfChecked(halfCheckedKeys, value),
|
|
444
|
+
disabled: opt.disabled,
|
|
445
|
+
onChange: function onChange(e) {
|
|
446
|
+
return onMultipleChecked(opt, e.target.checked);
|
|
447
|
+
},
|
|
448
|
+
className: "".concat(prefixCls, "-checkbox")
|
|
449
|
+
}), node) : node);
|
|
244
450
|
}));
|
|
245
451
|
}) : /*#__PURE__*/React.createElement(Empty, {
|
|
246
452
|
description: notFoundContent
|
|
@@ -114,11 +114,11 @@
|
|
|
114
114
|
border-color: var(--kd-c-cascader-color-active, #999);
|
|
115
115
|
}
|
|
116
116
|
.kd-cascader-picker:focus > .kd-cascader-picker-input .kd-input-suffix,
|
|
117
|
-
.kd-cascader-picker:focus > .kd-cascader-picker-input i[class*=
|
|
117
|
+
.kd-cascader-picker:focus > .kd-cascader-picker-input i[class*='kdicon'] {
|
|
118
118
|
color: var(--kd-c-cascader-color-active, #999);
|
|
119
119
|
}
|
|
120
120
|
.kd-cascader-picker:hover > .kd-cascader-picker-input .kd-input-suffix,
|
|
121
|
-
.kd-cascader-picker:hover > .kd-cascader-picker-input i[class*=
|
|
121
|
+
.kd-cascader-picker:hover > .kd-cascader-picker-input i[class*='kdicon'] {
|
|
122
122
|
color: var(--kd-c-cascader-color-active, #999);
|
|
123
123
|
}
|
|
124
124
|
.kd-cascader-picker.disabled .kd-cascader-picker-input {
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
border-color: var(--kd-g-color-border-strong, #d9d9d9);
|
|
127
127
|
}
|
|
128
128
|
.kd-cascader-picker.disabled .kd-cascader-picker-input .kd-input-suffix,
|
|
129
|
-
.kd-cascader-picker.disabled .kd-cascader-picker-input i[class*=
|
|
129
|
+
.kd-cascader-picker.disabled .kd-cascader-picker-input i[class*='kdicon'] {
|
|
130
130
|
color: var(--kd-c-cascader-color-text-disabled, var(--kd-g-color-disabled, #b2b2b2));
|
|
131
131
|
}
|
|
132
132
|
.kd-cascader-picker-label {
|
|
@@ -157,13 +157,13 @@
|
|
|
157
157
|
.kd-cascader-picker-input.expand {
|
|
158
158
|
border-color: var(--kd-c-cascader-color-active, #999);
|
|
159
159
|
}
|
|
160
|
-
.kd-cascader-picker-input.expand i[class*=
|
|
160
|
+
.kd-cascader-picker-input.expand i[class*='kdicon'] {
|
|
161
161
|
color: var(--kd-c-cascader-color-active, #999);
|
|
162
162
|
-webkit-transform: rotate(180deg);
|
|
163
163
|
transform: rotate(180deg);
|
|
164
164
|
}
|
|
165
165
|
.kd-cascader-picker-input .kd-input-suffix,
|
|
166
|
-
.kd-cascader-picker-input i[class*=
|
|
166
|
+
.kd-cascader-picker-input i[class*='kdicon'] {
|
|
167
167
|
-webkit-transition: all 0.2s;
|
|
168
168
|
transition: all 0.2s;
|
|
169
169
|
}
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
opacity: 0;
|
|
189
189
|
cursor: pointer;
|
|
190
190
|
visibility: hidden;
|
|
191
|
-
color: var(--kd-c-cascader-clear-color-text, #d9d9d9);
|
|
191
|
+
color: var(--kd-c-cascader-icon-clear-color-text, #d9d9d9);
|
|
192
192
|
-webkit-transition: all 0.1s;
|
|
193
193
|
transition: all 0.1s;
|
|
194
194
|
-webkit-transform-origin: 50% 50%;
|
|
@@ -241,6 +241,9 @@
|
|
|
241
241
|
-webkit-box-pack: justify;
|
|
242
242
|
-ms-flex-pack: justify;
|
|
243
243
|
justify-content: space-between;
|
|
244
|
+
-webkit-box-align: center;
|
|
245
|
+
-ms-flex-align: center;
|
|
246
|
+
align-items: center;
|
|
244
247
|
padding: 0 var(--kd-c-cascader-menu-item-spacing-padding-horizontal, 12px);
|
|
245
248
|
line-height: var(--kd-c-cascader-menu-item-sizing-height, 32px);
|
|
246
249
|
cursor: pointer;
|
|
@@ -267,6 +270,141 @@
|
|
|
267
270
|
.kd-cascader-menus .kd-cascader-menu-item.last .kd-cascader-menu-item-label {
|
|
268
271
|
width: 92px;
|
|
269
272
|
}
|
|
273
|
+
.kd-cascader-menus .kd-cascader-menu-item .kd-cascader-checkbox {
|
|
274
|
+
margin-right: 5px;
|
|
275
|
+
}
|
|
270
276
|
.kd-cascader-menus .kd-empty {
|
|
271
277
|
padding: 10px 0 20px;
|
|
272
278
|
}
|
|
279
|
+
.kd-cascader-bordered {
|
|
280
|
+
border: 1px solid #d9d9d9;
|
|
281
|
+
padding-left: 8px !important;
|
|
282
|
+
border-radius: 2px;
|
|
283
|
+
}
|
|
284
|
+
.kd-cascader-multiple {
|
|
285
|
+
padding: 1px 28px 1px 0;
|
|
286
|
+
-webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
287
|
+
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
|
288
|
+
width: 100%;
|
|
289
|
+
min-height: 30px;
|
|
290
|
+
max-height: 100px;
|
|
291
|
+
color: #212121;
|
|
292
|
+
display: -webkit-box;
|
|
293
|
+
display: -ms-flexbox;
|
|
294
|
+
display: flex;
|
|
295
|
+
cursor: pointer;
|
|
296
|
+
-webkit-box-sizing: border-box;
|
|
297
|
+
box-sizing: border-box;
|
|
298
|
+
overflow-y: auto;
|
|
299
|
+
overflow-x: hidden;
|
|
300
|
+
position: relative;
|
|
301
|
+
border-bottom: 1px solid #d9d9d9;
|
|
302
|
+
}
|
|
303
|
+
.kd-cascader-multiple-wrapper {
|
|
304
|
+
display: -webkit-box;
|
|
305
|
+
display: -ms-flexbox;
|
|
306
|
+
display: flex;
|
|
307
|
+
-webkit-box-align: center;
|
|
308
|
+
-ms-flex-align: center;
|
|
309
|
+
align-items: center;
|
|
310
|
+
-ms-flex-wrap: wrap;
|
|
311
|
+
flex-wrap: wrap;
|
|
312
|
+
width: 100%;
|
|
313
|
+
}
|
|
314
|
+
.kd-cascader-placeholder {
|
|
315
|
+
position: absolute;
|
|
316
|
+
color: #999;
|
|
317
|
+
overflow: hidden;
|
|
318
|
+
white-space: nowrap;
|
|
319
|
+
text-overflow: ellipsis;
|
|
320
|
+
}
|
|
321
|
+
.kd-cascader-suffix {
|
|
322
|
+
right: 0;
|
|
323
|
+
position: absolute;
|
|
324
|
+
display: -webkit-box;
|
|
325
|
+
display: -ms-flexbox;
|
|
326
|
+
display: flex;
|
|
327
|
+
-webkit-box-flex: 0;
|
|
328
|
+
-ms-flex: 0;
|
|
329
|
+
flex: 0;
|
|
330
|
+
-ms-flex-wrap: wrap;
|
|
331
|
+
flex-wrap: wrap;
|
|
332
|
+
-webkit-box-align: center;
|
|
333
|
+
-ms-flex-align: center;
|
|
334
|
+
align-items: center;
|
|
335
|
+
-webkit-box-pack: center;
|
|
336
|
+
-ms-flex-pack: center;
|
|
337
|
+
justify-content: center;
|
|
338
|
+
margin-left: 8px;
|
|
339
|
+
}
|
|
340
|
+
.kd-cascader-selection-tag {
|
|
341
|
+
max-width: 100%;
|
|
342
|
+
}
|
|
343
|
+
.kd-cascader-multiple:hover .kd-cascader-icon-clear {
|
|
344
|
+
opacity: 1;
|
|
345
|
+
}
|
|
346
|
+
.kd-cascader-icon-arrow {
|
|
347
|
+
display: -webkit-inline-box;
|
|
348
|
+
display: -ms-inline-flexbox;
|
|
349
|
+
display: inline-flex;
|
|
350
|
+
-webkit-box-align: center;
|
|
351
|
+
-ms-flex-align: center;
|
|
352
|
+
align-items: center;
|
|
353
|
+
vertical-align: middle;
|
|
354
|
+
}
|
|
355
|
+
.kd-cascader-icon-arrow-up {
|
|
356
|
+
-webkit-transform: rotate(180deg);
|
|
357
|
+
transform: rotate(180deg);
|
|
358
|
+
-webkit-transition: -webkit-transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
359
|
+
transition: -webkit-transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
360
|
+
transition: transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
361
|
+
transition: transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1), -webkit-transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
362
|
+
}
|
|
363
|
+
.kd-cascader-icon-arrow-down {
|
|
364
|
+
-webkit-transform: rotate(0deg);
|
|
365
|
+
transform: rotate(0deg);
|
|
366
|
+
-webkit-transition: -webkit-transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
367
|
+
transition: -webkit-transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
368
|
+
transition: transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
369
|
+
transition: transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1), -webkit-transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
|
|
370
|
+
}
|
|
371
|
+
.kd-cascader-icon-arrow-focus {
|
|
372
|
+
color: var(--kd-c-cascader-color-border-foucs, var(--kd-g-color-theme, #5582f3));
|
|
373
|
+
}
|
|
374
|
+
.kd-cascader-icon-clear {
|
|
375
|
+
opacity: 0;
|
|
376
|
+
z-index: 1;
|
|
377
|
+
position: absolute;
|
|
378
|
+
background: #fff;
|
|
379
|
+
-webkit-transition: opacity 0.15s ease;
|
|
380
|
+
transition: opacity 0.15s ease;
|
|
381
|
+
color: var(--kd-c-cascader-icon-clear-color-text, #d9d9d9);
|
|
382
|
+
}
|
|
383
|
+
.kd-cascader-icon-clear:hover {
|
|
384
|
+
color: var(--kd-c-cascader-icon-clear-color-text-hover, #999);
|
|
385
|
+
}
|
|
386
|
+
.kd-cascader-tag-describe {
|
|
387
|
+
font-size: 12px;
|
|
388
|
+
height: 20px;
|
|
389
|
+
line-height: 18px;
|
|
390
|
+
margin: 2px 8px 2px 0;
|
|
391
|
+
-webkit-user-select: none;
|
|
392
|
+
-moz-user-select: none;
|
|
393
|
+
-ms-user-select: none;
|
|
394
|
+
user-select: none;
|
|
395
|
+
}
|
|
396
|
+
.kd-cascader-tag-describe-content {
|
|
397
|
+
display: -webkit-inline-box;
|
|
398
|
+
display: -ms-inline-flexbox;
|
|
399
|
+
display: inline-flex;
|
|
400
|
+
-webkit-box-align: center;
|
|
401
|
+
-ms-flex-align: center;
|
|
402
|
+
align-items: center;
|
|
403
|
+
vertical-align: middle;
|
|
404
|
+
padding: 0 7px;
|
|
405
|
+
overflow: hidden;
|
|
406
|
+
white-space: nowrap;
|
|
407
|
+
text-overflow: ellipsis;
|
|
408
|
+
border: 1px solid #ccc;
|
|
409
|
+
color: #212121;
|
|
410
|
+
}
|