import { type MultipleSelectInstance, type MultipleSelectOption, type OptionRowData } from 'multiple-select-vanilla'; import type { SlickGrid } from '../core/index.js'; import { type OperatorType, type SearchTerm } from '../enums/index.js'; import type { CollectionService } from '../services/collection.service.js'; import { type RxJsFacade, type Subscription, type TranslaterService } from '../services/index.js'; import type { CollectionCustomStructure, CollectionOption, Column, ColumnFilter, Filter, FilterArguments, FilterCallback, GridOption, Locale } from './../interfaces/index.js'; export declare class SelectFilter implements Filter { protected readonly translaterService?: TranslaterService | undefined; protected readonly collectionService?: CollectionService | undefined; protected readonly rxjs?: RxJsFacade | undefined; protected _isMultipleSelect: boolean; protected _collectionLength: number; protected _collectionObservers: Array void; }>; protected _locales: Locale; protected _msInstance?: MultipleSelectInstance; protected _shouldTriggerQuery: boolean; protected _isLazyDataLoaded: boolean; /** DOM Element Name, useful for auto-detecting positioning (dropup / dropdown) */ elementName: string; /** Filter Multiple-Select options */ filterElmOptions: Partial; /** The DOM element */ filterElm?: HTMLElement; grid: SlickGrid; searchTerms: SearchTerm[] | undefined; columnDef: Column; callback: FilterCallback; defaultOptions: Partial; isFilled: boolean; labelName: string; labelPrefixName: string; labelSuffixName: string; optionLabel: string; valueName: string; enableTranslateLabel: boolean; subscriptions: Subscription[]; filterContainerElm: HTMLElement; /** * Initialize the Filter */ constructor(translaterService?: TranslaterService | undefined, collectionService?: CollectionService | undefined, rxjs?: RxJsFacade | undefined, isMultipleSelect?: boolean); /** Getter for the Collection Options */ protected get collectionOptions(): CollectionOption; get columnId(): string | number; /** Getter for the Filter Operator */ get columnFilter(): ColumnFilter; /** Getter for the Custom Structure if exist */ get customStructure(): CollectionCustomStructure | undefined; /** Getter for the Grid Options pulled through the Grid Object */ get gridOptions(): GridOption; /** Getter to know what would be the default operator when none is specified */ get defaultOperator(): OperatorType; get filterOptions(): MultipleSelectOption; /** Getter to know if the current filter is a multiple-select (false means it's a single select) */ get isMultipleSelect(): boolean; get msInstance(): MultipleSelectInstance | undefined; get selectOptions(): Partial; /** Getter for the Filter Operator */ get operator(): OperatorType; /** Setter for the filter operator */ set operator(operator: OperatorType); /** Initialize the filter template */ init(args: FilterArguments): Promise; /** Clear the filter values */ clear(shouldTriggerQuery?: boolean): void; /** destroy the filter */ destroy(): void; /** * Get selected values retrieved from the multiple-selected element * @params selected items */ getValues(): any[]; /** Set value(s) on the DOM element */ setValues(values: SearchTerm | SearchTerm[], operator?: OperatorType, triggerChange?: boolean): void; /** * Subscribe to both CollectionObserver & PropertyObserver with BindingEngine. * They each have their own purpose, the "propertyObserver" will trigger once the collection is replaced entirely * while the "collectionObverser" will trigger on collection changes (`push`, `unshift`, `splice`, ...) */ protected watchCollectionChanges(): void; protected propertyObserverCallback(newValue: any): void; protected watchCallback(updatedArray: any[]): void; renderDomElement(inputCollection: any[]): void; /** * From the Select DOM Element created earlier, create a Multiple/Single Select Filter using the multiple-select-vanilla.js lib * @param {Object} selectElement */ protected createFilterElement(selectElement: HTMLSelectElement, dataCollection: OptionRowData[]): void; protected filterSortAndParseCollection(inputCollection: any[]): { selectElement: HTMLSelectElement; dataCollection: OptionRowData[]; hasFoundSearchTerm: boolean; }; protected initMultipleSelectTemplate(): void; protected onTriggerEvent(): void; /** add/remove "filled" CSS class */ protected updateFilterStyle(isFilled: boolean): void; protected translateOrDefault(translationKey: string, defaultValue?: string): string; } //# sourceMappingURL=selectFilter.d.ts.map