@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
27 lines (26 loc) • 1.54 kB
TypeScript
import { type Provider, type ProviderToken, type Type } from '@angular/core';
import { type TuiContext } from '@taiga-ui/cdk/types';
import { PolymorpheusComponent, type PolymorpheusContent } from '@taiga-ui/polymorpheus';
import { type BehaviorSubject, Observable, type Observer } from 'rxjs';
import { TuiIdService } from './id.service';
import * as i0 from "@angular/core";
export interface TuiPopoverContext<O> extends TuiContext<Observer<O>> {
readonly component: PolymorpheusComponent<any>;
readonly createdAt: number;
readonly id: string;
readonly completeWith: (value: O) => void;
}
export type TuiPopover<T, O> = T & TuiPopoverContext<O> & {
content: PolymorpheusContent<T & TuiPopoverContext<O>>;
};
export declare abstract class TuiPopoverService<T, K = void> {
protected readonly options: T;
protected readonly component: PolymorpheusComponent<any>;
protected readonly id: TuiIdService;
protected readonly items$: BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>;
constructor(items: ProviderToken<BehaviorSubject<ReadonlyArray<TuiPopover<T, any>>>>, component: Type<any>, options?: T);
open<G = void>(content: PolymorpheusContent<T & TuiPopoverContext<K extends void ? G : K>>, options?: Partial<T>): Observable<K extends void ? G : K>;
static ɵfac: i0.ɵɵFactoryDeclaration<TuiPopoverService<any, any>, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TuiPopoverService<any, any>>;
}
export declare function tuiAsPopover(popover: Type<TuiPopoverService<any>>): Provider;