From 1ff13bf4596887af7eeaca968d16c2f14835ed99 Mon Sep 17 00:00:00 2001 From: Netfan Date: Thu, 6 May 2021 21:10:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9Asearching=20with=20replaceFields=20?= =?UTF-8?q?fix=20#548,#557=20(#569)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: update selected before row-click event(#548) * fix(tree): searching with replaceFields(#557) --- .../Table/src/hooks/useCustomRow.ts | 49 ++++++++++--------- src/components/Tree/src/index.vue | 10 ++-- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/components/Table/src/hooks/useCustomRow.ts b/src/components/Table/src/hooks/useCustomRow.ts index e2027e9f..1cfcac08 100644 --- a/src/components/Table/src/hooks/useCustomRow.ts +++ b/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); diff --git a/src/components/Tree/src/index.vue b/src/components/Tree/src/index.vue index 5f59cfb4..3df9cc2c 100644 --- a/src/components/Tree/src/index.vue +++ b/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[]) { -- GitLab