@kdcloudjs/kdesign 1.6.1 → 1.6.2

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 (61) hide show
  1. package/dist/kdesign-complete.less +67 -33
  2. package/dist/kdesign.css +60 -21
  3. package/dist/kdesign.css.map +1 -1
  4. package/dist/kdesign.js +133 -113
  5. package/dist/kdesign.js.map +1 -1
  6. package/dist/kdesign.min.css +3 -3
  7. package/dist/kdesign.min.js +8 -8
  8. package/dist/kdesign.min.js.map +1 -1
  9. package/es/date-picker/calendar.js +5 -17
  10. package/es/date-picker/date-panel.js +4 -3
  11. package/es/date-picker/interface.d.ts +6 -0
  12. package/es/date-picker/locale/zh_CN.js +3 -0
  13. package/es/date-picker/panel/week/week.js +1 -1
  14. package/es/date-picker/range-picker.js +1 -0
  15. package/es/date-picker/style/index.css +45 -16
  16. package/es/date-picker/style/index.less +36 -16
  17. package/es/date-picker/style/mixin.less +1 -0
  18. package/es/date-picker/style/token.less +1 -1
  19. package/es/locale/locale.d.ts +7 -1
  20. package/es/locale/zh-CN.d.ts +4 -1
  21. package/es/locale/zh-CN.js +1 -1
  22. package/es/pagination/pagination.js +2 -1
  23. package/es/search/quick-search.js +1 -1
  24. package/es/search/search.js +3 -2
  25. package/es/transfer/list-body.js +14 -3
  26. package/es/transfer/list.d.ts +1 -0
  27. package/es/transfer/list.js +7 -14
  28. package/es/transfer/transfer.d.ts +1 -0
  29. package/es/transfer/transfer.js +6 -0
  30. package/es/tree/style/index.css +14 -4
  31. package/es/tree/style/index.less +26 -16
  32. package/es/tree/style/token.less +3 -0
  33. package/es/tree/tree.js +42 -31
  34. package/es/tree/treeNode.js +7 -4
  35. package/lib/date-picker/calendar.js +4 -16
  36. package/lib/date-picker/date-panel.js +4 -3
  37. package/lib/date-picker/interface.d.ts +6 -0
  38. package/lib/date-picker/locale/zh_CN.js +3 -0
  39. package/lib/date-picker/panel/week/week.js +1 -1
  40. package/lib/date-picker/range-picker.js +1 -0
  41. package/lib/date-picker/style/index.css +45 -16
  42. package/lib/date-picker/style/index.less +36 -16
  43. package/lib/date-picker/style/mixin.less +1 -0
  44. package/lib/date-picker/style/token.less +1 -1
  45. package/lib/locale/locale.d.ts +7 -1
  46. package/lib/locale/zh-CN.d.ts +4 -1
  47. package/lib/locale/zh-CN.js +1 -1
  48. package/lib/pagination/pagination.js +3 -1
  49. package/lib/search/quick-search.js +1 -1
  50. package/lib/search/search.js +3 -2
  51. package/lib/transfer/list-body.js +13 -2
  52. package/lib/transfer/list.d.ts +1 -0
  53. package/lib/transfer/list.js +6 -14
  54. package/lib/transfer/transfer.d.ts +1 -0
  55. package/lib/transfer/transfer.js +6 -0
  56. package/lib/tree/style/index.css +14 -4
  57. package/lib/tree/style/index.less +26 -16
  58. package/lib/tree/style/token.less +3 -0
  59. package/lib/tree/tree.js +43 -32
  60. package/lib/tree/treeNode.js +7 -4
  61. package/package.json +1 -1
@@ -8,6 +8,9 @@
8
8
  // @datePicker-prefix-cls-input: ~'@{datePicker-prefix-cls}-input';
9
9
  @datePicker-prefix-cls-panel: ~'@{datePicker-prefix-cls}-panel';
10
10
 
11
+ @datePicker-calendar-text: 24px;
12
+ @datePicker-calendar-height: 242px;
13
+
11
14
  .@{datePicker-prefix-cls} {
12
15
  // &-small {
13
16
  // height: @date-small-height;
@@ -89,6 +92,10 @@
89
92
  &[disabled] {
90
93
  background: transparent;
91
94
  }
95
+
96
+ &::placeholder {
97
+ color: @date-input-color-disabled;
98
+ }
92
99
  }
93
100
 
