@controladad/ng-base
Version:
Everything you need for Angular
88 lines (87 loc) • 4.41 kB
TypeScript
import { AfterViewInit, DestroyRef, ElementRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { MatMenuTrigger } from '@angular/material/menu';
import { ItemRecord, ItemRecords$ } from '../../../../core';
import { SelectionModel } from '../../../classes';
import { FormControlExtended } from '@al00x/forms';
import * as i0 from "@angular/core";
interface SelectItem<T> extends ItemRecord<T> {
optional?: boolean;
type?: 'selectAll';
}
export declare class CacSelectOptionsComponent<T> implements OnChanges, AfterViewInit, OnDestroy {
destroyRef: DestroyRef;
readonly SEARCH_OR_ADD_TEXT: string;
readonly SEARCH_TEXT: string;
readonly N_ITEMS_SELECTED_TEXT: string;
readonly CHOOSE_OPTIONAL_VALUE_TEXT: string;
readonly LOADING_TEXT: string;
readonly NO_ITEMS_AVAILABLE_TEXT: string;
trigger: MatMenuTrigger;
wrapperEl: ElementRef<HTMLDivElement>;
filterInputEl?: ElementRef<HTMLInputElement>;
panelEl: ElementRef<HTMLDivElement>;
containerEl: ElementRef<HTMLDivElement>;
control: FormControlExtended;
items?: ItemRecords$<T, any> | undefined;
requiredCharactersForFilter: number;
filterStrategy: 'startWith' | 'includes';
optional?: boolean;
searchable?: boolean;
menuClass?: string;
multiple?: boolean;
showIcons?: boolean;
categories?: ItemRecords$<string | number, any> | undefined;
menuClosed: EventEmitter<any>;
onSelect: EventEmitter<T>;
onKeydown: EventEmitter<KeyboardEvent>;
onMultiSelect: EventEmitter<ItemRecord<T, unknown>[]>;
originalItems$: BehaviorSubject<ItemRecord<T, unknown>[] | undefined>;
categories$: BehaviorSubject<ItemRecord<string | number, unknown>[] | undefined>;
filteredItems$: BehaviorSubject<SelectItem<T>[] | undefined>;
itemsUpdateSub: Subscription;
categoriesUpdateSub: Subscription;
controlSub: Subscription;
customInputSub: Subscription;
currentItemControl: FormControlExtended<SelectItem<T> | null | undefined, any>;
filterControl: FormControlExtended<string, any>;
categoryControl: FormControlExtended<string | number | undefined, any>;
isLoading$: Observable<boolean>;
isClosing: boolean;
isOpening: boolean;
private _initialValue?;
private _instanceOfItems?;
private _recentOptionalItems;
private _customInput?;
protected _selectionModel: SelectionModel<SelectItem<any>>;
currentFocusIndex: import("@angular/core").WritableSignal<number>;
protected _showingOptionalValue: import("@angular/core").WritableSignal<boolean>;
constructor();
ngAfterViewInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
selectItem(item: SelectItem<T>, e?: MouseEvent): void;
selectFirstItem(): void;
selectFocusedItem(): void;
open(): void;
close(): void;
focusNextItem(): void;
focusPrevItem(): void;
onFilterKeyDown(e: KeyboardEvent): void;
setElementToFocus(el: HTMLInputElement): void;
private invokeTypedItemAction;
private scrollToFocusedIndex;
private setFocusIndex;
private updateFocusIndex;
private itemToIndex;
private indexToItem;
private prepareClose;
private setCurrentItemByValue;
private updateSelectionModel;
private markAsTouched;
private markAsDirty;
private valueTypeTransform;
static ɵfac: i0.ɵɵFactoryDeclaration<CacSelectOptionsComponent<any>, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<CacSelectOptionsComponent<any>, "cac-select-options", never, { "control": { "alias": "control"; "required": false; }; "items": { "alias": "items"; "required": false; }; "requiredCharactersForFilter": { "alias": "requiredCharactersForFilter"; "required": false; }; "filterStrategy": { "alias": "filterStrategy"; "required": false; }; "optional": { "alias": "optional"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "menuClass": { "alias": "menuClass"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "showIcons": { "alias": "showIcons"; "required": false; }; "categories": { "alias": "categories"; "required": false; }; }, { "menuClosed": "menuClosed"; "onSelect": "onSelect"; "onKeydown": "onKeydown"; "onMultiSelect": "onMultiSelect"; }, never, never, true, never>;
}
export {};