@kdcloudjs/kdesign 1.7.25 → 1.7.27

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 (70) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/kdesign-complete.less +109 -45
  3. package/dist/kdesign.css +85 -40
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +266 -106
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +3 -3
  8. package/dist/kdesign.min.js +6 -6
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/anchor/style/index.css +1 -1
  11. package/es/anchor/style/index.less +1 -1
  12. package/es/anchor/style/token.less +1 -0
  13. package/es/cascader/cascader.js +64 -32
  14. package/es/cascader/style/index.css +42 -26
  15. package/es/cascader/style/index.less +51 -29
  16. package/es/cascader/style/token.less +5 -3
  17. package/es/city-picker/city-picker.js +104 -13
  18. package/es/city-picker/interface.d.ts +3 -0
  19. package/es/city-picker/option.js +15 -3
  20. package/es/city-picker/style/index.css +22 -10
  21. package/es/city-picker/style/index.less +24 -10
  22. package/es/collapse/panel.js +31 -18
  23. package/es/collapse/style/index.css +4 -1
  24. package/es/collapse/style/index.less +4 -1
  25. package/es/form/Field.d.ts +1 -0
  26. package/es/form/Field.js +5 -3
  27. package/es/form/FieldWrapper.d.ts +1 -0
  28. package/es/form/FieldWrapper.js +13 -5
  29. package/es/form/style/index.css +11 -1
  30. package/es/form/style/index.less +16 -1
  31. package/es/form/style/token.less +1 -0
  32. package/es/select/style/index.css +1 -0
  33. package/es/select/style/index.less +1 -0
  34. package/es/select/style/token.less +1 -0
  35. package/es/tabs/style/index.css +3 -0
  36. package/es/tabs/style/index.less +3 -0
  37. package/es/tabs/style/token.less +1 -0
  38. package/es/tag/tag.d.ts +1 -0
  39. package/es/tree-select/tree-select.js +2 -1
  40. package/lib/anchor/style/index.css +1 -1
  41. package/lib/anchor/style/index.less +1 -1
  42. package/lib/anchor/style/token.less +1 -0
  43. package/lib/cascader/cascader.js +63 -31
  44. package/lib/cascader/style/index.css +42 -26
  45. package/lib/cascader/style/index.less +51 -29
  46. package/lib/cascader/style/token.less +5 -3
  47. package/lib/city-picker/city-picker.js +103 -12
  48. package/lib/city-picker/interface.d.ts +3 -0
  49. package/lib/city-picker/option.js +15 -3
  50. package/lib/city-picker/style/index.css +22 -10
  51. package/lib/city-picker/style/index.less +24 -10
  52. package/lib/collapse/panel.js +32 -19
  53. package/lib/collapse/style/index.css +4 -1
  54. package/lib/collapse/style/index.less +4 -1
  55. package/lib/form/Field.d.ts +1 -0
  56. package/lib/form/Field.js +5 -3
  57. package/lib/form/FieldWrapper.d.ts +1 -0
  58. package/lib/form/FieldWrapper.js +13 -5
  59. package/lib/form/style/index.css +11 -1
  60. package/lib/form/style/index.less +16 -1
  61. package/lib/form/style/token.less +1 -0
  62. package/lib/select/style/index.css +1 -0
  63. package/lib/select/style/index.less +1 -0
  64. package/lib/select/style/token.less +1 -0
  65. package/lib/tabs/style/index.css +3 -0
  66. package/lib/tabs/style/index.less +3 -0
  67. package/lib/tabs/style/token.less +1 -0
  68. package/lib/tag/tag.d.ts +1 -0
  69. package/lib/tree-select/tree-select.js +2 -1
  70. package/package.json +1 -1
@@ -24,6 +24,7 @@ var _index = require("../index");
24
24
  var _usePopper = _interopRequireDefault(require("../_utils/usePopper"));
25
25
  var _option = _interopRequireDefault(require("./option"));
26
26
  var _escapeRegExp = _interopRequireDefault(require("lodash/escapeRegExp"));
