import { AfterViewInit, OnInit } from '@angular/core'; import type { FilterCategory, FilterMode, FilterProperty, FilterBarLabels, AellaFilterDefinition } from './filter-bar.models'; import { FilterValueSelectorV2Component } from './filter-value-selector-v2.component'; import * as i0 from "@angular/core"; /** * Filter property selector component - Browse and select filter properties * * FEATURES: * - Category-based organization (Alert, Network, User, etc.) * - Search functionality with real-time filtering * - Clear button for quick search reset * - Recent filters section * - Virtual scrolling for large property lists * - Include/Exclude mode toggle * * SEARCH BEHAVIOR: * - Case-insensitive search * - Filters by property label * - Works across all categories or within active category * - Reactivity via Angular signals * * RECOMMENDED FOR AELLA UI: * - Use with FilterCategory to organize 1500+ ES fields * - Search enables quick filter discovery * - Virtual scroll handles large datasets efficiently */ export declare class FilterPropertySelectorComponent implements OnInit, AfterViewInit { private readonly _store; readonly categories: import("@angular/core").InputSignal; readonly properties: import("@angular/core").InputSignal; readonly labels: import("@angular/core").InputSignal; readonly storageKey: import("@angular/core").InputSignal; readonly selectProperty: import("@angular/core").OutputEmitterRef; readonly applyFilter: import("@angular/core").OutputEmitterRef<{ categories: FilterCategory[]; property: FilterProperty; included: (string | number | boolean)[]; excluded: (string | number | boolean)[]; }>; readonly cancelEvent: import("@angular/core").OutputEmitterRef; valueSelector?: FilterValueSelectorV2Component; readonly searchQuery: import("@angular/core").WritableSignal; readonly activeCategory: import("@angular/core").WritableSignal; readonly selectedProperty: import("@angular/core").WritableSignal; readonly collapsed: import("@angular/core").WritableSignal; readonly filterMode: import("@angular/core").WritableSignal; readonly isContentReady: import("@angular/core").WritableSignal; readonly existingFilter: import("@angular/core").Signal; readonly filterDefinition: import("@angular/core").Signal; /** * Recently used properties filtered by category and search query * * Filters: * 1. Only properties marked as recent * 2. By active category (if selected) * 3. By search query (case-insensitive, matches label) */ readonly recentProperties: import("@angular/core").Signal; readonly propertiesScrollerHeight: import("@angular/core").Signal; /** * All properties filtered by category and search query * * CRITICAL FOR AELLA UI: Handles filtering of 1500+ ES fields * * Filters: * 1. By active category (if selected) - reduces list to ~200 fields per category * 2. By search query (case-insensitive) - enables quick discovery * * Example: User types "ip" → filters to src_ip, dst_ip, client_ip, etc. */ readonly filteredProperties: import("@angular/core").Signal; /** * Effect: Auto-select first property when category changes * * When a category is clicked: * - If currently selected property is NOT in the new category → select first property * - If no property is selected → select first property * - If selected property IS in the new category → keep it selected */ constructor(); /** * Initialize component - auto-select first property on load */ /** * LocalStorage key helper - scopes keys by storageKey (e.g., tenant ID) */ private _getStorageKey; ngOnInit(): void; ngAfterViewInit(): void; /** * Handle category selection * * Sets the active category and triggers the effect that auto-selects * the first property in the new category if needed. */ onSelectCategory(category: FilterCategory | null): void; onSelectProperty(prop: FilterProperty): void; onValueApply(event: { included: any[]; excluded: any[]; }): void; onValueCancel(): void; onApplyClick(): void; onToggleCollapsed(): void; private static readonly VALUE_TYPE_LABELS; getTypeLabel(prop: FilterProperty): string; /** * TrackBy function for virtual scroll performance */ trackByPropertyId(index: number, item: FilterProperty): string; /** * Load active category from localStorage */ private _loadActiveCategory; /** * Load selected property ID from localStorage */ private _loadSelectedPropertyId; /** * Load collapsed state from localStorage */ private _loadCollapsedState; /** * Save active category to localStorage */ private _saveActiveCategory; /** * Save selected property to localStorage */ private _saveSelectedProperty; /** * Save collapsed state to localStorage */ private _saveCollapsedState; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }