@douyinfe/semi-foundation 2.46.1 → 2.47.0-beta.0

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 (45) hide show
  1. package/button/button.scss +88 -20
  2. package/button/variables.scss +13 -0
  3. package/datePicker/inputFoundation.ts +7 -5
  4. package/lib/cjs/button/button.css +30 -2
  5. package/lib/cjs/button/button.scss +88 -20
  6. package/lib/cjs/button/variables.scss +13 -0
  7. package/lib/cjs/cascader/foundation.d.ts +1 -4
  8. package/lib/cjs/datePicker/inputFoundation.js +17 -8
  9. package/lib/cjs/table/foundation.d.ts +1 -1
  10. package/lib/cjs/tree/foundation.d.ts +2 -1
  11. package/lib/cjs/tree/foundation.js +17 -8
  12. package/lib/cjs/tree/treeUtil.d.ts +15 -6
  13. package/lib/cjs/tree/treeUtil.js +39 -20
  14. package/lib/cjs/treeSelect/foundation.d.ts +0 -1
  15. package/lib/cjs/treeSelect/foundation.js +47 -26
  16. package/lib/cjs/typography/typography.css +5 -0
  17. package/lib/cjs/typography/typography.scss +5 -0
  18. package/lib/cjs/typography/variables.scss +4 -0
  19. package/lib/cjs/utils/array.d.ts +2 -2
  20. package/lib/cjs/utils/array.js +2 -2
  21. package/lib/es/button/button.css +30 -2
  22. package/lib/es/button/button.scss +88 -20
  23. package/lib/es/button/variables.scss +13 -0
  24. package/lib/es/cascader/foundation.d.ts +1 -4
  25. package/lib/es/datePicker/inputFoundation.js +17 -8
  26. package/lib/es/table/foundation.d.ts +1 -1
  27. package/lib/es/tree/foundation.d.ts +2 -1
  28. package/lib/es/tree/foundation.js +17 -8
  29. package/lib/es/tree/treeUtil.d.ts +15 -6
  30. package/lib/es/tree/treeUtil.js +39 -20
  31. package/lib/es/treeSelect/foundation.d.ts +0 -1
  32. package/lib/es/treeSelect/foundation.js +47 -26
  33. package/lib/es/typography/typography.css +5 -0
  34. package/lib/es/typography/typography.scss +5 -0
  35. package/lib/es/typography/variables.scss +4 -0
  36. package/lib/es/utils/array.d.ts +2 -2
  37. package/lib/es/utils/array.js +2 -2
  38. package/package.json +3 -3
  39. package/table/foundation.ts +1 -1
  40. package/tree/foundation.ts +14 -7
  41. package/tree/treeUtil.ts +47 -18
  42. package/treeSelect/foundation.ts +35 -26
  43. package/typography/typography.scss +5 -0
  44. package/typography/variables.scss +4 -0
  45. package/utils/array.ts +4 -4
@@ -1,3 +1,4 @@
1
+ import _omit from "lodash/omit";
1
2
  import _get from "lodash/get";
2
3
  import _pick from "lodash/pick";
3
4
  import _isEmpty from "lodash/isEmpty";
