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:
@ -413,18 +413,16 @@ export function InvenTreeTable<T extends Record<string, any>>({
|
||||
...tableProps.params
|
||||
};
|
||||
|
||||
// Add custom filters
|
||||
if (tableState.filterSet.activeFilters) {
|
||||
tableState.filterSet.activeFilters.forEach((flt) => {
|
||||
queryParams[flt.name] = flt.value;
|
||||
});
|
||||
}
|
||||
|
||||
// Allow override of filters based on URL query parameters
|
||||
if (tableState.queryFilters) {
|
||||
if (tableState.queryFilters && tableState.queryFilters.size > 0) {
|
||||
// Allow override of filters based on URL query parameters
|
||||
for (const [key, value] of tableState.queryFilters) {
|
||||
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
|
||||
|
@ -137,12 +137,8 @@ export default function InvenTreeTableHeader({
|
||||
}, [tableState.queryFilters]);
|
||||
|
||||
const hasCustomFilters = useMemo(() => {
|
||||
if (hasCustomSearch) {
|
||||
return tableState.queryFilters.size > 1;
|
||||
} else {
|
||||
return tableState.queryFilters.size > 0;
|
||||
}
|
||||
}, [hasCustomSearch, tableState.queryFilters]);
|
||||
return (tableState?.queryFilters?.size ?? 0) > 0;
|
||||
}, [tableState.queryFilters]);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
@ -28,6 +28,8 @@ test('Plugins - Settings', async ({ browser, request }) => {
|
||||
await navigate(page, 'settings/admin/plugin/');
|
||||
await clearTableFilters(page);
|
||||
await page.getByLabel('table-search-input').fill('integration');
|
||||
await page.waitForTimeout(250);
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
await page
|
||||
.getByRole('row', { name: 'SampleIntegrationPlugin' })
|
||||
|
Reference in New Issue
Block a user