@shival99/z-ui 1.9.19 → 1.9.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ import * as i1 from '@angular/cdk/portal';
3
3
  import { BasePortalOutlet, CdkPortalOutlet, TemplatePortal, PortalModule, ComponentPortal } from '@angular/cdk/portal';
4
4
  import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';
5
5
  import * as i0 from '@angular/core';
6
- import { inject, TemplateRef, Directive, InjectionToken, output, input, model, contentChild, viewChild, PLATFORM_ID, ElementRef, ViewContainerRef, ChangeDetectorRef, signal, computed, effect, ChangeDetectionStrategy, Component, EventEmitter, Inject, Injector, Injectable } from '@angular/core';
6
+ import { inject, TemplateRef, Directive, InjectionToken, output, input, model, contentChild, viewChild, PLATFORM_ID, ElementRef, ViewContainerRef, ChangeDetectorRef, DestroyRef, signal, computed, effect, ChangeDetectionStrategy, Component, EventEmitter, Inject, Injector, Injectable } from '@angular/core';
7
7
  import { TranslatePipe } from '@ngx-translate/core';
8
8
  import { ZSkeletonComponent } from '@shival99/z-ui/components/z-skeleton';
9
9
  import { ZTranslateService, ZOverlayContainerService, ZOverlayZIndexService } from '@shival99/z-ui/services';
@@ -200,6 +200,7 @@ class ZDrawerComponent extends BasePortalOutlet {
200
200
  _overlay = inject(Overlay);
201
201
  _viewContainerRef = inject(ViewContainerRef);
202
202
  _cdr = inject(ChangeDetectorRef);
203
+ _destroyRef = inject(DestroyRef);
203
204
  _zTranslate = inject(ZTranslateService);
204
205
  _overlayContainerService = inject(ZOverlayContainerService);
205
206
  _zIndexService = inject(ZOverlayZIndexService);
@@ -207,6 +208,7 @@ class ZDrawerComponent extends BasePortalOutlet {
207
208
  _originalParent = null;
208
209
  _originalNextSibling = null;
209
210
  _backdropSubscription = null;
211
+ _closeTimeout = null;
210
212
  isLeaving = signal(false, ...(ngDevMode ? [{ debugName: "isLeaving" }] : []));
211
213
  hasScrollableContent = signal(false, ...(ngDevMode ? [{ debugName: "hasScrollableContent" }] : []));
212
214
  isScrolledFromTop = signal(false, ...(ngDevMode ? [{ debugName: "isScrolledFromTop" }] : []));
@@ -360,8 +362,12 @@ class ZDrawerComponent extends BasePortalOutlet {
360
362
  });
361
363
  }
362
364
  ngOnDestroy() {
365
+ this._clearCloseTimeout();
363
366
  this._disposeTemplateOverlay();
364
367
  }
368
+ isDestroyed() {
369
+ return this._destroyRef.destroyed;
370
+ }
365
371
  getNativeElement() {
366
372
  return this._host.nativeElement;
367
373
  }
@@ -461,12 +467,23 @@ class ZDrawerComponent extends BasePortalOutlet {
461
467
  backdropElement.classList.add('z-backdrop-leaving');
462
468
  }
463
469
  hostElement.classList.add('drawer-leave');