27
+ var _KeyCode = _interopRequireDefault(require("../_utils/KeyCode"));
27
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
29
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
30
  var InternalSelect = function InternalSelect(props, ref) {
@@ -93,6 +94,7 @@ var InternalSelect = function InternalSelect(props, ref) {
93
94
  var searchRef = (0, _react.useRef)(null); // 搜索框ref
94
95
  var selectionRef = (0, _react.useRef)(null);
95
96
  var clearRef = (0, _react.useRef)(null);
97
+ var optionsListRef = (0, _react.useRef)(null);
96
98
  var _useState = (0, _react.useState)(typeof props.visible === 'undefined' ? !!defaultOpen : !!props.visible),
97
99
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
98
100
  optionShow = _useState2[0],
@@ -128,9 +130,7 @@ var InternalSelect = function InternalSelect(props, ref) {
128
130
  var city = (0, _find.default)(cityList).call(cityList, function (city) {
129
131
  return city.id === value;
130
132
  });
131
- if (city) {
132
- setSeletedCity(city);
133
- }
133
+ setSeletedCity(city);
134
134
  }, [commonList, domesticList, foreignList, value]);
135
135
  (0, _react.useEffect)(function () {
136
136
  if (typeof props.visible !== 'undefined') {
@@ -238,17 +238,24 @@ var InternalSelect = function InternalSelect(props, ref) {
238
238
  return renderNotContent(notContent);
239
239
  }
240
240
  return /*#__PURE__*/_react.default.createElement("div", {
241
- className: "".concat(selectPrefixCls, "-list")
242
- }, (0, _map.default)(data).call(data, function (item) {
241
+ className: "".concat(selectPrefixCls, "-list"),
242
+ ref: optionsListRef
243
+ }, (0, _map.default)(data).call(data, function (item, index) {
243
244
  return /*#__PURE__*/_react.default.createElement(_option.default, {
244
245
  key: item.id,
245
246
  value: initValue,
246
247
  city: item,
248
+ className: searchValue ? "".concat(selectPrefixCls, "-list-item-match") : undefined,
247
249
  renderCityInfo: function renderCityInfo(data, flag) {
248
250
  return _renderCityInfo(data, isCommon, flag);
249
251
  },
250
252
  onChangeSelect: handleOption,
251
- itemRender: itemRender
253
+ itemRender: itemRender,
254
+ activeIndex: activeIndex,
255
+ index: index,
256
+ onChangeActiveIndex: function onChangeActiveIndex(i) {
257
+ setActiveIndex(i);
258
+ }
252
259
  }, 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);
253
260
  }));
254
261
  };
@@ -284,12 +291,17 @@ var InternalSelect = function InternalSelect(props, ref) {
284
291
  var symbol = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ', ';
285
292
  if (!data) return null;
286
293
  if (isDomestic(type)) {
287
- var _context3;
288
- var curVal = tabsValue === 'domestic' || isCommon ? data === null || data === void 0 ? void 0 : data.province : data === null || data === void 0 ? void 0 : data.country;
289
- return (0, _concat.default)(_context3 = "".concat(flag && curVal ? symbol : '')).call(_context3, curVal);
294
+ var _context4;
295
+ if (isCommon) {
296
+ var _context3;
297
+ var _curVal = (data === null || data === void 0 ? void 0 : data.province) ? data === null || data === void 0 ? void 0 : data.province : data === null || data === void 0 ? void 0 : data.country;
298
+ return (0, _concat.default)(_context3 = "".concat(flag && _curVal ? symbol : '')).call(_context3, _curVal);
299
+ }
300
+ var curVal = tabsValue === 'domestic' ? data === null || data === void 0 ? void 0 : data.province : data === null || data === void 0 ? void 0 : data.country;
301
+ return (0, _concat.default)(_context4 = "".concat(flag && curVal ? symbol : '')).call(_context4, curVal);
290
302
  } else {
291
- var _context4, _context5, _context6;
292
- return (0, _concat.default)(_context4 = (0, _concat.default)(_context5 = (0, _concat.default)(_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) && (data === null || data === void 0 ? void 0 : data.province) ? symbol : '')).call(_context4, data === null || data === void 0 ? void 0 : data.country);
303
+ var _context5, _context6, _context7;
304
+ return (0, _concat.default)(_context5 = (0, _concat.default)(_context6 = (0, _concat.default)(_context7 = "".concat(flag && ((data === null || data === void 0 ? void 0 : data.province) || (data === null || data === void 0 ? void 0 : data.country)) ? symbol : '')).call(_context7, data === null || data === void 0 ? void 0 : data.province)).call(_context6, (data === null || data === void 0 ? void 0 : data.country) && (data === null || data === void 0 ? void 0 : data.province) ? symbol : '')).call(_context5, data === null || data === void 0 ? void 0 : data.country);
293
305
  }
294
306
  }, [type, tabsValue]);
295
307
  var renderSingle = function renderSingle() {
@@ -341,6 +353,81 @@ var InternalSelect = function InternalSelect(props, ref) {
341
353
  (_a = clearRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseup', fn);
342
354
  };
343
355
  }, [initValue]);
356
+ // keyboard
357
+ var curkeyboardList = (0, _react.useMemo)(function () {
358
+ if (!searchValue) {
359
+ return commonList;
360
+ } else if (tabsValue === 'domestic') {
361
+ return domesticList;
362
+ } else {
363
+ return foreignList;
364
+ }
365
+ }, [commonList, domesticList, foreignList, searchValue, tabsValue]);
366
+ var getActiveIndex = function getActiveIndex(index) {
367
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
368
+ var len = curkeyboardList.length;
369
+ for (var i = 0; i < len; i += 1) {
370
+ var current = (index + i * offset + len) % len;
371
+ return current;
372
+ }
373
+ return -1;
374
+ };
375
+ var _useState11 = (0, _react.useState)(getActiveIndex(0)),
376
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
377
+ activeIndex = _useState12[0],
378
+ setActiveIndex = _useState12[1];
379
+ var initActiveIndex = function initActiveIndex() {
380
+ setActiveIndex(getActiveIndex(0));
381
+ };
382
+ (0, _react.useEffect)(function () {
383
+ initActiveIndex();
384
+ }, [searchValue, tabsValue]);
385
+ var onInternalKeyDown = function onInternalKeyDown(e) {
386
+ var _a, _b, _c;
387
+ var which = e.which;
388
+ // open
389
+ if (which === _KeyCode.default.ENTER || which === _KeyCode.default.UP || which === _KeyCode.default.DOWN) {
390
+ e.preventDefault();
391
+ setOptionShow(true);
392
+ }
393
+ // up、down、enter、esc
394
+ if (optionShow) {
395
+ var offset = 0;
396
+ switch (which) {
397
+ case _KeyCode.default.UP:
398
+ offset = -1;
399
+ break;
400
+ case _KeyCode.default.DOWN:
401
+ offset = 1;
402
+ break;
403
+ case _KeyCode.default.ENTER:
404
+ {
405
+ var item = curkeyboardList[activeIndex];
406
+ if (!item) return;
407
+ handleOption(item);
408
+ setOptionShow(false);
409
+ break;
410
+ }
411
+ case _KeyCode.default.ESC:
412
+ setOptionShow(false);
413
+ break;
414
+ default:
415
+ break;
416
+ }
417
+ if (offset !== 0) {
418
+ var nextActiveIndex = getActiveIndex(activeIndex + offset, offset);
419
+ var curDom = (_b = (_a = optionsListRef.current) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b[nextActiveIndex];
420
+ if (curDom) {
421
+ (_c = optionsListRef.current) === null || _c === void 0 ? void 0 : _c.children[nextActiveIndex].scrollIntoView({
422
+ behavior: 'auto',
423
+ block: 'nearest'
424
+ });
425
+ }
426
+ setActiveIndex(nextActiveIndex);
427
+ e.preventDefault();
428
+ }
429
+ }
430
+ };
344
431
  var renderCityPicker = function renderCityPicker() {
345
432
  return /*#__PURE__*/_react.default.createElement("div", {
346
433
  className: cityPickerCls,
@@ -358,7 +445,8 @@ var InternalSelect = function InternalSelect(props, ref) {
358
445
  onBlur: function onBlur() {
359
446
  var _a;
360
447
  return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.blur();
361
- }
448
+ },
449
+ onKeyDown: onInternalKeyDown
362
450
  }, renderSingle()));
363
451
  };
364
452
  var catchStyle = function catchStyle() {
@@ -376,6 +464,9 @@ var InternalSelect = function InternalSelect(props, ref) {
376
464
  }
377
465
  };
378
466
  var handleVisibleChange = function handleVisibleChange(visible) {
467
+ if (!visible) {
468
+ initActiveIndex();
469
+ }
379
470
  if (visible !== optionShow) {
380
471
  props.visible === undefined && setOptionShow(visible);
381
472
  onVisibleChange && onVisibleChange(visible);
@@ -52,7 +52,10 @@ export interface ICityPickerOptionProps {
52
52
  children?: React.ReactNode;
53
53
  className?: string;
54
54
  style?: React.CSSProperties;
55
+ activeIndex?: number;
56
+ index: number;
55
57
  onChangeSelect?: (city: City | null) => void;
56
58
  renderCityInfo?: (city: City, flag?: boolean, symbol?: string) => React.ReactNode;
57
59
  itemRender?: (city: City) => React.ReactNode;
60
+ onChangeActiveIndex?: (index: number) => void;
58
61
  }
@@ -20,11 +20,15 @@ var InternalOption = function InternalOption(props, ref) {
20
20
  var children = props.children,
21
21
  value = props.value,
22
22
  disabled = props.disabled,
23
+ className = props.className,
24
+ activeIndex = props.activeIndex,
25
+ index = props.index,
23
26
  onChangeSelect = props.onChangeSelect,
24
27
  _props$city = props.city,
25
28
  city = _props$city === void 0 ? {} : _props$city,
26
29
  renderCityInfo = props.renderCityInfo,
27
- itemRender = props.itemRender;
30
+ itemRender = props.itemRender,
31
+ onChangeActiveIndex = props.onChangeActiveIndex;
28
32
  var id = city.id,
29
33
  name = city.name;
30
34
  var _useContext = (0, _react.useContext)(_ConfigContext.default),
@@ -32,17 +36,25 @@ var InternalOption = function InternalOption(props, ref) {
32
36
  prefixCls = _useContext.prefixCls;
33
37
  var selectOptionPrefixCls = getPrefixCls(prefixCls, 'city-picker-list-item');
34
38
  var isSelected = id !== undefined ? id === value : false;
35
- var optionCls = (0, _classnames.default)(selectOptionPrefixCls, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(selectOptionPrefixCls, "-selected"), isSelected), (0, _defineProperty2.default)(_classNames, "".concat(selectOptionPrefixCls, "-disabled"), disabled), _classNames));
39
+ var optionCls = (0, _classnames.default)(selectOptionPrefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(selectOptionPrefixCls, "-selected"), isSelected), (0, _defineProperty2.default)(_classNames, "".concat(selectOptionPrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames, "".concat(selectOptionPrefixCls, "-active"), activeIndex === index), _classNames));
36
40
  var handleClick = function handleClick(e) {
37
41
  e.preventDefault();
38
42
  if (disabled || id === undefined) return;
39
43
  onChangeSelect === null || onChangeSelect === void 0 ? void 0 : onChangeSelect(city);
40
44
  };
45
+ var handleOnMouseEnter = function handleOnMouseEnter() {
46
+ onChangeActiveIndex && onChangeActiveIndex(index);
47
+ };
48
+ var handleOnMouseLeave = function handleOnMouseLeave() {
49
+ onChangeActiveIndex && onChangeActiveIndex(-1);
50
+ };
41
51
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
42
52
  ref: optionRef,
43
53
  className: optionCls,
44
54
  title: name,
45
- onClick: handleClick
55
+ onClick: handleClick,
56
+ onMouseEnter: handleOnMouseEnter,
57
+ onMouseLeave: handleOnMouseLeave
46
58
  }, typeof itemRender === 'function' ? itemRender(city) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
47
59
  className: "".concat(selectOptionPrefixCls, "-content")
48
60
  }, children), /*#__PURE__*/_react.default.createElement("span", {
@@ -121,6 +121,9 @@
121
121
  -ms-flex-direction: column;
122
122
  flex-direction: column;
123
123
  }
124
+ .kd-city-picker-selector {
125
+ width: 100%;
126
+ }
124
127
  .kd-city-picker-selector:hover .kd-city-picker-icon-active {
125
128
  color: #3761ca;
126
129
  }
@@ -309,6 +312,15 @@
309
312
  -ms-flex-pack: center;
310
313
  justify-content: center;
311
314
  }
315
+ .kd-city-picker-dropdown.topLeft.hidden,
316
+ .kd-city-picker-dropdown.bottomLeft.hidden,
317
+ .kd-city-picker-dropdown.topRight.hidden,
318
+ .kd-city-picker-dropdown.bottomRight.hidden {
319
+ opacity: 0;
320
+ visibility: hidden;
321
+ -webkit-transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
322
+ transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
323
+ }
312
324
  .kd-city-picker-list {
313
325
  padding: 8px 0;
314
326
  max-height: 320px;
@@ -334,18 +346,27 @@
334
346
  color: var(--kd-c-city-picker-placeholder-color-text, #b2b2b2);
335
347
  white-space: nowrap;
336
348
  }
337
- .kd-city-picker-list-item:hover {
349
+ .kd-city-picker-list-item-active:not(.kd-city-picker-list-item-disabled) {
338
350
  background-color: var(--kd-c-city-picker-color-background, #f5f5f5);
339
351
  }
340
352
  .kd-city-picker-list-item-selected:not(.kd-city-picker-list-item-disabled) {
341
353
  background-color: var(--kd-c-city-picker-color-background-selected, var(--kd-g-color-theme-3, #e3eeff));
342
354
  color: var(--kd-c-city-picker-list-item-color-text-selected, var(--kd-g-color-theme, #5582f3));
343
355
  }
356
+ .kd-city-picker-list-item-selected:not(.kd-city-picker-list-item-disabled) .kd-city-picker-list-item-info {
357
+ color: var(--kd-c-city-picker-list-item-color-text-selected, var(--kd-g-color-theme, #5582f3));
358
+ }
344
359
  .kd-city-picker-list-item-disabled {
345
360
  color: var(--kd-c-city-picker-item-color-text-disabled, var(--kd-g-color-disabled, #b2b2b2));
346
361
  cursor: not-allowed;
347
362
  background-color: var(--kd-c-city-picker-item-color-background-disabled, #fff);
348
363
  }
364
+ .kd-city-picker-list > .kd-city-picker-list-item-match {
365
+ color: var(--kd-c-city-picker-footer-color-text, var(--kd-g-color-text-primary, #212121));
366
+ }
367
+ .kd-city-picker-list > .kd-city-picker-list-item-match .kd-city-picker-list-item-info {
368
+ color: var(--kd-c-city-picker-placeholder-color-text, #b2b2b2);
369
+ }
349
370
  .kd-city-picker-highlight {
350
371
  color: var(--kd-c-city-picker-highlight-color-text, var(--kd-g-color-theme, #5582f3));
351
372
  }
@@ -446,12 +467,3 @@
446
467
  white-space: nowrap;
447
468
  text-overflow: ellipsis;
448
469
  }
449
- .kd-city-picker.topLeft.hidden,
450
- .kd-city-picker.bottomLeft.hidden,
451
- .kd-city-picker.topRight.hidden,
452
- .kd-city-picker.bottomRight.hidden {
453
- opacity: 0;
454
- visibility: hidden;
455
- -webkit-transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
456
- transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
457
- }
@@ -14,6 +14,9 @@
14
14
  display: flex;
15
15
  flex-direction: column;
16
16
 
17
+ &-selector {
18
+ width: 100%;
19
+ }
17
20
  &-selector:hover {
18
21
  .@{city-picker-prefix-cls}-icon-active {
19
22
  color: #3761ca;
@@ -199,6 +202,15 @@
199
202
  align-items: center;
200
203
  justify-content: center;
201
204
  }
205
+
206
+ &.topLeft.hidden,
207
+ &.bottomLeft.hidden,
208
+ &.topRight.hidden,
209
+ &.bottomRight.hidden {
210
+ opacity: 0;
211
+ visibility: hidden;
212
+ transition: all calc(@transition-duration - 0.1s) @ease;
213
+ }
202
214
  }
203
215
 
204
216
  &-list {
@@ -218,13 +230,17 @@
218
230
  white-space: nowrap;
219
231
  }
220
232
 
221
- &:hover {
233
+ &-active:not(&-disabled) {
222
234
  background-color: @city-picker-item-active-bg;
223
235
  }
224
236
 
225
237
  &-selected:not(&-disabled) {
226
238
  background-color: @city-picker-item-selected-bg;
227
239
  color: @city-picker-list-item-color-selected;
240
+
241
+ .@{city-picker-prefix-cls}-list-item-info {
242
+ color: @city-picker-list-item-color-selected;
243
+ }
228
244
  }
229
245
 
230
246
  &-disabled {
@@ -233,6 +249,13 @@
233
249
  background-color: @city-picker-disabled-option-bg;
234
250
  }
235
251
  }
252
+
253
+ & > .@{city-picker-prefix-cls}-list-item-match {
254
+ color: @city-picker-font-color;
255
+ .@{city-picker-prefix-cls}-list-item-info {
256
+ color: @city-picker-placeholder-color;
257
+ }
258
+ }
236
259
  }
237
260
 
238
261
  &-highlight {
@@ -323,13 +346,4 @@
323
346
  .over();
324
347
  }
325
348
  }
326
-
327
- &.topLeft.hidden,
328
- &.bottomLeft.hidden,
329
- &.topRight.hidden,
330
- &.bottomRight.hidden {
331
- opacity: 0;
332
- visibility: hidden;
333
- transition: all calc(@transition-duration - 0.1s) @ease;
334
- }
335
349
  }
@@ -8,9 +8,11 @@ Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports.default = void 0;
11
- var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
11
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
13
13
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
14
+ var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
15
+ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
14
16
  var _react = _interopRequireWildcard(require("react"));
15
17
  var _classnames = _interopRequireDefault(require("classnames"));
16
18
  var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext"));
@@ -18,27 +20,37 @@ var _utils = require("../_utils");
18
20
  var _icon = _interopRequireDefault(require("../icon"));
19
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
24
+ var t = {};
25
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
26
+ if (s != null && typeof _getOwnPropertySymbols.default === "function") for (var i = 0, p = (0, _getOwnPropertySymbols.default)(s); i < p.length; i++) {
27
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
28
+ }
29
+ return t;
30
+ };
21
31
  var Panel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
22
32
  var _classNames6, _classNames7, _classNames8;
23
33
  var _React$useContext = _react.default.useContext(_ConfigContext.default),
24
34
  getPrefixCls = _React$useContext.getPrefixCls,
25
35
  prefixCls = _React$useContext.prefixCls,
26
36
  userDefaultProps = _React$useContext.compDefaultProps;
27
- var _getCompProps = (0, _utils.getCompProps)('CollapsePanel', userDefaultProps, props),
28
- disabled = _getCompProps.disabled,
29
- extra = _getCompProps.extra,
30
- assist = _getCompProps.assist,
31
- header = _getCompProps.header,
32
- onChange = _getCompProps.onChange,
33
- panelKey = _getCompProps.panelKey,
34
- innerKey = _getCompProps.innerKey,
35
- bordered = _getCompProps.bordered,
36
- expandIcon = _getCompProps.expandIcon,
37
- expandIconPosition = _getCompProps.expandIconPosition,
38
- style = _getCompProps.style,
39
- className = _getCompProps.className,
40
- children = _getCompProps.children,
41
- customPrefixcls = _getCompProps.prefixCls;
37
+ var _a = (0, _utils.getCompProps)('CollapsePanel', userDefaultProps, props),
38
+ disabled = _a.disabled,
39
+ extra = _a.extra,
40
+ assist = _a.assist,
41
+ header = _a.header,
42
+ onChange = _a.onChange,
43
+ panelKey = _a.panelKey,
44
+ innerKey = _a.innerKey,
45
+ bordered = _a.bordered,
46
+ expandIcon = _a.expandIcon,
47
+ expandIconPosition = _a.expandIconPosition,
48
+ style = _a.style,
49
+ title = _a.title,
50
+ className = _a.className,
51
+ children = _a.children,
52
+ customPrefixcls = _a.prefixCls,
53
+ others = __rest(_a, ["disabled", "extra", "assist", "header", "onChange", "panelKey", "innerKey", "bordered", "expandIcon", "expandIconPosition", "style", "title", "className", "children", "prefixCls"]);
42
54
  var panelPrefixCls = getPrefixCls(prefixCls, 'collapse-panel', customPrefixcls); // 样式前缀
43
55
  var childrenRef = (0, _react.useRef)();
44
56
  var setHeightTimerRef = (0, _react.useRef)(null);
@@ -80,7 +92,8 @@ var Panel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
80
92
  className: className,
81
93
  onClick: handleClick
82
94
  }, expandIconPosition === 'left' ? renderIcon() : null, header && /*#__PURE__*/_react.default.createElement("span", {
83
- className: headerClassName
95
+ className: headerClassName,
96
+ title: title
84
97
  }, renderReactNode(header)));
85
98
  };
86
99
  var renderRight = function renderRight() {
@@ -147,11 +160,11 @@ var Panel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
147
160
  expand ? expandWidthoutAnimation(childrenRef.current) : runCollapseAnimation(childrenRef.current);
148
161
  }
149
162
  }, [childrenRef.current, expandAnimation, expand]);
150
- return /*#__PURE__*/_react.default.createElement("div", {
163
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
151
164
  className: rootClassName,
152
165
  style: style,
153
166
  ref: panelPrefixClsRef
154
- }, /*#__PURE__*/_react.default.createElement("span", {
167
+ }, others), /*#__PURE__*/_react.default.createElement("span", {
155
168
  className: topClassName
156
169
  }, renderLeft(), renderMiddle(), renderRight()), /*#__PURE__*/_react.default.createElement("div", {
157
170
  className: childrenClassName,
@@ -116,9 +116,12 @@
116
116
  .kd-collapse-panel:last-child {
117
117
  border-top: none;
118
118
  }
119
- .kd-collapse-panel:first-child {
119
+ .kd-collapse-panel-border.kd-collapse-panel:first-child {
120
120
  border-top: var(--kd-c-collapse-border-width, 1px) solid var(--kd-c-collapse-color-border-strong-2, var(--kd-g-color-border-strong-2, #d9d9d9));
121
121
  }
122
+ .kd-collapse-panel-border.kd-collapse-panel:not(:nth-child(1)) {
123
+ border-top: none;
124
+ }
122
125
  .kd-collapse-panel {
123
126
  display: -webkit-inline-box;
124
127
  display: -ms-inline-flexbox;
@@ -9,9 +9,12 @@
9
9
  &-panel:last-child {
10
10
  border-top: none;
11
11
  }
12
- &-panel:first-child {
12
+ &-panel-border&-panel:first-child {
13
13
  border-top: @collapse-border-width solid @collapse-border-color;
14
14
  }
15
+ &-panel-border&-panel:not(:nth-child(1)) {
16
+ border-top: none;
17
+ }
15
18
  &-panel {
16
19
  display: inline-flex;
17
20
  flex-direction: column;
@@ -17,6 +17,7 @@ export interface FormItemProps {
17
17
  validateTrigger?: string | string[];
18
18
  wrapperWidth?: string | number;
19
19
  valuePropName?: string;
20
+ extra?: React.ReactNode;
20
21
  }
21
22
  export declare const INNER_VALUE_PROPS_LIST: {
22
23
  name: string;
package/lib/form/Field.js CHANGED
@@ -114,7 +114,8 @@ var Field = function Field(props) {
114
114
  wrapperWidth = props.wrapperWidth,
115
115
  validateTrigger = props.validateTrigger,
116
116
  defaultValue = props.defaultValue,
117
- valuePropName = props.valuePropName;
117
+ valuePropName = props.valuePropName,
118
+ extra = props.extra;
118
119
  var htmlFor = customizeHtmlFor || (name ? (0, _concat.default)(_context = "form_".concat(name, "_")).call(_context, (Math.random() * 100).toFixed(0)) : undefined);
119
120
  var childrenNode = null;
120
121
  var innerValuePropName = 'value';
@@ -200,7 +201,7 @@ var Field = function Field(props) {
200
201
  };
201
202
  }, []);
202
203
  var formPrefixCls = getPrefixCls === null || getPrefixCls === void 0 ? void 0 : getPrefixCls(prefixCls, 'form', customizePrefixcls);
203
- var formItemClassName = (0, _classnames2.default)((_classnames = {}, (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls), true), (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls, "-field"), true), (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls, "-field-hidden"), hidden), (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls, "-field-vertical"), vertical), _classnames), className);
204
+ var formItemClassName = (0, _classnames2.default)((_classnames = {}, (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls), true), (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls, "-field"), true), (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls, "-field-hidden"), hidden), (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls, "-field-vertical"), vertical), (0, _defineProperty2.default)(_classnames, "".concat(formPrefixCls, "-field-extra"), extra), _classnames), className);
204
205
  var value = getFieldValue(name);
205
206
  var validateMessage = getFieldError(name);
206
207
  var getInputValueFormProp = function getInputValueFormProp(evt) {
@@ -295,7 +296,8 @@ var Field = function Field(props) {
295
296
  requiredMark: mergedRequired
296
297
  }), /*#__PURE__*/_react.default.createElement(_FieldWrapper.default, {
297
298
  width: wrapperWidth,
298
- validateMessage: validateMessage
299
+ validateMessage: validateMessage,
300
+ extra: extra
299
301
  }, (0, _map.default)(childrenArray).call(childrenArray, function (child, index) {
300
302
  var keys = mergeProps((0, _extends3.default)((0, _extends3.default)({}, generateEventHandler(handleValueValidate, validateTrigger)), {
301
303
  key: index,
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  export interface FieldWrapperProps {
3
+ extra?: React.ReactNode;
3
4
  children?: React.ReactNode;
4
5
  width?: string | number;
5
6
  validateMessage?: string;
@@ -23,19 +23,27 @@ var FieldWrapper = function FieldWrapper(props) {
23
23
  var children = wrapperProps.children,
24
24
  customizePrefixCls = wrapperProps.prefixCls,
25
25
  width = wrapperProps.width,
26
- validateMessage = wrapperProps.validateMessage;
26
+ validateMessage = wrapperProps.validateMessage,
27
+ extra = wrapperProps.extra;
27
28
  var wrapperPrefixCls = getPrefixCls === null || getPrefixCls === void 0 ? void 0 : getPrefixCls(prefixCls, 'form-field-wrapper', customizePrefixCls);
28
29
  var wrapperClassName = (0, _classnames.default)(["".concat(wrapperPrefixCls)]);
29
30
  var messageClassName = (0, _classnames.default)(["".concat(wrapperPrefixCls, "-message")]);
31
+ var validate = validateMessage ? /*#__PURE__*/_react.default.createElement("p", {
32
+ className: messageClassName,
33
+ title: validateMessage
34
+ }, validateMessage) : null;
30
35
  return /*#__PURE__*/_react.default.createElement("div", {
31
36
  className: wrapperClassName,
32
37
  style: {
33
38
  width: width
34
39
  }
35
- }, children, validateMessage && /*#__PURE__*/_react.default.createElement("p", {
36
- className: messageClassName,
37
- title: validateMessage
38
- }, validateMessage));
40
+ }, children, extra ? /*#__PURE__*/_react.default.createElement("div", {
41
+ className: "".concat(wrapperPrefixCls, "-extra")
42
+ }, /*#__PURE__*/_react.default.createElement("div", {
43
+ className: "".concat(wrapperPrefixCls, "-extra-message")
44
+ }, validateMessage), /*#__PURE__*/_react.default.createElement("div", {
45
+ className: "".concat(wrapperPrefixCls, "-extra-text")
46
+ }, extra)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, validate));
39
47
  };
40
48
  var _default = FieldWrapper;
41
49
  exports.default = _default;
@@ -152,6 +152,9 @@
152
152
  .kd-form-field-hidden {
153
153
  display: none !important;
154
154
  }
155
+ .kd-form-field-extra {
156
+ margin-bottom: calc(var(--kd-c-form-field-spacing-margin-bottom, 22px) * 2);
157
+ }
155
158
  .kd-form-field-label {
156
159
  font-size: var(--kd-c-form-field-label-font-size, 12px);
157
160
  line-height: var(--kd-c-form-field-label-line-height, 18px);
@@ -178,7 +181,8 @@
178
181
  .kd-form-field-wrapper {
179
182
  position: relative;
180
183
  }
181
- .kd-form-field-wrapper-message {
184
+ .kd-form-field-wrapper-message,
185
+ .kd-form-field-wrapper-extra {
182
186
  position: absolute;
183
187
  left: -7px;
184
188
  right: 0;
@@ -191,3 +195,9 @@
191
195
  white-space: nowrap;
192
196
  text-overflow: ellipsis;
193
197
  }
198
+ .kd-form-field-wrapper-extra-message {
199
+ color: var(--kd-c-form-error-color, var(--kd-g-color-error, #fb2323));
200
+ }
201
+ .kd-form-field-wrapper-extra-text {
202
+ color: var(--kd-c-form-extra-color, var(--kd-g-color-text-third, #999));
203
+ }
@@ -46,6 +46,10 @@
46
46
  &-hidden {
47
47
  display: none !important;
48
48
  }
49
+
50
+ &-extra {
51
+ margin-bottom: calc(@form-field-spacing-margin-bottom * 2);
52
+ }
49
53
  }
50
54
 
51
55
  .@{field-label-cls} {
@@ -76,7 +80,8 @@
76
80
 
77
81
  .@{field-wrapper-cls} {
78
82
  position: relative;
79
- &-message {
83
+
84
+ &-message, &-extra {
80
85
  position: absolute;
81
86
  left: -7px;
82
87
  right: 0;
@@ -89,4 +94,14 @@
89
94
  white-space: nowrap;
90
95
  text-overflow: ellipsis;
91
96
  }
97
+
98
+ &-extra {
99
+ &-message {
100
+ color: @form-error-color;
101
+ }
102
+
103
+ &-text {
104
+ color: @form-extra-color;
105
+ }
106
+ }
92
107
  }
@@ -5,6 +5,7 @@
5
5
  // color
6
6
  @form-field-color: var(~'@{form-prefix}-field-color', @color-text-secondary);
7
7
  @form-error-color: var(~'@{form-prefix}-error-color', @color-error);
8
+ @form-extra-color: var(~'@{form-prefix}-extra-color', @color-text-third);
8
9
 
9
10
  // font
10
11
  @form-field-label-font-size: var(~'@{form-prefix}-field-label-font-size',12px);
@@ -405,6 +405,7 @@
405
405
  min-width: 75px;
406
406
  }
407
407
  .kd-select-item-option-content {
408
+ max-width: var(--kd-c-select-item-sizing-max-width);
408
409
  overflow: hidden;
409
410
  white-space: nowrap;
410
411
  text-overflow: ellipsis;