Преглед на файлове

fix: [TreeSelect] In single-selection search, after selecting a item, its child items will be expanded and Popover will be closed immediately (#78) (#96)

Co-authored-by: chenyuling <[email protected]>
boomboomchen преди 4 години
родител
ревизия
75857b5f05
променени са 2 файла, в които са добавени 9 реда и са изтрити 7 реда
  1. 0 7
      packages/semi-foundation/treeSelect/foundation.ts
  2. 9 0
      packages/semi-ui/treeSelect/index.tsx

+ 0 - 7
packages/semi-foundation/treeSelect/foundation.ts

@@ -241,10 +241,6 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
         return this.getProp('expandedKeys');
     }
 
-    _isFilterable() {
-        return Boolean(this.getProp('filterTreeNode')); // filter can be boolean or function
-    }
-
     _isSelectToClose() {
         return !this.getProp('expandAction');
     }
@@ -402,9 +398,6 @@ export default class TreeSelectFoundation<P = Record<string, any>, S = Record<st
         this._adapter.closeMenu();
         this._adapter.unregisterClickOutsideHandler();
         this._notifyBlur(e);
-        if (this._isFilterable()) {
-            this.clearInput();
-        }
         if (this.getProp('motionExpand')) {
             this._adapter.updateState({ motionKeys: new Set([]) } as any);
         }

+ 9 - 0
packages/semi-ui/treeSelect/index.tsx

@@ -1125,6 +1125,14 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
         return key;
     };
 
+    /* Event handler function after popover is closed */
+    handlePopoverClose = isVisible => {
+        const { filterTreeNode } = this.props;
+        if (isVisible === false && Boolean(filterTreeNode)) {
+            this.foundation.clearInput();
+        }
+    }
+
     renderTreeNode = (treeNode: FlattenNode, ind: number, style: React.CSSProperties) => {
         const { data } = treeNode;
         // eslint-disable-next-line @typescript-eslint/no-shadow
@@ -1281,6 +1289,7 @@ class TreeSelect extends BaseComponent<TreeSelectProps, TreeSelectState> {
                 autoAdjustOverflow={autoAdjustOverflow}
                 mouseLeaveDelay={mouseLeaveDelay}
                 mouseEnterDelay={mouseEnterDelay}
+                onVisibleChange={this.handlePopoverClose}
             >
                 {selection}
             </Popover>