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
|
...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
|
||||||
|
@ -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 (
|
||||||
<>
|
<>
|
||||||
|
@ -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' })
|
||||||
|
Reference in New Issue
Block a user