ngx-light-modal
Version:
Lightweight and dependency-free Angular modal package using standalone components. Supports stacking, backdrops, dynamic injection, and custom content components.
98 lines (91 loc) • 4.29 kB
TypeScript
import * as _angular_core from '@angular/core';
import { ComponentRef, Injector, ApplicationRef, EnvironmentInjector, Type, ViewContainerRef, ElementRef } from '@angular/core';
import { Observable } from 'rxjs';
declare enum CloseState {
EXITED = "EXITED",
BACKDROP_DISMISS = "BACKDROP_DISMISS",
CLOSE_BUTTON = "CLOSE_BUTTON",
ESCAPE = "ESCAPE",
SUBMITTED = "SUBMITTED",
CANCELLED = "CANCELLED"
}
interface CloseResult<T = any> {
state: CloseState;
data?: T;
}
interface ModalConfig {
showBackdrop?: boolean;
dismissOnBackdropClick?: boolean;
showCloseButton?: boolean;
escapeKeyClose?: boolean;
backdropClass?: string;
modalClass?: string;
}
declare class ModalRef<T = any> {
componentInstance: any;
readonly id: number;
private _afterClosed;
private _beforeClosed;
private _afterOpened;
afterClosed$: Observable<CloseResult<T>>;
beforeClosed$: Observable<void>;
afterOpened$: Observable<void>;
contentRef?: ComponentRef<any>;
constructor(componentInstance: any, id: number);
onSubmitted(): Observable<CloseResult<T>>;
onEscaped(): Observable<CloseResult<T>>;
onBackdropDismiss(): Observable<CloseResult<T>>;
onStateClose(state: CloseState): Observable<CloseResult<T>>;
onCancelled(): Observable<CloseResult<T>>;
onUserDismissed(): Observable<CloseResult<T>>;
close(result?: any, state?: CloseState): void;
notifyAfterOpened(): void;
private getStateObservable;
}
declare class ModalService {
private injector;
private appRef;
private environmentInjector;
private modalStack;
private contentComponentRegistry;
constructor(injector: Injector, appRef: ApplicationRef, environmentInjector: EnvironmentInjector);
open<T>(component: Type<T>, data?: Partial<T>, config?: ModalConfig): ModalRef<T>;
private generateModalId;
getModalRef(contentComponent: unknown): ModalRef | undefined;
private cleanupModal;
getTopModal(): ModalRef | undefined;
isTopModal(modalRef: ModalRef): boolean;
private closeSource;
onClose$(): Observable<CloseResult>;
onStateClose$(state: CloseState): Observable<CloseResult>;
onSubmitted$(): Observable<CloseResult>;
onDismissed$(): Observable<CloseResult>;
onEscaped$(): Observable<CloseResult>;
notifyClose(result: CloseResult): void;
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalService, never>;
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModalService>;
}
declare class ModalContainerComponent {
modalContent: ViewContainerRef;
modal: ElementRef;
modalRef: ModalRef;
contentComponent: ComponentRef<any>;
modalService: ModalService;
showBackdrop: _angular_core.InputSignal<boolean>;
dismissOnBackdropClick: _angular_core.InputSignal<boolean>;
showCloseButton: _angular_core.InputSignal<boolean>;
escapeKeyClose: _angular_core.InputSignal<boolean>;
modalClass: _angular_core.InputSignal<string>;
backdropClass: _angular_core.InputSignal<string>;
zIndex: _angular_core.InputSignal<number>;
focus(): void;
handleEscape(event: KeyboardEvent): void;
createComponent<T>(component: Type<T>): ComponentRef<any>;
onBackdropClick(event: MouseEvent): void;
closeWithButton(): void;
close(state: CloseState): void;
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalContainerComponent, never>;
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalContainerComponent, "app-modal-container", never, { "showBackdrop": { "alias": "showBackdrop"; "required": true; "isSignal": true; }; "dismissOnBackdropClick": { "alias": "dismissOnBackdropClick"; "required": true; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": true; "isSignal": true; }; "escapeKeyClose": { "alias": "escapeKeyClose"; "required": true; "isSignal": true; }; "modalClass": { "alias": "modalClass"; "required": true; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}
export { CloseState, ModalContainerComponent, ModalRef, ModalService };
export type { CloseResult, ModalConfig };