@@ -24,13 +24,23 @@ export const filterBuyItems = ({
2424 applyPriceFilter = false ,
2525 applyQueryFilter = false ,
2626} : FilterParams ) => {
27+ const normalizeQuery = ( value : string ) => value . toLowerCase ( ) . replace ( / \s + / g, ' ' ) . trim ( ) ;
28+ const compactQuery = ( value : string ) => normalizeQuery ( value ) . replace ( / \s + / g, '' ) ;
2729 const trimmedQuery = query . trim ( ) ;
30+ const normalizedQuery = normalizeQuery ( query ) ;
31+ const compactedQuery = compactQuery ( query ) ;
2832
2933 return items . filter ( ( item ) => {
3034 if ( skipServerSyncedFilters ) {
3135 const matchesManufacturer =
3236 ! applyManufacturerFilter || selectedManufacturers . length === 0 || selectedManufacturers . includes ( item . brand ) ;
33- const matchesQuery = ! applyQueryFilter || trimmedQuery . length === 0 || item . title . includes ( trimmedQuery ) ;
37+ const matchesQuery =
38+ ! applyQueryFilter ||
39+ trimmedQuery . length === 0 ||
40+ normalizeQuery ( item . title ) . includes ( normalizedQuery ) ||
41+ normalizeQuery ( item . model ) . includes ( normalizedQuery ) ||
42+ compactQuery ( item . title ) . includes ( compactedQuery ) ||
43+ compactQuery ( item . model ) . includes ( compactedQuery ) ;
3444 if ( ! applyPriceFilter ) {
3545 return matchesManufacturer && matchesQuery ;
3646 }
@@ -62,7 +72,12 @@ export const filterBuyItems = ({
6272 }
6373 return item . priceValue >= range . min && item . priceValue < range . max ;
6474 } ) ;
65- const matchesQuery = trimmedQuery . length === 0 || item . title . includes ( trimmedQuery ) ;
75+ const matchesQuery =
76+ trimmedQuery . length === 0 ||
77+ normalizeQuery ( item . title ) . includes ( normalizedQuery ) ||
78+ normalizeQuery ( item . model ) . includes ( normalizedQuery ) ||
79+ compactQuery ( item . title ) . includes ( compactedQuery ) ||
80+ compactQuery ( item . model ) . includes ( compactedQuery ) ;
6681
6782 return matchesManufacturer && matchesModel && matchesPrice && matchesQuery ;
6883 } ) ;
0 commit comments