From ad8d32ab097cbff126d924da353a52843f9350a2 Mon Sep 17 00:00:00 2001 From: HaiWei Lian Date: Tue, 16 Jan 2024 20:56:47 +0800 Subject: [PATCH] fix: table filter does not work in header group (#7233) --- components/table/hooks/useFilter/index.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/components/table/hooks/useFilter/index.tsx b/components/table/hooks/useFilter/index.tsx index 6eaf3a1d3..1ef596fab 100644 --- a/components/table/hooks/useFilter/index.tsx +++ b/components/table/hooks/useFilter/index.tsx @@ -187,6 +187,17 @@ export function getFilterData( }, data); } +function getMergedColumns( + rawMergedColumns: ColumnsType, +): ColumnsType { + return rawMergedColumns.flatMap(column => { + if ('children' in column) { + return [column, ...getMergedColumns(column.children || [])]; + } + return [column]; + }); +} + interface FilterConfig { prefixCls: Ref; dropdownPrefixCls: Ref; @@ -202,7 +213,7 @@ interface FilterConfig { function useFilter({ prefixCls, dropdownPrefixCls, - mergedColumns, + mergedColumns: rawMergedColumns, locale, onFilterChange, getPopupContainer, @@ -211,6 +222,8 @@ function useFilter({ Ref[]>, Ref>, ] { + const mergedColumns = computed(() => getMergedColumns(rawMergedColumns.value)); + const [filterStates, setFilterStates] = useState[]>( collectFilterStates(mergedColumns.value, true), );