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), );