@douyinfe/semi-foundation 2.55.4 → 2.56.0-alpha.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.
@@ -458,7 +458,8 @@ class SliderFoundation extends _foundation.default {
458
458
  this.onHandleLeave = () => {
459
459
  // this._adapter.setEventDefault(e);
460
460
  const disabled = this._adapter.getState('disabled');
461
- if (!disabled && this.getStates()['focusPos'] === "") {
461
+ const isDrag = this._adapter.getState('isDrag');
462
+ if (!disabled && !isDrag) {
462
463
  this._adapter.onHandleLeave();
463
464
  }
464
465
  };
@@ -251,6 +251,11 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
251
251
  _showFilteredOnly(): any;
252
252
  getTreeNodeProps(key: string): BasicTreeNodeProps;
253
253
  notifyJsonChange(key: string[] | string, e: any): void;
254
+ constructDataForValue(value: string): {
255
+ [x: number]: string;
256
+ };
257
+ findDataForValue(findValue: string): any;
258
+ getDataForKeyNotInKeyEntities(value: string): any;
254
259
  notifyMultipleChange(key: string[], e: any): void;
255
260
  notifyChange(key: string[] | string, e: any): void;
256
261
  handleInputChange(sugInput: string): void;
@@ -115,6 +115,45 @@ class TreeFoundation extends _foundation.default {
115
115
  const value = (0, _pick2.default)(data, selectedPath);
116
116
  this._adapter.notifyChange(value);
117
117
  }
118
+ constructDataForValue(value) {
119
+ const {
120
+ keyMaps
121
+ } = this.getProps();
122
+ const keyName = (0, _get2.default)(keyMaps, 'key', 'key');
123
+ const labelName = (0, _get2.default)(keyMaps, 'label', 'label');
124
+ return {
125
+ [keyName]: value,
126
+ [labelName]: value
127
+ };
128
+ }
129
+ findDataForValue(findValue) {
130
+ const {
131
+ value,
132
+ defaultValue,
133
+ keyMaps
134
+ } = this.getProps();
135
+ const realValueName = (0, _get2.default)(keyMaps, 'value', 'value');
136
+ const realKeyName = (0, _get2.default)(keyMaps, 'key', 'key');
137
+ let valueArr = [];
138
+ if (value) {
139
+ valueArr = Array.isArray(value) ? value : [value];
140
+ } else if (defaultValue) {
141
+ valueArr = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
142
+ }
143
+ return valueArr.find(item => {
144
+ return item[realValueName] === findValue || item[realKeyName] === findValue;
145
+ });
146
+ }
147
+ getDataForKeyNotInKeyEntities(value) {
148
+ const {
149
+ onChangeWithObject
150
+ } = this.getProps();
151
+ if (onChangeWithObject) {
152
+ return this.findDataForValue(value);
153
+ } else {
154
+ return this.constructDataForValue(value);
155
+ }
156
+ }
118
157
  notifyMultipleChange(key, e) {
119
158
  const {
120
159
  keyEntities
@@ -127,14 +166,15 @@ class TreeFoundation extends _foundation.default {
127
166
  let value;
128
167
  let keyList = [];
129
168
  if (checkRelation === 'related') {
130
- keyList = (0, _treeUtil.normalizeKeyList)(key, keyEntities, leafOnly);
169
+ keyList = (0, _treeUtil.normalizeKeyList)(key, keyEntities, leafOnly, true);
131
170
  } else if (checkRelation === 'unRelated') {
132
171
  keyList = key;
133
172
  }
173
+ const nodes = keyList.map(key => keyEntities[key] ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
134
174
  if (this.getProp('onChangeWithObject')) {
135
- value = keyList.map(itemKey => keyEntities[itemKey].data);
175
+ value = nodes;
136
176
  } else {
137
- value = (0, _treeUtil.getValueOrKey)(keyList.map(itemKey => keyEntities[itemKey].data), keyMaps);
177
+ value = (0, _treeUtil.getValueOrKey)(nodes, keyMaps);
138
178
  }
139
179
  this._adapter.notifyChange(value);
140
180
  }
@@ -293,7 +333,7 @@ class TreeFoundation extends _foundation.default {
293
333
  return this.calcCheckedKeys(eventKey, targetStatus);
294
334
  }
295
335
  const nonDisabled = descendantKeys.filter(key => !disabledKeys.has(key));
296
- const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : (0, _difference2.default)((0, _treeUtil.normalizeKeyList)([...checkedKeys], keyEntities, true), nonDisabled);
336
+ const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : (0, _difference2.default)((0, _treeUtil.normalizeKeyList)([...checkedKeys], keyEntities, true, true), nonDisabled);
297
337
  return (0, _treeUtil.calcCheckedKeys)(newCheckedKeys, keyEntities);
298
338
  }
299
339
  /*
@@ -83,6 +83,6 @@ export declare function getValueOrKey(data: any, keyMaps?: KeyMapProps): any;
83
83
  export declare function normalizeValue(value: any, withObject: boolean, keyMaps?: KeyMapProps): any;
84
84
  export declare function updateKeys(keySet: Set<string> | string[], keyEntities: KeyEntities): string[];
85
85
  export declare function calcDisabledKeys(keyEntities: KeyEntities, keyMaps?: KeyMapProps): Set<string>;
86
- export declare function calcDropRelativePosition(event: any, treeNode: any): 1 | -1 | 0;
86
+ export declare function calcDropRelativePosition(event: any, treeNode: any): 0 | 1 | -1;
87
87
  export declare function getDragNodesKeys(key: string, keyEntities: KeyEntities): string[];
88
88
  export declare function calcDropActualPosition(pos: string, relativeDropPos: any): any;
@@ -69,7 +69,7 @@ export interface BasicTreeSelectProps extends Pick<BasicTreeProps, 'virtualize'
69
69
  renderSelectedItem?: BasicRenderSelectedItem;
70
70
  getPopupContainer?: () => HTMLElement;
71
71
  onBlur?: (e: any) => void;
72
- onSearch?: (sunInput: string, filteredExpandedKeys: string[]) => void;
72
+ onSearch?: (sunInput: string, filteredExpandedKeys: string[], filteredNodes: BasicTreeNodeData[]) => void;
73
73
  onChange?: BasicOnChange;
74
74
  onFocus?: (e: any) => void;
75
75
  onVisibleChange?: (isVisible: boolean) => void;
@@ -90,7 +90,7 @@ export interface TreeSelectAdapter<P = Record<string, any>, S = Record<string, a
90
90
  rePositionDropdown: () => void;
91
91
  updateState: (states: Partial<BasicTreeSelectInnerData>) => void;
92
92
  notifySelect: (selectedKey: string, selected: boolean, selectedNode: BasicTreeNodeData) => void;
93
- notifySearch: (input: string, filteredExpandedKeys: string[]) => void;
93
+ notifySearch: (input: string, filteredExpandedKeys: string[], filteredNodes: BasicTreeNodeData[]) => void;
94
94
  cacheFlattenNodes: (bool: boolean) => void;
95
95
  openMenu: () => void;
96
96
  closeMenu: (cb?: () => void) => void;
@@ -474,6 +474,7 @@ class TreeSelectFoundation extends _foundation.default {
474
474
  } = this.getProps();
475
475
  const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : (0, _get2.default)(keyMaps, 'label', 'label');
476
476
  const newExpandedKeys = new Set(expandedKeys);
477
+ let filteredNodes = [];
477
478
  let filteredOptsKeys = [];
478
479
  let expandedOptsKeys = [];
479
480
  let newFlattenNodes = [];
@@ -483,19 +484,21 @@ class TreeSelectFoundation extends _foundation.default {
483
484
  expandedOptsKeys.forEach(item => newExpandedKeys.add(item));
484
485
  newFlattenNodes = (0, _treeUtil.flattenTreeData)(treeData, newExpandedKeys, keyMaps);
485
486
  } else {
486
- filteredOptsKeys = Object.values(keyEntities).filter(item => {
487
+ const filteredOpts = Object.values(keyEntities).filter(item => {
487
488
  const {
488
489
  data
489
490
  } = item;
490
491
  return (0, _treeUtil.filter)(sugInput, data, filterTreeNode, realFilterProp);
491
- }).map(item => item.key);
492
+ });
493
+ filteredNodes = filteredOpts.map(item => item.data);
494
+ filteredOptsKeys = filteredOpts.map(item => item.key);
492
495
  expandedOptsKeys = (0, _treeUtil.findAncestorKeys)(filteredOptsKeys, keyEntities, false);
493
496
  const shownChildKeys = (0, _treeUtil.findDescendantKeys)(filteredOptsKeys, keyEntities, true);
494
497
  filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
495
498
  newFlattenNodes = (0, _treeUtil.flattenTreeData)(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
496
499
  }
497
500
  const newFilteredExpandedKeys = new Set(expandedOptsKeys);
498
- this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys));
501
+ this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys), filteredNodes);
499
502
  this._adapter.updateState({
500
503
  expandedKeys: newExpandedKeys,
501
504
  flattenNodes: newFlattenNodes,
@@ -18,7 +18,7 @@ declare const strings: {
18
18
  DRAG_AREA_ILLEGAL: string;
19
19
  TRIGGER_AUTO: "auto";
20
20
  TRIGGER_CUSTOM: "custom";
21
- UPLOAD_TRIGGER: ("auto" | "custom")[];
21
+ UPLOAD_TRIGGER: ("custom" | "auto")[];
22
22
  VALIDATE_STATUS: readonly ["default", "error", "warning", "success"];
23
23
  PROMPT_POSITION: readonly ["left", "right", "bottom"];
24
24
  };
@@ -451,7 +451,8 @@ export default class SliderFoundation extends BaseFoundation {
451
451
  this.onHandleLeave = () => {
452
452
  // this._adapter.setEventDefault(e);
453
453
  const disabled = this._adapter.getState('disabled');
454
- if (!disabled && this.getStates()['focusPos'] === "") {
454
+ const isDrag = this._adapter.getState('isDrag');
455
+ if (!disabled && !isDrag) {
455
456
  this._adapter.onHandleLeave();
456
457
  }
457
458
  };
@@ -251,6 +251,11 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
251
251
  _showFilteredOnly(): any;
252
252
  getTreeNodeProps(key: string): BasicTreeNodeProps;
253
253
  notifyJsonChange(key: string[] | string, e: any): void;
254
+ constructDataForValue(value: string): {
255
+ [x: number]: string;
256
+ };
257
+ findDataForValue(findValue: string): any;
258
+ getDataForKeyNotInKeyEntities(value: string): any;
254
259
  notifyMultipleChange(key: string[], e: any): void;
255
260
  notifyChange(key: string[] | string, e: any): void;
256
261
  handleInputChange(sugInput: string): void;
@@ -107,6 +107,45 @@ export default class TreeFoundation extends BaseFoundation {
107
107
  const value = _pick(data, selectedPath);
108
108
  this._adapter.notifyChange(value);
109
109
  }
110
+ constructDataForValue(value) {
111
+ const {
112
+ keyMaps
113
+ } = this.getProps();
114
+ const keyName = _get(keyMaps, 'key', 'key');
115
+ const labelName = _get(keyMaps, 'label', 'label');
116
+ return {
117
+ [keyName]: value,
118
+ [labelName]: value
119
+ };
120
+ }
121
+ findDataForValue(findValue) {
122
+ const {
123
+ value,
124
+ defaultValue,
125
+ keyMaps
126
+ } = this.getProps();
127
+ const realValueName = _get(keyMaps, 'value', 'value');
128
+ const realKeyName = _get(keyMaps, 'key', 'key');
129
+ let valueArr = [];
130
+ if (value) {
131
+ valueArr = Array.isArray(value) ? value : [value];
132
+ } else if (defaultValue) {
133
+ valueArr = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
134
+ }
135
+ return valueArr.find(item => {
136
+ return item[realValueName] === findValue || item[realKeyName] === findValue;
137
+ });
138
+ }
139
+ getDataForKeyNotInKeyEntities(value) {
140
+ const {
141
+ onChangeWithObject
142
+ } = this.getProps();
143
+ if (onChangeWithObject) {
144
+ return this.findDataForValue(value);
145
+ } else {
146
+ return this.constructDataForValue(value);
147
+ }
148
+ }
110
149
  notifyMultipleChange(key, e) {
111
150
  const {
112
151
  keyEntities
@@ -119,14 +158,15 @@ export default class TreeFoundation extends BaseFoundation {
119
158
  let value;
120
159
  let keyList = [];
121
160
  if (checkRelation === 'related') {
122
- keyList = normalizeKeyList(key, keyEntities, leafOnly);
161
+ keyList = normalizeKeyList(key, keyEntities, leafOnly, true);
123
162
  } else if (checkRelation === 'unRelated') {
124
163
  keyList = key;
125
164
  }
165
+ const nodes = keyList.map(key => keyEntities[key] ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
126
166
  if (this.getProp('onChangeWithObject')) {
127
- value = keyList.map(itemKey => keyEntities[itemKey].data);
167
+ value = nodes;
128
168
  } else {
129
- value = getValueOrKey(keyList.map(itemKey => keyEntities[itemKey].data), keyMaps);
169
+ value = getValueOrKey(nodes, keyMaps);
130
170
  }
131
171
  this._adapter.notifyChange(value);
132
172
  }
@@ -285,7 +325,7 @@ export default class TreeFoundation extends BaseFoundation {
285
325
  return this.calcCheckedKeys(eventKey, targetStatus);
286
326
  }
287
327
  const nonDisabled = descendantKeys.filter(key => !disabledKeys.has(key));
288
- const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : _difference(normalizeKeyList([...checkedKeys], keyEntities, true), nonDisabled);
328
+ const newCheckedKeys = targetStatus ? [...nonDisabled, ...checkedKeys] : _difference(normalizeKeyList([...checkedKeys], keyEntities, true, true), nonDisabled);
289
329
  return calcCheckedKeys(newCheckedKeys, keyEntities);
290
330
  }
291
331
  /*
@@ -83,6 +83,6 @@ export declare function getValueOrKey(data: any, keyMaps?: KeyMapProps): any;
83
83
  export declare function normalizeValue(value: any, withObject: boolean, keyMaps?: KeyMapProps): any;
84
84
  export declare function updateKeys(keySet: Set<string> | string[], keyEntities: KeyEntities): string[];
85
85
  export declare function calcDisabledKeys(keyEntities: KeyEntities, keyMaps?: KeyMapProps): Set<string>;
86
- export declare function calcDropRelativePosition(event: any, treeNode: any): 1 | -1 | 0;
86
+ export declare function calcDropRelativePosition(event: any, treeNode: any): 0 | 1 | -1;
87
87
  export declare function getDragNodesKeys(key: string, keyEntities: KeyEntities): string[];
88
88
  export declare function calcDropActualPosition(pos: string, relativeDropPos: any): any;
@@ -69,7 +69,7 @@ export interface BasicTreeSelectProps extends Pick<BasicTreeProps, 'virtualize'
69
69
  renderSelectedItem?: BasicRenderSelectedItem;
70
70
  getPopupContainer?: () => HTMLElement;
71
71
  onBlur?: (e: any) => void;
72
- onSearch?: (sunInput: string, filteredExpandedKeys: string[]) => void;
72
+ onSearch?: (sunInput: string, filteredExpandedKeys: string[], filteredNodes: BasicTreeNodeData[]) => void;
73
73
  onChange?: BasicOnChange;
74
74
  onFocus?: (e: any) => void;
75
75
  onVisibleChange?: (isVisible: boolean) => void;
@@ -90,7 +90,7 @@ export interface TreeSelectAdapter<P = Record<string, any>, S = Record<string, a
90
90
  rePositionDropdown: () => void;
91
91
  updateState: (states: Partial<BasicTreeSelectInnerData>) => void;
92
92
  notifySelect: (selectedKey: string, selected: boolean, selectedNode: BasicTreeNodeData) => void;
93
- notifySearch: (input: string, filteredExpandedKeys: string[]) => void;
93
+ notifySearch: (input: string, filteredExpandedKeys: string[], filteredNodes: BasicTreeNodeData[]) => void;
94
94
  cacheFlattenNodes: (bool: boolean) => void;
95
95
  openMenu: () => void;
96
96
  closeMenu: (cb?: () => void) => void;
@@ -467,6 +467,7 @@ export default class TreeSelectFoundation extends BaseFoundation {
467
467
  } = this.getProps();
468
468
  const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : _get(keyMaps, 'label', 'label');
469
469
  const newExpandedKeys = new Set(expandedKeys);
470
+ let filteredNodes = [];
470
471
  let filteredOptsKeys = [];
471
472
  let expandedOptsKeys = [];
472
473
  let newFlattenNodes = [];
@@ -476,19 +477,21 @@ export default class TreeSelectFoundation extends BaseFoundation {
476
477
  expandedOptsKeys.forEach(item => newExpandedKeys.add(item));
477
478
  newFlattenNodes = flattenTreeData(treeData, newExpandedKeys, keyMaps);
478
479
  } else {
479
- filteredOptsKeys = Object.values(keyEntities).filter(item => {
480
+ const filteredOpts = Object.values(keyEntities).filter(item => {
480
481
  const {
481
482
  data
482
483
  } = item;
483
484
  return filter(sugInput, data, filterTreeNode, realFilterProp);
484
- }).map(item => item.key);
485
+ });
486
+ filteredNodes = filteredOpts.map(item => item.data);
487
+ filteredOptsKeys = filteredOpts.map(item => item.key);
485
488
  expandedOptsKeys = findAncestorKeys(filteredOptsKeys, keyEntities, false);
486
489
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
487
490
  filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
488
491
  newFlattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
489
492
  }
490
493
  const newFilteredExpandedKeys = new Set(expandedOptsKeys);
491
- this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys));
494
+ this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys), filteredNodes);
492
495
  this._adapter.updateState({
493
496
  expandedKeys: newExpandedKeys,
494
497
  flattenNodes: newFlattenNodes,
@@ -18,7 +18,7 @@ declare const strings: {
18
18
  DRAG_AREA_ILLEGAL: string;
19
19
  TRIGGER_AUTO: "auto";
20
20
  TRIGGER_CUSTOM: "custom";
21
- UPLOAD_TRIGGER: ("auto" | "custom")[];
21
+ UPLOAD_TRIGGER: ("custom" | "auto")[];
22
22
  VALIDATE_STATUS: readonly ["default", "error", "warning", "success"];
23
23
  PROMPT_POSITION: readonly ["left", "right", "bottom"];
24
24
  };
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-foundation",
3
- "version": "2.55.4",
3
+ "version": "2.56.0-alpha.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.55.4",
10
+ "@douyinfe/semi-animation": "2.56.0-alpha.0",
11
11
  "async-validator": "^3.5.0",
12
12
  "classnames": "^2.2.6",
13
13
  "date-fns": "^2.29.3",
@@ -24,7 +24,7 @@
24
24
  "*.scss",
25
25
  "*.css"
26
26
  ],
27
- "gitHead": "b164af409e92b8165e4355e9d53e011224986f62",
27
+ "gitHead": "c66a7f2315110d6af211d6edb6163c71a4d8aaa8",
28
28
  "devDependencies": {
29
29
  "@babel/plugin-transform-runtime": "^7.15.8",
30
30
  "@babel/preset-env": "^7.15.8",
@@ -550,7 +550,8 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
550
550
  onHandleLeave = () => {
551
551
  // this._adapter.setEventDefault(e);
552
552
  const disabled = this._adapter.getState('disabled');
553
- if (!disabled && this.getStates()['focusPos'] === "") {
553
+ const isDrag = this._adapter.getState('isDrag');
554
+ if (!disabled && !isDrag) {
554
555
  this._adapter.onHandleLeave();
555
556
  }
556
557
  };
@@ -420,20 +420,55 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
420
420
  this._adapter.notifyChange(value as BasicValue);
421
421
  }
422
422
 
423
+ constructDataForValue(value: string) {
424
+ const { keyMaps } = this.getProps();
425
+ const keyName = get(keyMaps, 'key', 'key');
426
+ const labelName = get(keyMaps, 'label', 'label');
427
+ return {
428
+ [keyName]: value,
429
+ [labelName]: value
430
+ };
431
+ }
432
+
433
+ findDataForValue(findValue: string) {
434
+ const { value, defaultValue, keyMaps } = this.getProps();
435
+ const realValueName = get(keyMaps, 'value', 'value');
436
+ const realKeyName = get(keyMaps, 'key', 'key');
437
+ let valueArr = [];
438
+ if (value) {
439
+ valueArr = Array.isArray(value) ? value : [value];
440
+ } else if (defaultValue) {
441
+ valueArr = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
442
+ }
443
+ return valueArr.find(item => {
444
+ return item[realValueName] === findValue || item[realKeyName] === findValue;
445
+ });
446
+ }
447
+
448
+ getDataForKeyNotInKeyEntities(value: string) {
449
+ const { onChangeWithObject } = this.getProps();
450
+ if (onChangeWithObject) {
451
+ return this.findDataForValue(value);
452
+ } else {
453
+ return this.constructDataForValue(value);
454
+ }
455
+ }
456
+
423
457
  notifyMultipleChange(key: string[], e: any) {
424
458
  const { keyEntities } = this.getStates();
425
459
  const { leafOnly, checkRelation, keyMaps } = this.getProps();
426
460
  let value;
427
461
  let keyList = [];
428
462
  if (checkRelation === 'related') {
429
- keyList = normalizeKeyList(key, keyEntities, leafOnly);
463
+ keyList = normalizeKeyList(key, keyEntities, leafOnly, true);
430
464
  } else if (checkRelation === 'unRelated') {
431
465
  keyList = key;
432
466
  }
467
+ const nodes = keyList.map(key => keyEntities[key] ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
433
468
  if (this.getProp('onChangeWithObject')) {
434
- value = keyList.map((itemKey: string) => keyEntities[itemKey].data);
469
+ value = nodes;
435
470
  } else {
436
- value = getValueOrKey(keyList.map((itemKey: string) => keyEntities[itemKey].data), keyMaps);
471
+ value = getValueOrKey(nodes, keyMaps);
437
472
  }
438
473
  this._adapter.notifyChange(value);
439
474
  }
@@ -585,7 +620,7 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
585
620
  const nonDisabled = descendantKeys.filter((key: string) => !disabledKeys.has(key));
586
621
  const newCheckedKeys = targetStatus ?
587
622
  [...nonDisabled, ...checkedKeys] :
588
- difference(normalizeKeyList([...checkedKeys], keyEntities, true), nonDisabled);
623
+ difference(normalizeKeyList([...checkedKeys], keyEntities, true, true), nonDisabled);
589
624
  return calcCheckedKeys(newCheckedKeys, keyEntities);
590
625
  }
591
626
 
@@ -139,7 +139,7 @@ export interface BasicTreeSelectProps extends Pick<BasicTreeProps,
139
139
  getPopupContainer?: () => HTMLElement;
140
140
  // triggerRender?: (props: BasicTriggerRenderProps) => any;
141
141
  onBlur?: (e: any) => void;
142
- onSearch?: (sunInput: string, filteredExpandedKeys: string[]) => void;
142
+ onSearch?: (sunInput: string, filteredExpandedKeys: string[], filteredNodes: BasicTreeNodeData[]) => void;
143
143
  onChange?: BasicOnChange;
144
144
  onFocus?: (e: any) => void;
145
145
  onVisibleChange?: (isVisible: boolean) => void;
@@ -183,7 +183,7 @@ export interface TreeSelectAdapter<P = Record<string, any>, S = Record<string, a
183
183
  rePositionDropdown: () => void;
184
184
  updateState: (states: Partial<BasicTreeSelectInnerData>) => void;
185
185
  notifySelect: (selectedKey: string, selected: boolean, selectedNode: BasicTreeNodeData) => void;
186
- notifySearch: (input: string, filteredExpandedKeys: string[]) => void;
186
+ notifySearch: (input: string, filteredExpandedKeys: string[], filteredNodes: BasicTreeNodeData[]) => void;
187
187
  cacheFlattenNodes: (bool: boolean) => void;
188
188
  openMenu: () => void;
189
189
  closeMenu: (cb?: () => void) => void;
@@ -610,6 +610,7 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
610
610
  const { showFilteredOnly, filterTreeNode, treeNodeFilterProp, keyMaps } = this.getProps();
611
611
  const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : get(keyMaps, 'label', 'label');
612
612
  const newExpandedKeys: Set<string> = new Set(expandedKeys);
613
+ let filteredNodes: BasicTreeNodeData[] = [];
613
614
  let filteredOptsKeys: string[] = [];
614
615
  let expandedOptsKeys = [];
615
616
  let newFlattenNodes = [];
@@ -619,19 +620,20 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
619
620
  expandedOptsKeys.forEach(item => newExpandedKeys.add(item));
620
621
  newFlattenNodes = flattenTreeData(treeData, newExpandedKeys, keyMaps);
621
622
  } else {
622
- filteredOptsKeys = Object.values(keyEntities)
623
+ const filteredOpts = Object.values(keyEntities)
623
624
  .filter((item: BasicKeyEntity) => {
624
625
  const { data } = item;
625
626
  return filter(sugInput, data, filterTreeNode, realFilterProp);
626
- })
627
- .map((item: BasicKeyEntity) => item.key);
627
+ });
628
+ filteredNodes = filteredOpts.map((item: BasicKeyEntity) => item.data);
629
+ filteredOptsKeys = filteredOpts.map((item: BasicKeyEntity) => item.key);
628
630
  expandedOptsKeys = findAncestorKeys(filteredOptsKeys, keyEntities, false);
629
631
  const shownChildKeys = findDescendantKeys(filteredOptsKeys, keyEntities, true);
630
632
  filteredShownKeys = new Set([...shownChildKeys, ...expandedOptsKeys]);
631
633
  newFlattenNodes = flattenTreeData(treeData, new Set(expandedOptsKeys), keyMaps, showFilteredOnly && filteredShownKeys);
632
634
  }
633
635
  const newFilteredExpandedKeys = new Set(expandedOptsKeys);
634
- this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys));
636
+ this._adapter.notifySearch(sugInput, Array.from(newFilteredExpandedKeys), filteredNodes);
635
637
  this._adapter.updateState({
636
638
  expandedKeys: newExpandedKeys,
637
639
  flattenNodes: newFlattenNodes,