@kdcloudjs/kdesign 1.7.24 → 1.7.26

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/kdesign-complete.less +101 -43
  3. package/dist/kdesign.css +81 -37
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +251 -132
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +3 -3
  8. package/dist/kdesign.min.js +5 -5
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/_utils/usePopper.d.ts +1 -0
  11. package/es/_utils/usePopper.js +4 -2
  12. package/es/cascader/cascader.js +64 -32
  13. package/es/cascader/style/index.css +40 -24
  14. package/es/cascader/style/index.less +49 -27
  15. package/es/cascader/style/token.less +4 -3
  16. package/es/city-picker/city-picker.js +33 -26
  17. package/es/city-picker/option.js +4 -3
  18. package/es/city-picker/style/index.css +24 -10
  19. package/es/city-picker/style/index.less +22 -6
  20. package/es/city-picker/style/token.less +4 -5
  21. package/es/collapse/panel.js +31 -18
  22. package/es/collapse/style/index.css +4 -1
  23. package/es/collapse/style/index.less +4 -1
  24. package/es/form/Field.d.ts +1 -0
  25. package/es/form/Field.js +5 -3
  26. package/es/form/FieldWrapper.d.ts +1 -0
  27. package/es/form/FieldWrapper.js +13 -5
  28. package/es/form/style/index.css +11 -1
  29. package/es/form/style/index.less +16 -1
  30. package/es/form/style/token.less +1 -0
  31. package/es/input-number/inputNumber.js +15 -3
  32. package/es/input-number/useSelectionRange.d.ts +4 -0
  33. package/es/input-number/useSelectionRange.js +22 -0
  34. package/es/locale/locale.d.ts +4 -4
  35. package/es/locale/zh-CN.d.ts +4 -2
  36. package/es/locale/zh-CN.js +4 -2
  37. package/es/radio/style/index.css +1 -0
  38. package/es/radio/style/index.less +1 -0
  39. package/es/select/select.js +3 -3
  40. package/es/tag/tag.d.ts +1 -0
  41. package/es/tree-select/tree-select.js +2 -1
  42. package/lib/_utils/usePopper.d.ts +1 -0
  43. package/lib/_utils/usePopper.js +4 -2
  44. package/lib/cascader/cascader.js +63 -31
  45. package/lib/cascader/style/index.css +40 -24
  46. package/lib/cascader/style/index.less +49 -27
  47. package/lib/cascader/style/token.less +4 -3
  48. package/lib/city-picker/city-picker.js +33 -26
  49. package/lib/city-picker/option.js +4 -3
  50. package/lib/city-picker/style/index.css +24 -10
  51. package/lib/city-picker/style/index.less +22 -6
  52. package/lib/city-picker/style/token.less +4 -5
  53. package/lib/collapse/panel.js +32 -19
  54. package/lib/collapse/style/index.css +4 -1
  55. package/lib/collapse/style/index.less +4 -1
  56. package/lib/form/Field.d.ts +1 -0
  57. package/lib/form/Field.js +5 -3
  58. package/lib/form/FieldWrapper.d.ts +1 -0
  59. package/lib/form/FieldWrapper.js +13 -5
  60. package/lib/form/style/index.css +11 -1
  61. package/lib/form/style/index.less +16 -1
  62. package/lib/form/style/token.less +1 -0
  63. package/lib/input-number/inputNumber.js +14 -2
  64. package/lib/input-number/useSelectionRange.d.ts +4 -0
  65. package/lib/input-number/useSelectionRange.js +29 -0
  66. package/lib/locale/locale.d.ts +4 -4
  67. package/lib/locale/zh-CN.d.ts +4 -2
  68. package/lib/locale/zh-CN.js +4 -2
  69. package/lib/radio/style/index.css +1 -0
  70. package/lib/radio/style/index.less +1 -0
  71. package/lib/select/select.js +3 -3
  72. package/lib/tag/tag.d.ts +1 -0
  73. package/lib/tree-select/tree-select.js +2 -1
  74. package/package.json +1 -1
@@ -25,6 +25,7 @@ export interface PopperProps {
25
25
  onVisibleChange?: (visible: boolean) => void;
26
26
  getTriggerElement?: (locatorNode: HTMLElement) => HTMLElement;
27
27
  getPopupContainer?: (locatorNode: HTMLElement) => HTMLElement;
28
+ onTransitionEnd?: (e: React.TransitionEvent) => void;
28
29
  }
29
30
  declare function usePopper(locatorElement: React.ReactElement, popperElement: React.ReactElement, props: PopperProps): JSX.Element;
30
31
  export default usePopper;
@@ -153,7 +153,8 @@ function usePopper(locatorElement, popperElement, props) {
153
153
  _props$getPopupContai = props.getPopupContainer,
154
154
  getPopupContainer = _props$getPopupContai === void 0 ? function () {
155
155
  return document.body;
156
- } : _props$getPopupContai;
156
+ } : _props$getPopupContai,
157
+ onTransitionEnd = props.onTransitionEnd;
157
158
  var arrowWidth = Math.sqrt(2 * Math.pow(arrowSize, 2));
