createArrayFilter
Description
The function takes filter value as an input and returns a filtered arrayIt uses the createFilter
helper inside.
Usage
createArrayFilter(
cfg: {
glue?: "and" | "or",
rules: {
field: string,
type?: "date" | "number" | "text" | "tuple",
predicate?: "month" | "year",
filter?: string,
value?: string | number | Date,
includes?: any[],
}[];
},
options?: { orNull?: boolean }
): ((data: any[]) => any[]) | null;
Parameters
cfg
- (required) filter settings:glue
- (optional) the logic for combining filtering rules:"and"
(default) - displays records that satisfy all rules"or"
- displays records that satisfy at least one rule
rules
- (required) an array of filtering rules. Each rule object can be an individual rule or a nested group (IFilterSet
). Each rule has the following properties:field
- (required) the ID of the field; must match the corresponding field in thefields
arraytype
- (optional) filter type:"text"
(default) |"number"
|"date"
|"tuple"
predicate
- (optional) date part extractor for date fields:"month"
|"year"
filter
- (optional) the filter operator available for this typevalue
- (optional) the value to filter byincludes
- (optional) an array of values to include
options
- (optional) behavior when no rules are set:orNull: true
- returnsnull
when there are no rulesorNull: false
(default) - returns the array
Returns
A function takes an array and returns its filtered copy.
Example
This example demonstrates how to use createArrayFilter
to generate a function to filter a data array.
<script>
import { getData } from "../data";
import { FilterBuilder, createArrayFilter } from "@svar-ui/svelte-filter";
const { value, fields, options, data } = getData();
let filteredData = $state([]);
function applyFilter(value) {
const filter = createArrayFilter(value);
filteredData = filter(data);
}
// Apply initial filter
applyFilter(value);
</script>
<FilterBuilder
{value}
{fields}
{options}
onchange={({ value }) => applyFilter(value)}
/>