@@ -34,16 +34,21 @@ function matchesSearch<T extends GenericObject>(item: T, search?: QueryParams<T>
34
34
}
35
35
36
36
function 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 )
38
39
if ( ! _filters || _filters . length === 0 )
39
40
return true
40
41
const isGroup = _filters . every ( filter => 'filters' in filter )
41
42
const groupOperator = getOperator ( typeof filters === 'object' && 'operator' in filters ? filters . operator : 'OR' )
42
43
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
+
45
50
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 ) => {
47
52
const value = getObjectProperty ( item , filter . key )
48
53
const operator = getOperator ( filter . operator )
49
54
const params = ( ! ( 'params' in filter ) ? null : typeof filter . params === 'function' ? filter . params ( filter . value ) : filter . params ) ?? null
0 commit comments