158
159
  var componentName = (prefixCls === null || prefixCls === void 0 ? void 0 : prefixCls.split('-')[1]) || '';
159
160
  devWarning(Placements.indexOf(placement) === -1, componentName, _concatInstanceProperty(_context3 = "cannot found ".concat(componentName, " placement '")).call(_context3, placement, "'"));
@@ -439,7 +440,8 @@ function usePopper(locatorElement, popperElement, props) {
439
440
  className: classNames(prefixCls, popperClassName, nextPlacement, _defineProperty({
440
441
  arrow: arrow,
441
442
  hidden: !visible
442
- }, "".concat(nextPlacement, "-active"), active))
443
+ }, "".concat(nextPlacement, "-active"), active)),
444
+ onTransitionEnd: typeof onTransitionEnd === 'function' ? onTransitionEnd : undefined
443
445
  };
444
446
  var popperNode = popperRef.current;
445
447
  var locatorNode = getRealDom(locatorRef, locatorElement);
@@ -16,7 +16,7 @@ var __rest = this && this.__rest || function (s, e) {
16
16
  }
17
17
  return t;
18
18
  };
19
- import React, { useMemo, useCallback, useState, useRef } from 'react';
19
+ import React, { useMemo, useCallback, useState, useRef, useEffect, useImperativeHandle } from 'react';
20
20
  import classNames from 'classnames';
21
21
  import { tuple } from '../_utils/type';
22
22
  import { getCompProps } from '../_utils';
@@ -62,15 +62,15 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
62
62
  customAllowClear = allProps.allowClear,
63
63
  popupPlacement = allProps.popupPlacement,
64
64
  maxTagCount = allProps.maxTagCount,
65
+ autoFocus = allProps.autoFocus,
65
66
  otherProps = __rest(allProps
66
67
  // className前缀
67
- , ["mode", "style", "options", "bordered", "disabled", "children", "loadData", "clearIcon", "className", "fieldNames", "placeholder", "defaultValue", "maxTagPlaceholder", "displayRender", "expandTrigger", "changeOnSelect", "dropdownRender", "notFoundContent", "getPopupContainer", "defaultPopupVisible", "onPopupVisibleChange", "onPopperVisibleChange", "prefixCls", "allowClear", "popupPlacement", "maxTagCount"]);
68
+ , ["mode", "style", "options", "bordered", "disabled", "children", "loadData", "clearIcon", "className", "fieldNames", "placeholder", "defaultValue", "maxTagPlaceholder", "displayRender", "expandTrigger", "changeOnSelect", "dropdownRender", "notFoundContent", "getPopupContainer", "defaultPopupVisible", "onPopupVisibleChange", "onPopperVisibleChange", "prefixCls", "allowClear", "popupPlacement", "maxTagCount", "autoFocus"]);
68
69
  // className前缀
69
70
  var prefixCls = getPrefixCls(pkgPrefixCls, 'cascader', customPrefixcls);
70
- var pickerRef = useRef();
71
- var triggerRef = useRef();
71
+ var mergeRef = useRef();
72
+ var inputRef = useRef();
72
73
  var wrapperRef = useRef();
73
- var mergeRef = ref || pickerRef;
74
74
  var _useState = useState(!!props.popperVisible || !!props.popupVisible || defaultPopupVisible),
75
75
  _useState2 = _slicedToArray(_useState, 2),
76
76
  visible = _useState2[0],
@@ -157,21 +157,53 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
157
157
  setCurrentOptions(newMultipleOptions);
158
158
  }
159
159
  }, [options, value, fieldNames, isMultiple]);
