Procházet zdrojové kódy

fix:searching with replaceFields fix #548,#557 (#569)

* fix: update selected before row-click event(#548)

* fix(tree): searching with replaceFields(#557)
Netfan před 4 roky
rodič
revize
1ff13bf459

+ 26 - 23
src/components/Table/src/hooks/useCustomRow.ts

@@ -36,37 +36,40 @@ export function useCustomRow(
   const customRow = (record: Recordable, index: number) => {
     return {
       onClick: (e: Event) => {
-        emit('row-click', record, index, e);
         e?.stopPropagation();
-        const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef);
-        if (!rowSelection || !clickToRowSelect) return;
-        const keys = getSelectRowKeys();
-        const key = getKey(record, rowKey, unref(getAutoCreateKey));
-        if (!key) return;
+        function handleClick() {
+          const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef);
+          if (!rowSelection || !clickToRowSelect) return;
+          const keys = getSelectRowKeys();
+          const key = getKey(record, rowKey, unref(getAutoCreateKey));
+          if (!key) return;
 
-        const isCheckbox = rowSelection.type === 'checkbox';
-        if (isCheckbox) {
-          if (!keys.includes(key)) {
-            setSelectedRowKeys([...keys, key]);
+          const isCheckbox = rowSelection.type === 'checkbox';
+          if (isCheckbox) {
+            if (!keys.includes(key)) {
+              setSelectedRowKeys([...keys, key]);
+              return;
+            }
+            const keyIndex = keys.findIndex((item) => item === key);
+            keys.splice(keyIndex, 1);
+            setSelectedRowKeys(keys);
             return;
           }
-          const keyIndex = keys.findIndex((item) => item === key);
-          keys.splice(keyIndex, 1);
-          setSelectedRowKeys(keys);
-          return;
-        }
 
-        const isRadio = rowSelection.type === 'radio';
-        if (isRadio) {
-          if (!keys.includes(key)) {
-            if (keys.length) {
-              clearSelectedRowKeys();
+          const isRadio = rowSelection.type === 'radio';
+          if (isRadio) {
+            if (!keys.includes(key)) {
+              if (keys.length) {
+                clearSelectedRowKeys();
+              }
+              setSelectedRowKeys([key]);
+              return;
             }
-            setSelectedRowKeys([key]);
-            return;
+            clearSelectedRowKeys();
           }
-          clearSelectedRowKeys();
         }
+        handleClick();
+        emit('row-click', record, index, e);
       },
       onDblclick: (event: Event) => {
         emit('row-dbClick', record, index, event);

+ 7 - 3
src/components/Tree/src/index.vue

@@ -185,9 +185,13 @@
         searchState.startSearch = true;
         const { title: titleField } = unref(getReplaceFields);
 
-        searchState.searchData = filter(unref(treeDataRef), (node) => {
-          return node[titleField]?.includes(searchValue) ?? false;
-        });
+        searchState.searchData = filter(
+          unref(treeDataRef),
+          (node) => {
+            return node[titleField]?.includes(searchValue) ?? false;
+          },
+          unref(getReplaceFields)
+        );
       }
 
       function handleClickNode(key: string, children: TreeItem[]) {