2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-07 06:00:57 +00:00

Fix for table filtering logic (#9949)

* Fix for table filtering logic

- Disable table filters if custom filters supplied
- Handle search term better

* Logic Fix

* Tweak unit test
This commit is contained in:
Oliver
2025-07-04 10:24:02 +10:00
committed by GitHub
parent 4307e6d170
commit a954555eb7
3 changed files with 11 additions and 15 deletions

View File

@ -413,18 +413,16 @@ export function InvenTreeTable<T extends Record<string, any>>({
...tableProps.params ...tableProps.params
}; };
// Add custom filters if (tableState.queryFilters && tableState.queryFilters.size > 0) {
if (tableState.filterSet.activeFilters) { // Allow override of filters based on URL query parameters
tableState.filterSet.activeFilters.forEach((flt) => {
queryParams[flt.name] = flt.value;
});
}
// Allow override of filters based on URL query parameters
if (tableState.queryFilters) {
for (const [key, value] of tableState.queryFilters) { for (const [key, value] of tableState.queryFilters) {
queryParams[key] = value; queryParams[key] = value;
} }
} else if (tableState.filterSet.activeFilters) {
// Use custom table filters only if not overridden by query parameters
tableState.filterSet.activeFilters.forEach((flt) => {
queryParams[flt.name] = flt.value;
});
} }
// Add custom search term // Add custom search term

View File

@ -137,12 +137,8 @@ export default function InvenTreeTableHeader({
}, [tableState.queryFilters]); }, [tableState.queryFilters]);
const hasCustomFilters = useMemo(() => { const hasCustomFilters = useMemo(() => {
if (hasCustomSearch) { return (tableState?.queryFilters?.size ?? 0) > 0;
return tableState.queryFilters.size > 1; }, [tableState.queryFilters]);
} else {
return tableState.queryFilters.size > 0;
}
}, [hasCustomSearch, tableState.queryFilters]);
return ( return (
<> <>

View File

@ -28,6 +28,8 @@ test('Plugins - Settings', async ({ browser, request }) => {
await navigate(page, 'settings/admin/plugin/'); await navigate(page, 'settings/admin/plugin/');
await clearTableFilters(page); await clearTableFilters(page);
await page.getByLabel('table-search-input').fill('integration'); await page.getByLabel('table-search-input').fill('integration');
await page.waitForTimeout(250);
await page.waitForLoadState('networkidle');
await page await page
.getByRole('row', { name: 'SampleIntegrationPlugin' }) .getByRole('row', { name: 'SampleIntegrationPlugin' })