@@ -34,16 +34,21 @@ function matchesSearch<T extends GenericObject>(item: T, search?: QueryParams<T>
3434}
3535
3636function matchesFilters < T extends GenericObject > ( item : T , filters ?: FilterOptions ) : boolean {
37- const _filters = ( typeof filters === 'object' && ( 'groups' in filters ) ? filters . groups : filters ) ?? [ ]
37+ const _filters = ( ( typeof filters === 'object' && ( 'groups' in filters ) ? filters . groups : filters ) ?? [ ] )
38+ . filter ( filter => filter . condition ?.( ) ?? true )
3839 if ( ! _filters || _filters . length === 0 )
3940 return true
4041 const isGroup = _filters . every ( filter => 'filters' in filter )
4142 const groupOperator = getOperator ( typeof filters === 'object' && 'operator' in filters ? filters . operator : 'OR' )
4243 const method = isGroup ? ( groupOperator === 'AND' ? 'every' : 'some' ) : 'every'
43- return _filters . filter ( filter => filter . condition ?.( ) ?? true ) [ method ] ( ( group : QueryFilter | QueryFilterGroup ) => {
44- const groupFilters = 'filters' in group ? group . filters : [ group ]
44+ return _filters [ method ] ( ( group : QueryFilter | QueryFilterGroup ) => {
45+ const groupFilters = ( 'filters' in group ? group . filters : [ group ] )
46+ . filter ( filter => filter . condition ?.( ) ?? true )
47+ if ( groupFilters . length === 0 )
48+ return true
49+
4550 const op = 'filters' in group ? group . operator : 'OR'
46- return groupFilters . filter ( filter => filter . condition ?. ( ) ?? true ) [ op === 'AND' ? 'every' : 'some' ] ( ( filter : QueryFilter ) => {
51+ return groupFilters [ op === 'AND' ? 'every' : 'some' ] ( ( filter : QueryFilter ) => {
4752 const value = getObjectProperty ( item , filter . key )
4853 const operator = getOperator ( filter . operator )
4954 const params = ( ! ( 'params' in filter ) ? null : typeof filter . params === 'function' ? filter . params ( filter . value ) : filter . params ) ?? null
0 commit comments