import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, Renderer2, TemplateRef } from '@angular/core'; import { ControlValueAccessor, FormControl } from '@angular/forms'; import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { UniqueIdService } from '@ironsource/fusion-ui/services/unique-id'; import { ClonePipe } from '@ironsource/fusion-ui/pipes/clone'; import { FilterByFieldPipe } from '@ironsource/fusion-ui/pipes/collection'; import { DynamicComponentConfiguration } from '@ironsource/fusion-ui/components/dynamic-components/common/entities'; import { SharedEventsService } from '@ironsource/fusion-ui/services/events-handler'; import { IconData } from '@ironsource/fusion-ui/components/icon/v1'; import { DropdownService } from '@ironsource/fusion-ui/components/dropdown/service'; import { DropdownOption } from '@ironsource/fusion-ui/components/dropdown-option/entities'; import { DropdownSearchComponent } from '@ironsource/fusion-ui/components/dropdown-search'; import { DropdownSelectComponent } from '@ironsource/fusion-ui/components/dropdown-select'; import { DropdownSelectConfigurations } from '@ironsource/fusion-ui/components/dropdown-select/entities'; import { BackendPagination, ClosedOptions, DropdownPlaceholderConfiguration, DropdownTriggerMode } from '@ironsource/fusion-ui/components/dropdown/entities'; import { ApiBase } from '@ironsource/fusion-ui/components/api-base'; import { DropdownTestIdModifiers } from '@ironsource/fusion-ui/entities'; import { TestIdsService } from '@ironsource/fusion-ui/services/test-ids'; import * as i0 from "@angular/core"; export declare abstract class DropdownBaseComponent extends ApiBase implements OnInit, OnDestroy, OnChanges, ControlValueAccessor { /** @ignore */ dropdownService: DropdownService; protected uniqueIdService: UniqueIdService; protected element: ElementRef; protected renderer: Renderer2; protected filterByFieldPipe: FilterByFieldPipe; /** @ignore */ cdr: ChangeDetectorRef; protected clonePipe: ClonePipe; protected sharedEventsService: SharedEventsService; protected injector: Injector; testId: string; set options(value: DropdownOption[]); /** @ignore */ set optionsGroups(value: Array); /** @ignore */ optionsChange: EventEmitter; /** @ignore */ selected: DropdownOption[]; /** @ignore */ selectedChange: EventEmitter; /** @internal */ placeholderPrefix: string; /** @internal */ searchPlaceholder: string; /** @internal */ placeholderWidth: string; /** @ignore - add to story later*/ dynamicPlaceholder: DynamicComponentConfiguration; /** * @deprecated since version 6.0.0 * @ignore */ icon: IconData; /** @internal */ filterIconName: string; /** @internal */ isIconRightPosition: boolean; /** @internal */ isDisabled: boolean; /** @internal */ readonly: boolean; /** @internal */ search: boolean; /** @internal */ autoComplete: boolean; /** @internal */ mappingOptions: any; /** @internal */ limitOptions: number; /** @internal */ set placeholderLocation(location: 'right' | 'left'); /** @internal */ set loading(value: boolean); /** @ignore */ strictSearch: boolean; /** @ignore */ arrowNavigation: boolean; /** @internal */ set error(error: string); get error(): string; /** @ignore */ set optionsTitle(value: string); /** @ignore */ get optionsTitle(): string; /** @ignore */ optionRightHoverText: any; /** @ignore */ changeConfirmation: () => Promise; /** @ignore */ optionCloseIcon: boolean; /** @ignore */ helper: string; /** @ignore */ set backendPagination(value: BackendPagination); /** @ignore */ isTabMode: boolean; /** @ignore */ isMultiRawDisplay: boolean; /** @internal */ set placeholder(value: string | DropdownPlaceholderConfiguration); /** @ignore */ optionsRenderByHover: boolean; /** @internal */ searchByProperties?: string[]; /** @internal */ searchChange: EventEmitter; /** @internal */ searchClear: EventEmitter; /** @internal */ optionCloseIconClicked: EventEmitter; /** @internal */ closed: EventEmitter; /** @ignore */ optionsHolderElRef: ElementRef; /** @ignore */ searchComponent: DropdownSearchComponent; /** @ignore */ selectComponent: DropdownSelectComponent; /** @ignore */ chipContent: TemplateRef; /** @ignore */ trigger: ElementRef; /** @ignore */ onDestroy$: Subject; /** @ignore */ forcePlaceholderOnSelection: boolean; /** @ignore */ placeholderText: string; /** @ignore */ placeholderIcon: IconData; /** @ignore */ isOpen$: BehaviorSubject; /** @ignore */ id: any; /** @ignore */ searchValue: FormControl; /** @ignore */ subject: Subject; /** @ignore */ labelImageSrc: string; /** @ignore */ labelFlag: string; /** @ignore */ isPredefinedTags: boolean; /** @ignore */ isNotFoundPredefined: boolean; /** @ignore */ isLoadingManuallyChanged: boolean; /** @ignore */ pagination: { latestScrollHeight: any; counter: number; lastCounter: number; percentScrollDown: number; oneTimeFlagScroll: boolean; }; /** @ignore */ placeholder$: BehaviorSubject; /** @ignore */ searchPlaceholder$: BehaviorSubject; /** @ignore */ backendPaginationChanged$: Subject; /** @ignore */ displayedOptions$: BehaviorSubject; /** @ignore */ displayedOptionsObservable$: Observable; /** @ignore */ dropdownArrowIconName: { iconName: string; iconVersion: string; }; /** @ignore */ isAllSelected: boolean; /** @ignore */ isIndeterminate: boolean; /** @ignore */ optionSelected$: BehaviorSubject; /** @ignore */ chipDefaultContent: string; protected _triggerMode: DropdownTriggerMode; private _optionsTitle; protected _error: string; private _isLocatedRight; private _isLocatedLeft; private initPlaceholder; protected isDisabledForm: boolean; private initIcon; protected focusedLI: number; private loadingState; private backendPaginationState; private backendPaginationTotalResult; private backendPaginationPageNumber; private filteredOptionsState; protected optionsState: DropdownOption[]; /** @ignore */ dropdownSelectConfigurations$: BehaviorSubject; private parentWithOverflow; testIdDropdownModifiers: typeof DropdownTestIdModifiers; testIdsService: TestIdsService; get testAttribute(): string; get filteredOptions(): DropdownOption[]; get hasScroll(): boolean; get isLocatedLeft(): boolean; get isLocatedRight(): boolean; get loading(): boolean; get options(): DropdownOption[]; get isMulti(): boolean; constructor( /** @ignore */ dropdownService: DropdownService, uniqueIdService: UniqueIdService, element: ElementRef, renderer: Renderer2, filterByFieldPipe: FilterByFieldPipe, /** @ignore */ cdr: ChangeDetectorRef, clonePipe: ClonePipe, sharedEventsService: SharedEventsService, injector: Injector); ngOnInit(): void; /** @ignore */ getDropdownSelectConfigurations(): DropdownSelectConfigurations; ngOnDestroy(): void; ngOnChanges(changes: any): void; /** @ignore */ initListeners(): void; /** * Subscribe for that search text as been changed * @ignore */ onSearchChange(): void; /** * Open dropdown windows * @ignore */ openDropdown(event: MouseEvent): void; private _onDropdownOpened; /** * Close dropdwn windows * @ignore */ closeDropdown({ clickOutside }?: ClosedOptions): void; /** * Set a label to dropdown main button * @ignore */ setLabel(): void; /** @ignore */ getHolderCSSClasses(): string[]; /** @ignore */ parseOptions(options: DropdownOption[]): DropdownOption[]; /** @ignore */ isSelected(option: any): boolean; /** * Add arrows key navigation for the drop-down * @ignore */ keyEvent(event: KeyboardEvent): void; /** @ignore */ onScroll($event: any): void; /** * select / remove option from selected list * @ignore */ changeSelected({ option, $event }: { option?: any; $event?: any; }): void; /** @ignore */ changeConfig(val: string): void; /** @ignore */ valueSelected(): Observable<{ value: any; isSelected: boolean; }>; /** @ignore */ open(): void; /** @ignore */ onCloseIconClicked(option: DropdownOption): void; private doChanges; /** * clear all options and notify. * @ignore */ clearOptions(): void; /** * event from directive on outside component click * @ignore */ onOutsideClick(target?: any): void; private getFirstSelectedLabel; private cloneOptions; private setLIFocused; private setOptionsAndLabel; private onBackendPaginationChanged; private onScrollReachEnd; private sortOptions; private isScrollReachEnd; /** * Calculate if need options open above */ protected calcOptionHolderPosition(): void; /** * Find first parent element with style overflow in 'auto', 'hidden', 'scroll' * - childEl */ private getParentWithOverflow; protected resetOptionsStyle(): void; /** * Method to call when the component value has changes. * @ignore */ propagateChange: (_: DropdownOption[]) => void; /** * update value from model to the component * @ignore */ writeValue(value: any): void; /** @ignore */ registerOnChange(fn: any): void; /** @ignore */ registerOnTouched(): void; /** @ignore */ setDisabledState?(isDisabled: boolean): void; private getDisplayedOptionsObservable; private apiBaseListeners; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; }