@kdcloudjs/kdesign 1.7.26 → 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 (44) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/kdesign-complete.less +21 -13
  3. package/dist/kdesign.css +18 -14
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +114 -9
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +3 -3
  8. package/dist/kdesign.min.js +2 -2
  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/style/index.css +2 -2
  14. package/es/cascader/style/index.less +2 -2
  15. package/es/cascader/style/token.less +1 -0
  16. package/es/city-picker/city-picker.js +102 -10
  17. package/es/city-picker/interface.d.ts +3 -0
  18. package/es/city-picker/option.js +14 -3
  19. package/es/city-picker/style/index.css +10 -10
  20. package/es/city-picker/style/index.less +10 -10
  21. package/es/select/style/index.css +1 -0
  22. package/es/select/style/index.less +1 -0
  23. package/es/select/style/token.less +1 -0
  24. package/es/tabs/style/index.css +3 -0
  25. package/es/tabs/style/index.less +3 -0
  26. package/es/tabs/style/token.less +1 -0
  27. package/lib/anchor/style/index.css +1 -1
  28. package/lib/anchor/style/index.less +1 -1
  29. package/lib/anchor/style/token.less +1 -0
  30. package/lib/cascader/style/index.css +2 -2
  31. package/lib/cascader/style/index.less +2 -2
  32. package/lib/cascader/style/token.less +1 -0
  33. package/lib/city-picker/city-picker.js +101 -9
  34. package/lib/city-picker/interface.d.ts +3 -0
  35. package/lib/city-picker/option.js +14 -3
  36. package/lib/city-picker/style/index.css +10 -10
  37. package/lib/city-picker/style/index.less +10 -10
  38. package/lib/select/style/index.css +1 -0
  39. package/lib/select/style/index.less +1 -0
  40. package/lib/select/style/token.less +1 -0
  41. package/lib/tabs/style/index.css +3 -0
  42. package/lib/tabs/style/index.less +3 -0
  43. package/lib/tabs/style/token.less +1 -0
  44. 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],
@@ -236,8 +238,9 @@ var InternalSelect = function InternalSelect(props, ref) {
236
238
  return renderNotContent(notContent);
237
239
  }
238
240
  return /*#__PURE__*/_react.default.createElement("div", {
239
- className: "".concat(selectPrefixCls, "-list")
240
- }, (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) {
241
244
  return /*#__PURE__*/_react.default.createElement(_option.default, {
242
245
  key: item.id,
243
246
  value: initValue,
@@ -247,7 +250,12 @@ var InternalSelect = function InternalSelect(props, ref) {
247
250
  return _renderCityInfo(data, isCommon, flag);
248
251
  },
249
252
  onChangeSelect: handleOption,
250
- itemRender: itemRender
253
+ itemRender: itemRender,
254
+ activeIndex: activeIndex,
255
+ index: index,
256
+ onChangeActiveIndex: function onChangeActiveIndex(i) {
257
+ setActiveIndex(i);
258
+ }
251
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);
252
260
  }));
253
261
  };
@@ -283,12 +291,17 @@ var InternalSelect = function InternalSelect(props, ref) {
283
291
  var symbol = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ', ';
284
292
  if (!data) return null;
285
293
  if (isDomestic(type)) {
286
- var _context3;
287
- var curVal = tabsValue === 'domestic' || isCommon ? data === null || data === void 0 ? void 0 : data.province : data === null || data === void 0 ? void 0 : data.country;
288
- 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);
289
302
  } else {
290
- var _context4, _context5, _context6;
291
- return (0, _concat.default)(_context4 = (0, _concat.default)(_context5 = (0, _concat.default)(_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);
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);
292
305
  }
293
306
  }, [type, tabsValue]);
294
307
  var renderSingle = function renderSingle() {
@@ -340,6 +353,81 @@ var InternalSelect = function InternalSelect(props, ref) {
340
353
  (_a = clearRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseup', fn);
341
354
  };
342
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
+ };
343
431
  var renderCityPicker = function renderCityPicker() {
344
432
  return /*#__PURE__*/_react.default.createElement("div", {
345
433
  className: cityPickerCls,
@@ -357,7 +445,8 @@ var InternalSelect = function InternalSelect(props, ref) {
357
445
  onBlur: function onBlur() {
358
446
  var _a;
359
447
  return (_a = searchRef.current) === null || _a === void 0 ? void 0 : _a.blur();
360
- }
448
+ },
449
+ onKeyDown: onInternalKeyDown
361
450
  }, renderSingle()));
362
451
  };
