debug: add console logs to trace filter state + stopPropagation on popover

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Christian Vidal Wolf
2026-04-08 19:59:11 +02:00
co-authored by Claude Sonnet 4.6
parent d3675bba0b
commit e24e3e5067
2 changed files with 18 additions and 6 deletions
+5 -2
View File
@@ -34,10 +34,13 @@ export function ColumnFilterPopover({
const isAllSelected = selectedValues.length === uniqueValues.length && uniqueValues.length > 0; const isAllSelected = selectedValues.length === uniqueValues.length && uniqueValues.length > 0;
return ( return (
<div className={cn( <div
className={cn(
"absolute top-full left-0 mt-1 w-64 bg-slate-800 border border-slate-700 rounded-lg shadow-2xl z-50 p-3 flex flex-col gap-3 animate-in fade-in zoom-in-95 duration-100", "absolute top-full left-0 mt-1 w-64 bg-slate-800 border border-slate-700 rounded-lg shadow-2xl z-50 p-3 flex flex-col gap-3 animate-in fade-in zoom-in-95 duration-100",
className className
)}> )}
onClick={(e) => e.stopPropagation()}
>
{title && <div className="text-[10px] font-bold text-slate-500 uppercase tracking-wider px-1">{title}</div>} {title && <div className="text-[10px] font-bold text-slate-500 uppercase tracking-wider px-1">{title}</div>}
<div className="relative"> <div className="relative">
+11 -2
View File
@@ -64,6 +64,7 @@ export function ProductDescriptions({ data, onEdit, rowStatuses }: ProductDescri
if (licenseFilter) result = result.filter(r => r.row[COLUMNS.LICENSE] === licenseFilter); if (licenseFilter) result = result.filter(r => r.row[COLUMNS.LICENSE] === licenseFilter);
// Column-specific filters (Excel-like) // Column-specific filters (Excel-like)
console.log('[Filter] applying columnFilters:', columnFilters, 'result count before:', result.length);
Object.entries(columnFilters).forEach(([colIdx, selectedValues]) => { Object.entries(columnFilters).forEach(([colIdx, selectedValues]) => {
const col = Number(colIdx); const col = Number(colIdx);
const vals = selectedValues as string[]; const vals = selectedValues as string[];
@@ -77,7 +78,12 @@ export function ProductDescriptions({ data, onEdit, rowStatuses }: ProductDescri
}); });
} else { } else {
// For other columns, use regular value matching // For other columns, use regular value matching
result = result.filter(r => vals.includes(String(r.row[col] || ''))); const before = result.length;
result = result.filter(r => {
const cellVal = String(r.row[col] ?? '').trim();
return vals.some(v => v.trim() === cellVal);
});
console.log('[Filter] col', col, 'vals', vals, 'before:', before, 'after:', result.length);
} }
} }
}); });
@@ -121,12 +127,15 @@ export function ProductDescriptions({ data, onEdit, rowStatuses }: ProductDescri
}; };
const toggleColumnFilter = (col: number, value: string) => { const toggleColumnFilter = (col: number, value: string) => {
console.log('[Filter] toggleColumnFilter called, col:', col, 'value:', JSON.stringify(value));
setColumnFilters(prev => { setColumnFilters(prev => {
const current = prev[col] || []; const current = prev[col] || [];
const next = current.includes(value) const next = current.includes(value)
? current.filter(v => v !== value) ? current.filter(v => v !== value)
: [...current, value]; : [...current, value];
return { ...prev, [col]: next }; const updated = { ...prev, [col]: next };
console.log('[Filter] new columnFilters:', updated);
return updated;
}); });
setPage(1); setPage(1);
}; };