import { ComponentType, Overlay, OverlayContainer, ScrollStrategy } from '@angular/cdk/overlay'; import { InjectionToken, Injector, OnDestroy, TemplateRef } from '@angular/core'; import { SafeAny } from '@ngx-simple/core/types'; import { Observable, Subject } from 'rxjs'; import { SimDialogConfig } from './dialog-config'; import { SimDialogRef } from './dialog-ref'; /** dialog 传递数据 */ export interface DialogResolve { /** 传递数据 */ resolve: T; /** 是否编辑模式 */ editMode?: boolean; /** 标题 */ heading?: string; /** 提交按钮名称 */ buttonText?: string; } /** dialog 返回数据 */ export declare type DialogResult = T; /** * dialog 关闭回调结果 * @param ignore 忽略undefined 如果用户不传递值将为`undefined`视为不处理值,如果需要处理可以设为`true` * * 我们可以有效忽略不传递值不需要执行`subscribe`方法的情况: * - 键盘Esc、空格键关闭 * - 点击遮罩背景关闭 * - [simDialogClose], [sim-dialog-close] 指令关闭不传递值 * - 使用`SimDialogRef.close()`关闭不传递值 */ export declare const toDialogResult: (ignore?: boolean) => (source: Observable) => Observable; /** 注入令牌,可用于指定默认对话框选项 */ export declare const SIM_DIALOG_DEFAULT_OPTIONS: InjectionToken>; /** 注入令牌,可用于访问传递到对话框的数据 */ export declare const SIM_DIALOG_DATA: InjectionToken; /** 注入令牌,用于在对话框打开时确定滚动处理。 */ export declare const SIM_DIALOG_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>; export declare function SIM_DIALOG_SCROLL_STRATEGY_FACTORY(): () => ScrollStrategy; export declare function SIM_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => ScrollStrategy; export declare const SIM_DIALOG_SCROLL_STRATEGY_PROVIDER: { provide: InjectionToken<() => ScrollStrategy>; deps: (typeof Overlay)[]; useFactory: typeof SIM_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY; }; export declare class SimDialogService implements OnDestroy { private _overlay; private _injector; private _defaultOptions; private _parentDialog; private _overlayContainer; /** 跟踪当前打开的对话框。 */ get openDialogs(): Array>; /** 在打开对话框之后发出的流 */ get afterOpened(): Subject>; get _afterAllClosed(): Subject; /** * 当所有打开的对话框完成关闭时发出的流。 如果没有打开的对话框,将在订阅时发出。 */ readonly afterAllClosed: Observable; private _openDialogsAtThisLevel; private readonly _afterAllClosedAtThisLevel; private readonly _afterOpenedAtThisLevel; private _ariaHiddenElements; private _scrollStrategy; constructor(_overlay: Overlay, _injector: Injector, _defaultOptions: SimDialogConfig, scrollStrategy: SafeAny, _parentDialog: SimDialogService, _overlayContainer: OverlayContainer); ngOnDestroy(): void; /** * 打开一个包含给定组件的模式对话框。 * @param componentOrTemplateRef 要加载到对话框中的组件的类型,或作为对话框内容实例化的TemplateRef。 * @param config 额外的配置选项。 * @returns 新打开的对话框。 */ open(componentOrTemplateRef: ComponentType | TemplateRef, config?: SimDialogConfig): SimDialogRef; /** * 通过它的id找到一个打开的对话框 * @param id 查找对话框时使用的ID */ getDialogById(id: string): SimDialogRef | undefined; /** * 关闭所有当前打开的对话框 */ closeAll(): void; /** * 将创建的对话框加载到的浮层 * @param config 对话框配置 * @returns 解析为所创建浮层的OverlayRef的Promise */ private _createOverlay; /** * 从对话框配置创建浮层配置 * @param dialogConfig 对话框配置 * @returns 浮层配置 */ private _getOverlayConfig; /** * 将SimDialogComponent附加到对话框的已创建浮层上 * @param overlay 引用对话框的底层浮层 * @param config 对话框配置 * @returns 解析为附加容器的ComponentRef的Promise */ private _attachDialogContainer; /** * 将用户提供的组件附加到已创建的SimDialogComponent * @param componentOrTemplateRef componentOrTemplateRef将组件加载到对话框中的类型,或将TemplateRef实例化为内容 * @param dialogContainer 引用包装的SimDialogComponent * @param overlayRef 引用对话框所在的浮层 * @param config 对话框配置 * @returns 解析为SimDialogRef的promise应返回给用户。 */ private _attachDialogContent; /** * 创建一个自定义注入器以在对话框中使用。 这允许将组件加载到内部对话框的,以关闭自身并返回一个值(可选)。 * @param config 用于构造对话框的配置对象 * @param dialogRef 引用对话框 * @param container 包装所有内容的对话框容器元素 * @returns 可以在对话框中使用的自定义注入器 */ private _createInjector; /** * 从打开的对话框数组中删除一个对话框 * @param dialogRef 对话框被删除 */ private _removeOpenDialog; /** * 隐藏所有的内容,而不是一个浮层从无障碍性技术 */ private _hideNonDialogContentFromAssistiveTechnology; /** 关闭数组中的所有对话框 */ private _closeDialogs; }