Commit 1ff13bf4596887af7eeaca968d16c2f14835ed99

Authored by Netfan
Committed by GitHub
1 parent 5724bc5b

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

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

* fix(tree): searching with replaceFields(#557)
src/components/Table/src/hooks/useCustomRow.ts
@@ -36,37 +36,40 @@ export function useCustomRow( @@ -36,37 +36,40 @@ export function useCustomRow(
36 const customRow = (record: Recordable, index: number) => { 36 const customRow = (record: Recordable, index: number) => {
37 return { 37 return {
38 onClick: (e: Event) => { 38 onClick: (e: Event) => {
39 - emit('row-click', record, index, e);  
40 e?.stopPropagation(); 39 e?.stopPropagation();
41 - const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef);  
42 - if (!rowSelection || !clickToRowSelect) return;  
43 - const keys = getSelectRowKeys();  
44 - const key = getKey(record, rowKey, unref(getAutoCreateKey));  
45 - if (!key) return; 40 + function handleClick() {
  41 + const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef);
  42 + if (!rowSelection || !clickToRowSelect) return;
  43 + const keys = getSelectRowKeys();
  44 + const key = getKey(record, rowKey, unref(getAutoCreateKey));
  45 + if (!key) return;
46 46
47 - const isCheckbox = rowSelection.type === 'checkbox';  
48 - if (isCheckbox) {  
49 - if (!keys.includes(key)) {  
50 - setSelectedRowKeys([...keys, key]); 47 + const isCheckbox = rowSelection.type === 'checkbox';
  48 + if (isCheckbox) {
  49 + if (!keys.includes(key)) {
  50 + setSelectedRowKeys([...keys, key]);
  51 + return;
  52 + }
  53 + const keyIndex = keys.findIndex((item) => item === key);
  54 + keys.splice(keyIndex, 1);
  55 + setSelectedRowKeys(keys);
51 return; 56 return;
52 } 57 }
53 - const keyIndex = keys.findIndex((item) => item === key);  
54 - keys.splice(keyIndex, 1);  
55 - setSelectedRowKeys(keys);  
56 - return;  
57 - }  
58 58
59 - const isRadio = rowSelection.type === 'radio';  
60 - if (isRadio) {  
61 - if (!keys.includes(key)) {  
62 - if (keys.length) {  
63 - clearSelectedRowKeys(); 59 + const isRadio = rowSelection.type === 'radio';
  60 + if (isRadio) {
  61 + if (!keys.includes(key)) {
  62 + if (keys.length) {
  63 + clearSelectedRowKeys();
  64 + }
  65 + setSelectedRowKeys([key]);
  66 + return;
64 } 67 }
65 - setSelectedRowKeys([key]);  
66 - return; 68 + clearSelectedRowKeys();
67 } 69 }
68 - clearSelectedRowKeys();  
69 } 70 }
  71 + handleClick();
  72 + emit('row-click', record, index, e);
70 }, 73 },
71 onDblclick: (event: Event) => { 74 onDblclick: (event: Event) => {
72 emit('row-dbClick', record, index, event); 75 emit('row-dbClick', record, index, event);
src/components/Tree/src/index.vue
@@ -185,9 +185,13 @@ @@ -185,9 +185,13 @@
185 searchState.startSearch = true; 185 searchState.startSearch = true;
186 const { title: titleField } = unref(getReplaceFields); 186 const { title: titleField } = unref(getReplaceFields);
187 187
188 - searchState.searchData = filter(unref(treeDataRef), (node) => {  
189 - return node[titleField]?.includes(searchValue) ?? false;  
190 - }); 188 + searchState.searchData = filter(
  189 + unref(treeDataRef),
  190 + (node) => {
  191 + return node[titleField]?.includes(searchValue) ?? false;
  192 + },
  193 + unref(getReplaceFields)
  194 + );
191 } 195 }
192 196
193 function handleClickNode(key: string, children: TreeItem[]) { 197 function handleClickNode(key: string, children: TreeItem[]) {