94
101
  &-placeholder {
@@ -436,7 +443,7 @@
436
443
 
437
444
  .@{datePicker-prefix-cls}-calendar-item-disabled {
438
445
  position: relative;
439
- pointer-events: none;
446
+ cursor: not-allowed;
440
447
 
441
448
  .@{datePicker-prefix-cls}-calendar-text {
442
449
  color: #b2b2b2;
@@ -538,10 +545,10 @@
538
545
  .@{datePicker-prefix-cls}-calendar-week-text {
539
546
  position: relative;
540
547
  z-index: 2;
541
- width: 32px;
542
- height: 32px;
548
+ width: @datePicker-calendar-text;
549
+ height: @datePicker-calendar-text;
543
550
  text-align: center;
544
- line-height: 32px;
551
+ line-height: @datePicker-calendar-text;
545
552
  display: inline-block;
546
553
  border-radius: @date-panel-border-radius;
547
554
  color: #b2b2b2;
@@ -553,7 +560,7 @@
553
560
 
554
561
  .@{datePicker-prefix-cls}-calendar-week-text {
555
562
  width: 100%;
556
- height: 32px;
563
+ height: @datePicker-calendar-text;
557
564
  margin: 3px 0;
558
565
  }
559
566
 
@@ -589,12 +596,22 @@
589
596
  &::before {
590
597
  left: 50%;
591
598
  }
599
+
600
+ .@{datePicker-prefix-cls}-calendar-text-selected {
601
+ border-top-right-radius: 0 !important;
602
+ border-bottom-right-radius: 0 !important;
603
+ }
592
604
  }
593
605
 
594
606
  .@{datePicker-prefix-cls}-range-end {
595
607
  &::before {
596
608
  right: 50%;
597
609
  }
610
+
611
+ .@{datePicker-prefix-cls}-calendar-text-selected {
612
+ border-top-left-radius: 0 !important;
613
+ border-bottom-left-radius: 0 !important;
614
+ }
598
615
  }
599
616
 
600
617
  .@{datePicker-prefix-cls}-range-view,
@@ -619,14 +636,13 @@
619
636
  font-size: 14px;
620
637
  padding: 0;
621
638
  color: rgba(0, 0, 0, 0.25);
622
- // line-height: 40px;
623
639
  background: 0 0;
624
640
  border: 0;
625
641
  cursor: pointer;
626
642
  transition: color 0.3s;
627
643
 
628
644
  &:hover {
629
- color: rgba(0, 0, 0, 0.85);
645
+ color: @date-color-background-checked;
630
646
  }
631
647
  }
632
648
 
@@ -641,7 +657,7 @@
641
657
  line-height: @date-panel-header-height;
642
658
  background: #fafafa;
643
659
  color: #212121;
644
- // line-height: 36px;
660
+ font-size: 14px;
645
661
  padding: 7px;
646
662
  border-bottom: 1px solid #d9d9d9;
647
663
  font-weight: bold;
@@ -656,7 +672,8 @@
656
672
 
657
673
  .@{datePicker-prefix-cls}-content {
658
674
  display: flex;
659
- height: 224px;
675
+ height: @datePicker-calendar-height;
676
+ border-left: 1px solid #d9d9d9;
660
677
  width: 100%;
661
678
  table-layout: fixed;
662
679
  border-collapse: collapse;
@@ -665,13 +682,14 @@
665
682
  flex: 1 0 auto;
666
683
  width: 56px;
667
684
  margin: 0;
668
- padding: 0 0 196px 0;
669
- overflow-y: hidden;
685
+ padding: 0 0 206px 0;
686
+ padding-top: 10px;
670
687
  text-align: left;
671
688
  transition: background 0.3s;
689
+ overflow: hidden;
672
690
 
673
691
  &:not(:first-child) {
674
- border-left: 1px solid #f0f0f0;
692
+ border-left: 1px solid #d9d9d9;
675
693
  }
676
694
 
677
695
  &:hover {
@@ -687,7 +705,7 @@
687
705
  width: 100%;
688
706
  height: 28px;
689
707
  margin: 0;
690
- padding: 0 0 0 14px;
708
+ text-align: center;
691
709
  color: rgba(0, 0, 0, 0.85);
692
710
  line-height: 28px;
693
711
  border-radius: 0;
@@ -729,10 +747,12 @@
729
747
  .@{datePicker-prefix-cls}-footer {
730
748
  width: min-content;
731
749
  min-width: 100%;
732
- line-height: 34px;
733
- border-top: 1px solid #f0f0f0;
750
+ line-height: 36px;
751
+ height: 40px;
752
+ border-top: 1px solid #d9d9d9;
734
753
  border-bottom: 1px solid transparent;
735
- padding: 0 16px;
754
+ padding: 0 12px;
755
+ color: @date-color-background-checked;
736
756
  font-size: 12px;
737
757
  box-sizing: border-box;
738
758
  text-align: right;
@@ -14,6 +14,7 @@
14
14
  border-bottom: 1px solid @date-input-underline-color;
15
15
  border-radius: 0;
16
16
  padding-left: 0;
17
+ padding-right: 0;
17
18
  }
18
19
  &-disabled {
19
20
  background-color: @date-input-color-background-disabled !important;
@@ -5,7 +5,7 @@
5
5
  // color
6
6
  @date-color-background-checked: var(~'@{date-picker-custom-prefix}-color-background-checked', @color-theme);
7
7
  @date-wrapper-color-background: var(~'@{date-picker-custom-prefix}-wrapper-color-background', @color-background);
8
- @date-input-color: var(~'@{date-picker-custom-prefix}-input-color', @color-text-secondary);
8
+ @date-input-color: var(~'@{date-picker-custom-prefix}-input-color', @color-text-primary);
9
9
  @date-input-color-placeholder: var(~'@{date-picker-custom-prefix}-input-color-placeholder', @color-text-secondary);
10
10
  @date-input-underline-color: var(~'@{date-picker-custom-prefix}-input-underline-color', #999);
11
11
  @date-input-color-border: var(~'@{date-picker-custom-prefix}-input-color-border', @color-border-strong);
@@ -44,7 +44,7 @@ declare class LocaleCache {
44
44
  'Pagination.forward': string;
45
45
  'Pagination.backward': string;
46
46
  'Transfer.selectAll': string;
47
- 'Transfer.searchPlaceholder': string;
47
+ 'Transfer.searchPlaceholder': string[];
48
48
  'Transfer.leftTitle': string;
49
49
  'Transfer.rightTitle': string;
50
50
  'Transfer.emptyTip': string;
@@ -62,6 +62,9 @@ declare class LocaleCache {
62
62
  'CityPicker.internation': string;
63
63
  'CityPicker.common': string;
64
64
  'CityPicker.noData': string;
65
+ /**
66
+ * 获取所有语言包数据
67
+ */
65
68
  'Search.placeholder': string;
66
69
  'Search.desc': string[];
67
70
  'Search.nplDesc': string;
@@ -94,6 +97,9 @@ declare class LocaleCache {
94
97
  'DatePicker.now': string;
95
98
  'DatePicker.confrim': string;
96
99
  'DatePicker.today': string;
100
+ 'DatePicker.year': string;
101
+ 'DatePicker.month': string;
102
+ 'DatePicker.weekTitle': [string, string, string, string, string, string, string];
97
103
  'DatePicker.rangePlaceholder': [string, string];
98
104
  'DatePicker.rangeYearPlaceholder': [string, string];
99
105
  'DatePicker.rangeMonthPlaceholder': [string, string];
@@ -18,7 +18,7 @@ declare const locale: {
18
18
  'Pagination.forward': string;
19
19
  'Pagination.backward': string;
20
20
  'Transfer.selectAll': string;
21
- 'Transfer.searchPlaceholder': string;
21
+ 'Transfer.searchPlaceholder': string[];
22
22
  'Transfer.leftTitle': string;
23
23
  'Transfer.rightTitle': string;
24
24
  'Transfer.emptyTip': string;
@@ -68,6 +68,9 @@ declare const locale: {
68
68
  'DatePicker.now': string;
69
69
  'DatePicker.confrim': string;
70
70
  'DatePicker.today': string;
71
+ 'DatePicker.year': string;
72
+ 'DatePicker.month': string;
73
+ 'DatePicker.weekTitle': [string, string, string, string, string, string, string];
71
74
  'DatePicker.rangePlaceholder': [string, string];
72
75
  'DatePicker.rangeYearPlaceholder': [string, string];
73
76
  'DatePicker.rangeMonthPlaceholder': [string, string];
@@ -33,7 +33,7 @@ var locale = (0, _extends2.default)((0, _extends2.default)({
33
33
  'Pagination.forward': '向前5页',
34
34
  'Pagination.backward': '向后5页',
35
35
  'Transfer.selectAll': '全选',
36
- 'Transfer.searchPlaceholder': '请输入需要搜索的内容',
36
+ 'Transfer.searchPlaceholder': ['请输入需要搜索的内容', '请输入需要搜索的内容'],
37
37
  'Transfer.leftTitle': '可选列表',
38
38
  'Transfer.rightTitle': '已选列表',
39
39
  'Transfer.emptyTip': '暂无数据',
@@ -35,6 +35,8 @@ var React = _interopRequireWildcard(require("react"));
35
35
 
36
36
  var _classnames = _interopRequireDefault(require("classnames"));
37
37
 
38
+ var _isBoolean = _interopRequireDefault(require("lodash/isBoolean"));
39
+
38
40
  var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext"));
39
41
 
40
42
  var _utils = require("../_utils");
@@ -120,7 +122,7 @@ var Pagination = function Pagination(props) {
120
122
  setInputPage = _React$useState6[1]; // 是否显示pageSize切换器
121
123
 
122
124
 
123
- var showSizeSelector = total > 50 ? true : showSizeChanger;
125
+ var showSizeSelector = (0, _isBoolean.default)(showSizeChanger) ? showSizeChanger : total > 50;
124
126
  var defaultShowQuickJumper = pageType !== 'bill';
125
127
  var showJumper = showQuickJumper === undefined ? defaultShowQuickJumper : showQuickJumper; // pageSize切换器是否展开
126
128
 
@@ -152,7 +152,7 @@ var InternalQuickSearch = function InternalQuickSearch(props, ref) {
152
152
  setOptionShow(!!searchValue);
153
153
  }, [searchValue]);
154
154
  var quickSearchPrefixCls = getPrefixCls(prefixCls, 'quick-search', customPrefixcls);
155
- var quickSearchCls = (0, _classnames.default)(quickSearchPrefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-focused"), isFocused || tagsList.length), (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-borderless"), borderType === 'none'), (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-border"), borderType === 'border'), _classNames));
155
+ var quickSearchCls = (0, _classnames.default)(quickSearchPrefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-focused"), isFocused || tagsList.length), (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-borderless"), borderType === 'none'), (0, _defineProperty2.default)(_classNames, "".concat(quickSearchPrefixCls, "-border"), borderType === 'bordered'), _classNames));
156
156
  var quickSearchSelectorCls = (0, _classnames.default)((_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, "".concat(quickSearchPrefixCls, "-selector"), true), (0, _defineProperty2.default)(_classNames2, "".concat(quickSearchPrefixCls, "-selector-disabled"), disabled), _classNames2));
157
157
  var inputCls = (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(quickSearchPrefixCls, "-input"), true)); // 下拉列表样式
158
158
 
@@ -97,7 +97,7 @@ var InternalSearch = function InternalSearch(props, ref) {
97
97
  setFocused = _useState2[1];
98
98
 
99
99
  var searchPrefixCls = getPrefixCls(prefixCls, 'search', customPrefixcls);
100
- var searchCls = (0, _classnames.default)(searchPrefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, (0, _concat.default)(_context = "".concat(searchPrefixCls, "-size-")).call(_context, size), size), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-focused"), focused && !disabled), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-borderless"), borderType === 'none'), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-border"), borderType === 'border'), _classNames));
100
+ var searchCls = (0, _classnames.default)(searchPrefixCls, className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, (0, _concat.default)(_context = "".concat(searchPrefixCls, "-size-")).call(_context, size), size), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-focused"), focused && !disabled), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-borderless"), borderType === 'none'), (0, _defineProperty2.default)(_classNames, "".concat(searchPrefixCls, "-border"), borderType === 'bordered'), _classNames));
101
101
  var handleSearchChange = (0, _react.useCallback)(function (event) {
102
102
  onSearch && (onSearch === null || onSearch === void 0 ? void 0 : onSearch(event));
103
103
  }, [onSearch]);
@@ -141,7 +141,8 @@ var InternalSearch = function InternalSearch(props, ref) {
141
141
  disabled: disabled,
142
142
  onSearch: onSearch,
143
143
  className: className,
144
- style: style
144
+ style: style,
145
+ placeholder: placeholder
145
146
  }), children);
146
147
  }
147
148
 
@@ -73,6 +73,10 @@ var ListBody = function ListBody(props) {
73
73
  current = _useState2[0],
74
74
  setCurrent = _useState2[1];
75
75
 
76
+ var mergedPagination = (0, _react.useMemo)(function () {
77
+ return parsePagination(pagination);
78
+ }, [pagination]);
79
+
76
80
  var onItemSelect = function onItemSelect(item) {
77
81
  var checked = selectedKeys.indexOf(item.key) >= 0;
78
82
  itemSelect(item.key, !checked);
@@ -87,7 +91,6 @@ var ListBody = function ListBody(props) {
87
91
  };
88
92
 
89
93
  var getItems = function getItems() {
90
- var mergedPagination = parsePagination(pagination);
91
94
  var displayItems = filteredRenderItems;
92
95
 
93
96
  if (mergedPagination) {
@@ -97,8 +100,16 @@ var ListBody = function ListBody(props) {
97
100
  return displayItems;
98
101
  };
99
102
 
103
+ (0, _react.useEffect)(function () {
104
+ var total = filteredRenderItems.length;
105
+
106
+ if (mergedPagination && (current - 1) * mergedPagination.pageSize >= total) {
107
+ var pageSize = mergedPagination.pageSize;
108
+ var pageNo = total % pageSize === 0 ? total / pageSize : Math.floor(total / pageSize) + 1;
109
+ setCurrent(pageNo);
110
+ }
111
+ }, [mergedPagination, filteredRenderItems]);
100
112
  var paginationNode = null;
101
- var mergedPagination = parsePagination(pagination);
102
113
 
103
114
  if (mergedPagination) {
104
115
  paginationNode = /*#__PURE__*/_react.default.createElement("div", {
@@ -10,6 +10,7 @@ declare type RenderListFunction = (props: TransferListBodyProps) => React.ReactN
10
10
  export interface TransferListProps {
11
11
  prefixCls: string;
12
12
  titleText: string;
13
+ placeholder: string;
13
14
  dataSource: TransferItem[];
14
15
  filterOption?: (filterText: string, item: TransferItem) => boolean;
15
16
  style?: React.CSSProperties;
@@ -31,8 +31,6 @@ var _omit = require("../_utils/omit");
31
31
 
32
32
  var _search = _interopRequireDefault(require("./search"));
33
33
 
34
- var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigContext"));
35
-
36
34
  var _listBody = _interopRequireWildcard(require("./list-body"));
37
35
 
38
36
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -54,9 +52,6 @@ function isRenderResultPlainObject(result) {
54
52
  var TransferList = function TransferList(props) {
55
53
  var _classNames;
56
54
 
57
- var _useContext = (0, _react.useContext)(_ConfigContext.default),
58
- locale = _useContext.locale;
59
-
60
55
  var prefixCls = props.prefixCls,
61
56
  dataSource = props.dataSource,
62
57
  filterOption = props.filterOption,
@@ -75,11 +70,8 @@ var TransferList = function TransferList(props) {
75
70
  showSelectAll = props.showSelectAll,
76
71
  pagination = props.pagination,
77
72
  footer = props.footer,
78
- showRemove = props.showRemove;
79
- var transferLang = locale.getCompLangMsg({
80
- componentName: 'Transfer'
81
- });
82
- var searchPlaceholder = transferLang.searchPlaceholder;
73
+ showRemove = props.showRemove,
74
+ placeholder = props.placeholder;
83
75
 
84
76
  var _useState = (0, _react.useState)(''),
85
77
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -152,7 +144,7 @@ var TransferList = function TransferList(props) {
152
144
  };
153
145
  };
154
146
 
155
- var getListBody = function getListBody(prefixCls, searchPlaceholder, filterValue, filteredItems, noDataContent, filteredRenderItems, checkedKeys, renderList, showSearch, disabled) {
147
+ var getListBody = function getListBody(prefixCls, placeholder, filterValue, filteredItems, noDataContent, filteredRenderItems, checkedKeys, renderList, showSearch, disabled) {
156
148
  var _context;
157
149
 
158
150
  var search = showSearch ? /*#__PURE__*/_react.default.createElement("div", {
@@ -161,7 +153,7 @@ var TransferList = function TransferList(props) {
161
153
  prefixCls: "".concat(prefixCls, "-search"),
162
154
  onChange: onFilterChange,
163
155
  handleClear: onClear,
164
- placeholder: searchPlaceholder,
156
+ placeholder: placeholder,
165
157
  value: filterValue,
166
158
  disabled: disabled
167
159
  })) : null;
@@ -249,8 +241,8 @@ var TransferList = function TransferList(props) {
249
241
  filteredItems = _getFilteredItems.filteredItems,
250
242
  filteredRenderItems = _getFilteredItems.filteredRenderItems;
251
243
 
252
- var checkAllCheckbox = !showRemove && !pagination && getCheckBox(filteredItems, onItemSelectAll, showSelectAll, disabled);
253
- var listBody = getListBody(prefixCls, searchPlaceholder, filterValue, filteredItems, noDataContent, filteredRenderItems, checkedKeys, renderList, showSearch, disabled);
244
+ var checkAllCheckbox = !showRemove && getCheckBox(filteredItems, onItemSelectAll, showSelectAll, disabled);
245
+ var listBody = getListBody(prefixCls, placeholder, filterValue, filteredItems, noDataContent, filteredRenderItems, checkedKeys, renderList, showSearch, disabled);
254
246
  var listCls = (0, _classnames.default)(prefixCls, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-with-pagination"), pagination), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-with-footer"), footerDom), _classNames));
255
247
  return /*#__PURE__*/_react.default.createElement("div", {
256
248
  className: listCls,
@@ -18,6 +18,7 @@ export interface TransferProps {
18
18
  noDataContent?: ((param: TransferRenderParam) => React.ReactNode) | React.ReactNode;
19
19
  titles?: string[];
20
20
  operations?: string[];
21
+ searchPlaceholder?: string[];
21
22
  showSearch?: boolean;
22
23
  filterOption?: (inputValue: string, item: TransferItem) => boolean;
23
24
  rowKey?: (record: TransferItem) => string;
@@ -76,6 +76,8 @@ var Transfer = function Transfer(props) {
76
76
  titles = _transferProps$titles === void 0 ? [] : _transferProps$titles,
77
77
  _transferProps$operat = transferProps.operations,
78
78
  operations = _transferProps$operat === void 0 ? [] : _transferProps$operat,
79
+ _transferProps$search = transferProps.searchPlaceholder,
80
+ searchPlaceholder = _transferProps$search === void 0 ? [] : _transferProps$search,
79
81
  showSearch = transferProps.showSearch,
80
82
  filterOption = transferProps.filterOption,
81
83
  rowKey = transferProps.rowKey,
@@ -111,6 +113,8 @@ var Transfer = function Transfer(props) {
111
113
  var mergedPagination = !children && pagination;
112
114
  var leftTitle = titles[0] || transferLang.leftTitle;
113
115
  var rightTitle = titles[1] || transferLang.rightTitle;
116
+ var leftPlaceholder = searchPlaceholder[0] || transferLang.searchPlaceholder[0];
117
+ var rightPlaceholder = searchPlaceholder[1] || transferLang.searchPlaceholder[1];
114
118
 
115
119
  var setStateKeys = function setStateKeys(direction, keys) {
116
120
  if (direction === 'left') {
@@ -312,6 +316,7 @@ var Transfer = function Transfer(props) {
312
316
  style: style
313
317
  }, /*#__PURE__*/_react.default.createElement(_list.default, {
314
318
  prefixCls: "".concat(transferPrefixCls, "-list"),
319
+ placeholder: leftPlaceholder,
315
320
  titleText: leftTitle,
316
321
  dataSource: leftDataSource,
317
322
  filterOption: filterOption,
@@ -343,6 +348,7 @@ var Transfer = function Transfer(props) {
343
348
  oneWay: oneWay
344
349
  }), /*#__PURE__*/_react.default.createElement(_list.default, {
345
350
  prefixCls: "".concat(transferPrefixCls, "-list"),
351
+ placeholder: rightPlaceholder,
346
352
  titleText: rightTitle,
347
353
  dataSource: rightDataSource,
348
354
  filterOption: filterOption,
@@ -132,6 +132,7 @@
132
132
  font-size: var(--kd-c-tree-font-size, var(--kd-g-font-size-small, 12px));
133
133
  color: var(--kd-c-tree-color-text, var(--kd-g-color-text-primary, #212121));
134
134
  margin-left: var(--kd-c-tree-spacing-margin-left, 0px);
135
+ padding: var(--kd-c-tree-spacing-padding-vertical, 3px) 0;
135
136
  }
136
137
  .kd-tree-root {
137
138
  min-width: 100%;
@@ -313,16 +314,19 @@
313
314
  }
314
315
  .kd-tree-node-drag-over {
315
316
  background-color: var(--kd-c-tree-node-drag-over-color-background, #E3EBFF);
316
- border: 2px solid var(--kd-c-tree-node-drag-over-color-border, #5582f3);
317
+ -webkit-box-shadow: inset 0 0 0 2px var(--kd-c-tree-node-drag-over-color-border, #5582f3);
318
+ box-shadow: inset 0 0 0 2px var(--kd-c-tree-node-drag-over-color-border, #5582f3);
317
319
  }
318
- .kd-tree-node-drag-line {
320
+ .kd-tree-node-drag-line-top,
321
+ .kd-tree-node-drag-line-bottom {
319
322
  position: absolute;
320
323
  left: 0;
321
- top: 100%;
324
+ top: 0;
322
325
  width: 100%;
323
326
  border-top: 2px solid var(--kd-c-tree-node-drag-line-color-background, #276FF5);
324
327
  }
325
- .kd-tree-node-drag-line::before {
328
+ .kd-tree-node-drag-line-top::before,
329
+ .kd-tree-node-drag-line-bottom::before {
326
330
  content: '';
327
331
  width: 4px;
328
332
  height: 4px;
@@ -334,6 +338,12 @@
334
338
  -webkit-transform: translateY(-50%);
335
339
  transform: translateY(-50%);
336
340
  }
341
+ .kd-tree-node-drag-line-top {
342
+ top: 0;
343
+ }
344
+ .kd-tree-node-drag-line-bottom {
345
+ top: 100%;
346
+ }
337
347
  .kd-tree-node-leaf-icon {
338
348
  height: var(--kd-c-tree-node-icon-sizing-height, 16px);
339
349
  width: var(--kd-c-tree-node-icon-sizing-width, 16px);
@@ -12,6 +12,7 @@
12
12
  font-size: @tree-font-size;
13
13
  color: @tree-color-text;
14
14
  margin-left: @tree-margin-left;
15
+ padding: @tree-padding-vertical 0;
15
16
  &-root {
16
17
  min-width: 100%;
17
18
  flex-shrink: 0;
@@ -136,26 +137,35 @@
136
137
 
137
138
  &-drag-over {
138
139
  background-color: @tree-node-drag-over-color-background;
139
- border: 2px solid @tree-node-drag-over-border-color;
140
+ box-shadow: inset 0 0 0 2px @tree-node-drag-over-border-color;
140
141
  }
141
142
 
142
143
  &-drag-line {
143
- position: absolute;
144
- left: 0;
145
- top: 100%;
146
- width: 100%;
147
- border-top: 2px solid @tree-node-drag-line-border-color;
148
-
149
- &::before {
150
- content: '';
151
- width: 4px;
152
- height: 4px;
153
- background-color: #fff;
154
- border-radius: 50%;
155
- border: 2px solid @tree-node-drag-line-border-color;
144
+ &-top, &-bottom {
156
145
  position: absolute;
157
- top: -1px;
158
- transform: translateY(-50%);
146
+ left: 0;
147
+ top: 0;
148
+ width: 100%;
149
+ border-top: 2px solid @tree-node-drag-line-border-color;
150
+
151
+ &::before {
152
+ content: '';
153
+ width: 4px;
154
+ height: 4px;
155
+ background-color: #fff;
156
+ border-radius: 50%;
157
+ border: 2px solid @tree-node-drag-line-border-color;
158
+ position: absolute;
159
+ top: -1px;
160
+ transform: translateY(-50%);
161
+ }
162
+ }
163
+ &-top {
164
+ top: 0;
165
+ }
166
+
167
+ &-bottom {
168
+ top: 100%;
159
169
  }
160
170
  }
161
171
  &-leaf-icon {
@@ -22,7 +22,10 @@
22
22
  @tree-expand-icon-loading-width: var(~'@{tree-prefix}-expand-icon-loading-sizing-width', 16px);
23
23
  @tree-node-icon-height: var(~'@{tree-prefix}-node-icon-sizing-height', 16px);
24
24
  @tree-node-icon-width: var(~'@{tree-prefix}-node-icon-sizing-width', 16px);
25
+
26
+ // spacing
25
27
  @tree-margin-left: var(~'@{tree-prefix}-spacing-margin-left', 0px);
28
+ @tree-padding-vertical: var(~'@{tree-prefix}-spacing-padding-vertical', 3px);
26
29
 
27
30
  // font
28
31
  @tree-font-size: var(~'@{tree-prefix}-font-size', @font-size-small);
package/lib/tree/tree.js CHANGED
@@ -298,47 +298,32 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
298
298
 
299
299
  var handleDragOver = _react.default.useCallback(function (event, node, dropTarget) {
300
300
  var dropPos = (0, _treeUtils.calcDropPosition)(event, dropTarget);
301
- setDropPosition(dropPos);
302
- var dragNode = getDragNode();
303
301
 
304
- if (dragNode.key === node.key) {
305
- setDropPosition(null);
302
+ if (!delayedDragEnterRef.current) {
303
+ delayedDragEnterRef.current = {};
306
304
  }
307
305
 
308
- onDragOver && onDragOver({
309
- event: event,
310
- node: node
311
- });
312
- }, [onDragOver]);
313
-
314
- var handleDragLeave = _react.default.useCallback(function (event, node) {
315
- onDragLeave && onDragLeave({
316
- event: event,
317
- node: node
318
- });
319
- }, [onDragLeave]);
306
+ if (dropPos !== 0 && dropPos !== dropPosition) {
307
+ (0, _keys.default)(delayedDragEnterRef.current).forEach(function (key) {
308
+ clearTimeout(delayedDragEnterRef.current[key]);
309
+ delayedDragEnterRef.current[key] = null;
310
+ });
311
+ }
320
312
 
321
- var handleDragEnter = _react.default.useCallback(function (event, node, dropTarget) {
313
+ setDropPosition(dropPos);
322
314
  var key = node.key,
323
315
  pos = node.pos;
324
316
  var dragNode = getDragNode();
325
317
 
326
- if (!dragNode) {
327
- return;
328
- }
329
-
330
- if (!delayedDragEnterRef.current) {
331
- delayedDragEnterRef.current = {};
318
+ if (dragNode.key === node.key) {
319
+ setDropPosition(null);
332
320
  }
333
321
 
334
- (0, _keys.default)(delayedDragEnterRef.current).forEach(function (key) {
335
- clearTimeout(delayedDragEnterRef.current[key]);
336
- });
322
+ if ((dragNode === null || dragNode === void 0 ? void 0 : dragNode.key) !== key && dropPos === 0) {
323
+ if (dragNode.key === node.key || delayedDragEnterRef.current[pos]) {
324
+ return;
325
+ }
337
326
 
338
- if ((dragNode === null || dragNode === void 0 ? void 0 : dragNode.key) !== key) {
339
- var dragPos = (0, _treeUtils.calcDropPosition)(event, dropTarget);
340
- setDragOverNodeKey(key);
341
- setDropPosition(dragPos);
342
327
  delayedDragEnterRef.current[pos] = setTimeout(function () {
343
328
  var newExpandedKeys = (0, _toConsumableArray2.default)(expandedKeys);
344
329
 
@@ -357,14 +342,39 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
357
342
  }, 800);
358
343
  }
359
344
 
345
+ onDragOver && onDragOver({
346
+ event: event,
347
+ node: node
348
+ });
349
+ }, [TreeProps, dropPosition, expandedKeys, onDragOver, onExpand, setExpandedKeys]);
350
+
351
+ var handleDragLeave = _react.default.useCallback(function (event, node) {
352
+ onDragLeave && onDragLeave({
353
+ event: event,
354
+ node: node
355
+ });
356
+ }, [onDragLeave]);
357
+
358
+ var handleDragEnter = _react.default.useCallback(function (event, node, _dropTarget) {
359
+ var key = node.key;
360
+ var dragNode = getDragNode();
361
+
362
+ if (!dragNode) {
363
+ return;
364
+ }
365
+
366
+ if ((dragNode === null || dragNode === void 0 ? void 0 : dragNode.key) !== key) {
367
+ setDragOverNodeKey(key);
368
+ }
369
+
360
370
  onDragEnter && onDragEnter({
361
371
  event: event,
362
372
  node: node
363
373
  });
364
- }, [TreeProps, expandedKeys, onDragEnter, onExpand, setExpandedKeys]);
374
+ }, [onDragEnter]);
365
375
 
366
376
  var handleDragEnd = _react.default.useCallback(function (event, node) {
367
- setDragOverNodeKey('');
377
+ setDragOverNodeKey(null);
368
378
  onDragEnd && onDragEnd({
369
379
  event: event,
370
380
  node: node
@@ -472,6 +482,7 @@ var InternalTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
472
482
  item.getDragNode = getDragNode;
473
483
  item.setDragNode = setDragNode;
474
484
  item.dragOver = dragOverNodeKey === item.key && dropPosition === 0;
485
+ item.dropPosition = dropPosition;
475
486
  item.expandOnClickNode = expandOnClickNode;
476
487
  item.loading = loadingKeys.has(item.key) && !loadedKeys.has(item.key);
477
488
  item.loadData = loadData;