464
- setTimeout(() => {
470
+ this._clearCloseTimeout();
471
+ this._closeTimeout = setTimeout(() => {
472
+ if (this._destroyRef.destroyed) {
473
+ return;
474
+ }
465
475
  this.isLeaving.set(false);
466
476
  this._disposeTemplateOverlay();
467
477
  this.zAfterClose.emit();
468
478
  }, Z_DRAWER_ANIMATION_DURATION);
469
479
  }
480
+ _clearCloseTimeout() {
481
+ if (!this._closeTimeout) {
482
+ return;
483
+ }
484
+ clearTimeout(this._closeTimeout);
485
+ this._closeTimeout = null;
486
+ }
470
487
  _disposeTemplateOverlay() {
471
488
  const hostElement = this._host.nativeElement;
472
489
  if (this._originalParent && this._originalNextSibling) {
@@ -568,14 +585,16 @@ let ZDrawerRef = class ZDrawerRef {
568
585
  }
569
586
  }
570
587
  setTimeout(() => {
588
+ if (!this._containerInstance.isDestroyed()) {
589
+ this._containerInstance.zAfterClose.emit();
590
+ }
591
+ this.zAfterClose.emit(this._result);
571
592
  if (this._overlayRef) {
572
593
  if (this._overlayRef.hasAttached()) {
573
594
  this._overlayRef.detachBackdrop();
574
595
  }
575
596
  this._overlayRef.dispose();
576
597
  }
577
- this._containerInstance.zAfterClose.emit();
578
- this.zAfterClose.emit(this._result);
579
598
  if (!this._destroy$.closed) {
580
599
  this._destroy$.next();
581
600
  this._destroy$.complete();
@@ -1 +1 @@
1
- {"version":3,"file":"shival99-z-ui-components-z-drawer.mjs","sources":["../../../../libs/core-ui/components/z-drawer/directives/z-drawer-content.directive.ts","../../../../libs/core-ui/components/z-drawer/directives/z-drawer-footer.directive.ts","../../../../libs/core-ui/components/z-drawer/directives/z-drawer-header.directive.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.types.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.utils.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.variants.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.component.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.component.html","../../../../libs/core-ui/components/z-drawer/z-drawer.ref.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.service.ts","../../../../libs/core-ui/components/z-drawer/shival99-z-ui-components-z-drawer.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-drawer-content], [zDrawerContent]',\n standalone: true,\n})\nexport class ZDrawerContentDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-drawer-footer], [zDrawerFooter]',\n standalone: true,\n})\nexport class ZDrawerFooterDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-drawer-header], [zDrawerHeader]',\n standalone: true,\n})\nexport class ZDrawerHeaderDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type ComponentType } from '@angular/cdk/overlay';\nimport {\n type EventEmitter,\n InjectionToken,\n type TemplateRef,\n type Type,\n type ViewContainerRef,\n type WritableSignal,\n} from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport type { ClassValue } from 'clsx';\nimport type { Observable } from 'rxjs';\n\nexport type ZDrawerContentType<T> = ComponentType<T> | TemplateRef<T> | string;\nexport type ZDrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\n\nexport const Z_DRAWER_DATA = new InjectionToken<any>('Z_DRAWER_DATA');\nexport const Z_DRAWER_ANIMATION_DURATION = 250;\n\nexport enum ZDrawerTriggerAction {\n CANCEL = 'cancel',\n OK = 'ok',\n}\n\nexport type ZDrawerOnClickCallBack<T> = (instance: T, drawerRef?: unknown) => false | void | object;\n\nconst noopFun = (): void => {};\n\n/**\n * Configuration options for z-drawer component.\n *\n * @template T - The type of the content component\n * @template U - The type of the data passed to the drawer\n */\nexport class ZDrawerOptions<T, U> {\n /** Icon for the cancel button */\n public zCancelIcon?: ZIcon;\n /** Text for the cancel button. Set to null to hide the button */\n public zCancelText?: string | null;\n /** Whether the drawer is closable (shows close button) */\n public zClosable?: boolean;\n /** Drawer content - can be a component, template, or string */\n public zContent?: string | TemplateRef<T> | Type<T>;\n /** Custom CSS classes for the drawer */\n public class?: ClassValue;\n /** Data to be passed to the content component via Z_DRAWER_DATA token */\n public zData?: U;\n /**\n * Observable for deferred data loading before showing drawer content.\n * Drawer will show a loading spinner until the Observable completes.\n * The resolved data will be available via Z_DRAWER_DATA.\n */\n public zDefer?: Observable<U>;\n /** Description text shown below the title */\n public zDescription?: string;\n /** Whether to hide the default footer */\n public zHideFooter?: boolean;\n /** Whether to hide the default header */\n public zHideHeader?: boolean;\n /**\n * WritableSignal to control loading state of the OK button.\n * Use this when submitting forms or calling APIs.\n */\n public readonly zLoading?: WritableSignal<boolean>;\n /** Whether clicking mask closes the drawer */\n public zMaskClosable?: boolean;\n /** Whether OK button has destructive (red) style */\n public zOkDestructive?: boolean;\n /** Whether OK button is disabled */\n public zOkDisabled?: boolean;\n /** Overlay style: 'dark' (black overlay) or 'blur' (backdrop blur) */\n public zOverlay?: 'dark' | 'blur';\n /** Icon for the OK button */\n public zOkIcon?: ZIcon;\n /** Text for the OK button. Set to null to hide the button */\n public zOkText?: string | null;\n /** Callback or EventEmitter when cancel is clicked */\n public zOnCancel?: EventEmitter<T> | ZDrawerOnClickCallBack<T> = noopFun;\n /** Callback or EventEmitter when OK is clicked */\n public zOnOk?: EventEmitter<T> | ZDrawerOnClickCallBack<T> = noopFun;\n /** Drawer title - supports string, HTML string, or TemplateRef */\n public zTitle?: string | TemplateRef<T>;\n /** ViewContainerRef for the drawer portal */\n public zViewContainerRef?: ViewContainerRef;\n /** Drawer width for left/right placement (e.g., '400px', '80%') */\n public zWidth?: string;\n /** Drawer height for top/bottom placement (e.g., '400px', '50%') */\n public zHeight?: string;\n /** Placement of the drawer: 'left', 'right', 'top', 'bottom' */\n public zPlacement?: ZDrawerPlacement;\n /** Force shadow on header/footer regardless of scroll state */\n public zShadow?: boolean;\n /** Shape of the drawer: 'rounded' (with border-radius) or 'square' (no border-radius) */\n public zShape?: 'rounded' | 'square';\n /** WritableSignal to control content loading state (shows skeleton when true) */\n public readonly zContentLoading?: WritableSignal<boolean>;\n /** Number of skeleton rows to show when content is loading (default: 5 for left/right, 3 for top/bottom) */\n public zSkeletonRows?: number;\n}\n","import { zDetectBrowser } from '@shival99/z-ui/utils';\n\nexport type ZDrawerOverlayType = 'dark' | 'blur';\nexport const getOverlayType = (): ZDrawerOverlayType => {\n const browser = zDetectBrowser();\n return browser.name === 'Chrome' ? 'dark' : 'blur';\n};\n","import { cva } from 'class-variance-authority';\n\nexport type ZDrawerShape = 'rounded' | 'square';\n\nexport const zDrawerVariants = cva(['fixed z-50 flex flex-col bg-background overflow-hidden'].join(' '), {\n variants: {\n placement: {\n left: 'left-0 top-0 h-full max-w-[90vw] dark:border-r shadow-[3px_0_10px_rgba(0,0,0,0.08)]',\n right: 'right-0 top-0 h-full max-w-[90vw] dark:border-l shadow-[-3px_0_10px_rgba(0,0,0,0.08)]',\n top: 'top-0 left-0 w-full max-h-[90vh] dark:border-b shadow-[0_3px_10px_rgba(0,0,0,0.08)]',\n bottom: 'bottom-0 left-0 w-full max-h-[90vh] dark:border-t shadow-[0_-3px_10px_rgba(0,0,0,0.08)]',\n },\n shape: {\n rounded: '',\n square: '',\n },\n },\n compoundVariants: [\n { placement: 'left', shape: 'rounded', class: 'rounded-r-lg' },\n { placement: 'right', shape: 'rounded', class: 'rounded-l-lg' },\n { placement: 'top', shape: 'rounded', class: 'rounded-b-lg' },\n { placement: 'bottom', shape: 'rounded', class: 'rounded-t-lg' },\n ],\n defaultVariants: {\n placement: 'right',\n shape: 'rounded',\n },\n});\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n type ComponentPortal,\n PortalModule,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n type ComponentRef,\n computed,\n contentChild,\n effect,\n ElementRef,\n type EmbeddedViewRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n type TemplateRef,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZSkeletonComponent } from '@shival99/z-ui/components/z-skeleton';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZContentTypePipe, ZSafeHtmlPipe } from '@shival99/z-ui/pipes';\nimport { ZOverlayContainerService, ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { Subscription } from 'rxjs';\nimport { ZDrawerContentDirective } from './directives/z-drawer-content.directive';\nimport { ZDrawerFooterDirective } from './directives/z-drawer-footer.directive';\nimport { ZDrawerHeaderDirective } from './directives/z-drawer-header.directive';\nimport { ZDrawerRef } from './z-drawer.ref';\nimport { Z_DRAWER_ANIMATION_DURATION, ZDrawerOptions, ZDrawerPlacement } from './z-drawer.types';\nimport { getOverlayType } from './z-drawer.utils';\nimport { type ZDrawerShape, zDrawerVariants } from './z-drawer.variants';\n\n@Component({\n selector: 'z-drawer',\n imports: [\n PortalModule,\n NgTemplateOutlet,\n ZButtonComponent,\n ZIconComponent,\n ZContentTypePipe,\n ZTooltipDirective,\n ZSkeletonComponent,\n NgScrollbar,\n ZSafeHtmlPipe,\n TranslatePipe,\n CdkScrollable,\n ],\n standalone: true,\n templateUrl: './z-drawer.component.html',\n styleUrl: './z-drawer.component.scss',\n providers: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width]': 'effectiveWidth()',\n '[style.height]': 'effectiveHeight()',\n '[attr.data-placement]': 'effectivePlacement()',\n },\n exportAs: 'zDrawer',\n})\nexport class ZDrawerComponent<T, U> extends BasePortalOutlet implements OnDestroy, AfterViewChecked {\n public readonly zOnOk = output<void>();\n public readonly zOnCancel = output<void>();\n public readonly zAfterClose = output<void>();\n public readonly zScrollbar = output<NgScrollbar>();\n\n public readonly class = input<ClassValue>('');\n public readonly zVisible = model<boolean>(false);\n public readonly zTitle = input<string | TemplateRef<unknown>>();\n public readonly zDescription = input<string | TemplateRef<unknown>>();\n public readonly zWidth = input<string>('400px');\n public readonly zHeight = input<string>('400px');\n public readonly zPlacement = input<ZDrawerPlacement>('right');\n public readonly zClosable = input<boolean>(true);\n public readonly zMaskClosable = input<boolean>(true);\n public readonly zHideFooter = input<boolean>(false);\n public readonly zHideHeader = input<boolean>(false);\n public readonly zOkText = input<string | null>(null);\n public readonly zCancelText = input<string | null>(null);\n public readonly zOkDestructive = input<boolean>(false);\n public readonly zOkDisabled = input<boolean>(false);\n public readonly zLoading = input<boolean>(false);\n public readonly zOverlay = input<'dark' | 'blur'>(getOverlayType());\n public readonly zShadow = input<boolean>(false);\n public readonly zShape = input<ZDrawerShape>('rounded');\n public readonly zContentLoading = input<boolean>(false);\n public readonly zSkeletonRows = input<number | null>(null);\n\n protected readonly customHeader = contentChild(ZDrawerHeaderDirective);\n protected readonly customContent = contentChild(ZDrawerContentDirective);\n protected readonly customFooter = contentChild(ZDrawerFooterDirective);\n\n public drawerRef?: ZDrawerRef<T>;\n public readonly portalOutlet = viewChild(CdkPortalOutlet);\n protected readonly dummyTemplateRef = viewChild<TemplateRef<unknown>>('dummyTemplate');\n protected readonly mainContentRef = viewChild<NgScrollbar>('mainContent');\n\n protected readonly config = inject(ZDrawerOptions<T, U>, { optional: true }) || new ZDrawerOptions<T, U>();\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _host = inject(ElementRef<HTMLElement>);\n private readonly _overlay = inject(Overlay);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _cdr = inject(ChangeDetectorRef);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _overlayContainerService = inject(ZOverlayContainerService);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n private _templateOverlayRef: OverlayRef | null = null;\n private _originalParent: HTMLElement | null = null;\n private _originalNextSibling: Node | null = null;\n private _backdropSubscription: Subscription | null = null;\n\n protected readonly isLeaving = signal(false);\n protected readonly hasScrollableContent = signal(false);\n protected readonly isScrolledFromTop = signal(false);\n protected readonly isScrolledToBottom = signal(false);\n protected readonly isServiceMode = computed(() => !!this.drawerRef);\n protected readonly isTemplateMode = computed(() => !this.isServiceMode());\n protected readonly shouldRenderContent = computed(() => this.zVisible() || this.isLeaving());\n protected readonly isStringContent = computed(() => typeof this.config.zContent === 'string');\n protected readonly shouldShowShadow = computed(() => true);\n\n private _lastScrollHeight = 0;\n\n public ngAfterViewChecked(): void {\n this._checkScrollState();\n }\n\n private _checkScrollState(): void {\n const scrollbar = this.mainContentRef();\n if (!scrollbar) {\n return;\n }\n\n const viewport = scrollbar.nativeElement.querySelector('.ng-scroll-viewport') as HTMLElement;\n if (!viewport) {\n return;\n }\n\n if (viewport.scrollHeight === this._lastScrollHeight) {\n return;\n }\n this._lastScrollHeight = viewport.scrollHeight;\n\n const hasVerticalScroll = viewport.scrollHeight > viewport.clientHeight;\n this.hasScrollableContent.set(hasVerticalScroll);\n }\n\n public onContentScroll(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n const { scrollTop } = target;\n const { scrollHeight } = target;\n const { clientHeight } = target;\n\n this.isScrolledFromTop.set(scrollTop > 0);\n this.isScrolledToBottom.set(scrollTop + clientHeight >= scrollHeight - 1);\n }\n\n protected readonly effectiveTitle = computed(() => {\n this._zTranslate.currentLang();\n return this.isServiceMode() ? this.config.zTitle : this.zTitle();\n });\n\n protected readonly effectiveDescription = computed(() =>\n this.isServiceMode() ? this.config.zDescription : this.zDescription()\n );\n\n protected readonly effectiveClosable = computed(() =>\n this.isServiceMode() ? (this.config.zClosable ?? true) : this.zClosable()\n );\n\n protected readonly effectiveHideFooter = computed(() =>\n this.isServiceMode() ? this.config.zHideFooter : this.zHideFooter()\n );\n\n protected readonly effectiveHideHeader = computed(() =>\n this.isServiceMode() ? (this.config.zHideHeader ?? false) : this.zHideHeader()\n );\n\n protected readonly effectiveOkText = computed(() => (this.isServiceMode() ? this.config.zOkText : this.zOkText()));\n\n protected readonly effectiveCancelText = computed(() =>\n this.isServiceMode() ? this.config.zCancelText : this.zCancelText()\n );\n\n protected readonly effectiveOkDestructive = computed(() =>\n this.isServiceMode() ? this.config.zOkDestructive : this.zOkDestructive()\n );\n\n protected readonly effectiveOkDisabled = computed(() =>\n this.isServiceMode() ? this.config.zOkDisabled : this.zOkDisabled()\n );\n\n protected readonly effectiveLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.drawerRef?.loading() || (this.config.zLoading?.() ?? false);\n }\n return this.zLoading();\n });\n\n protected readonly effectiveContentLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zContentLoading?.() ?? false;\n }\n return this.zContentLoading();\n });\n\n protected readonly effectiveSkeletonRows = computed(() => {\n if (this.isServiceMode() && this.config.zSkeletonRows != null) {\n return this.config.zSkeletonRows;\n }\n if (this.zSkeletonRows() != null) {\n return this.zSkeletonRows() as number;\n }\n const placement = this.effectivePlacement();\n return placement === 'left' || placement === 'right' ? 6 : 3;\n });\n\n protected readonly effectivePlacement = computed<ZDrawerPlacement>(() => {\n if (this.isServiceMode()) {\n return this.config.zPlacement ?? 'right';\n }\n return this.zPlacement();\n });\n\n protected readonly effectiveShadow = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zShadow ?? false;\n }\n return this.zShadow();\n });\n\n protected readonly effectiveShape = computed<ZDrawerShape>(() => {\n if (this.isServiceMode()) {\n return this.config.zShape ?? 'rounded';\n }\n return this.zShape();\n });\n\n protected readonly effectiveWidth = computed(() => {\n const placement = this.effectivePlacement();\n if (placement === 'top' || placement === 'bottom') {\n return null;\n }\n if (this.isServiceMode()) {\n return this.zWidth() || this.config.zWidth || null;\n }\n return this.shouldRenderContent() ? this.zWidth() : null;\n });\n\n protected readonly effectiveHeight = computed(() => {\n const placement = this.effectivePlacement();\n if (placement === 'left' || placement === 'right') {\n return null;\n }\n if (this.isServiceMode()) {\n return this.zHeight() || this.config.zHeight || null;\n }\n return this.shouldRenderContent() ? this.zHeight() : null;\n });\n\n protected readonly isDeferLoading = computed(() => {\n if (!this.isServiceMode()) {\n return false;\n }\n return !!this.config.zDefer && !this.portalOutlet()?.hasAttached();\n });\n\n protected readonly classes = computed(() =>\n zMergeClasses(\n zDrawerVariants({ placement: this.effectivePlacement(), shape: this.effectiveShape() }),\n this.isServiceMode() ? this.config.class : this.class()\n )\n );\n\n protected readonly hostClasses = computed(() => {\n const baseClasses = this.classes();\n if (this.isServiceMode()) {\n return `${baseClasses} z-drawer-service-mode`.trim();\n }\n if (this.shouldRenderContent()) {\n return `${baseClasses} z-drawer-template-mode`.trim();\n }\n return 'z-drawer-template-host';\n });\n\n constructor() {\n super();\n\n effect(() => {\n this._zTranslate.currentLang();\n this._cdr.markForCheck();\n });\n\n effect(() => {\n const scrollbar = this.mainContentRef();\n if (scrollbar) {\n this.zScrollbar.emit(scrollbar);\n }\n });\n\n effect(() => {\n const visible = this.zVisible();\n if (visible && this.isTemplateMode() && !this._templateOverlayRef) {\n this._openTemplateOverlay();\n return;\n }\n\n if (!visible && this.isTemplateMode() && this._templateOverlayRef && !this.isLeaving()) {\n this._closeWithAnimation();\n }\n });\n }\n\n public ngOnDestroy(): void {\n this._disposeTemplateOverlay();\n }\n\n public getNativeElement(): HTMLElement {\n return this._host.nativeElement;\n }\n\n public attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._cdr.detectChanges();\n const outlet = this.portalOutlet();\n if (outlet?.hasAttached()) {\n throw new Error('Attempting to attach drawer content after content is already attached');\n }\n return outlet?.attachComponentPortal(portal) as ComponentRef<T>;\n }\n\n public attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n const outlet = this.portalOutlet();\n if (outlet?.hasAttached()) {\n throw new Error('Attempting to attach drawer content after content is already attached');\n }\n return outlet?.attachTemplatePortal(portal) as EmbeddedViewRef<C>;\n }\n\n public onOkClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zOnOk.emit();\n }\n\n public onCloseClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zOnCancel.emit();\n if (this.isTemplateMode()) {\n this._closeWithAnimation();\n }\n }\n\n public onBackdropClick(): void {\n if (this.zMaskClosable() && !this.effectiveLoading()) {\n this.zOnCancel.emit();\n this._closeWithAnimation();\n }\n }\n\n public open(): void {\n this.isLeaving.set(false);\n this.zVisible.set(true);\n }\n\n public close(): void {\n this._closeWithAnimation();\n }\n\n private _createOverlay(): OverlayRef | null {\n if (!isPlatformBrowser(this._platformId)) {\n return null;\n }\n\n const overlayType = this.zOverlay();\n const backdropClass = overlayType === 'blur' ? 'z-drawer-backdrop-blur' : 'z-drawer-backdrop-dark';\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass,\n panelClass: 'z-drawer-overlay-pane',\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: this._overlay.scrollStrategies.block(),\n });\n\n return this._overlay.create(overlayConfig);\n }\n\n private _openTemplateOverlay(): void {\n if (this._templateOverlayRef) {\n return;\n }\n\n const dummyRef = this.dummyTemplateRef();\n if (!dummyRef) {\n return;\n }\n\n this._templateOverlayRef = this._createOverlay();\n if (!this._templateOverlayRef) {\n return;\n }\n\n this._zIndexService.applyToOverlay(this._templateOverlayRef);\n\n const hostElement = this._host.nativeElement;\n this._originalParent = hostElement.parentElement;\n this._originalNextSibling = hostElement.nextSibling;\n\n const portal = new TemplatePortal(dummyRef, this._viewContainerRef);\n this._templateOverlayRef.attach(portal);\n\n const overlayPane = this._templateOverlayRef.overlayElement;\n overlayPane.style.position = 'static';\n overlayPane.appendChild(hostElement);\n\n this._backdropSubscription = this._templateOverlayRef.backdropClick().subscribe(() => {\n this.onBackdropClick();\n });\n }\n\n private _closeWithAnimation(): void {\n if (this.isLeaving()) {\n return;\n }\n\n this._overlayContainerService.notifyClosing();\n this.isLeaving.set(true);\n this.zVisible.set(false);\n\n const hostElement = this._host.nativeElement;\n const { backdropElement } = this._templateOverlayRef ?? {};\n\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n\n hostElement.classList.add('drawer-leave');\n\n setTimeout(() => {\n this.isLeaving.set(false);\n this._disposeTemplateOverlay();\n this.zAfterClose.emit();\n }, Z_DRAWER_ANIMATION_DURATION);\n }\n\n private _disposeTemplateOverlay(): void {\n const hostElement = this._host.nativeElement;\n\n if (this._originalParent && this._originalNextSibling) {\n this._originalParent.insertBefore(hostElement, this._originalNextSibling);\n }\n\n if (this._originalParent && !this._originalNextSibling) {\n this._originalParent.appendChild(hostElement);\n }\n\n hostElement.classList.remove('drawer-leave');\n if (this._templateOverlayRef) {\n this._templateOverlayRef.dispose();\n this._templateOverlayRef = null;\n }\n\n this._originalParent = null;\n this._originalNextSibling = null;\n\n if (this._backdropSubscription) {\n this._backdropSubscription.unsubscribe();\n this._backdropSubscription = null;\n }\n }\n}\n","<!-- Dummy template to trigger CDK backdrop creation -->\n<ng-template #dummyTemplate />\n\n<!-- Template mode content (rendered in host element, which is moved to overlay) -->\n@if (isTemplateMode() && shouldRenderContent()) {\n @defer (when !effectiveContentLoading()) {\n @if (customHeader(); as headerDir) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex items-start justify-between px-4\">\n <ng-container *ngTemplateOutlet=\"headerDir.templateRef\" />\n </div>\n </header>\n } @else if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex w-full items-start justify-between overflow-hidden px-4\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n @if (effectiveDescription(); as description) {\n @switch (description | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(description)\" />\n }\n @case ('html') {\n <p\n data-testid=\"z-drawer-description\"\n class=\"text-muted-foreground m-0 mt-1 text-sm\"\n [innerHTML]=\"$any(description) | zSafeHtml\"></p>\n }\n @default {\n <p data-testid=\"z-drawer-description\" class=\"text-muted-foreground m-0 mt-1 text-sm\">\n {{ $any(description) | translate }}\n </p>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n class=\"-mt-1 -mr-2 shrink-0\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-drawer-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main class=\"flex min-h-0 flex-col gap-4 px-4 py-4\">\n @if (customContent(); as contentDir) {\n <ng-container *ngTemplateOutlet=\"contentDir.templateRef\" />\n } @else {\n <ng-content />\n }\n </main>\n </ng-scrollbar>\n\n @if (customFooter(); as footerDir) {\n <footer [class.z-drawer-footer-shadow]=\"shouldShowShadow()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n <ng-container *ngTemplateOutlet=\"footerDir.templateRef\" />\n </div>\n </footer>\n } @else if (!effectiveHideFooter()) {\n <footer [class.z-drawer-footer-shadow]=\"shouldShowShadow()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </div>\n </footer>\n }\n } @placeholder {\n <div class=\"flex flex-1 flex-col gap-4 p-4\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n}\n\n<!-- Service mode content -->\n@if (isServiceMode()) {\n @defer (when !effectiveContentLoading()) {\n @if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex w-full items-start justify-between overflow-hidden px-4\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-drawer-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main class=\"flex min-h-0 flex-col gap-4 px-4 py-4\">\n <ng-template cdkPortalOutlet />\n\n @if (isStringContent()) {\n <div data-testid=\"z-drawer-content\" [innerHTML]=\"$any(config.zContent) | zSafeHtml\"></div>\n }\n </main>\n </ng-scrollbar>\n\n @if (!effectiveHideFooter()) {\n <footer [class.z-drawer-footer-shadow]=\"shouldShowShadow()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n @if (config.zCancelIcon) {\n <z-icon [zType]=\"config.zCancelIcon\" />\n }\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n @if (config.zOkIcon && !effectiveLoading()) {\n <z-icon [zType]=\"config.zOkIcon\" />\n }\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </div>\n </footer>\n }\n } @placeholder {\n <div class=\"flex flex-1 flex-col gap-4 p-4\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, Inject, PLATFORM_ID, signal } from '@angular/core';\nimport { filter, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ZDrawerComponent } from './z-drawer.component';\nimport { Z_DRAWER_ANIMATION_DURATION, ZDrawerOptions, ZDrawerTriggerAction } from './z-drawer.types';\n\nexport class ZDrawerRef<T = any, R = any, U = any> {\n private readonly _destroy$ = new Subject<void>();\n private _isClosing = false;\n private _result?: R;\n\n public componentInstance: T | null = null;\n public readonly loading = signal(false);\n public readonly zAfterClose = new EventEmitter<R | undefined>();\n\n public constructor(\n private readonly _overlayRef: OverlayRef,\n private readonly _config: ZDrawerOptions<T, U>,\n private readonly _containerInstance: ZDrawerComponent<T, U>,\n @Inject(PLATFORM_ID) private readonly _platformId: object\n ) {\n this._containerInstance.zOnCancel.subscribe(() => this._trigger(ZDrawerTriggerAction.CANCEL));\n this._containerInstance.zOnOk.subscribe(() => this._trigger(ZDrawerTriggerAction.OK));\n\n if ((this._config.zMaskClosable ?? true) && isPlatformBrowser(this._platformId)) {\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.loading()) {\n this._trigger(ZDrawerTriggerAction.CANCEL);\n }\n });\n }\n\n if (isPlatformBrowser(this._platformId)) {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter(event => event.key === 'Escape'),\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n if (!this.loading()) {\n this._trigger(ZDrawerTriggerAction.CANCEL);\n }\n });\n }\n }\n\n public setLoading(value: boolean): void {\n this.loading.set(value);\n }\n\n public close(result?: R): void {\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n this._result = result;\n\n if (isPlatformBrowser(this._platformId)) {\n const hostElement = this._containerInstance.getNativeElement();\n hostElement.classList.add('drawer-leave');\n const { backdropElement } = this._overlayRef;\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n }\n\n setTimeout(() => {\n if (this._overlayRef) {\n if (this._overlayRef.hasAttached()) {\n this._overlayRef.detachBackdrop();\n }\n\n this._overlayRef.dispose();\n }\n this._containerInstance.zAfterClose.emit();\n this.zAfterClose.emit(this._result);\n\n if (!this._destroy$.closed) {\n this._destroy$.next();\n this._destroy$.complete();\n }\n }, Z_DRAWER_ANIMATION_DURATION);\n }\n\n private _trigger(action: ZDrawerTriggerAction): void {\n if (this.loading()) {\n return;\n }\n\n const trigger = {\n ok: this._config.zOnOk,\n cancel: this._config.zOnCancel,\n }[action];\n\n if (trigger instanceof EventEmitter) {\n trigger.emit(this._getContentComponent());\n return;\n }\n\n if (typeof trigger === 'function') {\n const result = trigger(this._getContentComponent(), this) as R;\n this._closeWithResult(result);\n return;\n }\n\n this.close();\n }\n\n private _getContentComponent(): T {\n return this.componentInstance as T;\n }\n\n private _closeWithResult(result: R): void {\n if (result !== false) {\n this.close(result);\n }\n }\n}\n","import { type ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, Injector, PLATFORM_ID, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ZOverlayZIndexService } from '@shival99/z-ui/services';\nimport { ZDrawerComponent } from './z-drawer.component';\nimport { ZDrawerRef } from './z-drawer.ref';\nimport { Z_DRAWER_DATA, ZDrawerContentType, ZDrawerOptions } from './z-drawer.types';\nimport { getOverlayType } from './z-drawer.utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZDrawerService {\n private readonly _overlay = inject(Overlay);\n private readonly _injector = inject(Injector);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n public create<T, U>(config: ZDrawerOptions<T, U>): ZDrawerRef<T> {\n return this._open<T, U>(config.zContent as ComponentType<T>, config);\n }\n\n private _open<T, U>(componentOrTemplateRef: ZDrawerContentType<T>, config: ZDrawerOptions<T, U>) {\n const overlayRef = this._createOverlay(config);\n\n if (!overlayRef) {\n return new ZDrawerRef(\n undefined as unknown as OverlayRef,\n config,\n undefined as unknown as ZDrawerComponent<T, U>,\n this._platformId\n );\n }\n\n const drawerContainer = this._attachDrawerContainer<T, U>(overlayRef, config);\n const drawerRef = this._attachDrawerContent<T, U>(componentOrTemplateRef, drawerContainer, overlayRef, config);\n\n return drawerRef;\n }\n\n private _createOverlay<T, U>(config: ZDrawerOptions<T, U>): OverlayRef | undefined {\n if (!isPlatformBrowser(this._platformId)) {\n return undefined;\n }\n\n const overlayType = config.zOverlay ?? getOverlayType();\n const backdropClass = overlayType === 'blur' ? 'z-drawer-backdrop-blur' : 'z-drawer-backdrop-dark';\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass,\n positionStrategy: this._overlay.position().global(),\n });\n\n const overlayRef = this._overlay.create(overlayConfig);\n\n this._zIndexService.applyToOverlay(overlayRef);\n\n return overlayRef;\n }\n\n private _attachDrawerContainer<T, U>(overlayRef: OverlayRef, config: ZDrawerOptions<T, U>) {\n const injector = Injector.create({\n parent: this._injector,\n providers: [\n { provide: OverlayRef, useValue: overlayRef },\n { provide: ZDrawerOptions, useValue: config },\n ],\n });\n\n const containerPortal = new ComponentPortal<ZDrawerComponent<T, U>>(\n ZDrawerComponent,\n config.zViewContainerRef,\n injector\n );\n const containerRef = overlayRef.attach<ZDrawerComponent<T, U>>(containerPortal);\n\n return containerRef.instance;\n }\n\n private _attachDrawerContent<T, U>(\n componentOrTemplateRef: ZDrawerContentType<T>,\n drawerContainer: ZDrawerComponent<T, U>,\n overlayRef: OverlayRef,\n config: ZDrawerOptions<T, U>\n ) {\n const drawerRef = new ZDrawerRef<T>(overlayRef, config, drawerContainer, this._platformId);\n drawerContainer.drawerRef = drawerRef;\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n drawerContainer.attachTemplatePortal(\n new TemplatePortal<T>(componentOrTemplateRef, null as unknown as ViewContainerRef, { drawerRef } as T)\n );\n return drawerRef;\n }\n\n if (typeof componentOrTemplateRef !== 'string') {\n const injector = this._createInjector<T, U>(drawerRef, config);\n const contentRef = drawerContainer.attachComponentPortal<T>(\n new ComponentPortal(componentOrTemplateRef, config.zViewContainerRef, injector)\n );\n\n if (contentRef) {\n drawerRef.componentInstance = contentRef.instance;\n }\n }\n\n return drawerRef;\n }\n\n private _createInjector<T, U>(drawerRef: ZDrawerRef<T>, config: ZDrawerOptions<T, U>) {\n return Injector.create({\n parent: this._injector,\n providers: [\n { provide: ZDrawerRef, useValue: drawerRef },\n { provide: Z_DRAWER_DATA, useValue: config.zData },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shival99-z-ui-components-z-drawer.mjs","sources":["../../../../libs/core-ui/components/z-drawer/directives/z-drawer-content.directive.ts","../../../../libs/core-ui/components/z-drawer/directives/z-drawer-footer.directive.ts","../../../../libs/core-ui/components/z-drawer/directives/z-drawer-header.directive.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.types.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.utils.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.variants.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.component.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.component.html","../../../../libs/core-ui/components/z-drawer/z-drawer.ref.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.service.ts","../../../../libs/core-ui/components/z-drawer/shival99-z-ui-components-z-drawer.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-drawer-content], [zDrawerContent]',\n standalone: true,\n})\nexport class ZDrawerContentDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-drawer-footer], [zDrawerFooter]',\n standalone: true,\n})\nexport class ZDrawerFooterDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[z-drawer-header], [zDrawerHeader]',\n standalone: true,\n})\nexport class ZDrawerHeaderDirective {\n public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type ComponentType } from '@angular/cdk/overlay';\nimport {\n type EventEmitter,\n InjectionToken,\n type TemplateRef,\n type Type,\n type ViewContainerRef,\n type WritableSignal,\n} from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport type { ClassValue } from 'clsx';\nimport type { Observable } from 'rxjs';\n\nexport type ZDrawerContentType<T> = ComponentType<T> | TemplateRef<T> | string;\nexport type ZDrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\n\nexport const Z_DRAWER_DATA = new InjectionToken<any>('Z_DRAWER_DATA');\nexport const Z_DRAWER_ANIMATION_DURATION = 250;\n\nexport enum ZDrawerTriggerAction {\n CANCEL = 'cancel',\n OK = 'ok',\n}\n\nexport type ZDrawerOnClickCallBack<T> = (instance: T, drawerRef?: unknown) => false | void | object;\n\nconst noopFun = (): void => {};\n\n/**\n * Configuration options for z-drawer component.\n *\n * @template T - The type of the content component\n * @template U - The type of the data passed to the drawer\n */\nexport class ZDrawerOptions<T, U> {\n /** Icon for the cancel button */\n public zCancelIcon?: ZIcon;\n /** Text for the cancel button. Set to null to hide the button */\n public zCancelText?: string | null;\n /** Whether the drawer is closable (shows close button) */\n public zClosable?: boolean;\n /** Drawer content - can be a component, template, or string */\n public zContent?: string | TemplateRef<T> | Type<T>;\n /** Custom CSS classes for the drawer */\n public class?: ClassValue;\n /** Data to be passed to the content component via Z_DRAWER_DATA token */\n public zData?: U;\n /**\n * Observable for deferred data loading before showing drawer content.\n * Drawer will show a loading spinner until the Observable completes.\n * The resolved data will be available via Z_DRAWER_DATA.\n */\n public zDefer?: Observable<U>;\n /** Description text shown below the title */\n public zDescription?: string;\n /** Whether to hide the default footer */\n public zHideFooter?: boolean;\n /** Whether to hide the default header */\n public zHideHeader?: boolean;\n /**\n * WritableSignal to control loading state of the OK button.\n * Use this when submitting forms or calling APIs.\n */\n public readonly zLoading?: WritableSignal<boolean>;\n /** Whether clicking mask closes the drawer */\n public zMaskClosable?: boolean;\n /** Whether OK button has destructive (red) style */\n public zOkDestructive?: boolean;\n /** Whether OK button is disabled */\n public zOkDisabled?: boolean;\n /** Overlay style: 'dark' (black overlay) or 'blur' (backdrop blur) */\n public zOverlay?: 'dark' | 'blur';\n /** Icon for the OK button */\n public zOkIcon?: ZIcon;\n /** Text for the OK button. Set to null to hide the button */\n public zOkText?: string | null;\n /** Callback or EventEmitter when cancel is clicked */\n public zOnCancel?: EventEmitter<T> | ZDrawerOnClickCallBack<T> = noopFun;\n /** Callback or EventEmitter when OK is clicked */\n public zOnOk?: EventEmitter<T> | ZDrawerOnClickCallBack<T> = noopFun;\n /** Drawer title - supports string, HTML string, or TemplateRef */\n public zTitle?: string | TemplateRef<T>;\n /** ViewContainerRef for the drawer portal */\n public zViewContainerRef?: ViewContainerRef;\n /** Drawer width for left/right placement (e.g., '400px', '80%') */\n public zWidth?: string;\n /** Drawer height for top/bottom placement (e.g., '400px', '50%') */\n public zHeight?: string;\n /** Placement of the drawer: 'left', 'right', 'top', 'bottom' */\n public zPlacement?: ZDrawerPlacement;\n /** Force shadow on header/footer regardless of scroll state */\n public zShadow?: boolean;\n /** Shape of the drawer: 'rounded' (with border-radius) or 'square' (no border-radius) */\n public zShape?: 'rounded' | 'square';\n /** WritableSignal to control content loading state (shows skeleton when true) */\n public readonly zContentLoading?: WritableSignal<boolean>;\n /** Number of skeleton rows to show when content is loading (default: 5 for left/right, 3 for top/bottom) */\n public zSkeletonRows?: number;\n}\n","import { zDetectBrowser } from '@shival99/z-ui/utils';\n\nexport type ZDrawerOverlayType = 'dark' | 'blur';\nexport const getOverlayType = (): ZDrawerOverlayType => {\n const browser = zDetectBrowser();\n return browser.name === 'Chrome' ? 'dark' : 'blur';\n};\n","import { cva } from 'class-variance-authority';\n\nexport type ZDrawerShape = 'rounded' | 'square';\n\nexport const zDrawerVariants = cva(['fixed z-50 flex flex-col bg-background overflow-hidden'].join(' '), {\n variants: {\n placement: {\n left: 'left-0 top-0 h-full max-w-[90vw] dark:border-r shadow-[3px_0_10px_rgba(0,0,0,0.08)]',\n right: 'right-0 top-0 h-full max-w-[90vw] dark:border-l shadow-[-3px_0_10px_rgba(0,0,0,0.08)]',\n top: 'top-0 left-0 w-full max-h-[90vh] dark:border-b shadow-[0_3px_10px_rgba(0,0,0,0.08)]',\n bottom: 'bottom-0 left-0 w-full max-h-[90vh] dark:border-t shadow-[0_-3px_10px_rgba(0,0,0,0.08)]',\n },\n shape: {\n rounded: '',\n square: '',\n },\n },\n compoundVariants: [\n { placement: 'left', shape: 'rounded', class: 'rounded-r-lg' },\n { placement: 'right', shape: 'rounded', class: 'rounded-l-lg' },\n { placement: 'top', shape: 'rounded', class: 'rounded-b-lg' },\n { placement: 'bottom', shape: 'rounded', class: 'rounded-t-lg' },\n ],\n defaultVariants: {\n placement: 'right',\n shape: 'rounded',\n },\n});\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n type ComponentPortal,\n PortalModule,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n type ComponentRef,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n type EmbeddedViewRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n type TemplateRef,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZSkeletonComponent } from '@shival99/z-ui/components/z-skeleton';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZContentTypePipe, ZSafeHtmlPipe } from '@shival99/z-ui/pipes';\nimport { ZOverlayContainerService, ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { Subscription } from 'rxjs';\nimport { ZDrawerContentDirective } from './directives/z-drawer-content.directive';\nimport { ZDrawerFooterDirective } from './directives/z-drawer-footer.directive';\nimport { ZDrawerHeaderDirective } from './directives/z-drawer-header.directive';\nimport { ZDrawerRef } from './z-drawer.ref';\nimport { Z_DRAWER_ANIMATION_DURATION, ZDrawerOptions, ZDrawerPlacement } from './z-drawer.types';\nimport { getOverlayType } from './z-drawer.utils';\nimport { type ZDrawerShape, zDrawerVariants } from './z-drawer.variants';\n\n@Component({\n selector: 'z-drawer',\n imports: [\n PortalModule,\n NgTemplateOutlet,\n ZButtonComponent,\n ZIconComponent,\n ZContentTypePipe,\n ZTooltipDirective,\n ZSkeletonComponent,\n NgScrollbar,\n ZSafeHtmlPipe,\n TranslatePipe,\n CdkScrollable,\n ],\n standalone: true,\n templateUrl: './z-drawer.component.html',\n styleUrl: './z-drawer.component.scss',\n providers: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width]': 'effectiveWidth()',\n '[style.height]': 'effectiveHeight()',\n '[attr.data-placement]': 'effectivePlacement()',\n },\n exportAs: 'zDrawer',\n})\nexport class ZDrawerComponent<T, U> extends BasePortalOutlet implements OnDestroy, AfterViewChecked {\n public readonly zOnOk = output<void>();\n public readonly zOnCancel = output<void>();\n public readonly zAfterClose = output<void>();\n public readonly zScrollbar = output<NgScrollbar>();\n\n public readonly class = input<ClassValue>('');\n public readonly zVisible = model<boolean>(false);\n public readonly zTitle = input<string | TemplateRef<unknown>>();\n public readonly zDescription = input<string | TemplateRef<unknown>>();\n public readonly zWidth = input<string>('400px');\n public readonly zHeight = input<string>('400px');\n public readonly zPlacement = input<ZDrawerPlacement>('right');\n public readonly zClosable = input<boolean>(true);\n public readonly zMaskClosable = input<boolean>(true);\n public readonly zHideFooter = input<boolean>(false);\n public readonly zHideHeader = input<boolean>(false);\n public readonly zOkText = input<string | null>(null);\n public readonly zCancelText = input<string | null>(null);\n public readonly zOkDestructive = input<boolean>(false);\n public readonly zOkDisabled = input<boolean>(false);\n public readonly zLoading = input<boolean>(false);\n public readonly zOverlay = input<'dark' | 'blur'>(getOverlayType());\n public readonly zShadow = input<boolean>(false);\n public readonly zShape = input<ZDrawerShape>('rounded');\n public readonly zContentLoading = input<boolean>(false);\n public readonly zSkeletonRows = input<number | null>(null);\n\n protected readonly customHeader = contentChild(ZDrawerHeaderDirective);\n protected readonly customContent = contentChild(ZDrawerContentDirective);\n protected readonly customFooter = contentChild(ZDrawerFooterDirective);\n\n public drawerRef?: ZDrawerRef<T>;\n public readonly portalOutlet = viewChild(CdkPortalOutlet);\n protected readonly dummyTemplateRef = viewChild<TemplateRef<unknown>>('dummyTemplate');\n protected readonly mainContentRef = viewChild<NgScrollbar>('mainContent');\n\n protected readonly config = inject(ZDrawerOptions<T, U>, { optional: true }) || new ZDrawerOptions<T, U>();\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _host = inject(ElementRef<HTMLElement>);\n private readonly _overlay = inject(Overlay);\n private readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _cdr = inject(ChangeDetectorRef);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _zTranslate = inject(ZTranslateService);\n private readonly _overlayContainerService = inject(ZOverlayContainerService);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n private _templateOverlayRef: OverlayRef | null = null;\n private _originalParent: HTMLElement | null = null;\n private _originalNextSibling: Node | null = null;\n private _backdropSubscription: Subscription | null = null;\n private _closeTimeout: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly isLeaving = signal(false);\n protected readonly hasScrollableContent = signal(false);\n protected readonly isScrolledFromTop = signal(false);\n protected readonly isScrolledToBottom = signal(false);\n protected readonly isServiceMode = computed(() => !!this.drawerRef);\n protected readonly isTemplateMode = computed(() => !this.isServiceMode());\n protected readonly shouldRenderContent = computed(() => this.zVisible() || this.isLeaving());\n protected readonly isStringContent = computed(() => typeof this.config.zContent === 'string');\n protected readonly shouldShowShadow = computed(() => true);\n\n private _lastScrollHeight = 0;\n\n public ngAfterViewChecked(): void {\n this._checkScrollState();\n }\n\n private _checkScrollState(): void {\n const scrollbar = this.mainContentRef();\n if (!scrollbar) {\n return;\n }\n\n const viewport = scrollbar.nativeElement.querySelector('.ng-scroll-viewport') as HTMLElement;\n if (!viewport) {\n return;\n }\n\n if (viewport.scrollHeight === this._lastScrollHeight) {\n return;\n }\n this._lastScrollHeight = viewport.scrollHeight;\n\n const hasVerticalScroll = viewport.scrollHeight > viewport.clientHeight;\n this.hasScrollableContent.set(hasVerticalScroll);\n }\n\n public onContentScroll(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target) {\n return;\n }\n\n const { scrollTop } = target;\n const { scrollHeight } = target;\n const { clientHeight } = target;\n\n this.isScrolledFromTop.set(scrollTop > 0);\n this.isScrolledToBottom.set(scrollTop + clientHeight >= scrollHeight - 1);\n }\n\n protected readonly effectiveTitle = computed(() => {\n this._zTranslate.currentLang();\n return this.isServiceMode() ? this.config.zTitle : this.zTitle();\n });\n\n protected readonly effectiveDescription = computed(() =>\n this.isServiceMode() ? this.config.zDescription : this.zDescription()\n );\n\n protected readonly effectiveClosable = computed(() =>\n this.isServiceMode() ? (this.config.zClosable ?? true) : this.zClosable()\n );\n\n protected readonly effectiveHideFooter = computed(() =>\n this.isServiceMode() ? this.config.zHideFooter : this.zHideFooter()\n );\n\n protected readonly effectiveHideHeader = computed(() =>\n this.isServiceMode() ? (this.config.zHideHeader ?? false) : this.zHideHeader()\n );\n\n protected readonly effectiveOkText = computed(() => (this.isServiceMode() ? this.config.zOkText : this.zOkText()));\n\n protected readonly effectiveCancelText = computed(() =>\n this.isServiceMode() ? this.config.zCancelText : this.zCancelText()\n );\n\n protected readonly effectiveOkDestructive = computed(() =>\n this.isServiceMode() ? this.config.zOkDestructive : this.zOkDestructive()\n );\n\n protected readonly effectiveOkDisabled = computed(() =>\n this.isServiceMode() ? this.config.zOkDisabled : this.zOkDisabled()\n );\n\n protected readonly effectiveLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.drawerRef?.loading() || (this.config.zLoading?.() ?? false);\n }\n return this.zLoading();\n });\n\n protected readonly effectiveContentLoading = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zContentLoading?.() ?? false;\n }\n return this.zContentLoading();\n });\n\n protected readonly effectiveSkeletonRows = computed(() => {\n if (this.isServiceMode() && this.config.zSkeletonRows != null) {\n return this.config.zSkeletonRows;\n }\n if (this.zSkeletonRows() != null) {\n return this.zSkeletonRows() as number;\n }\n const placement = this.effectivePlacement();\n return placement === 'left' || placement === 'right' ? 6 : 3;\n });\n\n protected readonly effectivePlacement = computed<ZDrawerPlacement>(() => {\n if (this.isServiceMode()) {\n return this.config.zPlacement ?? 'right';\n }\n return this.zPlacement();\n });\n\n protected readonly effectiveShadow = computed(() => {\n if (this.isServiceMode()) {\n return this.config.zShadow ?? false;\n }\n return this.zShadow();\n });\n\n protected readonly effectiveShape = computed<ZDrawerShape>(() => {\n if (this.isServiceMode()) {\n return this.config.zShape ?? 'rounded';\n }\n return this.zShape();\n });\n\n protected readonly effectiveWidth = computed(() => {\n const placement = this.effectivePlacement();\n if (placement === 'top' || placement === 'bottom') {\n return null;\n }\n if (this.isServiceMode()) {\n return this.zWidth() || this.config.zWidth || null;\n }\n return this.shouldRenderContent() ? this.zWidth() : null;\n });\n\n protected readonly effectiveHeight = computed(() => {\n const placement = this.effectivePlacement();\n if (placement === 'left' || placement === 'right') {\n return null;\n }\n if (this.isServiceMode()) {\n return this.zHeight() || this.config.zHeight || null;\n }\n return this.shouldRenderContent() ? this.zHeight() : null;\n });\n\n protected readonly isDeferLoading = computed(() => {\n if (!this.isServiceMode()) {\n return false;\n }\n return !!this.config.zDefer && !this.portalOutlet()?.hasAttached();\n });\n\n protected readonly classes = computed(() =>\n zMergeClasses(\n zDrawerVariants({ placement: this.effectivePlacement(), shape: this.effectiveShape() }),\n this.isServiceMode() ? this.config.class : this.class()\n )\n );\n\n protected readonly hostClasses = computed(() => {\n const baseClasses = this.classes();\n if (this.isServiceMode()) {\n return `${baseClasses} z-drawer-service-mode`.trim();\n }\n if (this.shouldRenderContent()) {\n return `${baseClasses} z-drawer-template-mode`.trim();\n }\n return 'z-drawer-template-host';\n });\n\n constructor() {\n super();\n\n effect(() => {\n this._zTranslate.currentLang();\n this._cdr.markForCheck();\n });\n\n effect(() => {\n const scrollbar = this.mainContentRef();\n if (scrollbar) {\n this.zScrollbar.emit(scrollbar);\n }\n });\n\n effect(() => {\n const visible = this.zVisible();\n if (visible && this.isTemplateMode() && !this._templateOverlayRef) {\n this._openTemplateOverlay();\n return;\n }\n\n if (!visible && this.isTemplateMode() && this._templateOverlayRef && !this.isLeaving()) {\n this._closeWithAnimation();\n }\n });\n }\n\n public ngOnDestroy(): void {\n this._clearCloseTimeout();\n this._disposeTemplateOverlay();\n }\n\n public isDestroyed(): boolean {\n return this._destroyRef.destroyed;\n }\n\n public getNativeElement(): HTMLElement {\n return this._host.nativeElement;\n }\n\n public attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._cdr.detectChanges();\n const outlet = this.portalOutlet();\n if (outlet?.hasAttached()) {\n throw new Error('Attempting to attach drawer content after content is already attached');\n }\n return outlet?.attachComponentPortal(portal) as ComponentRef<T>;\n }\n\n public attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n const outlet = this.portalOutlet();\n if (outlet?.hasAttached()) {\n throw new Error('Attempting to attach drawer content after content is already attached');\n }\n return outlet?.attachTemplatePortal(portal) as EmbeddedViewRef<C>;\n }\n\n public onOkClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zOnOk.emit();\n }\n\n public onCloseClick(): void {\n if (this.effectiveLoading()) {\n return;\n }\n this.zOnCancel.emit();\n if (this.isTemplateMode()) {\n this._closeWithAnimation();\n }\n }\n\n public onBackdropClick(): void {\n if (this.zMaskClosable() && !this.effectiveLoading()) {\n this.zOnCancel.emit();\n this._closeWithAnimation();\n }\n }\n\n public open(): void {\n this.isLeaving.set(false);\n this.zVisible.set(true);\n }\n\n public close(): void {\n this._closeWithAnimation();\n }\n\n private _createOverlay(): OverlayRef | null {\n if (!isPlatformBrowser(this._platformId)) {\n return null;\n }\n\n const overlayType = this.zOverlay();\n const backdropClass = overlayType === 'blur' ? 'z-drawer-backdrop-blur' : 'z-drawer-backdrop-dark';\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass,\n panelClass: 'z-drawer-overlay-pane',\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: this._overlay.scrollStrategies.block(),\n });\n\n return this._overlay.create(overlayConfig);\n }\n\n private _openTemplateOverlay(): void {\n if (this._templateOverlayRef) {\n return;\n }\n\n const dummyRef = this.dummyTemplateRef();\n if (!dummyRef) {\n return;\n }\n\n this._templateOverlayRef = this._createOverlay();\n if (!this._templateOverlayRef) {\n return;\n }\n\n this._zIndexService.applyToOverlay(this._templateOverlayRef);\n\n const hostElement = this._host.nativeElement;\n this._originalParent = hostElement.parentElement;\n this._originalNextSibling = hostElement.nextSibling;\n\n const portal = new TemplatePortal(dummyRef, this._viewContainerRef);\n this._templateOverlayRef.attach(portal);\n\n const overlayPane = this._templateOverlayRef.overlayElement;\n overlayPane.style.position = 'static';\n overlayPane.appendChild(hostElement);\n\n this._backdropSubscription = this._templateOverlayRef.backdropClick().subscribe(() => {\n this.onBackdropClick();\n });\n }\n\n private _closeWithAnimation(): void {\n if (this.isLeaving()) {\n return;\n }\n\n this._overlayContainerService.notifyClosing();\n this.isLeaving.set(true);\n this.zVisible.set(false);\n\n const hostElement = this._host.nativeElement;\n const { backdropElement } = this._templateOverlayRef ?? {};\n\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n\n hostElement.classList.add('drawer-leave');\n\n this._clearCloseTimeout();\n this._closeTimeout = setTimeout(() => {\n if (this._destroyRef.destroyed) {\n return;\n }\n\n this.isLeaving.set(false);\n this._disposeTemplateOverlay();\n this.zAfterClose.emit();\n }, Z_DRAWER_ANIMATION_DURATION);\n }\n\n private _clearCloseTimeout(): void {\n if (!this._closeTimeout) {\n return;\n }\n\n clearTimeout(this._closeTimeout);\n this._closeTimeout = null;\n }\n\n private _disposeTemplateOverlay(): void {\n const hostElement = this._host.nativeElement;\n\n if (this._originalParent && this._originalNextSibling) {\n this._originalParent.insertBefore(hostElement, this._originalNextSibling);\n }\n\n if (this._originalParent && !this._originalNextSibling) {\n this._originalParent.appendChild(hostElement);\n }\n\n hostElement.classList.remove('drawer-leave');\n if (this._templateOverlayRef) {\n this._templateOverlayRef.dispose();\n this._templateOverlayRef = null;\n }\n\n this._originalParent = null;\n this._originalNextSibling = null;\n\n if (this._backdropSubscription) {\n this._backdropSubscription.unsubscribe();\n this._backdropSubscription = null;\n }\n }\n}\n","<!-- Dummy template to trigger CDK backdrop creation -->\n<ng-template #dummyTemplate />\n\n<!-- Template mode content (rendered in host element, which is moved to overlay) -->\n@if (isTemplateMode() && shouldRenderContent()) {\n @defer (when !effectiveContentLoading()) {\n @if (customHeader(); as headerDir) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex items-start justify-between px-4\">\n <ng-container *ngTemplateOutlet=\"headerDir.templateRef\" />\n </div>\n </header>\n } @else if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex w-full items-start justify-between overflow-hidden px-4\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n @if (effectiveDescription(); as description) {\n @switch (description | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(description)\" />\n }\n @case ('html') {\n <p\n data-testid=\"z-drawer-description\"\n class=\"text-muted-foreground m-0 mt-1 text-sm\"\n [innerHTML]=\"$any(description) | zSafeHtml\"></p>\n }\n @default {\n <p data-testid=\"z-drawer-description\" class=\"text-muted-foreground m-0 mt-1 text-sm\">\n {{ $any(description) | translate }}\n </p>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n class=\"-mt-1 -mr-2 shrink-0\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-drawer-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main class=\"flex min-h-0 flex-col gap-4 px-4 py-4\">\n @if (customContent(); as contentDir) {\n <ng-container *ngTemplateOutlet=\"contentDir.templateRef\" />\n } @else {\n <ng-content />\n }\n </main>\n </ng-scrollbar>\n\n @if (customFooter(); as footerDir) {\n <footer [class.z-drawer-footer-shadow]=\"shouldShowShadow()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n <ng-container *ngTemplateOutlet=\"footerDir.templateRef\" />\n </div>\n </footer>\n } @else if (!effectiveHideFooter()) {\n <footer [class.z-drawer-footer-shadow]=\"shouldShowShadow()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </div>\n </footer>\n }\n } @placeholder {\n <div class=\"flex flex-1 flex-col gap-4 p-4\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n}\n\n<!-- Service mode content -->\n@if (isServiceMode()) {\n @defer (when !effectiveContentLoading()) {\n @if (!effectiveHideHeader()) {\n @if (effectiveTitle()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex w-full items-start justify-between overflow-hidden px-4\">\n <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n @if (effectiveTitle(); as title) {\n @switch (title | zContentType) {\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"$any(title)\" />\n }\n @case ('html') {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"title\"\n [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n }\n @default {\n <h4\n data-testid=\"z-drawer-title\"\n class=\"m-0 truncate text-base leading-snug font-semibold\"\n z-tooltip\n [zContent]=\"$any(title) | translate\">\n {{ $any(title) | translate }}\n </h4>\n }\n }\n }\n </div>\n @if (effectiveClosable()) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n }\n </div>\n </header>\n } @else if (effectiveClosable()) {\n <header [class.z-drawer-header-shadow]=\"shouldShowShadow()\">\n <div class=\"flex justify-end px-4\">\n <button\n type=\"button\"\n data-testid=\"z-drawer-close-header-button\"\n z-button\n zType=\"subtle\"\n zSize=\"xs\"\n [zWave]=\"false\"\n (click)=\"onCloseClick()\">\n <z-icon zType=\"lucideX\" />\n </button>\n </div>\n </header>\n }\n }\n\n <ng-scrollbar\n class=\"z-drawer-scrollbar flex-1\"\n #mainContent\n track=\"vertical\"\n cdkScrollable\n (scroll)=\"onContentScroll($event)\">\n <main class=\"flex min-h-0 flex-col gap-4 px-4 py-4\">\n <ng-template cdkPortalOutlet />\n\n @if (isStringContent()) {\n <div data-testid=\"z-drawer-content\" [innerHTML]=\"$any(config.zContent) | zSafeHtml\"></div>\n }\n </main>\n </ng-scrollbar>\n\n @if (!effectiveHideFooter()) {\n <footer [class.z-drawer-footer-shadow]=\"shouldShowShadow()\">\n <div class=\"flex flex-row justify-end gap-2 px-4\">\n @if (effectiveCancelText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-cancel-button\"\n z-button\n zType=\"outline\"\n (click)=\"onCloseClick()\">\n @if (config.zCancelIcon) {\n <z-icon [zType]=\"config.zCancelIcon\" />\n }\n {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n </button>\n }\n\n @if (effectiveOkText() !== null) {\n <button\n type=\"button\"\n data-testid=\"z-drawer-ok-button\"\n z-button\n [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n [zLoading]=\"effectiveLoading()\"\n (click)=\"onOkClick()\">\n @if (config.zOkIcon && !effectiveLoading()) {\n <z-icon [zType]=\"config.zOkIcon\" />\n }\n {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n </button>\n }\n </div>\n </footer>\n }\n } @placeholder {\n <div class=\"flex flex-1 flex-col gap-4 p-4\">\n <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n </div>\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, Inject, PLATFORM_ID, signal } from '@angular/core';\nimport { filter, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ZDrawerComponent } from './z-drawer.component';\nimport { Z_DRAWER_ANIMATION_DURATION, ZDrawerOptions, ZDrawerTriggerAction } from './z-drawer.types';\n\nexport class ZDrawerRef<T = any, R = any, U = any> {\n private readonly _destroy$ = new Subject<void>();\n private _isClosing = false;\n private _result?: R;\n\n public componentInstance: T | null = null;\n public readonly loading = signal(false);\n public readonly zAfterClose = new EventEmitter<R | undefined>();\n\n public constructor(\n private readonly _overlayRef: OverlayRef,\n private readonly _config: ZDrawerOptions<T, U>,\n private readonly _containerInstance: ZDrawerComponent<T, U>,\n @Inject(PLATFORM_ID) private readonly _platformId: object\n ) {\n this._containerInstance.zOnCancel.subscribe(() => this._trigger(ZDrawerTriggerAction.CANCEL));\n this._containerInstance.zOnOk.subscribe(() => this._trigger(ZDrawerTriggerAction.OK));\n\n if ((this._config.zMaskClosable ?? true) && isPlatformBrowser(this._platformId)) {\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n if (!this.loading()) {\n this._trigger(ZDrawerTriggerAction.CANCEL);\n }\n });\n }\n\n if (isPlatformBrowser(this._platformId)) {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter(event => event.key === 'Escape'),\n takeUntil(this._destroy$)\n )\n .subscribe(() => {\n if (!this.loading()) {\n this._trigger(ZDrawerTriggerAction.CANCEL);\n }\n });\n }\n }\n\n public setLoading(value: boolean): void {\n this.loading.set(value);\n }\n\n public close(result?: R): void {\n if (this._isClosing) {\n return;\n }\n\n this._isClosing = true;\n this._result = result;\n\n if (isPlatformBrowser(this._platformId)) {\n const hostElement = this._containerInstance.getNativeElement();\n hostElement.classList.add('drawer-leave');\n const { backdropElement } = this._overlayRef;\n if (backdropElement) {\n backdropElement.classList.add('z-backdrop-leaving');\n }\n }\n\n setTimeout(() => {\n if (!this._containerInstance.isDestroyed()) {\n this._containerInstance.zAfterClose.emit();\n }\n\n this.zAfterClose.emit(this._result);\n\n if (this._overlayRef) {\n if (this._overlayRef.hasAttached()) {\n this._overlayRef.detachBackdrop();\n }\n\n this._overlayRef.dispose();\n }\n\n if (!this._destroy$.closed) {\n this._destroy$.next();\n this._destroy$.complete();\n }\n }, Z_DRAWER_ANIMATION_DURATION);\n }\n\n private _trigger(action: ZDrawerTriggerAction): void {\n if (this.loading()) {\n return;\n }\n\n const trigger = {\n ok: this._config.zOnOk,\n cancel: this._config.zOnCancel,\n }[action];\n\n if (trigger instanceof EventEmitter) {\n trigger.emit(this._getContentComponent());\n return;\n }\n\n if (typeof trigger === 'function') {\n const result = trigger(this._getContentComponent(), this) as R;\n this._closeWithResult(result);\n return;\n }\n\n this.close();\n }\n\n private _getContentComponent(): T {\n return this.componentInstance as T;\n }\n\n private _closeWithResult(result: R): void {\n if (result !== false) {\n this.close(result);\n }\n }\n}\n","import { type ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, Injector, PLATFORM_ID, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ZOverlayZIndexService } from '@shival99/z-ui/services';\nimport { ZDrawerComponent } from './z-drawer.component';\nimport { ZDrawerRef } from './z-drawer.ref';\nimport { Z_DRAWER_DATA, ZDrawerContentType, ZDrawerOptions } from './z-drawer.types';\nimport { getOverlayType } from './z-drawer.utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZDrawerService {\n private readonly _overlay = inject(Overlay);\n private readonly _injector = inject(Injector);\n private readonly _platformId = inject(PLATFORM_ID);\n private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n public create<T, U>(config: ZDrawerOptions<T, U>): ZDrawerRef<T> {\n return this._open<T, U>(config.zContent as ComponentType<T>, config);\n }\n\n private _open<T, U>(componentOrTemplateRef: ZDrawerContentType<T>, config: ZDrawerOptions<T, U>) {\n const overlayRef = this._createOverlay(config);\n\n if (!overlayRef) {\n return new ZDrawerRef(\n undefined as unknown as OverlayRef,\n config,\n undefined as unknown as ZDrawerComponent<T, U>,\n this._platformId\n );\n }\n\n const drawerContainer = this._attachDrawerContainer<T, U>(overlayRef, config);\n const drawerRef = this._attachDrawerContent<T, U>(componentOrTemplateRef, drawerContainer, overlayRef, config);\n\n return drawerRef;\n }\n\n private _createOverlay<T, U>(config: ZDrawerOptions<T, U>): OverlayRef | undefined {\n if (!isPlatformBrowser(this._platformId)) {\n return undefined;\n }\n\n const overlayType = config.zOverlay ?? getOverlayType();\n const backdropClass = overlayType === 'blur' ? 'z-drawer-backdrop-blur' : 'z-drawer-backdrop-dark';\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass,\n positionStrategy: this._overlay.position().global(),\n });\n\n const overlayRef = this._overlay.create(overlayConfig);\n\n this._zIndexService.applyToOverlay(overlayRef);\n\n return overlayRef;\n }\n\n private _attachDrawerContainer<T, U>(overlayRef: OverlayRef, config: ZDrawerOptions<T, U>) {\n const injector = Injector.create({\n parent: this._injector,\n providers: [\n { provide: OverlayRef, useValue: overlayRef },\n { provide: ZDrawerOptions, useValue: config },\n ],\n });\n\n const containerPortal = new ComponentPortal<ZDrawerComponent<T, U>>(\n ZDrawerComponent,\n config.zViewContainerRef,\n injector\n );\n const containerRef = overlayRef.attach<ZDrawerComponent<T, U>>(containerPortal);\n\n return containerRef.instance;\n }\n\n private _attachDrawerContent<T, U>(\n componentOrTemplateRef: ZDrawerContentType<T>,\n drawerContainer: ZDrawerComponent<T, U>,\n overlayRef: OverlayRef,\n config: ZDrawerOptions<T, U>\n ) {\n const drawerRef = new ZDrawerRef<T>(overlayRef, config, drawerContainer, this._platformId);\n drawerContainer.drawerRef = drawerRef;\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n drawerContainer.attachTemplatePortal(\n new TemplatePortal<T>(componentOrTemplateRef, null as unknown as ViewContainerRef, { drawerRef } as T)\n );\n return drawerRef;\n }\n\n if (typeof componentOrTemplateRef !== 'string') {\n const injector = this._createInjector<T, U>(drawerRef, config);\n const contentRef = drawerContainer.attachComponentPortal<T>(\n new ComponentPortal(componentOrTemplateRef, config.zViewContainerRef, injector)\n );\n\n if (contentRef) {\n drawerRef.componentInstance = contentRef.instance;\n }\n }\n\n return drawerRef;\n }\n\n private _createInjector<T, U>(drawerRef: ZDrawerRef<T>, config: ZDrawerOptions<T, U>) {\n return Injector.create({\n parent: this._injector,\n providers: [\n { provide: ZDrawerRef, useValue: drawerRef },\n { provide: Z_DRAWER_DATA, useValue: config.zData },\n ],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { BasePortalOutlet, CdkPortalOutlet, TemplatePortal, PortalModule, Compon
4
4
  import { CdkScrollable } from '@angular/cdk/scrolling';
5
5
  import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';
6
6
  import * as i0 from '@angular/core';
7
- import { inject, TemplateRef, Directive, InjectionToken, output, input, model, contentChild, viewChild, PLATFORM_ID, ElementRef, ViewContainerRef, ChangeDetectorRef, signal, computed, effect, ChangeDetectionStrategy, Component, EventEmitter, Inject, Injector, Injectable } from '@angular/core';
7
+ import { inject, TemplateRef, Directive, InjectionToken, output, input, model, contentChild, viewChild, PLATFORM_ID, ElementRef, ViewContainerRef, ChangeDetectorRef, DestroyRef, signal, computed, effect, ChangeDetectionStrategy, Component, EventEmitter, Inject, Injector, Injectable } from '@angular/core';
8
8
  import { TranslatePipe } from '@ngx-translate/core';
9
9
  import { ZButtonComponent } from '@shival99/z-ui/components/z-button';
10
10
  import { ZIconComponent } from '@shival99/z-ui/components/z-icon';
@@ -243,6 +243,7 @@ class ZModalComponent extends BasePortalOutlet {
243
243
  _overlay = inject(Overlay);
244
244
  _viewContainerRef = inject(ViewContainerRef);
245
245
  _cdr = inject(ChangeDetectorRef);
246
+ _destroyRef = inject(DestroyRef);
246
247
  _zTranslate = inject(ZTranslateService);
247
248
  _overlayContainerService = inject(ZOverlayContainerService);
248
249
  _zIndexService = inject(ZOverlayZIndexService);
@@ -250,6 +251,7 @@ class ZModalComponent extends BasePortalOutlet {
250
251
  _originalParent = null;
251
252
  _originalNextSibling = null;
252
253
  _backdropSubscription = null;
254
+ _closeTimeout = null;
253
255
  isLeaving = signal(false, ...(ngDevMode ? [{ debugName: "isLeaving" }] : []));
254
256
  hasScrollableContent = signal(false, ...(ngDevMode ? [{ debugName: "hasScrollableContent" }] : []));
255
257
  isScrolledFromTop = signal(false, ...(ngDevMode ? [{ debugName: "isScrolledFromTop" }] : []));
@@ -382,8 +384,12 @@ class ZModalComponent extends BasePortalOutlet {
382
384
  });
383
385
  }
384
386
  ngOnDestroy() {
387
+ this._clearCloseTimeout();
385
388
  this._disposeTemplateOverlay();
386
389
  }
390
+ isDestroyed() {
391
+ return this._destroyRef.destroyed;
392
+ }
387
393
  getNativeElement() {
388
394
  return this._host.nativeElement;
389
395
  }
@@ -484,12 +490,23 @@ class ZModalComponent extends BasePortalOutlet {
484
490
  backdropElement.classList.add('z-backdrop-leaving');
485
491
  }
486
492
  hostElement.classList.add('modal-leave');
487
- setTimeout(() => {
493
+ this._clearCloseTimeout();
494
+ this._closeTimeout = setTimeout(() => {
495
+ if (this._destroyRef.destroyed) {
496
+ return;
497
+ }
488
498
  this.isLeaving.set(false);
489
499
  this._disposeTemplateOverlay();
490
500
  this.zAfterClose.emit();
491
501
  }, Z_MODAL_ANIMATION_DURATION);
492
502
  }
503
+ _clearCloseTimeout() {
504
+ if (!this._closeTimeout) {
505
+ return;
506
+ }
507
+ clearTimeout(this._closeTimeout);
508
+ this._closeTimeout = null;
509
+ }
493
510
  _disposeTemplateOverlay() {
494
511
  const hostElement = this._host.nativeElement;
495
512
  if (this._originalParent && this._originalNextSibling) {
@@ -589,14 +606,16 @@ let ZModalRef = class ZModalRef {
589
606
  }
590
607
  }
591
608
  setTimeout(() => {
609
+ if (!this._containerInstance.isDestroyed()) {
610
+ this._containerInstance.zAfterClose.emit();
611
+ }
612
+ this.zAfterClose.emit(this._result);
592
613
  if (this._overlayRef) {
593
614
  if (this._overlayRef.hasAttached()) {
594
615
  this._overlayRef.detachBackdrop();
595
616
  }
596
617
  this._overlayRef.dispose();
597
618
  }
598
- this._containerInstance.zAfterClose.emit();
599
- this.zAfterClose.emit(this._result);
600
619
  if (!this._destroy$.closed) {
601
620
  this._destroy$.next();
602
621
  this._destroy$.complete();