diff --git a/components/AdsPerformance.tsx b/components/AdsPerformance.tsx index 6e1578a..8f164ea 100644 --- a/components/AdsPerformance.tsx +++ b/components/AdsPerformance.tsx @@ -260,12 +260,19 @@ const AdsPerformance: React.FC = ({ } if (searchTerm) { - const lowSearch = searchTerm.toLowerCase(); - result = result.filter(item => - item.asin.toLowerCase().includes(lowSearch) || - item.sku.toLowerCase().includes(lowSearch) || - item.title.toLowerCase().includes(lowSearch) - ); + const searchTerms = searchTerm.toLowerCase().split(/[\s,]+/).filter(term => term.length > 0); + if (searchTerms.length > 0) { + result = result.filter(item => { + const rowValues = [ + item.asin.toLowerCase(), + item.sku.toLowerCase(), + item.title.toLowerCase() + ]; + return searchTerms.some(term => + rowValues.some(val => val.includes(term)) + ); + }); + } } // Apply WOC Filter diff --git a/components/ForecastView.tsx b/components/ForecastView.tsx index 95835bf..2b8d614 100644 --- a/components/ForecastView.tsx +++ b/components/ForecastView.tsx @@ -276,11 +276,19 @@ const ForecastView: React.FC = ({ } if (debouncedSearch) { - result = result.filter(p => - p.sku.toLowerCase().includes(debouncedSearch) || - p.asin.toLowerCase().includes(debouncedSearch) || - p.title.toLowerCase().includes(debouncedSearch) - ); + const searchTerms = debouncedSearch.toLowerCase().split(/[\s,]+/).filter(term => term.length > 0); + if (searchTerms.length > 0) { + result = result.filter(p => { + const rowValues = [ + p.sku.toLowerCase(), + p.asin.toLowerCase(), + p.title.toLowerCase() + ]; + return searchTerms.some(term => + rowValues.some(val => val.includes(term)) + ); + }); + } } // Apply WOC Filter diff --git a/components/WeeklyGrid.tsx b/components/WeeklyGrid.tsx index 8d1b6f0..81fcd8f 100644 --- a/components/WeeklyGrid.tsx +++ b/components/WeeklyGrid.tsx @@ -248,13 +248,20 @@ const WeeklyGrid: React.FC = ({ // Search Filter if (debouncedSearch) { - const lowSearch = debouncedSearch.toLowerCase(); - result = result.filter(r => - r.sku.toLowerCase().includes(lowSearch) || - r.asin.toLowerCase().includes(lowSearch) || - r.title.toLowerCase().includes(lowSearch) || - r.line.toLowerCase().includes(lowSearch) - ); + const searchTerms = debouncedSearch.toLowerCase().split(/[\s,]+/).filter(t => t.length > 0); + if (searchTerms.length > 0) { + result = result.filter(r => { + const rowValues = [ + r.sku.toLowerCase(), + r.asin.toLowerCase(), + r.title.toLowerCase(), + r.line.toLowerCase() + ]; + return searchTerms.some(term => + rowValues.some(val => val.includes(term)) + ); + }); + } } // Growth Filter (if active)