363
452
  var catchStyle = function catchStyle() {
@@ -375,6 +464,9 @@ var InternalSelect = function InternalSelect(props, ref) {
375
464
  }
376
465
  };
377
466
  var handleVisibleChange = function handleVisibleChange(visible) {
467
+ if (!visible) {
468
+ initActiveIndex();
469
+ }
378
470
  if (visible !== optionShow) {
379
471
  props.visible === undefined && setOptionShow(visible);
380
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
  }
@@ -21,11 +21,14 @@ var InternalOption = function InternalOption(props, ref) {
21
21
  value = props.value,
22
22
  disabled = props.disabled,
23
23
  className = props.className,
24
+ activeIndex = props.activeIndex,
25
+ index = props.index,
24
26
  onChangeSelect = props.onChangeSelect,
25
27
  _props$city = props.city,
26
28
  city = _props$city === void 0 ? {} : _props$city,
27
29
  renderCityInfo = props.renderCityInfo,
28
- itemRender = props.itemRender;
30
+ itemRender = props.itemRender,
31
+ onChangeActiveIndex = props.onChangeActiveIndex;
29
32
  var id = city.id,
30
33
  name = city.name;
31
34
  var _useContext = (0, _react.useContext)(_ConfigContext.default),
@@ -33,17 +36,25 @@ var InternalOption = function InternalOption(props, ref) {
33
36
  prefixCls = _useContext.prefixCls;
34
37
  var selectOptionPrefixCls = getPrefixCls(prefixCls, 'city-picker-list-item');
35
38
  var isSelected = id !== undefined ? id === value : false;
36
- var optionCls = (0, _classnames.default)(selectOptionPrefixCls, className, (_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));
37
40
  var handleClick = function handleClick(e) {
38
41
  e.preventDefault();
39
42
  if (disabled || id === undefined) return;
40
43
  onChangeSelect === null || onChangeSelect === void 0 ? void 0 : onChangeSelect(city);
41
44
  };
45
+ var handleOnMouseEnter = function handleOnMouseEnter() {
46
+ onChangeActiveIndex && onChangeActiveIndex(index);
47
+ };
48
+ var handleOnMouseLeave = function handleOnMouseLeave() {
49
+ onChangeActiveIndex && onChangeActiveIndex(-1);
50
+ };
42
51
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
43
52
  ref: optionRef,
44
53
  className: optionCls,
45
54
  title: name,
46
- onClick: handleClick
55
+ onClick: handleClick,
56
+ onMouseEnter: handleOnMouseEnter,
57
+ onMouseLeave: handleOnMouseLeave
47
58
  }, typeof itemRender === 'function' ? itemRender(city) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
48
59
  className: "".concat(selectOptionPrefixCls, "-content")
49
60
  }, children), /*#__PURE__*/_react.default.createElement("span", {
@@ -312,6 +312,15 @@
312
312
  -ms-flex-pack: center;
313
313
  justify-content: center;
314
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
+ }
315
324
  .kd-city-picker-list {
316
325
  padding: 8px 0;
317
326
  max-height: 320px;
@@ -337,7 +346,7 @@
337
346
  color: var(--kd-c-city-picker-placeholder-color-text, #b2b2b2);
338
347
  white-space: nowrap;
339
348
  }
340
- .kd-city-picker-list-item:hover {
349
+ .kd-city-picker-list-item-active:not(.kd-city-picker-list-item-disabled) {
341
350
  background-color: var(--kd-c-city-picker-color-background, #f5f5f5);
342
351
  }
343
352
  .kd-city-picker-list-item-selected:not(.kd-city-picker-list-item-disabled) {
@@ -458,12 +467,3 @@
458
467
  white-space: nowrap;
459
468
  text-overflow: ellipsis;
460
469
  }
461
- .kd-city-picker.topLeft.hidden,
462
- .kd-city-picker.bottomLeft.hidden,
463
- .kd-city-picker.topRight.hidden,
464
- .kd-city-picker.bottomRight.hidden {
465
- opacity: 0;
466
- visibility: hidden;
467
- -webkit-transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
468
- transition: all calc(0.3s - 0.1s) cubic-bezier(0.4, 0, 0.6, 1);
469
- }
@@ -202,6 +202,15 @@
202
202
  align-items: center;
203
203
  justify-content: center;
204
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
+ }
205
214
  }
206
215
 
207
216
  &-list {
@@ -221,7 +230,7 @@
221
230
  white-space: nowrap;
222
231
  }
223
232
 
224
- &:hover {
233
+ &-active:not(&-disabled) {
225
234
  background-color: @city-picker-item-active-bg;
226
235
  }
227
236
 
@@ -337,13 +346,4 @@
337
346
  .over();
338
347
  }
339
348
  }
340
-
341
- &.topLeft.hidden,
342
- &.bottomLeft.hidden,
343
- &.topRight.hidden,
344
- &.bottomRight.hidden {
345
- opacity: 0;
346
- visibility: hidden;
347
- transition: all calc(@transition-duration - 0.1s) @ease;
348
- }
349
349
  }
@@ -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;
@@ -176,6 +176,7 @@
176
176
  min-width: 75px;
177
177
 
178
178
  &-content {
179
+ max-width: @select-item-max-width;
179
180
  .over();
180
181
 
181
182
  .@{kd-prefix}-checkbox {
@@ -40,6 +40,7 @@
40
40
  @select-large-height: var(~'@{select-custom-prefix}-sizing-height-large', 36px); // 大号高度 lh:28px
41
41
  @select-middle-height: var(~'@{select-custom-prefix}-sizing-height-middle', 30px); // 中号高度lh:22px
42
42
  @select-small-height: var(~'@{select-custom-prefix}-sizing-height-small', 24px); // 小号高度lh:12px
43
+ @select-item-max-width: var(~'@{select-custom-prefix}-item-sizing-max-width');
43
44
 
44
45
  // spacing
45
46
  @select-bordered: var(~'@{select-custom-prefix}-bordered-spacing-padding-left', 8px);
@@ -380,6 +380,9 @@
380
380
  display: inline-block;
381
381
  -webkit-transition: color var(--kd-c-tabs-motion-duration, var(--kd-g-duration, 0.3s));
382
382
  transition: color var(--kd-c-tabs-motion-duration, var(--kd-g-duration, 0.3s));
383
+ overflow: hidden;
384
+ text-overflow: ellipsis;
385
+ max-width: var(--kd-c-tabs-pane-text-sizing-max-width);
383
386
  }
384
387
  .kd-tab-pane-text-active,
385
388
  .kd-tab-pane-text:hover {
@@ -216,6 +216,9 @@
216
216
  &-text {
217
217
  display: inline-block;
218
218
  transition: color @tab-g-motion-duration;
219
+ overflow: hidden;
220
+ text-overflow: ellipsis;
221
+ max-width: @tab-pane-text-max-width;
219
222
  &-active,
220
223
  &:hover {
221
224
  color: @tabPane-font-color-active;
@@ -29,6 +29,7 @@
29
29
  @tab-pane-type-line-height-small: var(~'@{tabs-custom-prefix}-pane-type-line-sizing-height-small', 32px);
30
30
  @tab-pane-type-line-height-middle: var(~'@{tabs-custom-prefix}-pane-type-line-sizing-height-middle', 32px);
31
31
  @tab-pane-type-dynamic-height: var(~'@{tabs-custom-prefix}-pane-type-dynamic-sizing-height', 32px);
32
+ @tab-pane-text-max-width: var(~'@{tabs-custom-prefix}-pane-text-sizing-max-width');
32
33
 
33
34
 
34
35
  // spacing
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/kdesign",
3
- "version": "1.7.26",
3
+ "version": "1.7.27",
4
4
  "description": "KDesign 金蝶前端react 组件库",
5
5
  "title": "kdesign",
6
6
  "keywords": [