Filters
The Filters api can be accessed from finder.filters.
Type Signature
finder.filters {
// Processed filter values keyed by filter rule id.
// If the rule has a defaultValue and no local state, the default will be returned.
// If a rule is required, the first valid option will be returned if possible.
values: {[filter.id]: any}
// Raw Filter values keyed by filter rule id.
// This is the raw state without any processing.
raw: {[filter.id]: any}
// Flat array of active rules.
// A filter rule is considered active if the rule has `required:true`, or has any defined value.
activeRules: FilterRule[]
// All rules, active or not. Useful for building control interfaces.
rules: FilterRule[]
// A filter rule is considered active if the rule has `required:true`, or has any defined value.
isActive(identifier: string | FilterRule) : boolean
// The processed value for a filter rule.
// If the rule has a defaultValue and no local state, the default will be returned.
// If a rule is required, the first valid option will be returned if possible.
get(identifier: string | FilterRule): any
// Check the processed value for a filter rule or option.
// For a boolean rule, if required or set, it will return true.
// For rules with multiple options, you can pass an option to see if that value is selected.
has(identifier: string | FilterRule, optionValue?: FilterOption | any): boolean
// Retrieve the hydrated version of the filter rule.
getRule(identifier: string | FilterRule): HydratedFilterRule | Error
// Toggle a boolean filter or an option for a multiple filter.
toggle(identifier: string | FilterRule, optionValue?: FilterOption | any): void
// Set a filter value.
set(identifier: string | FilterRule, value: any): void
// Delete the internal state for this rule.
// If value is passed and the rule has multiple values, only that value will be removed.
delete(identifier: string | FilterRule, value: any)
// Test an array of filter rules against the items array. Useful for building input controls.
test(options: { rules?: FilterRule[]; values?: any; context?: FContext; isAdditive?: boolean;})
// Test a filter rule against the items array. Useful for building input controls.
testRule(options: rule?: FilterRule; value?: any; context?: FContext; isAdditive?: boolean;})
// Test every option in a filter against the items array. Useful for building input controls.
testRuleOptions(rule: string | FilterRule; isAdditive?: boolean;})
}
Example Usage
function FilterControlList() {
const finder = useFinder();
return finder.rules.map((rule) => {
const value = finder.filter.get(rule);
return (
<FilterControl
rule={rule}
value={value}
onChange((incomingValue:any) => finder.filters.set(incomingValue))
key={rule.id}
/>
);
})
}