ComponentsComplex
Filter Builder
Visual query builder for constructing complex filter conditions
The Filter Builder component provides a visual interface for creating complex filter queries with support for nested conditions and multiple operators.
Basic Usage
Empty Filter Builder
With Initial Conditions
With Conditions
Schema
interface FilterField {
value: string; // Field identifier
label: string; // Display label
type?:
| 'text' | 'number' | 'currency' | 'percent' | 'rating'
| 'date' | 'datetime' | 'time'
| 'boolean'
| 'select' | 'status'
| 'lookup' | 'master_detail' | 'user' | 'owner'; // Field type
options?: Array<{ value: string; label: string }>; // Static options (select-like)
// Lookup-like fields without `options` render a remote-search picker that
// queries the configured DataSource. The metadata below describes how to
// resolve and display referenced records:
referenceTo?: string; // Referenced object name (e.g. "user")
displayField?: string; // Display field on referenced object (default "name")
idField?: string; // Id field on referenced object (default "id")
}
interface FilterCondition {
id: string; // Condition identifier
field: string; // Field to filter on
operator: string; // Comparison operator
value: any; // Filter value
}
interface FilterGroup {
id: string; // Group identifier
logic: 'and' | 'or'; // Logic operator (AND/OR)
conditions: (FilterCondition | FilterGroup)[]; // Conditions or nested groups
}
interface FilterBuilderSchema {
type: 'filter-builder';
// Required
name: string; // Field name for form submission
fields: FilterField[]; // Available fields for filtering
// Configuration
label?: string; // Component label
value?: FilterGroup; // Initial/controlled filter value
allowGroups?: boolean; // Allow nested groups (default: true)
maxDepth?: number; // Maximum nesting depth (default: 3)
// Events
onChange?: (filter: FilterGroup) => void; // Change handler
// Styling
className?: string; // Tailwind CSS classes
wrapperClass?: string; // Wrapper container classes
// Base properties
id?: string;
visible?: boolean | string;
testId?: string;
}Examples
Product Filters
Product Search
User Query Builder
User Filters
Advanced Query
Search Interface
Supported Operators
The Filter Builder supports various comparison operators based on field type:
- Text fields: equals, not equals, contains, starts with, ends with
- Number fields: equals, not equals, greater than, less than, between
- Date fields: equals, before, after, between
- Boolean fields: is true, is false
Use Cases
- Search interfaces: Build advanced search forms
- Data filtering: Filter large datasets in tables
- Report generation: Create custom report criteria
- Query builders: Visual SQL/NoSQL query construction
- Access control: Define permission rules