🐛 fix(datagrid): 保留多列筛选条件

This commit is contained in:
Kunghim
2026-08-01 21:38:30 +08:00
parent c72f9a8617
commit f374193e29
2 changed files with 53 additions and 0 deletions

View File

@@ -80,4 +80,52 @@ describe('useDataGridFilters', () => {
renderer?.unmount();
});
it('preserves earlier value selections when a second column filter is applied', () => {
let latest: UseDataGridFiltersResult | undefined;
let renderer: ReactTestRenderer | undefined;
const Harness = () => {
const [appliedConditions, setAppliedConditions] = React.useState<Parameters<typeof useDataGridFilters>[0]['appliedFilterConditions']>([]);
latest = useDataGridFilters(createFilterHookProps({
appliedFilterConditions: appliedConditions,
onApplyFilter: setAppliedConditions,
}));
return null;
};
act(() => {
renderer = create(<Harness />);
});
act(() => {
latest?.applyColumnFilter({
column: 'code',
op: 'IN',
valueSelection: { values: ['A'] },
});
});
act(() => {
latest?.applyColumnFilter({
column: 'title',
op: 'IN',
valueSelection: { values: ['B'] },
});
});
expect(latest?.filterConditions).toEqual([
expect.objectContaining({
column: 'code',
op: 'IN',
valueSelection: { values: ['A'] },
}),
expect.objectContaining({
column: 'title',
op: 'IN',
valueSelection: { values: ['B'] },
}),
]);
renderer?.unmount();
});
});

View File

@@ -126,6 +126,11 @@ export const useDataGridFilters = ({
op,
value: String(cond?.value ?? ''),
value2: String(cond?.value2 ?? ''),
valueSelection: cond?.valueSelection ? {
values: Array.from(new Set((cond.valueSelection.values || []).map((value) => String(value)))),
...(cond.valueSelection.includeNull ? { includeNull: true } : {}),
...(cond.valueSelection.includeEmpty ? { includeEmpty: true } : {}),
} : undefined,
};
});
}, [normalizeFilterLogic]);