Commit 1ff13bf4596887af7eeaca968d16c2f14835ed99
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)
Showing
2 changed files
with
33 additions
and
26 deletions
src/components/Table/src/hooks/useCustomRow.ts
... | ... | @@ -36,37 +36,40 @@ export function useCustomRow( |
36 | 36 | const customRow = (record: Recordable, index: number) => { |
37 | 37 | return { |
38 | 38 | onClick: (e: Event) => { |
39 | - emit('row-click', record, index, e); | |
40 | 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 | 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 | 74 | onDblclick: (event: Event) => { |
72 | 75 | emit('row-dbClick', record, index, event); | ... | ... |
src/components/Tree/src/index.vue
... | ... | @@ -185,9 +185,13 @@ |
185 | 185 | searchState.startSearch = true; |
186 | 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 | 197 | function handleClickNode(key: string, children: TreeItem[]) { | ... | ... |