160
- React.useEffect(function () {
160
+ var handleFocus = function handleFocus() {
161
+ var _a, _b;
162
+ if (!disabled) {
163
+ if (isMultiple) {
164
+ (_a = mergeRef.current) === null || _a === void 0 ? void 0 : _a.focus();
165
+ } else {
166
+ (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.focus();
167
+ }
168
+ }
169
+ };
170
+ var handleBlur = function handleBlur() {
171
+ var _a, _b;
172
+ if (!disabled) {
173
+ if (isMultiple) {
174
+ (_a = mergeRef.current) === null || _a === void 0 ? void 0 : _a.blur();
175
+ } else {
176
+ (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.blur();
177
+ }
178
+ }
179
+ };
180
+ useImperativeHandle(ref, function () {
181
+ return {
182
+ focus: handleFocus,
183
+ blur: handleBlur,
184
+ dom: mergeRef.current
185
+ };
186
+ });
187
+ useEffect(function () {
188
+ if (autoFocus) {
189
+ handleFocus();
190
+ }
191
+ }, [autoFocus, inputRef]);
192
+ var handleMouseUp = function handleMouseUp(e) {
161
193
  var _a;
162
- if (allProps.autoFocus) {
163
- (_a = mergeRef.current) === null || _a === void 0 ? void 0 : _a.focus();
194
+ var cln = (_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.className;
195
+ var isCloseBtn = cln.indexOf('kd-tag-close-icon') > -1 || cln.indexOf('kdicon') > -1;
196
+ if (isCloseBtn) {
197
+ e.stopPropagation();
164
198
  }
165
- }, [allProps.autoFocus, mergeRef]);
199
+ };
166
200
  React.useEffect(function () {
167
201
  var _a;
168
- (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseup', function (e) {
202
+ (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseup', handleMouseUp);
203
+ return function () {
169
204
  var _a;
170
- 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;
171
- if (isCloseBtn) {
172
- e.stopPropagation();
173
- }
174
- });
205
+ (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseup', handleMouseUp);
206
+ };
175
207
  }, []);
176
208
  var labels = useMemo(function () {
177
209
  return !isMultiple ? _mapInstanceProperty(currentOptions).call(currentOptions, function (_ref) {
@@ -195,8 +227,10 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
195
227
  });
196
228
  });
197
229
  }, [currentOptions, isMultiple]);
198
- var allowClear = customAllowClear && value.length > 0;
230
+ var allowClear = customAllowClear && value.length > 0 && !disabled;
199
231
  var handleClear = function handleClear() {
232
+ handleBlur();
233
+ setVisible(false);
200
234
  onChange([]);
201
235
  };
202
236
  var renderSuffix = function renderSuffix() {
@@ -236,9 +270,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
236
270
  };
237
271
  var renderMultiple = function renderMultiple() {
238
272
  var _classNames3, _classNames4;
239
- var multipleCls = classNames((_classNames3 = {
240
- disabled: disabled
241
- }, _defineProperty(_classNames3, "".concat(prefixCls, "-multiple"), true), _defineProperty(_classNames3, "".concat(prefixCls, "-bordered"), bordered), _classNames3));
273
+ var multipleCls = classNames((_classNames3 = {}, _defineProperty(_classNames3, "".concat(prefixCls, "-expand"), visible), _defineProperty(_classNames3, "".concat(prefixCls, "-disabled"), disabled), _defineProperty(_classNames3, "".concat(prefixCls, "-multiple"), true), _defineProperty(_classNames3, "".concat(prefixCls, "-bordered"), bordered), _classNames3));
242
274
  var itemCls = classNames((_classNames4 = {}, _defineProperty(_classNames4, "".concat(prefixCls, "-selection-item"), true), _defineProperty(_classNames4, "".concat(prefixCls, "-tag-describe"), true), _classNames4));
243
275
  var TagStyle = {
244
276
  margin: '2px 8px 2px 0',
@@ -246,9 +278,11 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
246
278
  };
247
279
  return /*#__PURE__*/React.createElement("div", _extends({
248
280
  className: multipleCls,
249
- ref: triggerRef,
281
+ ref: mergeRef,
250
282
  style: style
251
- }, otherProps), /*#__PURE__*/React.createElement("div", {
283
+ }, otherProps, {
284
+ tabIndex: -1
285
+ }), /*#__PURE__*/React.createElement("div", {
252
286
  className: "".concat(prefixCls, "-multiple-wrapper"),
253
287
  ref: wrapperRef
254
288
  }, Array.isArray(currentOptions) && /*#__PURE__*/React.createElement(React.Fragment, null, _mapInstanceProperty(currentOptions).call(currentOptions, function (option, index) {
@@ -257,6 +291,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
257
291
  className: classNames("".concat(prefixCls, "-selection-tag"))
258
292
  }, (!maxTagCount || index <= maxTagCount - 1) && /*#__PURE__*/React.createElement(Tag, {
259
293
  type: "edit",
294
+ disabled: disabled,
260
295
  style: TagStyle,
261
296
  closable: true,
262
297
  onClose: function onClose(e) {
@@ -274,8 +309,10 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
274
309
  }, renderSuffix())));
275
310
  };
276
311
  var renderSingle = function renderSingle() {
312
+ var _classNames5;
277
313
  var inputProps = {
278
314
  value: value,
315
+ ref: inputRef,
279
316
  placeholder: placeholder,
280
317
  readOnly: true,
281
318
  borderType: bordered ? 'bordered' : 'underline',
@@ -293,18 +330,13 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
293
330
  var singleProps = {
294
331
  style: style,
295
332
  tabIndex: 0,
296
- className: classNames("".concat(prefixCls, "-picker"), className, _defineProperty({
297
- expand: visible,
298
- allowClear: allowClear,
299
- disabled: disabled
300
- }, "".concat(prefixCls, "-bordered"), bordered))
333
+ className: classNames("".concat(prefixCls, "-picker"), className, (_classNames5 = {}, _defineProperty(_classNames5, "".concat(prefixCls, "-single"), true), _defineProperty(_classNames5, "".concat(prefixCls, "-expand"), visible), _defineProperty(_classNames5, "allowClear", allowClear), _defineProperty(_classNames5, "".concat(prefixCls, "-disabled"), disabled), _defineProperty(_classNames5, "".concat(prefixCls, "-bordered"), bordered), _classNames5))
301
334
  };
302
335
  return /*#__PURE__*/React.createElement("div", _extends({}, singleProps, {
303
336
  ref: mergeRef
304
- }, otherProps), React.Children.count(children) === 1 && children.type ? /*#__PURE__*/React.cloneElement(children, {
305
- ref: triggerRef
306
- }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
307
- ref: triggerRef
337
+ }, otherProps), React.Children.count(children) === 1 && children.type ? /*#__PURE__*/React.cloneElement(children) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
338
+ className: "".concat(prefixCls, "-single-wrapper"),
339
+ ref: wrapperRef
308
340
  }, /*#__PURE__*/React.createElement(Input, _extends({}, inputProps)), /*#__PURE__*/React.createElement("span", {
309
341
  className: "".concat(prefixCls, "-picker-label")
310
342
  }, (labels === null || labels === void 0 ? void 0 : labels.length) ? displayRender(labels, currentOptions) : ''), allowClear && /*#__PURE__*/React.createElement(Icon, {
@@ -422,13 +454,13 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
422
454
  gap: 4,
423
455
  visible: visible,
424
456
  onVisibleChange: onVisibleChange,
425
- trigger: 'click',
457
+ trigger: expandTrigger,
426
458
  getPopupContainer: getPopupContainer,
427
459
  prefixCls: "".concat(prefixCls, "-menus"),
428
460
  placement: allProps.popperPlacement || popupPlacement,
429
461
  popperClassName: allProps.popperClassName || allProps.popupClassName,
430
462
  getTriggerElement: function getTriggerElement() {
431
- return triggerRef.current;
463
+ return mergeRef.current;
432
464
  }
433
465
  });
434
466
  return usePopper(cascaderLocator, cascaderPopper, popperProps);
@@ -112,17 +112,6 @@
112
112
  cursor: pointer;
113
113
  background: var(--kd-c-cascader-color-background, var(--kd-g-color-white, #fff));
114
114
  }
115
- .kd-cascader-picker:focus > .kd-cascader-picker-input {
116
- border-color: var(--kd-c-cascader-color-active, #999);
117
- }
118
- .kd-cascader-picker:focus > .kd-cascader-picker-input .kd-input-suffix,
119
- .kd-cascader-picker:focus > .kd-cascader-picker-input i[class*='kdicon'] {
120
- color: var(--kd-c-cascader-color-active, #999);
121
- }
122
- .kd-cascader-picker:hover > .kd-cascader-picker-input .kd-input-suffix,
123
- .kd-cascader-picker:hover > .kd-cascader-picker-input i[class*='kdicon'] {
124
- color: var(--kd-c-cascader-color-active, #999);
125
- }
126
115
  .kd-cascader-picker.disabled .kd-cascader-picker-input {
127
116
  cursor: not-allowed;
128
117
  border-color: var(--kd-g-color-border-strong, #d9d9d9);
@@ -148,7 +137,7 @@
148
137
  text-overflow: ellipsis;
149
138
  }
150
139
  .kd-cascader-picker-input {
151
- background-color: transparent !important;
140
+ background-color: transparent;
152
141
  -webkit-transition: all 0.2s;
153
142
  transition: all 0.2s;
154
143
  }
@@ -156,11 +145,7 @@
156
145
  color: transparent !important;
157
146
  cursor: pointer;
158
147
  }
159
- .kd-cascader-picker-input.expand {
160
- border-color: var(--kd-c-cascader-color-active, #999);
161
- }
162
148
  .kd-cascader-picker-input.expand i[class*='kdicon'] {
163
- color: var(--kd-c-cascader-color-active, #999);
164
149
  -webkit-transform: rotate(180deg);
165
150
  transform: rotate(180deg);
166
151
  }
@@ -190,7 +175,7 @@
190
175
  opacity: 0;
191
176
  cursor: pointer;
192
177
  visibility: hidden;
193
- color: var(--kd-c-cascader-icon-clear-color-text, #d9d9d9);
178
+ color: var(--kd-c-cascader-clear-color-text, #d9d9d9);
194
179
  -webkit-transition: all 0.1s;
195
180
  transition: all 0.1s;
196
181
  -webkit-transform-origin: 50% 50%;
@@ -199,7 +184,7 @@
199
184
  transform: scale(0.9) translateY(-50%);
200
185
  }
201
186
  .kd-cascader-picker-close:hover {
202
- color: var(--kd-c-cascader-color-active, #999);
187
+ color: var(--kd-c-cascader-icon-clear-color-text-hover, #999);
203
188
  }
204
189
  .kd-cascader-menus {
205
190
  -webkit-box-sizing: border-box;
@@ -312,6 +297,10 @@
312
297
  border-bottom: 1px solid #d9d9d9;
313
298
  background: var(--kd-c-cascader-color-background, var(--kd-g-color-white, #fff));
314
299
  }
300
+ .kd-cascader-multiple:not(.kd-cascader-disabled):focus {
301
+ border-color: var(--kd-c-cascader-color-text-selected, var(--kd-g-color-theme, #5582f3));
302
+ outline: none;
303
+ }
315
304
  .kd-cascader-multiple-wrapper {
316
305
  display: -webkit-box;
317
306
  display: -ms-flexbox;
@@ -325,7 +314,8 @@
325
314
  }
326
315
  .kd-cascader-placeholder {
327
316
  position: absolute;
328
- color: #999;
317
+ font-size: 14px;
318
+ color: var(--kd-c-cascader-placeholder-color, var(--kd-g-color-text-placeholder, #ccc));
329
319
  overflow: hidden;
330
320
  white-space: nowrap;
331
321
  text-overflow: ellipsis;
@@ -380,9 +370,6 @@
380
370
  transition: transform calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
381
371
  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);
382
372
  }
383
- .kd-cascader-icon-arrow-focus {
384
- color: var(--kd-c-cascader-color-border-foucs, var(--kd-g-color-theme, #5582f3));
385
- }
386
373
  .kd-cascader-icon-clear {
387
374
  opacity: 0;
388
375
  z-index: 1;
@@ -390,7 +377,7 @@
390
377
  background: #fff;
391
378
  -webkit-transition: opacity 0.15s ease;
392
379
  transition: opacity 0.15s ease;
393
- color: var(--kd-c-cascader-icon-clear-color-text, #d9d9d9);
380
+ color: var(--kd-c-cascader-clear-color-text, #d9d9d9);
394
381
  }
395
382
  .kd-cascader-icon-clear:hover {
396
383
  color: var(--kd-c-cascader-icon-clear-color-text-hover, #999);
@@ -412,7 +399,6 @@
412
399
  -webkit-box-align: center;
413
400
  -ms-flex-align: center;
414
401
  align-items: center;
415
- vertical-align: middle;
416
402
  padding: 0 7px;
417
403
  overflow: hidden;
418
404
  white-space: nowrap;
@@ -420,3 +406,33 @@
420
406
  border: 1px solid #ccc;
421
407
  color: #212121;
422
408
  }
409
+ .kd-cascader-disabled {
410
+ cursor: not-allowed;
411
+ }
412
+ .kd-cascader-disabled .kd-cascader-picker-label {
413
+ color: var(--kd-c-cascader-color-text-disabled, var(--kd-g-color-disabled, #b2b2b2));
414
+ }
415
+ .kd-cascader-disabled .kd-cascader-picker-input {
416
+ background-color: var(--kd-c-cascader-color-background-disabled, var(--kd-g-color-background-contain-disabled, #f5f5f5));
417
+ }
418
+ .kd-cascader-disabled .kd-cascader-picker-input > input {
419
+ background-color: var(--kd-c-cascader-color-background-disabled, var(--kd-g-color-background-contain-disabled, #f5f5f5));
420
+ }
421
+ .kd-cascader-disabled.kd-cascader-multiple {
422
+ background-color: var(--kd-c-cascader-color-background-disabled, var(--kd-g-color-background-contain-disabled, #f5f5f5));
423
+ }
424
+ .kd-cascader-disabled .kd-cascader-suffix {
425
+ color: var(--kd-c-cascader-color-text-disabled, var(--kd-g-color-disabled, #b2b2b2));
426
+ }
427
+ .kd-cascader-disabled .kd-cascader-tag-describe-content {
428
+ color: var(--kd-c-cascader-tag-disabled-color, #d9d9d9);
429
+ border-color: var(--kd-c-cascader-tag-disabled-color, #d9d9d9);
430
+ }
431
+ .kd-cascader-picker:not(.kd-cascader-disabled):hover .kd-input-wrapper,
432
+ .kd-cascader-expand .kd-input-wrapper {
433
+ border-color: var(--kd-c-cascader-color-border-foucs, var(--kd-g-color-theme, #5582f3));
434
+ }
435
+ .kd-cascader-multiple:not(.kd-cascader-disabled):hover,
436
+ .kd-cascader-expand {
437
+ border-color: var(--kd-c-cascader-color-border-foucs, var(--kd-g-color-theme, #5582f3));
438
+ }
@@ -12,22 +12,6 @@
12
12
  cursor: pointer;
13
13
  background: @cascader-bg-color;
14
14
 
15
- &:focus > &-input {
16
- border-color: @cascader-active-color;
17
-
18
- .@{kd-prefix}-input-suffix,
19
- i[class*='kdicon'] {
20
- color: @cascader-active-color;
21
- }
22
- }
23
-
24
- &:hover > &-input {
25
- .@{kd-prefix}-input-suffix,
26
- i[class*='kdicon'] {
27
- color: @cascader-active-color;
28
- }
29
- }
30
-
31
15
  &.disabled {
32
16
  .@{cascader-picker-prefix-cls}-input {
33
17
  cursor: not-allowed;
@@ -54,7 +38,7 @@
54
38
  }
55
39
 
56
40
  &-input {
57
- background-color: transparent !important;
41
+ background-color: transparent;
58
42
  transition: all 0.2s;
59
43
 
60
44
  > input {
@@ -63,10 +47,7 @@
63
47
  }
64
48
 
65
49
  &.expand {
66
- border-color: @cascader-active-color;
67
-
68
50
  i[class*='kdicon'] {
69
- color: @cascader-active-color;
70
51
  transform: rotate(180deg);
71
52
  }
72
53
  }
@@ -105,7 +86,7 @@
105
86
  transform: scale(0.9) translateY(-50%);
106
87
 
107
88
  &:hover {
108
- color: @cascader-active-color;
89
+ color: @cascader-clear-color-hover;
109
90
  }
110
91
  }
111
92
  }
@@ -217,6 +198,11 @@
217
198
  position: relative;
218
199
  border-bottom: 1px solid #d9d9d9;
219
200
  background: @cascader-bg-color;
201
+
202
+ &:not(.@{kd-prefix}-cascader-disabled):focus {
203
+ border-color: @cascader-selected-color;
204
+ outline: none;
205
+ }
220
206
  }
221
207
 
222
208
  &-multiple-wrapper {
@@ -228,7 +214,8 @@
228
214
 
229
215
  &-placeholder {
230
216
  position: absolute;
231
- color: @select-placeholder-color;
217
+ font-size: @middle-font-size;
218
+ color: @cascader-placeholder-color;
232
219
  overflow: hidden;
233
220
  white-space: nowrap;
234
221
  text-overflow: ellipsis;
@@ -267,10 +254,6 @@
267
254
  transform: rotate(0deg);
268
255
  transition: transform calc(@transition-duration - 0.1s) @ease;
269
256
  }
270
-
271
- &-focus {
272
- color: @cascader-g-color-border-foucs;
273
- }
274
257
  }
275
258
 
276
259
  &-clear {
@@ -285,6 +268,7 @@
285
268
  }
286
269
  }
287
270
  }
271
+
288
272
  &-tag {
289
273
  &-describe {
290
274
  font-size: 12px;
@@ -296,7 +280,6 @@
296
280
  &-content {
297
281
  display: inline-flex;
298
282
  align-items: center;
299
- vertical-align: middle;
300
283
  padding: 0 7px;
301
284
  overflow: hidden;
302
285
  white-space: nowrap;
@@ -306,4 +289,43 @@
306
289
  }
307
290
  }
308
291
  }
292
+
293
+ &-disabled {
294
+ cursor: not-allowed;
295
+
296
+ .@{kd-prefix}-cascader-picker-label {
297
+ color: @cascader-disabled-color;
298
+ }
299
+
300
+ .@{kd-prefix}-cascader-picker-input {
301
+ background-color: @cascader-disabled-color-background;
302
+
303
+ > input {
304
+ background-color: @cascader-disabled-color-background;
305
+ }
306
+ }
307
+
308
+ &.@{kd-prefix}-cascader-multiple {
309
+ background-color: @cascader-disabled-color-background;
310
+ }
311
+
312
+ .@{kd-prefix}-cascader-suffix {
313
+ color: @cascader-disabled-color;
314
+ }
315
+
316
+ .@{kd-prefix}-cascader-tag-describe-content {
317
+ color: @cascader-tag-disabled-color;
318
+ border-color: @cascader-tag-disabled-color;
319
+ }
320
+ }
321
+
322
+ &-picker:not(&-disabled):hover, &-expand {
323
+ .kd-input-wrapper {
324
+ border-color: @cascader-g-color-border-focus;
325
+ }
326
+ }
327
+
328
+ &-multiple:not(&-disabled):hover, &-expand {
329
+ border-color: @cascader-g-color-border-focus;
330
+ }
309
331
  }
@@ -12,17 +12,18 @@
12
12
  @cascader-menu-item-padding-horizontal: var(~'@{cascader-prefix}-menu-item-spacing-padding-horizontal', 12px);
13
13
 
14
14
  // colors
15
- @cascader-active-color: var(~'@{cascader-prefix}-color-active', #999);
16
15
  @cascader-color: var(~'@{cascader-prefix}-color-text', @color-text-primary);
17
16
  @cascader-bg-color: var(~'@{cascader-prefix}-color-background', @color-white);
18
17
  @cascader-hover-bg-color: var(~'@{cascader-prefix}-color-background-hover', @color-hover);
19
18
  @cascader-selected-color: var(~'@{cascader-prefix}-color-text-selected', @color-theme);
20
19
  @cascader-selected-bg-color: var(~'@{cascader-prefix}-color-background-selected', @color-background-ongoing);
21
20
  @cascader-disabled-color: var(~'@{cascader-prefix}-color-text-disabled', @color-disabled);
21
+ @cascader-disabled-color-background: var(~'@{cascader-prefix}-color-background-disabled', @color-background-contain-disabled);
22
22
  @cascader-clear-color: var(~'@{cascader-prefix}-clear-color-text', #d9d9d9);
23
- @cascader-g-color-border-foucs: var(~'@{cascader-prefix}-color-border-foucs', @color-theme);
24
- @cascader-clear-color: var(~'@{cascader-prefix}-icon-clear-color-text', #d9d9d9);
25
23
  @cascader-clear-color-hover: var(~'@{cascader-prefix}-icon-clear-color-text-hover', #999);
24
+ @cascader-g-color-border-focus: var(~'@{cascader-prefix}-color-border-foucs', @color-theme);
25
+ @cascader-tag-disabled-color: var(~'@{cascader-prefix}-tag-disabled-color', #d9d9d9);
26
+ @cascader-placeholder-color: var(~'@{cascader-prefix}-placeholder-color', @color-text-placeholder);
26
27
 
27
28
  // font
28
29
  @cascader-font-size: var(~'@{cascader-prefix}-font-size', @font-size-small);
@@ -14,20 +14,17 @@ import { Icon, Tabs, Spin } from '../index';
14
14
  import usePopper from '../_utils/usePopper';
15
15
  import Option from './option';
16
16
  import escapeRegExp from 'lodash/escapeRegExp';
17
- var tabsData = [{
18
- id: 'domestic',
19
- name: '国内'
20
- }, {
21
- id: 'foreign',
22
- name: '国际/中国港澳台'
23
- }];
24
17
  var InternalSelect = function InternalSelect(props, ref) {
25
18
  var _context, _classNames3, _classNames5;
26
19
  var _useContext = useContext(ConfigContext),
27
20
  getPrefixCls = _useContext.getPrefixCls,
28
21
  prefixCls = _useContext.prefixCls,
29
- userDefaultProps = _useContext.compDefaultProps;
22
+ userDefaultProps = _useContext.compDefaultProps,
23
+ locale = _useContext.locale;
30
24
  var selectProps = getCompProps('CityPicker', userDefaultProps, props);
25
+ var cityPickerLangMsg = locale.getCompLangMsg({
26
+ componentName: 'CityPicker'
27
+ });
31
28
  var type = selectProps.type,
32
29
  size = selectProps.size,
33
30
  value = selectProps.value,
@@ -72,6 +69,13 @@ var InternalSelect = function InternalSelect(props, ref) {
72
69
  _useMergedState2 = _slicedToArray(_useMergedState, 2),
73
70
  initValue = _useMergedState2[0],
74
71
  setInitValue = _useMergedState2[1];
72
+ var tabsData = [{
73
+ id: 'domestic',
74
+ name: cityPickerLangMsg === null || cityPickerLangMsg === void 0 ? void 0 : cityPickerLangMsg.tabsDomestic
75
+ }, {
76
+ id: 'foreign',
77
+ name: cityPickerLangMsg === null || cityPickerLangMsg === void 0 ? void 0 : cityPickerLangMsg.tabsInternation
78
+ }];
75
79
  var innerRef = useRef();
76
80
  var selectRef = ref || innerRef;
77
81
  var searchRef = useRef(null); // 搜索框ref
@@ -112,20 +116,13 @@ var InternalSelect = function InternalSelect(props, ref) {
112
116
  var city = _findInstanceProperty(cityList).call(cityList, function (city) {
113
117
  return city.id === value;
114
118
  });
115
- if (city) {
116
- setSeletedCity(city);
117
- }
119
+ setSeletedCity(city);
118
120
  }, [commonList, domesticList, foreignList, value]);
119
121
  useEffect(function () {
120
122
  if (typeof props.visible !== 'undefined') {
121
123
  setOptionShow(props.visible);
122
124
  }
123
125
  }, [props.visible]);
124
- useEffect(function () {
125
- if (optionShow === false) {
126
- handleClear();
127
- }
128
- }, [optionShow]);
129
126
  var handleFocus = useCallback(function (e) {
130
127
  e.stopPropagation();
131
128
  setFocusd(true);
@@ -222,6 +219,7 @@ var InternalSelect = function InternalSelect(props, ref) {
222
219
  }
223
220
  };
224
221
  var renderNodeList = function renderNodeList(data, notContent) {
222
+ var isCommon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
225
223
  if (!data.length) {
226
224
  return renderNotContent(notContent);
227
225
  }
@@ -232,7 +230,10 @@ var InternalSelect = function InternalSelect(props, ref) {
232
230
  key: item.id,
233
231
  value: initValue,
234
232
  city: item,
235
- renderCityInfo: renderCityInfo,
233
+ className: searchValue ? "".concat(selectPrefixCls, "-list-item-match") : undefined,
234
+ renderCityInfo: function renderCityInfo(data, flag) {
235
+ return _renderCityInfo(data, isCommon, flag);
236
+ },
236
237
  onChangeSelect: handleOption,
237
238
  itemRender: itemRender
238
239
  }, searchValue ? getHighlightText(item === null || item === void 0 ? void 0 : item.name, (item === null || item === void 0 ? void 0 : item[optionHighlightProps]) || searchValue) : item === null || item === void 0 ? void 0 : item.name);
@@ -260,21 +261,22 @@ var InternalSelect = function InternalSelect(props, ref) {
260
261
  key: item.id,
261
262
  tab: item.name
262
263
  }, item);
263
- })), tabsValue === 'domestic' ? renderNodeList(domesticList, '暂无数据') : renderNodeList(foreignList, '暂无数据')) : /*#__PURE__*/React.createElement(React.Fragment, null, !!commonList.length && /*#__PURE__*/React.createElement("div", {
264
+ })), tabsValue === 'domestic' ? renderNodeList(domesticList, cityPickerLangMsg === null || cityPickerLangMsg === void 0 ? void 0 : cityPickerLangMsg.emptyText) : renderNodeList(foreignList, cityPickerLangMsg === null || cityPickerLangMsg === void 0 ? void 0 : cityPickerLangMsg.emptyText)) : /*#__PURE__*/React.createElement(React.Fragment, null, !!commonList.length && /*#__PURE__*/React.createElement("div", {
264
265
  className: "".concat(selectPrefixCls, "-dropdown-common")
265
- }, "\u5E38\u7528"), renderNodeList(commonList, '无常用城市')));
266
+ }, cityPickerLangMsg === null || cityPickerLangMsg === void 0 ? void 0 : cityPickerLangMsg.common), renderNodeList(commonList, cityPickerLangMsg === null || cityPickerLangMsg === void 0 ? void 0 : cityPickerLangMsg.commonEmptyText, true)));
266
267
  };
267
- var renderCityInfo = useCallback(function (data) {
268
- var flag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
269
- var symbol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ', ';
268
+ var _renderCityInfo = useCallback(function (data) {
269
+ var isCommon = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
270
+ var flag = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
271
+ var symbol = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ', ';
270
272
  if (!data) return null;
271
273
  if (isDomestic(type)) {
272
274
  var _context3;
273
- var curVal = tabsValue === 'domestic' ? data === null || data === void 0 ? void 0 : data.province : data === null || data === void 0 ? void 0 : data.country;
275
+ var curVal = tabsValue === 'domestic' || isCommon ? data === null || data === void 0 ? void 0 : data.province : data === null || data === void 0 ? void 0 : data.country;
274
276
  return _concatInstanceProperty(_context3 = "".concat(flag && curVal ? symbol : '')).call(_context3, curVal);
275
277
  } else {
276
278
  var _context4, _context5, _context6;
277
- return _concatInstanceProperty(_context4 = _concatInstanceProperty(_context5 = _concatInstanceProperty(_context6 = "".concat(flag && (data === null || data === void 0 ? void 0 : data.province) ? symbol : '')).call(_context6, data === null || data === void 0 ? void 0 : data.province)).call(_context5, (data === null || data === void 0 ? void 0 : data.country) ? symbol : '')).call(_context4, data === null || data === void 0 ? void 0 : data.country);
279
+ return _concatInstanceProperty(_context4 = _concatInstanceProperty(_context5 = _concatInstanceProperty(_context6 = "".concat(flag && ((data === null || data === void 0 ? void 0 : data.province) || (data === null || data === void 0 ? void 0 : data.country)) ? symbol : '')).call(_context6, data === null || data === void 0 ? void 0 : data.province)).call(_context5, (data === null || data === void 0 ? void 0 : data.country) && (data === null || data === void 0 ? void 0 : data.province) ? symbol : '')).call(_context4, data === null || data === void 0 ? void 0 : data.country);
278
280
  }
279
281
  }, [type, tabsValue]);
280
282
  var renderSingle = function renderSingle() {
@@ -301,7 +303,7 @@ var InternalSelect = function InternalSelect(props, ref) {
301
303
  title: seletedCity === null || seletedCity === void 0 ? void 0 : seletedCity.name
302
304
  }, seletedCity === null || seletedCity === void 0 ? void 0 : seletedCity.name)), !searchValue && /*#__PURE__*/React.createElement("span", {
303
305
  className: "".concat(selectPrefixCls, "-content-info")
304
- }, renderCityInfo(seletedCity))), /*#__PURE__*/React.createElement("span", {
306
+ }, _renderCityInfo(seletedCity))), /*#__PURE__*/React.createElement("span", {
305
307
  className: "".concat(selectPrefixCls, "-placeholder"),
306
308
  style: hiddenStyle
307
309
  }, placeholder), /*#__PURE__*/React.createElement("span", {
@@ -373,7 +375,12 @@ var InternalSelect = function InternalSelect(props, ref) {
373
375
  defaultVisible: optionShow,
374
376
  visible: optionShow,
375
377
  onVisibleChange: handleVisibleChange,
376
- clickToClose: !searchValue
378
+ clickToClose: !searchValue,
379
+ onTransitionEnd: function onTransitionEnd() {
380
+ if (optionShow === false) {
381
+ handleClear();
382
+ }
383
+ }
377
384
  });
378
385
  return usePopper(renderCityPicker(), renderContent(), popperProps);
379
386
  };