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,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[]) { |