import * as _angular_core from '@angular/core'; import { TemplateRef, Type, WritableSignal, EventEmitter, ViewContainerRef, InjectionToken, OnDestroy, AfterViewChecked, ComponentRef, EmbeddedViewRef } from '@angular/core'; import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal'; import { ClassValue } from 'clsx'; import { NgScrollbar } from 'ngx-scrollbar'; import { ComponentType, OverlayRef } from '@angular/cdk/overlay'; import { ZIcon } from '@shival99/z-ui/components/z-icon'; import { Observable } from 'rxjs'; import * as class_variance_authority_types from 'class-variance-authority/types'; declare class ZDrawerContentDirective { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class ZDrawerFooterDirective { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class ZDrawerHeaderDirective { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } type ZDrawerContentType = ComponentType | TemplateRef | string; type ZDrawerPlacement = 'left' | 'right' | 'top' | 'bottom'; declare const Z_DRAWER_DATA: InjectionToken; type ZDrawerOnClickCallBack = (instance: T, drawerRef?: unknown) => false | void | object; /** * Configuration options for z-drawer component. * * @template T - The type of the content component * @template U - The type of the data passed to the drawer */ declare class ZDrawerOptions { /** Icon for the cancel button */ zCancelIcon?: ZIcon; /** Text for the cancel button. Set to null to hide the button */ zCancelText?: string | null; /** Whether the drawer is closable (shows close button) */ zClosable?: boolean; /** Drawer content - can be a component, template, or string */ zContent?: string | TemplateRef | Type; /** Custom CSS classes for the drawer */ class?: ClassValue; /** Custom CSS classes for the drawer body */ zBodyClass?: ClassValue; /** Data to be passed to the content component via Z_DRAWER_DATA token */ zData?: U; /** * Observable for deferred data loading before showing drawer content. * Drawer will show a loading spinner until the Observable completes. * The resolved data will be available via Z_DRAWER_DATA. */ zDefer?: Observable; /** Description text shown below the title */ zDescription?: string; /** Whether to disable the header and footer shadows */ zDisableShadow?: boolean; /** Whether to show a border below the header */ zHeaderBorder?: boolean; /** Whether to show a border above the footer */ zFooterBorder?: boolean; /** Whether to hide the default footer */ zHideFooter?: boolean; /** Whether to hide the default header */ zHideHeader?: boolean; /** * WritableSignal to control loading state of the OK button. * Use this when submitting forms or calling APIs. */ readonly zLoading?: WritableSignal; /** Whether clicking mask closes the drawer */ zMaskClosable?: boolean; /** Whether OK button has destructive (red) style */ zOkDestructive?: boolean; /** Whether OK button is disabled */ zOkDisabled?: boolean; /** Overlay style: 'dark' (black overlay) or 'blur' (backdrop blur) */ zOverlay?: 'dark' | 'blur'; /** Icon for the OK button */ zOkIcon?: ZIcon; /** Text for the OK button. Set to null to hide the button */ zOkText?: string | null; /** Callback or EventEmitter when cancel is clicked */ zOnCancel?: EventEmitter | ZDrawerOnClickCallBack; /** Callback or EventEmitter when OK is clicked */ zOnOk?: EventEmitter | ZDrawerOnClickCallBack; /** Drawer title - supports string, HTML string, or TemplateRef */ zTitle?: string | TemplateRef; /** ViewContainerRef for the drawer portal */ zViewContainerRef?: ViewContainerRef; /** Drawer width for left/right placement (e.g., '400px', '80%') */ zWidth?: string; /** Drawer height for top/bottom placement (e.g., '400px', '50%') */ zHeight?: string; /** Placement of the drawer: 'left', 'right', 'top', 'bottom' */ zPlacement?: ZDrawerPlacement; /** Force shadow on header/footer regardless of scroll state */ zShadow?: boolean; /** Shape of the drawer: 'rounded' (with border-radius) or 'square' (no border-radius) */ zShape?: 'rounded' | 'square'; /** WritableSignal to control content loading state (shows skeleton when true) */ readonly zContentLoading?: WritableSignal; /** Number of skeleton rows to show when content is loading (default: 5 for left/right, 3 for top/bottom) */ zSkeletonRows?: number; } declare class ZDrawerRef { private readonly _overlayRef; private readonly _config; private readonly _containerInstance; private readonly _platformId; private readonly _destroy$; private _isClosing; private _result?; componentInstance: T | null; readonly loading: _angular_core.WritableSignal; readonly zAfterClose: EventEmitter; constructor(_overlayRef: OverlayRef, _config: ZDrawerOptions, _containerInstance: ZDrawerComponent, _platformId: object); setLoading(value: boolean): void; close(result?: R): void; private _trigger; private _getContentComponent; private _closeWithResult; } type ZDrawerShape = 'rounded' | 'square'; declare const zDrawerVariants: (props?: ({ placement?: "left" | "right" | "top" | "bottom" | null | undefined; shape?: "rounded" | "square" | null | undefined; } & class_variance_authority_types.ClassProp) | undefined) => string; declare class ZDrawerComponent extends BasePortalOutlet implements OnDestroy, AfterViewChecked { readonly zOnOk: _angular_core.OutputEmitterRef; readonly zOnCancel: _angular_core.OutputEmitterRef; readonly zAfterClose: _angular_core.OutputEmitterRef; readonly zScrollbar: _angular_core.OutputEmitterRef; readonly class: _angular_core.InputSignal; readonly zBodyClass: _angular_core.InputSignal; readonly zVisible: _angular_core.ModelSignal; readonly zTitle: _angular_core.InputSignal | undefined>; readonly zDescription: _angular_core.InputSignal | undefined>; readonly zWidth: _angular_core.InputSignal; readonly zHeight: _angular_core.InputSignal; readonly zPlacement: _angular_core.InputSignal; readonly zClosable: _angular_core.InputSignal; readonly zMaskClosable: _angular_core.InputSignal; readonly zDisableShadow: _angular_core.InputSignal; readonly zHeaderBorder: _angular_core.InputSignal; readonly zFooterBorder: _angular_core.InputSignal; readonly zHideFooter: _angular_core.InputSignal; readonly zHideHeader: _angular_core.InputSignal; readonly zOkText: _angular_core.InputSignal; readonly zCancelText: _angular_core.InputSignal; readonly zOkDestructive: _angular_core.InputSignal; readonly zOkDisabled: _angular_core.InputSignal; readonly zLoading: _angular_core.InputSignal; readonly zOverlay: _angular_core.InputSignal<"dark" | "blur">; readonly zShadow: _angular_core.InputSignal; readonly zShape: _angular_core.InputSignal; readonly zContentLoading: _angular_core.InputSignal; readonly zSkeletonRows: _angular_core.InputSignal; protected readonly customHeader: _angular_core.Signal; protected readonly customContent: _angular_core.Signal; protected readonly customFooter: _angular_core.Signal; drawerRef?: ZDrawerRef; readonly portalOutlet: _angular_core.Signal; protected readonly dummyTemplateRef: _angular_core.Signal | undefined>; protected readonly mainContentRef: _angular_core.Signal; protected readonly config: ZDrawerOptions; private readonly _platformId; private readonly _host; private readonly _overlay; private readonly _viewContainerRef; private readonly _cdr; private readonly _destroyRef; private readonly _zTranslate; private readonly _overlayContainerService; private readonly _zIndexService; private _templateOverlayRef; private _originalParent; private _originalNextSibling; private _backdropSubscription; private _closeTimeout; protected readonly isLeaving: _angular_core.WritableSignal; protected readonly hasScrollableContent: _angular_core.WritableSignal; protected readonly isScrolledFromTop: _angular_core.WritableSignal; protected readonly isScrolledToBottom: _angular_core.WritableSignal; protected readonly isServiceMode: _angular_core.Signal; protected readonly isTemplateMode: _angular_core.Signal; protected readonly shouldRenderContent: _angular_core.Signal; protected readonly isStringContent: _angular_core.Signal; private _lastScrollHeight; ngAfterViewChecked(): void; private _checkScrollState; onContentScroll(event: Event): void; protected readonly effectiveTitle: _angular_core.Signal | undefined>; protected readonly effectiveDescription: _angular_core.Signal | undefined>; protected readonly hasEffectiveDescription: _angular_core.Signal; protected readonly headerContentClasses: _angular_core.Signal; protected readonly effectiveBodyClass: _angular_core.Signal; protected readonly bodyClasses: _angular_core.Signal; protected readonly effectiveClosable: _angular_core.Signal; protected readonly effectiveDisableShadow: _angular_core.Signal; protected readonly shouldShowShadow: _angular_core.Signal; protected readonly effectiveHeaderBorder: _angular_core.Signal; protected readonly effectiveFooterBorder: _angular_core.Signal; protected readonly effectiveHideFooter: _angular_core.Signal; protected readonly effectiveHideHeader: _angular_core.Signal; protected readonly effectiveOkText: _angular_core.Signal; protected readonly effectiveCancelText: _angular_core.Signal; protected readonly effectiveOkDestructive: _angular_core.Signal; protected readonly effectiveOkDisabled: _angular_core.Signal; protected readonly effectiveLoading: _angular_core.Signal; protected readonly effectiveContentLoading: _angular_core.Signal; protected readonly effectiveSkeletonRows: _angular_core.Signal; protected readonly effectivePlacement: _angular_core.Signal; protected readonly effectiveShadow: _angular_core.Signal; protected readonly effectiveShape: _angular_core.Signal; protected readonly effectiveWidth: _angular_core.Signal; protected readonly effectiveHeight: _angular_core.Signal; protected readonly isDeferLoading: _angular_core.Signal; protected readonly classes: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; constructor(); ngOnDestroy(): void; isDestroyed(): boolean; getNativeElement(): HTMLElement; attachComponentPortal(portal: ComponentPortal): ComponentRef; attachTemplatePortal(portal: TemplatePortal): EmbeddedViewRef; onOkClick(): void; onCloseClick(): void; onBackdropClick(): void; open(): void; close(): void; private _createOverlay; private _openTemplateOverlay; private _closeWithAnimation; private _clearCloseTimeout; private _disposeTemplateOverlay; static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; static ɵcmp: _angular_core.ɵɵComponentDeclaration, "z-drawer", ["zDrawer"], { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zBodyClass": { "alias": "zBodyClass"; "required": false; "isSignal": true; }; "zVisible": { "alias": "zVisible"; "required": false; "isSignal": true; }; "zTitle": { "alias": "zTitle"; "required": false; "isSignal": true; }; "zDescription": { "alias": "zDescription"; "required": false; "isSignal": true; }; "zWidth": { "alias": "zWidth"; "required": false; "isSignal": true; }; "zHeight": { "alias": "zHeight"; "required": false; "isSignal": true; }; "zPlacement": { "alias": "zPlacement"; "required": false; "isSignal": true; }; "zClosable": { "alias": "zClosable"; "required": false; "isSignal": true; }; "zMaskClosable": { "alias": "zMaskClosable"; "required": false; "isSignal": true; }; "zDisableShadow": { "alias": "zDisableShadow"; "required": false; "isSignal": true; }; "zHeaderBorder": { "alias": "zHeaderBorder"; "required": false; "isSignal": true; }; "zFooterBorder": { "alias": "zFooterBorder"; "required": false; "isSignal": true; }; "zHideFooter": { "alias": "zHideFooter"; "required": false; "isSignal": true; }; "zHideHeader": { "alias": "zHideHeader"; "required": false; "isSignal": true; }; "zOkText": { "alias": "zOkText"; "required": false; "isSignal": true; }; "zCancelText": { "alias": "zCancelText"; "required": false; "isSignal": true; }; "zOkDestructive": { "alias": "zOkDestructive"; "required": false; "isSignal": true; }; "zOkDisabled": { "alias": "zOkDisabled"; "required": false; "isSignal": true; }; "zLoading": { "alias": "zLoading"; "required": false; "isSignal": true; }; "zOverlay": { "alias": "zOverlay"; "required": false; "isSignal": true; }; "zShadow": { "alias": "zShadow"; "required": false; "isSignal": true; }; "zShape": { "alias": "zShape"; "required": false; "isSignal": true; }; "zContentLoading": { "alias": "zContentLoading"; "required": false; "isSignal": true; }; "zSkeletonRows": { "alias": "zSkeletonRows"; "required": false; "isSignal": true; }; }, { "zOnOk": "zOnOk"; "zOnCancel": "zOnCancel"; "zAfterClose": "zAfterClose"; "zScrollbar": "zScrollbar"; "zVisible": "zVisibleChange"; }, ["customHeader", "customContent", "customFooter"], ["*"], true, never>; } declare class ZDrawerService { private readonly _overlay; private readonly _injector; private readonly _platformId; private readonly _zIndexService; create(config: ZDrawerOptions): ZDrawerRef; private _open; private _createOverlay; private _attachDrawerContainer; private _attachDrawerContent; private _createInjector; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } export { ZDrawerComponent, ZDrawerContentDirective, ZDrawerFooterDirective, ZDrawerHeaderDirective, ZDrawerOptions, ZDrawerRef, ZDrawerService, Z_DRAWER_DATA, zDrawerVariants }; export type { ZDrawerContentType, ZDrawerPlacement };