@@ -25,17 +26,27 @@ function isValid(val) {
25
26
  * @param filteredShownKeys
26
27
  * need expanded keys, provides `true` means all expanded
27
28
  */
28
- export function flattenTreeData(treeNodeList, expandedKeys) {
29
- let filteredShownKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
29
+ export function flattenTreeData(treeNodeList, expandedKeys, keyMaps) {
30
+ let filteredShownKeys = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
30
31
  const flattenList = [];
31
32
  const filterSearch = Boolean(filteredShownKeys);
33
+ const realKeyName = _get(keyMaps, 'key', 'key');
34
+ const realChildrenName = _get(keyMaps, 'children', 'children');
32
35
  function flatten(list) {
33
36
  let parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
34
37
  return list.map((treeNode, index) => {
35
38
  const pos = getPosition(parent ? parent.pos : '0', index);
36
- const mergedKey = treeNode.key;
39
+ const mergedKey = treeNode[realKeyName];
40
+ const otherData = {};
41
+ if (keyMaps) {
42
+ Object.entries(_omit(keyMaps, 'children')).forEach(_ref => {
43
+ let [key, value] = _ref;
44
+ const result = treeNode[value];
45
+ !_isUndefined(result) && (otherData[key] = result);
46
+ });
47
+ }
37
48
  // Add FlattenDataNode into list
38
- const flattenNode = Object.assign(Object.assign({}, _pick(treeNode, ['key', 'label', 'value', 'icon', 'disabled', 'isLeaf'])), {
49
+ const flattenNode = Object.assign(Object.assign(Object.assign({}, _pick(treeNode, ['key', 'label', 'value', 'icon', 'disabled', 'isLeaf'])), otherData), {
39
50
  parent,
40
51
  pos,
41
52
  children: null,
@@ -48,7 +59,7 @@ export function flattenTreeData(treeNodeList, expandedKeys) {
48
59
  }
49
60
  // Loop treeNode children
50
61
  if (expandedKeys.has(mergedKey) && (!filterSearch || !isBooleanFilteredShownKeys && filteredShownKeys.has(mergedKey))) {
51
- flattenNode.children = flatten(treeNode.children || [], flattenNode);
62
+ flattenNode.children = flatten(treeNode[realChildrenName] || [], flattenNode);
52
63
  } else {
53
64
  flattenNode.children = [];
54
65
  }
@@ -83,17 +94,20 @@ export function convertJsonToData(treeJson) {
83
94
  /**
84
95
  * Traverse all the data by `treeData`.
85
96
  */
86
- export function traverseDataNodes(treeNodes, callback) {
97
+ export function traverseDataNodes(treeNodes, callback, keyMaps) {
98
+ const realKeyName = _get(keyMaps, 'key', 'key');
99
+ const realChildrenName = _get(keyMaps, 'children', 'children');
87
100
  const processNode = (node, ind, parent) => {
88
- const children = node ? node.children : treeNodes;
101
+ const children = node ? node[realChildrenName] : treeNodes;
89
102
  const pos = node ? getPosition(parent.pos, ind) : '0';
90
103
  // Process node if is not root
91
104
  if (node) {
105
+ const nodeKey = _get(node, realKeyName, null);
92
106
  const data = {
93
107
  data: Object.assign({}, node),
94
108
  ind,
95
109
  pos,
96
- key: node.key !== null ? node.key : pos,
110
+ key: nodeKey !== null ? nodeKey : pos,
97
111
  parentPos: parent.node ? parent.pos : null,
98
112
  level: Number(parent.level) + 1
99
113
  };
@@ -113,7 +127,7 @@ export function traverseDataNodes(treeNodes, callback) {
113
127
  processNode(null);
114
128
  }
115
129
  /* Convert data to entities map */
116
- export function convertDataToEntities(dataNodes) {
130
+ export function convertDataToEntities(dataNodes, keyMaps) {
117
131
  const posEntities = {};
118
132
  const keyEntities = {};
119
133
  const valueEntities = {};
@@ -122,6 +136,7 @@ export function convertDataToEntities(dataNodes) {
122
136
  keyEntities,
123
137
  valueEntities
124
138
  };
139
+ const realValueName = _get(keyMaps, 'value', 'value');
125
140
  traverseDataNodes(dataNodes, data => {
126
141
  const {
127
142
  pos,
@@ -129,7 +144,7 @@ export function convertDataToEntities(dataNodes) {
129
144
  parentPos
130
145
  } = data;
131
146
  const entity = Object.assign({}, data);
132
- const value = _get(entity, 'data.value', null);
147
+ const value = _get(entity, `data.${realValueName}`, null);
133
148
  if (value !== null) {
134
149
  valueEntities[value] = key;
135
150
  }
@@ -141,7 +156,7 @@ export function convertDataToEntities(dataNodes) {
141
156
  entity.parent.children = entity.parent.children || [];
142
157
  entity.parent.children.push(entity);
143
158
  }
144
- });
159
+ }, keyMaps);
145
160
  return wrapper;
146
161
  }
147
162
  /* Get key by value */
@@ -539,7 +554,8 @@ export function filterTreeData(info) {
539
554
  treeData,
540
555
  filterTreeNode,
541
556
  filterProps,
542
- prevExpandedKeys
557
+ prevExpandedKeys,
558
+ keyMaps
543
559
  } = info;
544
560
  let filteredOptsKeys = [];
545
561
  filteredOptsKeys = Object.values(keyEntities).filter(item => filter(inputValue, item.data, filterTreeNode, filterProps)).map(item => item.key);
@@ -550,7 +566,7 @@ export function filterTreeData(info) {
550
566
  }
551
567
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
552
568
  const filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
553
- const flattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), showFilteredOnly && filteredShownKeys);
569
+ const flattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
554
570
  return {
555
571
  flattenNodes,
556
572
  filteredKeys: new Set(filteredOptsKeys),
@@ -559,16 +575,18 @@ export function filterTreeData(info) {
559
575
  };
560
576
  }
561
577
  // return data.value if data.value exist else fall back to key
562
- export function getValueOrKey(data) {
578
+ export function getValueOrKey(data, keyMaps) {
579
+ const valueName = _get(keyMaps, 'value', 'value');
580
+ const keyName = _get(keyMaps, 'key', 'key');
563
581
  if (Array.isArray(data)) {
564
- return data.map(item => _get(item, 'value', item.key));
582
+ return data.map(item => _get(item, valueName, item[keyName]));
565
583
  }
566
- return _get(data, 'value', data.key);
584
+ return _get(data, valueName, data[keyName]);
567
585
  }
568
586
  /* Convert value to string */
569
- export function normalizeValue(value, withObject) {
587
+ export function normalizeValue(value, withObject, keyMaps) {
570
588
  if (withObject && isValid(value)) {
571
- return getValueOrKey(value);
589
+ return getValueOrKey(value, keyMaps);
572
590
  } else {
573
591
  return value;
574
592
  }
@@ -577,8 +595,9 @@ export function updateKeys(keySet, keyEntities) {
577
595
  const keyArr = [...keySet];
578
596
  return keyArr.filter(key => key in keyEntities);
579
597
  }
580
- export function calcDisabledKeys(keyEntities) {
581
- const disabledKeys = Object.keys(keyEntities).filter(key => keyEntities[key].data.disabled);
598
+ export function calcDisabledKeys(keyEntities, keyMaps) {
599
+ const disabledName = _get(keyMaps, 'disabled', 'disabled');
600
+ const disabledKeys = Object.keys(keyEntities).filter(key => keyEntities[key].data[disabledName]);
582
601
  const {
583
602
  checkedKeys
584
603
  } = calcCheckedKeys(disabledKeys, keyEntities);
@@ -122,7 +122,6 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
122
122
  findDataForValue(findValue: string): any;
123
123
  constructDataForValue(value: string): {
124
124
  [x: number]: string;
125
- key: string;
126
125
  };
127
126
  getDataForKeyNotInKeyEntities(value: string): any;
128
127
  getCopyFromState(items: string | string[]): BasicTreeInnerData;
@@ -89,8 +89,11 @@ export default class TreeSelectFoundation extends BaseFoundation {
89
89
  findDataForValue(findValue) {
90
90
  const {
91
91
  value,
92
- defaultValue
92
+ defaultValue,
93
+ keyMaps
93
94
  } = this.getProps();
95
+ const realValueName = _get(keyMaps, 'value', 'value');
96
+ const realKeyName = _get(keyMaps, 'key', 'key');
94
97
  let valueArr = [];
95
98
  if (value) {
96
99
  valueArr = Array.isArray(value) ? value : [value];
@@ -98,16 +101,19 @@ export default class TreeSelectFoundation extends BaseFoundation {
98
101
  valueArr = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
99
102
  }
100
103
  return valueArr.find(item => {
101
- return item.value === findValue || item.key === findValue;
104
+ return item[realValueName] === findValue || item[realKeyName] === findValue;
102
105
  });
103
106
  }
104
107
  constructDataForValue(value) {
105
108
  const {
106
- treeNodeLabelProp
109
+ treeNodeLabelProp,
110
+ keyMaps
107
111
  } = this.getProps();
112
+ const keyName = _get(keyMaps, 'key', 'key');
113
+ const labelName = _get(keyMaps, 'label', treeNodeLabelProp);
108
114
  return {
109
- key: value,
110
- [treeNodeLabelProp]: value
115
+ [keyName]: value,
116
+ [labelName]: value
111
117
  };
112
118
  }
113
119
  getDataForKeyNotInKeyEntities(value) {
@@ -224,7 +230,8 @@ export default class TreeSelectFoundation extends BaseFoundation {
224
230
  } = this.getStates();
225
231
  const {
226
232
  leafOnly,
227
- checkRelation
233
+ checkRelation,
234
+ keyMaps
228
235
  } = this.getProps();
229
236
  let keyList = [];
230
237
  if (checkRelation === 'related') {
@@ -232,11 +239,11 @@ export default class TreeSelectFoundation extends BaseFoundation {
232
239
  } else if (checkRelation === 'unRelated') {
233
240
  keyList = key;
234
241
  }
235
- const nodes = keyList.map(key => keyEntities[key] && keyEntities[key].data.key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
242
+ const nodes = keyList.map(key => keyEntities[key] && keyEntities[key].key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
236
243
  if (this.getProp('onChangeWithObject')) {
237
244
  this._adapter.notifyChangeWithObject(nodes, e);
238
245
  } else {
239
- const value = getValueOrKey(nodes);
246
+ const value = getValueOrKey(nodes, keyMaps);
240
247
  this._adapter.notifyChange(value, nodes, e);
241
248
  }
242
249
  }
@@ -244,11 +251,14 @@ export default class TreeSelectFoundation extends BaseFoundation {
244
251
  const {
245
252
  keyEntities
246
253
  } = this.getStates();
254
+ const {
255
+ keyMaps
256
+ } = this.getProps();
247
257
  if (this._isMultiple() && Array.isArray(key)) {
248
258
  this._notifyMultipleChange(key, e);
249
259
  } else {
250
260
  const nodes = _isUndefined(key) ? key : keyEntities[key].data;
251
- const value = _isUndefined(key) ? key : getValueOrKey(nodes);
261
+ const value = _isUndefined(key) ? key : getValueOrKey(nodes, keyMaps);
252
262
  if (this.getProp('onChangeWithObject')) {
253
263
  this._adapter.notifyChangeWithObject(nodes, e);
254
264
  } else {
@@ -375,15 +385,17 @@ export default class TreeSelectFoundation extends BaseFoundation {
375
385
  removeTag(eventKey) {
376
386
  const {
377
387
  disableStrictly,
378
- checkRelation
388
+ checkRelation,
389
+ keyMaps
379
390
  } = this.getProps();
380
391
  const {
381
392
  keyEntities,
382
393
  disabledKeys,
383
394
  realCheckedKeys
384
395
  } = this.getStates();
385
- const item = keyEntities[eventKey] && keyEntities[eventKey].data.key === eventKey ? keyEntities[eventKey].data : this.getDataForKeyNotInKeyEntities(eventKey);
386
- if (item.disabled || disableStrictly && disabledKeys.has(eventKey)) {
396
+ const item = keyEntities[eventKey] && keyEntities[eventKey].key === eventKey ? keyEntities[eventKey].data : this.getDataForKeyNotInKeyEntities(eventKey);
397
+ const disabledName = _get(keyMaps, 'disabled', 'disabled');
398
+ if (item[disabledName] || disableStrictly && disabledKeys.has(eventKey)) {
387
399
  return;
388
400
  }
389
401
  if (checkRelation === 'unRelated') {
@@ -422,11 +434,14 @@ export default class TreeSelectFoundation extends BaseFoundation {
422
434
  keyEntities,
423
435
  treeData
424
436
  } = this.getStates();
437
+ const {
438
+ keyMaps
439
+ } = this.getProps();
425
440
  const newExpandedKeys = new Set(expandedKeys);
426
441
  const isExpandControlled = this._isExpandControlled();
427
442
  const expandedOptsKeys = findAncestorKeys(selectedKeys, keyEntities);
428
443
  expandedOptsKeys.forEach(item => newExpandedKeys.add(item));
429
- const newFlattenNodes = flattenTreeData(treeData, newExpandedKeys);
444
+ const newFlattenNodes = flattenTreeData(treeData, newExpandedKeys, keyMaps);
430
445
  this._adapter.updateState({
431
446
  expandedKeys: isExpandControlled ? expandedKeys : newExpandedKeys,
432
447
  flattenNodes: isExpandControlled ? flattenNodes : newFlattenNodes,
@@ -450,8 +465,10 @@ export default class TreeSelectFoundation extends BaseFoundation {
450
465
  const {
451
466
  showFilteredOnly,
452
467
  filterTreeNode,
453
- treeNodeFilterProp
468
+ treeNodeFilterProp,
469
+ keyMaps
454
470
  } = this.getProps();
471
+ const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : _get(keyMaps, 'label', 'label');
455
472
  const newExpandedKeys = new Set(expandedKeys);
456
473
  let filteredOptsKeys = [];
457
474
  let expandedOptsKeys = [];
@@ -460,18 +477,18 @@ export default class TreeSelectFoundation extends BaseFoundation {
460
477
  if (!sugInput) {
461
478
  expandedOptsKeys = findAncestorKeys(selectedKeys, keyEntities);
462
479
  expandedOptsKeys.forEach(item => newExpandedKeys.add(item));
463
- newFlattenNodes = flattenTreeData(treeData, newExpandedKeys);
480
+ newFlattenNodes = flattenTreeData(treeData, newExpandedKeys, keyMaps);
464
481
  } else {
465
482
  filteredOptsKeys = Object.values(keyEntities).filter(item => {
466
483
  const {
467
484
  data
468
485
  } = item;
469
- return filter(sugInput, data, filterTreeNode, treeNodeFilterProp);
486
+ return filter(sugInput, data, filterTreeNode, realFilterProp);
470
487
  }).map(item => item.key);
471
488
  expandedOptsKeys = findAncestorKeys(filteredOptsKeys, keyEntities, false);
472
489
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
473
490
  filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
474
- newFlattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), showFilteredOnly && filteredShownKeys);
491
+ newFlattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
475
492
  }
476
493
  const newFilteredExpandedKeys = new Set(expandedOptsKeys);
477
494
  this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys));
@@ -605,7 +622,7 @@ export default class TreeSelectFoundation extends BaseFoundation {
605
622
  return this.calcCheckedKeys(eventKey, targetStatus);
606
623
  }
607
624
  const nonDisabled = descendantKeys.filter(key => !disabledKeys.has(key));
608
- const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : _difference(normalizeKeyList([...checkedKeys], keyEntities, true), nonDisabled);
625
+ const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : _difference(normalizeKeyList([...checkedKeys], keyEntities, true, true), nonDisabled);
609
626
  return calcCheckedKeys(newCheckedKeys, keyEntities);
610
627
  }
611
628
  calcCheckedStatus(targetStatus, eventKey) {
@@ -630,7 +647,8 @@ export default class TreeSelectFoundation extends BaseFoundation {
630
647
  const {
631
648
  treeData,
632
649
  filteredShownKeys,
633
- keyEntities
650
+ keyEntities,
651
+ keyMaps
634
652
  } = this.getStates();
635
653
  const showFilteredOnly = this._showFilteredOnly();
636
654
  // clone otherwise will be modified unexpectedly
@@ -654,7 +672,7 @@ export default class TreeSelectFoundation extends BaseFoundation {
654
672
  this._adapter.cacheFlattenNodes(motionType === 'hide' && this._isAnimated());
655
673
  if (!this._isExpandControlled()) {
656
674
  // debugger;
657
- const flattenNodes = flattenTreeData(treeData, filteredExpandedKeys, showFilteredOnly && filteredShownKeys);
675
+ const flattenNodes = flattenTreeData(treeData, filteredExpandedKeys, keyMaps, showFilteredOnly && filteredShownKeys);
658
676
  const motionKeys = this._isAnimated() ? getMotionKeys(eventKey, filteredExpandedKeys, keyEntities) : [];
659
677
  const newState = {
660
678
  filteredExpandedKeys,
@@ -672,7 +690,8 @@ export default class TreeSelectFoundation extends BaseFoundation {
672
690
  handleNodeExpand(e, treeNode) {
673
691
  // debugger;
674
692
  const {
675
- loadData
693
+ loadData,
694
+ keyMaps
676
695
  } = this.getProps();
677
696
  const {
678
697
  inputValue,
@@ -709,7 +728,7 @@ export default class TreeSelectFoundation extends BaseFoundation {
709
728
  this._adapter.cacheFlattenNodes(motionType === 'hide' && this._isAnimated());
710
729
  if (!isExpandControlled) {
711
730
  // debugger;
712
- const flattenNodes = flattenTreeData(treeData, expandedKeys);
731
+ const flattenNodes = flattenTreeData(treeData, expandedKeys, keyMaps);
713
732
  const motionKeys = this._isAnimated() ? getMotionKeys(eventKey, expandedKeys, keyEntities) : [];
714
733
  const newState = {
715
734
  expandedKeys,
@@ -730,19 +749,21 @@ export default class TreeSelectFoundation extends BaseFoundation {
730
749
  getRenderTextInSingle() {
731
750
  const {
732
751
  renderSelectedItem: propRenderSelectedItem,
733
- treeNodeLabelProp
752
+ treeNodeLabelProp,
753
+ keyMaps
734
754
  } = this.getProps();
735
755
  const {
736
756
  selectedKeys,
737
757
  keyEntities
738
758
  } = this.getStates();
739
- const renderSelectedItem = _isFunction(propRenderSelectedItem) ? propRenderSelectedItem : item => _get(item, treeNodeLabelProp, null);
759
+ const realLabelName = _get(keyMaps, 'label', treeNodeLabelProp);
760
+ const renderSelectedItem = _isFunction(propRenderSelectedItem) ? propRenderSelectedItem : item => _get(item, realLabelName, null);
740
761
  let item;
741
762
  if (selectedKeys.length) {
742
763
  const key = selectedKeys[0];
743
- item = keyEntities[key] && keyEntities[key].data.key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key);
764
+ item = keyEntities[key] && keyEntities[key].key === key ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key);
744
765
  }
745
- const renderText = item && treeNodeLabelProp in item ? renderSelectedItem(item) : null;
766
+ const renderText = item ? renderSelectedItem(item) : null;
746
767
  return renderText;
747
768
  }
748
769
  /**
@@ -46,6 +46,10 @@
46
46
  font-size: 12px;
47
47
  line-height: 16px;
48
48
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
49
+ font-weight: 400;
50
+ }
51
+ .semi-typography-small.semi-typography-paragraph {
52
+ font-weight: 400;
49
53
  }
50
54
  .semi-typography code {
51
55
  border: 1px solid var(--semi-color-border);
@@ -315,6 +319,7 @@ h6.semi-typography.semi-typography-h6-weight-bold,
315
319
  p.semi-typography-extended,
316
320
  .semi-typography-paragraph.semi-typography-extended {
317
321
  line-height: 24px;
322
+ font-weight: 400;
318
323
  }
319
324
 
320
325
  .semi-rtl .semi-typography,
@@ -53,6 +53,10 @@ $module: #{$prefix}-typography;
53
53
 
54
54
  &-small {
55
55
  @include font-size-small;
56
+ font-weight: $font-typography_smallText-regular-fontWeight;
57
+ &.#{$module}-paragraph{
58
+ font-weight: $font-typography_smallParagraph-regular-fontWeight;
59
+ }
56
60
  }
57
61
 
58
62
  code {
@@ -351,6 +355,7 @@ h6.#{$module},
351
355
  p.#{$module}-extended,
352
356
  .#{$module}-paragraph.#{$module}-extended {
353
357
  line-height: $font-typography_paragraph_extended-lineHeight;
358
+ font-weight: $font-typography_normalParagraph-regular-fontWeight;
354
359
  }
355
360
 
356
361
  @import "./rtl.scss";
@@ -26,6 +26,10 @@ $font-typography_title-fontWeight: $font-weight-bold; // 标题文本字重
26
26
  $font-typography_link-fontWeight: $font-weight-bold; // 链接文本字重
27
27
  $font-typography_strong-fontWeight: $font-weight-bold; // 强调文本字重
28
28
  $font-typography_paragraph_extended-lineHeight: 24px; // 宽松行距段落文本行高
29
+ $font-typography_normalText-regular-fontWeight: $font-weight-regular; // normal text 字重 - 正常
30
+ $font-typography_smallText-regular-fontWeight: $font-weight-regular; // small text 字重 - 正常
31
+ $font-typography_normalParagraph-regular-fontWeight: $font-weight-regular; // normal paragraph 字重 - 正常
32
+ $font-typography_smallParagraph-regular-fontWeight: $font-weight-regular; // small paragraph 字重 - 正常
29
33
 
30
34
  $font-typography_title1-fontWeight: $font-typography_title-fontWeight; // 一级标题文本字重
31
35
  $font-typography_title2-fontWeight: $font-typography_title-fontWeight; // 二级标题文本字重
@@ -11,12 +11,12 @@
11
11
  * => ['b', 'b']
12
12
  */
13
13
  export declare function pullAll(arrayA: any[], arrayB: any[]): any[];
14
- type CompareFn<T> = (a: T, b: T) => number;
14
+ type CompareFn<T> = (a: T, b: T, sortOrder: 'ascend' | 'descend') => number;
15
15
  /**
16
16
  * Adapt the descending order
17
17
  * @param {Function} fn
18
18
  * @param {String} order
19
19
  * @returns
20
20
  */
21
- export declare function withOrderSort<T = any>(fn: CompareFn<T>, order?: string): CompareFn<T>;
21
+ export declare function withOrderSort<T = any>(fn: CompareFn<T>, order?: 'ascend' | 'descend'): (a: T, b: T) => number;
22
22
  export {};
@@ -31,11 +31,11 @@ export function withOrderSort(fn) {
31
31
  switch (order) {
32
32
  case 'descend':
33
33
  return (a, b) => {
34
- const result = Number(fn(a, b));
34
+ const result = Number(fn(a, b, order));
35
35
  return result !== 0 ? -result : result;
36
36
  };
37
37
  case 'ascend':
38
38
  default:
39
- return fn;
39
+ return (a, b) => fn(a, b, order);
40
40
  }
41
41
  }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-foundation",
3
- "version": "2.46.1",
3
+ "version": "2.47.0-beta.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build:lib": "node ./scripts/compileLib.js",
7
7
  "prepublishOnly": "npm run build:lib"
8
8
  },
9
9
  "dependencies": {
10
- "@douyinfe/semi-animation": "2.46.1",
10
+ "@douyinfe/semi-animation": "2.47.0-beta.0",
11
11
  "async-validator": "^3.5.0",
12
12
  "classnames": "^2.2.6",
13
13
  "date-fns": "^2.29.3",
@@ -23,7 +23,7 @@
23
23
  "*.scss",
24
24
  "*.css"
25
25
  ],
26
- "gitHead": "11cc57786fbf20f83242a7ccebf62c8874f03057",
26
+ "gitHead": "201c3696de1cfe4686903a3a50c68ca07272742a",
27
27
  "devDependencies": {
28
28
  "@babel/plugin-transform-runtime": "^7.15.8",
29
29
  "@babel/preset-env": "^7.15.8",
@@ -1202,7 +1202,7 @@ export interface BaseSorterInfo<RecordType> {
1202
1202
  sorter?: BaseSorter<RecordType>
1203
1203
  }
1204
1204
  export type BaseSortOrder = boolean | ArrayElement<typeof strings.SORT_DIRECTIONS>;
1205
- export type BaseSorter<RecordType> = boolean | ((a?: RecordType, b?: RecordType) => number);
1205
+ export type BaseSorter<RecordType> = boolean | ((a?: RecordType, b?: RecordType, sortOrder?: 'ascend' | 'descend') => number);
1206
1206
  export interface BaseChangeInfoFilter<RecordType> {
1207
1207
  dataIndex?: string;
1208
1208
  value?: any;
@@ -22,6 +22,8 @@ import {
22
22
  calcDropActualPosition
23
23
  } from './treeUtil';
24
24
 
25
+ export { KeyMapProps } from './treeUtil';
26
+
25
27
  export interface BasicTreeNodeProps {
26
28
  [x: string]: any;
27
29
  expanded?: boolean;
@@ -44,7 +46,7 @@ export interface BasicTreeNodeProps {
44
46
 
45
47
  export interface BasicTreeNodeData {
46
48
  [x: string]: any;
47
- key: string;
49
+ key?: string;
48
50
  value?: number | string;
49
51
  label?: any;
50
52
  icon?: any;
@@ -425,7 +427,7 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
425
427
 
426
428
  notifyMultipleChange(key: string[], e: any) {
427
429
  const { keyEntities } = this.getStates();
428
- const { leafOnly, checkRelation } = this.getProps();
430
+ const { leafOnly, checkRelation, keyMaps } = this.getProps();
429
431
  let value;
430
432
  let keyList = [];
431
433
  if (checkRelation === 'related') {
@@ -436,13 +438,14 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
436
438
  if (this.getProp('onChangeWithObject')) {
437
439
  value = keyList.map((itemKey: string) => keyEntities[itemKey].data);
438
440
  } else {
439
- value = getValueOrKey(keyList.map((itemKey: string) => keyEntities[itemKey].data));
441
+ value = getValueOrKey(keyList.map((itemKey: string) => keyEntities[itemKey].data), keyMaps);
440
442
  }
441
443
  this._adapter.notifyChange(value);
442
444
  }
443
445
 
444
446
  notifyChange(key: string[] | string, e: any) {
445
447
  const isMultiple = this._isMultiple();
448
+ const { keyMaps } = this.getProps();
446
449
  const { keyEntities } = this.getStates();
447
450
  if (this.getProp('treeDataSimpleJson')) {
448
451
  this.notifyJsonChange(key, e);
@@ -454,7 +457,7 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
454
457
  value = get(keyEntities, key).data;
455
458
  } else {
456
459
  const { data } = get(keyEntities, key);
457
- value = getValueOrKey(data);
460
+ value = getValueOrKey(data, keyMaps);
458
461
  }
459
462
  this._adapter.notifyChange(value);
460
463
  }
@@ -464,7 +467,8 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
464
467
  // Input is a controlled component, so the value value needs to be updated
465
468
  this._adapter.updateInputValue(sugInput);
466
469
  const { expandedKeys, selectedKeys, keyEntities, treeData } = this.getStates();
467
- const { showFilteredOnly, filterTreeNode, treeNodeFilterProp } = this.getProps();
470
+ const { showFilteredOnly, filterTreeNode, treeNodeFilterProp, keyMaps } = this.getProps();
471
+ const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : get(keyMaps, 'label', 'label');
468
472
  let filteredOptsKeys: string[] = [];
469
473
  let expandedOptsKeys: string[] = [];
470
474
  let flattenNodes: BasicFlattenNode[] = [];
@@ -473,10 +477,10 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
473
477
  if (!sugInput) {
474
478
  expandedOptsKeys = findAncestorKeys(selectedKeys, keyEntities);
475
479
  expandedOptsKeys.forEach(item => expandedKeys.add(item));
476
- flattenNodes = flattenTreeData(treeData, expandedKeys);
480
+ flattenNodes = flattenTreeData(treeData, expandedKeys, keyMaps);
477
481
  } else {
478
482
  filteredOptsKeys = Object.values(keyEntities)
479
- .filter((item: BasicKeyEntity) => filter(sugInput, item.data, filterTreeNode, treeNodeFilterProp))
483
+ .filter((item: BasicKeyEntity) => filter(sugInput, item.data, filterTreeNode, realFilterProp))
480
484
  .map((item: BasicKeyEntity) => item.key);
481
485
  expandedOptsKeys = findAncestorKeys(filteredOptsKeys, keyEntities, false);
482
486
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
@@ -484,6 +488,7 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
484
488
  flattenNodes = flattenTreeData(
485
489
  treeData,
486
490
  new Set(expandedOptsKeys),
491
+ keyMaps,
487
492
  showFilteredOnly && filteredShownKeys
488
493
  );
489
494
  }
@@ -627,6 +632,7 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
627
632
 
628
633
  setExpandedStatus(treeNode: BasicTreeNodeProps) {
629
634
  const { inputValue, treeData, filteredShownKeys, keyEntities } = this.getStates();
635
+ const { keyMaps } = this.getProps();
630
636
  const isSearching = Boolean(inputValue);
631
637
  const showFilteredOnly = this._showFilteredOnly();
632
638
  const expandedStateKey = isSearching ? 'filteredExpandedKeys' : 'expandedKeys';
@@ -646,6 +652,7 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
646
652
  const flattenNodes = flattenTreeData(
647
653
  treeData,
648
654
  expandedKeys,
655
+ keyMaps,
649
656
  isSearching && showFilteredOnly && filteredShownKeys
650
657
  );
651
658
  const motionKeys = this._isAnimated() ? getMotionKeys(eventKey, expandedKeys, keyEntities) : [];