@filip.mazev/modal 0.1.51 → 0.1.52

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.
package/README.md CHANGED
@@ -132,7 +132,7 @@ The structure of the object returned when a modal closes, accessible via the obs
132
132
  Use the ModalService to launch your component:
133
133
 
134
134
  ```typescript
135
- private modals = inject(ModalService);
135
+ private readonly modals = inject(ModalService);
136
136
 
137
137
  ...
138
138
 
@@ -209,8 +209,8 @@ class ModalService {
209
209
  appRef = inject(ApplicationRef);
210
210
  environmentInjector = inject(EnvironmentInjector);
211
211
  rendererFactory = inject(RendererFactory2);
212
- renderer;
213
212
  document = inject(DOCUMENT);
213
+ renderer;
214
214
  //#region Properties
215
215
  modals = new Set();
216
216
  modalsSubject = new BehaviorSubject(this.modals);
@@ -614,6 +614,10 @@ const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;
614
614
  const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;
615
615
 
616
616
  class ModalCore {
617
+ modalService = inject(ModalService);
618
+ scrollLockService = inject(ScrollLockService);
619
+ windowDimensionsService = inject(WindowDimensionsService);
620
+ animationDuration = MODAL_DEFAULT_ANIM_DURATION;
617
621
  componentRef = {};
618
622
  config;
619
623
  closeFunction;
@@ -624,16 +628,12 @@ class ModalCore {
624
628
  isCentered = signal(false, ...(ngDevMode ? [{ debugName: "isCentered" }] : []));
625
629
  isSide = signal(false, ...(ngDevMode ? [{ debugName: "isSide" }] : []));
626
630
  isAnimated = false;
627
- animationDuration = MODAL_DEFAULT_ANIM_DURATION;
628
631
  headerTemplate = signal(null, ...(ngDevMode ? [{ debugName: "headerTemplate" }] : []));
629
632
  footerTemplate = signal(null, ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
630
633
  id = signal(null, ...(ngDevMode ? [{ debugName: "id" }] : []));
631
634
  isBottomSheetModalActive = signal(false, ...(ngDevMode ? [{ debugName: "isBottomSheetModalActive" }] : []));
632
635
  hasBanner = false;
633
636
  hasDefaultContentWrapperClass = false;
634
- modalService = inject(ModalService);
635
- scrollLockService = inject(ScrollLockService);
636
- windowDimensionsService = inject(WindowDimensionsService);
637
637
  windowDimensions = this.windowDimensionsService.dimensions;
638
638
  modalContainer;
639
639
  contentTemplate;
@@ -744,8 +744,6 @@ class ModalCore {
744
744
  this.isAnimated = this.config?.style.animate === true;
745
745
  }
746
746
  initBreakpointCache() {
747
- // eslint-disable-next-line no-debugger
748
- debugger;
749
747
  const definedBreakpoints = this.config?.style?.breakpoints;
750
748
  if (definedBreakpoints && Object.keys(definedBreakpoints).length > 0) {
751
749
  const serviceBreakpoints = this.windowDimensionsService.breakpoints;
@@ -1 +1 @@
1
- {"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/classes/modal-style.config.ts","../../../projects/modal/src/lib/classes/modal-config.ts","../../../projects/modal/src/lib/enums/modal-state.enum.ts","../../../projects/modal/src/lib/classes/modal-ref.ts","../../../projects/modal/src/lib/tokens/modal-data.token.ts","../../../projects/modal/src/lib/services/modal.service.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/modal-bottom-sheet.constants.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/constants/modal-animation.constants.ts","../../../projects/modal/src/lib/components/modal-core.ts","../../../projects/modal/src/lib/components/modal-core.html","../../../projects/modal/src/lib/classes/modal.ts","../../../projects/modal/src/lib/enums/modal-warnings.enum.ts","../../../projects/modal/src/lib/directives/modal-header.directive.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/lib/classes/modal-close-guard.ts","../../../projects/modal/src/lib/classes/guards/modal-confirm-close-guard.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["import { IModalStyleConfig } from '../interfaces/imodal-style-config.interface';\nimport { IBottomSheetModalConfig } from '../interfaces/ibottom-sheet-modal-config.interface';\nimport { BreakpointKey, ModalLayout } from '../types/modal.types';\n\nexport class ModalStyleConfig implements IModalStyleConfig {\n public layout: ModalLayout;\n public breakpoints?: Partial<Record<BreakpointKey, ModalLayout>>;\n\n public animate: boolean;\n public hasBackdrop: boolean;\n public closeDelay?: number;\n public showCloseButton?: boolean;\n\n public mobileConfig: IBottomSheetModalConfig;\n\n public contentWrapper: boolean;\n\n public wrapperClasses: string;\n public wrapperStyles: string;\n\n public overrideFullHeight: boolean;\n\n constructor(config?: IModalStyleConfig) {\n this.layout = config?.layout ?? 'center';\n this.breakpoints = config?.breakpoints;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? '';\n this.wrapperStyles = config?.wrapperStyles ?? '';\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { ModalStyleConfig } from './modal-style.config';\nimport { ModalCloseGuard } from './modal-close-guard';\nimport { IModalCloseResult } from '@modal/public-api';\nimport { Observable } from 'rxjs';\n\nexport class ModalConfig<D, R> {\n public open: boolean;\n\n public afterClose?: () => Observable<IModalCloseResult<R | undefined>>;\n\n public closeGuard?: ModalCloseGuard;\n public closeGuardOnlyOnCancel?: boolean;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public data: D | null;\n\n public style: ModalStyleConfig;\n\n public bannerText: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id?: string;\n\n constructor(config?: IModalConfig<D, R>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.closeGuard = config?.closeGuard;\n this.closeGuardOnlyOnCancel = config?.closeGuardOnlyOnCancel ?? true;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.data = config?.data ?? null;\n this.style = new ModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? '';\n\n this.contentClasses = config?.contentClasses ?? '';\n this.contentStyles = config?.contentStyles ?? '';\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id;\n }\n}\n","export enum ModalState {\n OPEN = 'open',\n OPENING = 'opening',\n CLOSED = 'closed',\n CLOSING = 'closing'\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ModalConfig } from './modal-config';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalState } from '../enums/modal-state.enum';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { IModalRef } from '../interfaces/imodal-ref.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalCloseMode } from '../types/modal.types';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ComponentType } from '@angular/cdk/portal';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ModalRef<D = unknown, R = any, C extends IModal<D, R> = IModal<D, R>> implements IModalRef<D, R, C> {\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n private _parentElement: HTMLElement | undefined = undefined;\n //#region Component\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n //#region Self\n private _modalState: ModalState = ModalState.CLOSED;\n //#endregion\n private modalState = new BehaviorSubject<ModalState>(this.getStatus());\n private _modalConfig?: ModalConfig<D, R> = undefined;\n //#region Observables\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n //#endregion\n private afterCloseSubject: Subject<IModalCloseResult<R | undefined>> = new Subject<IModalCloseResult<R | undefined>>();\n //#endregion\n constructor(\n componentRef: ComponentRef<C>,\n public componentType: ComponentType<C>,\n modalContainerRef: ComponentRef<ModalCore<D, R, C>>,\n private modalService: ModalService,\n modalConfig?: ModalConfig<D, R>\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n //#endregion\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get modalConfig(): ModalConfig<D, R> | undefined {\n return this._modalConfig;\n }\n\n private set modalConfig(modalConfig: ModalConfig<D, R> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n public modalState$(): Observable<ModalState> {\n return this.modalState.asObservable();\n }\n\n /**\n * Observable that emits when the modal has been closed.\n * @returns An Observable that emits an IModalCloseResult<R | undefined> when the modal is closed.\n */\n public afterClosed(): Observable<IModalCloseResult<R | undefined>> {\n return this.afterCloseSubject.asObservable();\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = ModalState.OPENING;\n this.modalState.next(ModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new ModalConfig(this.modalConfig);\n\n this.modalContainerRef.instance.config = config;\n\n this.modalContainerRef.instance.closeFunction = this.handleClose.bind(this);\n\n this.parentElement?.appendChild(this.modalContainerElement);\n\n this.modalContainerRef.instance.backdropClick.subscribe((event) => {\n this.backdropClicked(event);\n });\n\n this._modalState = ModalState.OPEN;\n this.modalState.next(ModalState.OPEN);\n }\n\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, forceClose: boolean = false): void {\n this.modalContainerRef.instance.close(state, result, false, forceClose);\n }\n\n private getStatus(): ModalState {\n return this._modalState;\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterClose(result: IModalCloseResult<R | undefined>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IModalCloseResult<R | undefined>): void {\n this._modalState = ModalState.CLOSING;\n this.modalState.next(ModalState.CLOSING);\n\n setTimeout(() => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = ModalState.CLOSED;\n this.modalState.next(ModalState.CLOSED);\n\n this.afterClose(result);\n\n this.modalService?.unregister(this);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const MODAL_DATA: InjectionToken<any> = new InjectionToken<any>('MODAL_DATA');\n","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, RendererFactory2, Renderer2, Type } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { BehaviorSubject, filter, skip } from 'rxjs';\nimport { ModalConfig } from '../classes/modal-config';\nimport { ModalRef } from '../classes/modal-ref';\nimport { ModalCore } from '../components/modal-core';\nimport { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { IModalService } from '../interfaces/imodal-service.interface';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService implements IModalService {\n private router = inject(Router);\n private injector = inject(Injector);\n private appRef = inject(ApplicationRef);\n private environmentInjector = inject(EnvironmentInjector);\n private rendererFactory = inject(RendererFactory2);\n private renderer: Renderer2;\n private document = inject(DOCUMENT);\n\n //#region Properties\n\n private modals: Set<ModalRef> = new Set();\n private modalsSubject = new BehaviorSubject<Set<ModalRef>>(this.modals);\n\n //#endregion\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.createSubscriptions();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n skip(1),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.modalsCount() > 0) {\n this.closeAll(true);\n }\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Opens a modal with the specified component and configuration.\n * @param component The component to be displayed in the modal.\n * @param config Optional configuration for the modal.\n * @returns A ModalRef instance representing the opened modal.\n */\n public open<D, R, C extends IModal<D, R> = IModal<D, R>>(component: ComponentType<C>, config?: IModalConfig<D, R>): ModalRef<D, R, C> {\n const dataInjector = Injector.create({\n providers: [{ provide: MODAL_DATA, useValue: config?.data }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent(ModalCore<D, R, C>, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n const contentInjector = Injector.create({\n providers: [{ provide: ModalCore, useValue: wrapperRef.instance }],\n parent: wrapperRef.injector\n });\n\n const contentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: contentInjector\n });\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = new ModalConfig(config);\n\n this.appRef.attachView(wrapperRef.hostView);\n this.document.body.appendChild(wrapperRef.location.nativeElement);\n\n const modal = new ModalRef<D, R, C>(contentRef, component, wrapperRef, this, new ModalConfig(config));\n\n if (this.isIModal<D, R>(contentRef.instance)) {\n contentRef.instance.modal = modal;\n contentRef.instance.onModalInit();\n }\n\n wrapperRef.onDestroy(() => {\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n });\n\n const modalElement = modal.componentRef.location.nativeElement;\n this.renderer.setStyle(modalElement, 'height', '97%');\n this.renderer.setStyle(modalElement, 'width', '100%');\n this.renderer.setStyle(modalElement, 'display', 'flex');\n this.renderer.setStyle(modalElement, 'flex-grow', '1');\n\n this.modals.add(modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n /**\n * Closes the specified modal.\n * @param modal The ModalRef instance representing the modal to be closed.\n */\n public close<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n modal.close();\n }\n\n /**\n * Unregisters the specified modal from the service.\n * @param modal The ModalRef instance representing the modal to be unregistered.\n */\n public unregister<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n this.modals.delete(modal);\n this.modalsSubject.next(this.modals);\n }\n\n /**\n * Closes all open modals.\n * @param onNavigate Indicates if the closeAll is triggered by navigation event.\n */\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close('cancel', undefined, true);\n }\n });\n }\n\n /**\n * Finds if a modal with the specified component type is currently open.\n * @param componentType The component type to search for.\n * @returns True if a modal with the specified component type is open, false otherwise.\n */\n public find<D, R>(componentType: Type<IModal<D, R>>): boolean {\n for (const modal of this.modals) {\n if (modal.componentRef.componentType === componentType) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the count of currently open modals.\n * @returns The number of open modals.\n */\n public modalsCount(): number {\n return this.modals.size;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private isIModal<D, R>(component: unknown): component is IModal<D, R> {\n return typeof component === 'object' && component !== null && 'onModalInit' in component && typeof (component as IModal<D, R>).onModalInit === 'function';\n }\n\n //#endregion\n}\n","import { Component, input, output } from '@angular/core';\n\n@Component({\n selector: 'app-modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n public readonly isAnimated = input(false);\n public readonly isOpen = input(false);\n\n public readonly click = output<MouseEvent>();\n}\n","<div class=\"modal-backdrop\" [class.backdrop-fade-in]=\"isAnimated() && isOpen()\"\n [class.backdrop-fade-out]=\"isAnimated() && !isOpen()\" (click)=\"click.emit($event)\">\n</div>","import { Component, input, output } from '@angular/core';\nimport { ModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'app-modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss'\n})\nexport class ModalDefaultCloseButton<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from '@angular/core';\nimport { ModalConfig } from '../../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../../types/modal.types';\nimport { ModalDefaultCloseButton } from '../default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-banner',\n imports: [ModalDefaultCloseButton],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss'\n})\nexport class ModalBanner<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n {{ config()?.bannerText }}\n }\n </div>\n\n <app-modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n</div>","export const MODAL_DOWN_SWIPE_LIMIT = 3;\nexport const MODAL_SWIPE_VELOCITY_THRESHOLD = 80;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as bottomSheetConst from '../../../constants/modal-bottom-sheet.constants';\n\n@Component({\n selector: 'app-modal-bottom-sheet',\n imports: [NgClass, NgTemplateOutlet],\n templateUrl: './modal-bottom-sheet.html',\n styleUrl: './modal-bottom-sheet.scss'\n})\nexport class ModalBottomSheet<D = unknown, R = unknown> implements OnInit, OnDestroy {\n public readonly id = input.required<string | null>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\n\n @ViewChild('verticalSwipeTarget', { static: true }) protected verticalSwipeTarget?: ElementRef;\n @ViewChild('elementRef', { static: true }) protected elementRef?: ElementRef;\n\n protected modalTransform = computed(() => {\n if (this.isSwipingVerticallyFinished()) {\n return 'translateY(100%)';\n }\n\n const calculatedY = Math.max(0, this.currentTranslateY());\n\n return `translateY(${calculatedY}px)`;\n });\n\n protected downSwipeLimit: number = 0;\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private bottomSheetInitiated: boolean = false;\n\n private cleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n this.globalResizeCleanup?.();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.initBottomSheetModalParams();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n let limit = 0;\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const modalHeight = this.elementRef?.nativeElement.offsetHeight || 0;\n limit = modalHeight / this.downSwipeLimit;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n this.isSwipingVertically.set(true);\n\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n const currentY = event.clientY - startY;\n\n if (event.cancelable) event.preventDefault();\n\n this.currentTranslateY.set(currentY);\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n isPointerDown = false;\n this.isSwipingVertically.set(false);\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = deltaY / duration;\n\n if (deltaY > limit || (velocityY > bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD && deltaY > 0)) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY.set(0);\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.cleanupListeners = () => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n };\n }\n\n private stopVerticalSwipeDetection(): void {\n if (!this.isTrackingSwipe) return;\n\n this.isTrackingSwipe = false;\n\n if (this.cleanupListeners) {\n this.cleanupListeners();\n this.cleanupListeners = null;\n }\n }\n\n private initBottomSheetModalParams(): void {\n if (this.bottomSheetInitiated) return;\n this.bottomSheetInitiated = true;\n\n const config = this.config();\n const style = config?.style?.mobileConfig;\n\n this.downSwipeLimit = style?.downSwipeLimit && style.downSwipeLimit > 0 ? style.downSwipeLimit : bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT;\n }\n\n private monitorInputType(): void {\n if (this.globalResizeCleanup) return;\n\n const handler = (event: PointerEvent) => {\n const isTouch = event.pointerType === 'touch';\n\n if (isTouch && !this.isTouchActive) {\n this.isTouchActive = true;\n this.startVerticalSwipeDetection();\n } else if (!isTouch && this.isTouchActive) {\n this.isTouchActive = false;\n this.stopVerticalSwipeDetection();\n }\n };\n\n window.addEventListener('pointerdown', handler);\n this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);\n }\n\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" \n [id]=\"id() ?? ''\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\"\n [style.max-height]=\"config()?.style?.mobileConfig?.customHeight ?? ''\"\n [style.transform]=\"modalTransform()\"\n [style.transition]=\"isAnimated() && !isSwipingVertically() ? 'transform 300ms ease-in-out' : ''\" \n [ngClass]=\"{\n 'opened-bottom-sheet-modal': isAnimated()\n }\" \n #elementRef\n class=\"bottom-sheet-modal-style\">\n \n <div #verticalSwipeTarget \n class=\"touch-hitbox bottom-sheet-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"bottom-sheet-modal-inner-content-container\">\n <div class=\"bottom-sheet-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"bottom-sheet-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"bottom-sheet-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"bottom-sheet-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-centered',\n imports: [NgTemplateOutlet, NgClass, ModalBottomSheet, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n public readonly close = output<ModalCloseMode | undefined>();\n public readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n return {\n 'centered-modal-content-wrapper': true,\n 'centered-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'centered-modal-animate-in': this.isAnimated() && this.isOpen(),\n 'centered-modal-animate-out': this.isAnimated() && !this.isOpen()\n };\n });\n}\n","@if(!isBottomSheetModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" [id]=\"id() ?? ''\"\n (click)=\"config()?.style?.hasBackdrop ? onBackdropClick.emit($event) : null\">\n <div class=\"modal-overlay-wrapper\">\n <div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\">\n <div class=\"centered-modal-inner-content-container\" [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n\n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode, ModalLayout } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-side',\n imports: [NgTemplateOutlet, ModalBottomSheet, NgClass, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss'\n})\nexport class ModalSide<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly layout = input.required<ModalLayout>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n const positionLeft = this.layout() === 'left';\n const positionRight = this.layout() === 'right';\n const shouldAnimate = this.isAnimated();\n\n const isRenderedOpen = this.renderOpenClass();\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n 'with-footer': this.footerTemplate() !== null,\n left: positionLeft,\n right: positionRight,\n\n 'side-modal-animate-in': shouldAnimate ? isRenderedOpen : true,\n 'side-modal-animate-out': shouldAnimate ? !isRenderedOpen : false\n };\n });\n\n protected renderOpenClass = signal(false);\n\n constructor() {\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n this.renderOpenClass.set(false);\n\n setTimeout(() => {\n this.renderOpenClass.set(true);\n }, 50);\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}\n","@if(!isBottomSheetModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\" [id]=\"id() ?? ''\"\n [style.--anim-duration.ms]=\"animationDuration()\">\n <div class=\"side-modal-inner-content-container\"\n [class]=\"config() && config()?.style?.wrapperClasses ? config()?.style?.wrapperClasses : ''\"\n [style]=\"config() && config()?.style?.wrapperStyles ? config()?.style?.wrapperStyles : ''\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;\n","import {\n Component,\n inject,\n ComponentRef,\n ViewChild,\n ElementRef,\n ViewChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n signal,\n effect,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { Subject, Observable, fromEvent, filter, take, from, of } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ModalConfig } from '../classes/modal-config';\nimport { IModalComponent } from '../interfaces/imodal-component.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalBackdrop } from './shared/ui/backdrop/modal-backdrop';\nimport { ModalCentered } from './views/centered/modal-centered';\nimport { ModalSide } from './views/side/modal-side';\nimport { ModalBottomSheet } from './views/bottom-sheet/modal-bottom-sheet';\nimport { BreakpointKey, ModalCloseMode, ModalLayout } from '../types/modal.types';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { ScrollLockService, uuidv4, WindowDimensionsService } from '@filip.mazev/blocks-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\nimport * as animConst from '../constants/modal-animation.constants';\n\n@Component({\n selector: 'app-modal',\n imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss'\n})\nexport class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: ModalConfig<D, R>;\n public closeFunction?: (data: IModalCloseResult<R | undefined>) => void;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n public isOpen = signal<boolean>(true);\n public effectiveLayout = signal<ModalLayout>('center');\n public isCentered = signal<boolean>(false);\n public isSide = signal<boolean>(false);\n public isAnimated: boolean = false;\n\n public readonly animationDuration: number = animConst.MODAL_DEFAULT_ANIM_DURATION;\n\n protected headerTemplate = signal<TemplateRef<void> | null>(null);\n protected footerTemplate = signal<TemplateRef<void> | null>(null);\n protected id = signal<string | null>(null);\n protected isBottomSheetModalActive = signal<boolean>(false);\n protected hasBanner: boolean = false;\n\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected modalService = inject(ModalService);\n protected scrollLockService = inject(ScrollLockService);\n protected windowDimensionsService = inject(WindowDimensionsService);\n \n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n @ViewChild('modalContainer', { static: false }) protected modalContainer?: ElementRef;\n @ViewChild('contentTemplate') protected contentTemplate?: TemplateRef<HTMLElement>;\n\n @ViewChildren(ModalSide) private sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) private centeredModalComponents?: QueryList<ModalCentered>;\n\n private isConfirmCloseModalOpen: boolean = false;\n private scrollLockId: string = uuidv4();\n\n private _sortedBreakpoints: Array<{ width: number; layout: ModalLayout }> = [];\n\n private _currentVcr: ViewContainerRef | null = null;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleLayout(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.initBreakpointCache();\n\n this.scrollLockService.disableScroll(this.scrollLockId, {\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true\n });\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n\n const width = this.windowDimensionsService.dimensions().width;\n this.handleLayout(width);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\n this.scrollLockService.enableScroll(this.scrollLockId);\n }\n\n //#region Public Template Methods\n public setHeaderTemplate(template: TemplateRef<void>) {\n this.headerTemplate.set(template);\n }\n\n //#endregion\n public setFooterTemplate(template: TemplateRef<void>) {\n this.footerTemplate.set(template);\n }\n\n //#region Closing Methods\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (forceClose) {\n this.handleClose(state, result);\n return;\n }\n\n if (this.config?.disableClose === true && fromInsideInteraction) {\n return;\n }\n\n const shouldCheckCloseGuard = this.config?.closeGuardOnlyOnCancel !== true || state !== 'confirm';\n\n if (shouldCheckCloseGuard && this.config?.closeGuard) {\n const guardResult = this.config.closeGuard.canClose(this.modalService);\n\n const canClose$ = guardResult instanceof Observable ? guardResult : guardResult instanceof Promise ? from(guardResult) : of(guardResult);\n\n if (this.isBottomSheetModalActive()) {\n this.resetBottomSheetModalLayout();\n }\n\n canClose$.pipe(take(1)).subscribe((canClose) => {\n if (canClose) {\n this.handleClose(state, result);\n }\n });\n return;\n }\n\n this.handleClose(state, result);\n }\n\n //#endregion\n protected onBackdropClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.backdropClickSubject.next(event);\n\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close('cancel', undefined, true);\n }\n }\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef })\n protected set dynamicContainer(vcr: ViewContainerRef | undefined) {\n if (vcr && this.componentRef) {\n this._currentVcr = vcr;\n vcr.insert(this.componentRef.hostView);\n }\n }\n\n //#region Subscription Methods\n\n private initKeyboardSubscription(): void {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close('cancel', undefined, true);\n }\n });\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.id.set(this.config?.id ?? this.scrollLockId);\n\n this.hasBanner =\n this.config !== undefined &&\n ((this.config.bannerText !== undefined && this.config.bannerText.length > 0) ||\n (this.config.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n this.isAnimated = this.config?.style.animate === true;\n }\n\n private initBreakpointCache(): void {\n // eslint-disable-next-line no-debugger\n debugger;\n\n const definedBreakpoints = this.config?.style?.breakpoints;\n\n if (definedBreakpoints && Object.keys(definedBreakpoints).length > 0) {\n const serviceBreakpoints = this.windowDimensionsService.breakpoints;\n\n this._sortedBreakpoints = (Object.keys(definedBreakpoints) as BreakpointKey[])\n .map((key) => ({\n width: serviceBreakpoints[key],\n layout: definedBreakpoints[key] ?? this.config?.style.layout ?? 'center'\n }))\n .sort((a, b) => a.width - b.width);\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setBottomSheetModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state\n } as IModalCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private handleLayout(width: number): void {\n if (!this.config) return;\n\n let resolvedLayout: ModalLayout = this.config.style.layout;\n\n for (const bp of this._sortedBreakpoints) {\n if (width <= bp.width) {\n resolvedLayout = bp.layout;\n break;\n }\n }\n\n const prevIsSide = this.isSide();\n const nextIsSide = resolvedLayout === 'left' || resolvedLayout === 'right';\n const layoutTypeChanged = prevIsSide !== nextIsSide;\n\n if (layoutTypeChanged && this._currentVcr && this.componentRef) {\n const index = this._currentVcr.indexOf(this.componentRef.hostView);\n if (index !== -1) {\n this._currentVcr.detach(index);\n }\n }\n\n this.effectiveLayout.set(resolvedLayout);\n this.isSide.set(nextIsSide);\n this.isCentered.set(resolvedLayout === 'center' || resolvedLayout === 'bottom-sheet');\n\n const shouldBeBottomSheet = resolvedLayout === 'bottom-sheet';\n const currentSwipeState = this.isBottomSheetModalActive();\n\n if (shouldBeBottomSheet && !currentSwipeState) {\n this.isBottomSheetModalActive.set(true);\n } else if (!shouldBeBottomSheet && currentSwipeState) {\n this.isBottomSheetModalActive.set(false);\n }\n }\n\n private getBottomSheetModal(): ModalBottomSheet | undefined {\n return this.sideModalComponents?.first?.bottomSheet?.first ?? this.centeredModalComponents?.first?.bottomSheet?.first;\n }\n\n private resetBottomSheetModalLayout(): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.currentTranslateY.set(0);\n }\n }\n\n private setBottomSheetModalFinishedState(isFinished: boolean): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.isSwipingVerticallyFinished.set(isFinished);\n }\n this.isBottomSheetModalActive.set(false);\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","import { inject, Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable()\nexport class Modal<D, R> implements IModal<D, R> {\n /**\n * Data injected into the modal component.\n */\n public data = inject<D>(MODAL_DATA);\n\n /**\n * Reference to the ModalRef instance associated with this modal.\n */\n public modal!: ModalRef<D, R>;\n\n /**\n * Called when the modal is initialized.\n */\n public onModalInit(): void {}\n\n /**\n * Closes the modal (with \"cancel\" reason) with an optional result.\n * @param result The result to be passed when closing the modal.\n */\n public close(result?: R) {\n this.modal?.close('cancel', result);\n }\n}\n","export enum ModalWarnings {\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = '[ModalFooter] Directive used outside of a ModalComponent.',\n HEADER_DIRECTIVE_OUTSIDE_MODAL = '[ModalHeader] Directive used outside of a ModalComponent.'\n //#endregion\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalHeader]',\n standalone: true\n})\nexport class ModalHeaderDirective {\n private templateRef = inject(TemplateRef);\n private modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setHeaderTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.HEADER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalFooter]',\n standalone: true\n})\nexport class ModalFooterDirective {\n private templateRef = inject(TemplateRef);\n private modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Observable } from 'rxjs';\nimport { ModalService } from '../services/modal.service';\n\n/**\n * Abstract class representing a modal close guard.\n */\nexport abstract class ModalCloseGuard {\n /**\n * Determines whether the modal can be closed.\n */\n public abstract canClose(modalService: ModalService): Observable<boolean> | Promise<boolean> | boolean;\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { IModal } from '../../interfaces/imodal.interface';\nimport { ModalCloseGuard } from '../modal-close-guard';\nimport { IModalConfig } from '../../interfaces/imodal-config.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { map, Observable } from 'rxjs';\nimport { IModalCloseResult } from '@modal/public-api';\n\n/**\n * Modal Close Guard that opens a confirmation modal before allowing the original modal to close.\n * @param component The component to use for the confirmation modal.\n * @param config The configuration for the confirmation modal.\n */\nexport class ModalConfirmCloseGuard<D, R, C extends IModal<D, R> = IModal<D, R>> extends ModalCloseGuard {\n constructor(\n public component: ComponentType<C>,\n public config: IModalConfig<D, R>\n ) {\n super();\n }\n\n public override canClose(modalService: ModalService): Observable<boolean> {\n const ref = modalService.open<D, R, C>(this.component, this.config);\n\n return ref.afterClosed().pipe(map((result: IModalCloseResult<R | undefined>) => result.state === 'confirm'));\n }\n}\n","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/modal-core';\nexport * from './lib/components/views/bottom-sheet/modal-bottom-sheet';\nexport * from './lib/components/views/side/modal-side';\nexport * from './lib/components/views/centered/modal-centered';\nexport * from './lib/components/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/modal.service';\n\nexport * from './lib/classes/modal';\nexport * from './lib/classes/modal-config';\nexport * from './lib/classes/modal-ref';\nexport * from './lib/classes/modal-style.config';\n\nexport * from './lib/interfaces/imodal-close-result.interface';\nexport * from './lib/interfaces/imodal-component.interface';\nexport * from './lib/interfaces/imodal-config.interface';\nexport * from './lib/interfaces/imodal-ref.interface';\nexport * from './lib/interfaces/imodal-service.interface';\nexport * from './lib/interfaces/imodal-style-config.interface';\nexport * from './lib/interfaces/imodal-view.interface';\nexport * from './lib/interfaces/ibottom-sheet-modal-config.interface';\n\nexport * from './lib/constants/modal-animation.constants';\nexport * from './lib/constants/modal-bottom-sheet.constants';\n\nexport * from './lib/enums/modal-warnings.enum';\nexport * from './lib/enums/modal-state.enum';\n\nexport * from './lib/directives/modal-header.directive';\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/modal-data.token';\n\nexport * from './lib/types/modal.types';\n\nexport * from './lib/classes/modal-close-guard';\nexport * from './lib/classes/guards/modal-confirm-close-guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD","bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT","animConst.MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
1
+ {"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/classes/modal-style.config.ts","../../../projects/modal/src/lib/classes/modal-config.ts","../../../projects/modal/src/lib/enums/modal-state.enum.ts","../../../projects/modal/src/lib/classes/modal-ref.ts","../../../projects/modal/src/lib/tokens/modal-data.token.ts","../../../projects/modal/src/lib/services/modal.service.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/modal-bottom-sheet.constants.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/constants/modal-animation.constants.ts","../../../projects/modal/src/lib/components/modal-core.ts","../../../projects/modal/src/lib/components/modal-core.html","../../../projects/modal/src/lib/classes/modal.ts","../../../projects/modal/src/lib/enums/modal-warnings.enum.ts","../../../projects/modal/src/lib/directives/modal-header.directive.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/lib/classes/modal-close-guard.ts","../../../projects/modal/src/lib/classes/guards/modal-confirm-close-guard.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["import { IModalStyleConfig } from '../interfaces/imodal-style-config.interface';\nimport { IBottomSheetModalConfig } from '../interfaces/ibottom-sheet-modal-config.interface';\nimport { BreakpointKey, ModalLayout } from '../types/modal.types';\n\nexport class ModalStyleConfig implements IModalStyleConfig {\n public layout: ModalLayout;\n public breakpoints?: Partial<Record<BreakpointKey, ModalLayout>>;\n\n public animate: boolean;\n public hasBackdrop: boolean;\n public closeDelay?: number;\n public showCloseButton?: boolean;\n\n public mobileConfig: IBottomSheetModalConfig;\n\n public contentWrapper: boolean;\n\n public wrapperClasses: string;\n public wrapperStyles: string;\n\n public overrideFullHeight: boolean;\n\n constructor(config?: IModalStyleConfig) {\n this.layout = config?.layout ?? 'center';\n this.breakpoints = config?.breakpoints;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? '';\n this.wrapperStyles = config?.wrapperStyles ?? '';\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { ModalStyleConfig } from './modal-style.config';\nimport { ModalCloseGuard } from './modal-close-guard';\nimport { IModalCloseResult } from '@modal/public-api';\nimport { Observable } from 'rxjs';\n\nexport class ModalConfig<D, R> {\n public open: boolean;\n\n public afterClose?: () => Observable<IModalCloseResult<R | undefined>>;\n\n public closeGuard?: ModalCloseGuard;\n public closeGuardOnlyOnCancel?: boolean;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public data: D | null;\n\n public style: ModalStyleConfig;\n\n public bannerText: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id?: string;\n\n constructor(config?: IModalConfig<D, R>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.closeGuard = config?.closeGuard;\n this.closeGuardOnlyOnCancel = config?.closeGuardOnlyOnCancel ?? true;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.data = config?.data ?? null;\n this.style = new ModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? '';\n\n this.contentClasses = config?.contentClasses ?? '';\n this.contentStyles = config?.contentStyles ?? '';\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id;\n }\n}\n","export enum ModalState {\n OPEN = 'open',\n OPENING = 'opening',\n CLOSED = 'closed',\n CLOSING = 'closing'\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ModalConfig } from './modal-config';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalState } from '../enums/modal-state.enum';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { IModalRef } from '../interfaces/imodal-ref.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalCloseMode } from '../types/modal.types';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ComponentType } from '@angular/cdk/portal';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ModalRef<D = unknown, R = any, C extends IModal<D, R> = IModal<D, R>> implements IModalRef<D, R, C> {\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n private _parentElement: HTMLElement | undefined = undefined;\n //#region Component\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n //#region Self\n private _modalState: ModalState = ModalState.CLOSED;\n //#endregion\n private modalState = new BehaviorSubject<ModalState>(this.getStatus());\n private _modalConfig?: ModalConfig<D, R> = undefined;\n //#region Observables\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n //#endregion\n private afterCloseSubject: Subject<IModalCloseResult<R | undefined>> = new Subject<IModalCloseResult<R | undefined>>();\n //#endregion\n constructor(\n componentRef: ComponentRef<C>,\n public componentType: ComponentType<C>,\n modalContainerRef: ComponentRef<ModalCore<D, R, C>>,\n private modalService: ModalService,\n modalConfig?: ModalConfig<D, R>\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n //#endregion\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get modalConfig(): ModalConfig<D, R> | undefined {\n return this._modalConfig;\n }\n\n private set modalConfig(modalConfig: ModalConfig<D, R> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n public modalState$(): Observable<ModalState> {\n return this.modalState.asObservable();\n }\n\n /**\n * Observable that emits when the modal has been closed.\n * @returns An Observable that emits an IModalCloseResult<R | undefined> when the modal is closed.\n */\n public afterClosed(): Observable<IModalCloseResult<R | undefined>> {\n return this.afterCloseSubject.asObservable();\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = ModalState.OPENING;\n this.modalState.next(ModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new ModalConfig(this.modalConfig);\n\n this.modalContainerRef.instance.config = config;\n\n this.modalContainerRef.instance.closeFunction = this.handleClose.bind(this);\n\n this.parentElement?.appendChild(this.modalContainerElement);\n\n this.modalContainerRef.instance.backdropClick.subscribe((event) => {\n this.backdropClicked(event);\n });\n\n this._modalState = ModalState.OPEN;\n this.modalState.next(ModalState.OPEN);\n }\n\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, forceClose: boolean = false): void {\n this.modalContainerRef.instance.close(state, result, false, forceClose);\n }\n\n private getStatus(): ModalState {\n return this._modalState;\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterClose(result: IModalCloseResult<R | undefined>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IModalCloseResult<R | undefined>): void {\n this._modalState = ModalState.CLOSING;\n this.modalState.next(ModalState.CLOSING);\n\n setTimeout(() => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = ModalState.CLOSED;\n this.modalState.next(ModalState.CLOSED);\n\n this.afterClose(result);\n\n this.modalService?.unregister(this);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const MODAL_DATA: InjectionToken<any> = new InjectionToken<any>('MODAL_DATA');\n","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, RendererFactory2, Renderer2, Type } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { BehaviorSubject, filter, skip } from 'rxjs';\nimport { ModalConfig } from '../classes/modal-config';\nimport { ModalRef } from '../classes/modal-ref';\nimport { ModalCore } from '../components/modal-core';\nimport { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { IModalService } from '../interfaces/imodal-service.interface';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService implements IModalService {\n private readonly router = inject(Router);\n private readonly injector = inject(Injector);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly rendererFactory = inject(RendererFactory2);\n private readonly document = inject(DOCUMENT);\n\n private readonly renderer: Renderer2;\n\n //#region Properties\n\n private modals: Set<ModalRef> = new Set();\n private modalsSubject = new BehaviorSubject<Set<ModalRef>>(this.modals);\n\n //#endregion\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.createSubscriptions();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n skip(1),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.modalsCount() > 0) {\n this.closeAll(true);\n }\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Opens a modal with the specified component and configuration.\n * @param component The component to be displayed in the modal.\n * @param config Optional configuration for the modal.\n * @returns A ModalRef instance representing the opened modal.\n */\n public open<D, R, C extends IModal<D, R> = IModal<D, R>>(component: ComponentType<C>, config?: IModalConfig<D, R>): ModalRef<D, R, C> {\n const dataInjector = Injector.create({\n providers: [{ provide: MODAL_DATA, useValue: config?.data }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent(ModalCore<D, R, C>, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n const contentInjector = Injector.create({\n providers: [{ provide: ModalCore, useValue: wrapperRef.instance }],\n parent: wrapperRef.injector\n });\n\n const contentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: contentInjector\n });\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = new ModalConfig(config);\n\n this.appRef.attachView(wrapperRef.hostView);\n this.document.body.appendChild(wrapperRef.location.nativeElement);\n\n const modal = new ModalRef<D, R, C>(contentRef, component, wrapperRef, this, new ModalConfig(config));\n\n if (this.isIModal<D, R>(contentRef.instance)) {\n contentRef.instance.modal = modal;\n contentRef.instance.onModalInit();\n }\n\n wrapperRef.onDestroy(() => {\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n });\n\n const modalElement = modal.componentRef.location.nativeElement;\n this.renderer.setStyle(modalElement, 'height', '97%');\n this.renderer.setStyle(modalElement, 'width', '100%');\n this.renderer.setStyle(modalElement, 'display', 'flex');\n this.renderer.setStyle(modalElement, 'flex-grow', '1');\n\n this.modals.add(modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n /**\n * Closes the specified modal.\n * @param modal The ModalRef instance representing the modal to be closed.\n */\n public close<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n modal.close();\n }\n\n /**\n * Unregisters the specified modal from the service.\n * @param modal The ModalRef instance representing the modal to be unregistered.\n */\n public unregister<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n this.modals.delete(modal);\n this.modalsSubject.next(this.modals);\n }\n\n /**\n * Closes all open modals.\n * @param onNavigate Indicates if the closeAll is triggered by navigation event.\n */\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close('cancel', undefined, true);\n }\n });\n }\n\n /**\n * Finds if a modal with the specified component type is currently open.\n * @param componentType The component type to search for.\n * @returns True if a modal with the specified component type is open, false otherwise.\n */\n public find<D, R>(componentType: Type<IModal<D, R>>): boolean {\n for (const modal of this.modals) {\n if (modal.componentRef.componentType === componentType) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the count of currently open modals.\n * @returns The number of open modals.\n */\n public modalsCount(): number {\n return this.modals.size;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private isIModal<D, R>(component: unknown): component is IModal<D, R> {\n return typeof component === 'object' && component !== null && 'onModalInit' in component && typeof (component as IModal<D, R>).onModalInit === 'function';\n }\n\n //#endregion\n}\n","import { Component, input, output } from '@angular/core';\n\n@Component({\n selector: 'app-modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n public readonly isAnimated = input(false);\n public readonly isOpen = input(false);\n\n public readonly click = output<MouseEvent>();\n}\n","<div class=\"modal-backdrop\" [class.backdrop-fade-in]=\"isAnimated() && isOpen()\"\n [class.backdrop-fade-out]=\"isAnimated() && !isOpen()\" (click)=\"click.emit($event)\">\n</div>","import { Component, input, output } from '@angular/core';\nimport { ModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'app-modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss'\n})\nexport class ModalDefaultCloseButton<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from '@angular/core';\nimport { ModalConfig } from '../../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../../types/modal.types';\nimport { ModalDefaultCloseButton } from '../default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-banner',\n imports: [ModalDefaultCloseButton],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss'\n})\nexport class ModalBanner<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n {{ config()?.bannerText }}\n }\n </div>\n\n <app-modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n</div>","export const MODAL_DOWN_SWIPE_LIMIT = 3;\nexport const MODAL_SWIPE_VELOCITY_THRESHOLD = 80;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as bottomSheetConst from '../../../constants/modal-bottom-sheet.constants';\n\n@Component({\n selector: 'app-modal-bottom-sheet',\n imports: [NgClass, NgTemplateOutlet],\n templateUrl: './modal-bottom-sheet.html',\n styleUrl: './modal-bottom-sheet.scss'\n})\nexport class ModalBottomSheet<D = unknown, R = unknown> implements OnInit, OnDestroy {\n public readonly id = input.required<string | null>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\n\n @ViewChild('verticalSwipeTarget', { static: true }) protected verticalSwipeTarget?: ElementRef;\n @ViewChild('elementRef', { static: true }) protected elementRef?: ElementRef;\n\n protected modalTransform = computed(() => {\n if (this.isSwipingVerticallyFinished()) {\n return 'translateY(100%)';\n }\n\n const calculatedY = Math.max(0, this.currentTranslateY());\n\n return `translateY(${calculatedY}px)`;\n });\n\n protected downSwipeLimit: number = 0;\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private bottomSheetInitiated: boolean = false;\n\n private cleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n this.globalResizeCleanup?.();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.initBottomSheetModalParams();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n let limit = 0;\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const modalHeight = this.elementRef?.nativeElement.offsetHeight || 0;\n limit = modalHeight / this.downSwipeLimit;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n this.isSwipingVertically.set(true);\n\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n const currentY = event.clientY - startY;\n\n if (event.cancelable) event.preventDefault();\n\n this.currentTranslateY.set(currentY);\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n isPointerDown = false;\n this.isSwipingVertically.set(false);\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = deltaY / duration;\n\n if (deltaY > limit || (velocityY > bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD && deltaY > 0)) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY.set(0);\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.cleanupListeners = () => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n };\n }\n\n private stopVerticalSwipeDetection(): void {\n if (!this.isTrackingSwipe) return;\n\n this.isTrackingSwipe = false;\n\n if (this.cleanupListeners) {\n this.cleanupListeners();\n this.cleanupListeners = null;\n }\n }\n\n private initBottomSheetModalParams(): void {\n if (this.bottomSheetInitiated) return;\n this.bottomSheetInitiated = true;\n\n const config = this.config();\n const style = config?.style?.mobileConfig;\n\n this.downSwipeLimit = style?.downSwipeLimit && style.downSwipeLimit > 0 ? style.downSwipeLimit : bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT;\n }\n\n private monitorInputType(): void {\n if (this.globalResizeCleanup) return;\n\n const handler = (event: PointerEvent) => {\n const isTouch = event.pointerType === 'touch';\n\n if (isTouch && !this.isTouchActive) {\n this.isTouchActive = true;\n this.startVerticalSwipeDetection();\n } else if (!isTouch && this.isTouchActive) {\n this.isTouchActive = false;\n this.stopVerticalSwipeDetection();\n }\n };\n\n window.addEventListener('pointerdown', handler);\n this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);\n }\n\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" \n [id]=\"id() ?? ''\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\"\n [style.max-height]=\"config()?.style?.mobileConfig?.customHeight ?? ''\"\n [style.transform]=\"modalTransform()\"\n [style.transition]=\"isAnimated() && !isSwipingVertically() ? 'transform 300ms ease-in-out' : ''\" \n [ngClass]=\"{\n 'opened-bottom-sheet-modal': isAnimated()\n }\" \n #elementRef\n class=\"bottom-sheet-modal-style\">\n \n <div #verticalSwipeTarget \n class=\"touch-hitbox bottom-sheet-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"bottom-sheet-modal-inner-content-container\">\n <div class=\"bottom-sheet-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"bottom-sheet-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"bottom-sheet-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"bottom-sheet-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-centered',\n imports: [NgTemplateOutlet, NgClass, ModalBottomSheet, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n public readonly close = output<ModalCloseMode | undefined>();\n public readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n return {\n 'centered-modal-content-wrapper': true,\n 'centered-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'centered-modal-animate-in': this.isAnimated() && this.isOpen(),\n 'centered-modal-animate-out': this.isAnimated() && !this.isOpen()\n };\n });\n}\n","@if(!isBottomSheetModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" [id]=\"id() ?? ''\"\n (click)=\"config()?.style?.hasBackdrop ? onBackdropClick.emit($event) : null\">\n <div class=\"modal-overlay-wrapper\">\n <div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\">\n <div class=\"centered-modal-inner-content-container\" [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n\n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode, ModalLayout } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-side',\n imports: [NgTemplateOutlet, ModalBottomSheet, NgClass, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss'\n})\nexport class ModalSide<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly layout = input.required<ModalLayout>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n const positionLeft = this.layout() === 'left';\n const positionRight = this.layout() === 'right';\n const shouldAnimate = this.isAnimated();\n\n const isRenderedOpen = this.renderOpenClass();\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n 'with-footer': this.footerTemplate() !== null,\n left: positionLeft,\n right: positionRight,\n\n 'side-modal-animate-in': shouldAnimate ? isRenderedOpen : true,\n 'side-modal-animate-out': shouldAnimate ? !isRenderedOpen : false\n };\n });\n\n protected renderOpenClass = signal(false);\n\n constructor() {\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n this.renderOpenClass.set(false);\n\n setTimeout(() => {\n this.renderOpenClass.set(true);\n }, 50);\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}\n","@if(!isBottomSheetModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\" [id]=\"id() ?? ''\"\n [style.--anim-duration.ms]=\"animationDuration()\">\n <div class=\"side-modal-inner-content-container\"\n [class]=\"config() && config()?.style?.wrapperClasses ? config()?.style?.wrapperClasses : ''\"\n [style]=\"config() && config()?.style?.wrapperStyles ? config()?.style?.wrapperStyles : ''\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;\n","import {\n Component,\n inject,\n ComponentRef,\n ViewChild,\n ElementRef,\n ViewChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n signal,\n effect,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { Subject, Observable, fromEvent, filter, take, from, of } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ModalConfig } from '../classes/modal-config';\nimport { IModalComponent } from '../interfaces/imodal-component.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalBackdrop } from './shared/ui/backdrop/modal-backdrop';\nimport { ModalCentered } from './views/centered/modal-centered';\nimport { ModalSide } from './views/side/modal-side';\nimport { ModalBottomSheet } from './views/bottom-sheet/modal-bottom-sheet';\nimport { BreakpointKey, ModalCloseMode, ModalLayout } from '../types/modal.types';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { ScrollLockService, uuidv4, WindowDimensionsService } from '@filip.mazev/blocks-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\nimport * as animConst from '../constants/modal-animation.constants';\n\n@Component({\n selector: 'app-modal',\n imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss'\n})\nexport class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {\n private readonly modalService = inject(ModalService);\n private readonly scrollLockService = inject(ScrollLockService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n public readonly animationDuration: number = animConst.MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: ModalConfig<D, R>;\n public closeFunction?: (data: IModalCloseResult<R | undefined>) => void;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n public isOpen = signal<boolean>(true);\n public effectiveLayout = signal<ModalLayout>('center');\n public isCentered = signal<boolean>(false);\n public isSide = signal<boolean>(false);\n public isAnimated: boolean = false;\n\n protected headerTemplate = signal<TemplateRef<void> | null>(null);\n protected footerTemplate = signal<TemplateRef<void> | null>(null);\n protected id = signal<string | null>(null);\n protected isBottomSheetModalActive = signal<boolean>(false);\n protected hasBanner: boolean = false;\n\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n @ViewChild('modalContainer', { static: false }) protected modalContainer?: ElementRef;\n @ViewChild('contentTemplate') protected contentTemplate?: TemplateRef<HTMLElement>;\n\n @ViewChildren(ModalSide) private sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) private centeredModalComponents?: QueryList<ModalCentered>;\n\n private isConfirmCloseModalOpen: boolean = false;\n private scrollLockId: string = uuidv4();\n\n private _sortedBreakpoints: Array<{ width: number; layout: ModalLayout }> = [];\n\n private _currentVcr: ViewContainerRef | null = null;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleLayout(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.initBreakpointCache();\n\n this.scrollLockService.disableScroll(this.scrollLockId, {\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true\n });\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n\n const width = this.windowDimensionsService.dimensions().width;\n this.handleLayout(width);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\n this.scrollLockService.enableScroll(this.scrollLockId);\n }\n\n //#region Public Template Methods\n public setHeaderTemplate(template: TemplateRef<void>) {\n this.headerTemplate.set(template);\n }\n\n //#endregion\n public setFooterTemplate(template: TemplateRef<void>) {\n this.footerTemplate.set(template);\n }\n\n //#region Closing Methods\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (forceClose) {\n this.handleClose(state, result);\n return;\n }\n\n if (this.config?.disableClose === true && fromInsideInteraction) {\n return;\n }\n\n const shouldCheckCloseGuard = this.config?.closeGuardOnlyOnCancel !== true || state !== 'confirm';\n\n if (shouldCheckCloseGuard && this.config?.closeGuard) {\n const guardResult = this.config.closeGuard.canClose(this.modalService);\n\n const canClose$ = guardResult instanceof Observable ? guardResult : guardResult instanceof Promise ? from(guardResult) : of(guardResult);\n\n if (this.isBottomSheetModalActive()) {\n this.resetBottomSheetModalLayout();\n }\n\n canClose$.pipe(take(1)).subscribe((canClose) => {\n if (canClose) {\n this.handleClose(state, result);\n }\n });\n return;\n }\n\n this.handleClose(state, result);\n }\n\n //#endregion\n protected onBackdropClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.backdropClickSubject.next(event);\n\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close('cancel', undefined, true);\n }\n }\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef })\n protected set dynamicContainer(vcr: ViewContainerRef | undefined) {\n if (vcr && this.componentRef) {\n this._currentVcr = vcr;\n vcr.insert(this.componentRef.hostView);\n }\n }\n\n //#region Subscription Methods\n\n private initKeyboardSubscription(): void {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close('cancel', undefined, true);\n }\n });\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.id.set(this.config?.id ?? this.scrollLockId);\n\n this.hasBanner =\n this.config !== undefined &&\n ((this.config.bannerText !== undefined && this.config.bannerText.length > 0) ||\n (this.config.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n this.isAnimated = this.config?.style.animate === true;\n }\n\n private initBreakpointCache(): void {\n const definedBreakpoints = this.config?.style?.breakpoints;\n\n if (definedBreakpoints && Object.keys(definedBreakpoints).length > 0) {\n const serviceBreakpoints = this.windowDimensionsService.breakpoints;\n\n this._sortedBreakpoints = (Object.keys(definedBreakpoints) as BreakpointKey[])\n .map((key) => ({\n width: serviceBreakpoints[key],\n layout: definedBreakpoints[key] ?? this.config?.style.layout ?? 'center'\n }))\n .sort((a, b) => a.width - b.width);\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setBottomSheetModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state\n } as IModalCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private handleLayout(width: number): void {\n if (!this.config) return;\n\n let resolvedLayout: ModalLayout = this.config.style.layout;\n\n for (const bp of this._sortedBreakpoints) {\n if (width <= bp.width) {\n resolvedLayout = bp.layout;\n break;\n }\n }\n\n const prevIsSide = this.isSide();\n const nextIsSide = resolvedLayout === 'left' || resolvedLayout === 'right';\n const layoutTypeChanged = prevIsSide !== nextIsSide;\n\n if (layoutTypeChanged && this._currentVcr && this.componentRef) {\n const index = this._currentVcr.indexOf(this.componentRef.hostView);\n if (index !== -1) {\n this._currentVcr.detach(index);\n }\n }\n\n this.effectiveLayout.set(resolvedLayout);\n this.isSide.set(nextIsSide);\n this.isCentered.set(resolvedLayout === 'center' || resolvedLayout === 'bottom-sheet');\n\n const shouldBeBottomSheet = resolvedLayout === 'bottom-sheet';\n const currentSwipeState = this.isBottomSheetModalActive();\n\n if (shouldBeBottomSheet && !currentSwipeState) {\n this.isBottomSheetModalActive.set(true);\n } else if (!shouldBeBottomSheet && currentSwipeState) {\n this.isBottomSheetModalActive.set(false);\n }\n }\n\n private getBottomSheetModal(): ModalBottomSheet | undefined {\n return this.sideModalComponents?.first?.bottomSheet?.first ?? this.centeredModalComponents?.first?.bottomSheet?.first;\n }\n\n private resetBottomSheetModalLayout(): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.currentTranslateY.set(0);\n }\n }\n\n private setBottomSheetModalFinishedState(isFinished: boolean): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.isSwipingVerticallyFinished.set(isFinished);\n }\n this.isBottomSheetModalActive.set(false);\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","import { inject, Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable()\nexport class Modal<D, R> implements IModal<D, R> {\n /**\n * Data injected into the modal component.\n */\n public data = inject<D>(MODAL_DATA);\n\n /**\n * Reference to the ModalRef instance associated with this modal.\n */\n public modal!: ModalRef<D, R>;\n\n /**\n * Called when the modal is initialized.\n */\n public onModalInit(): void {}\n\n /**\n * Closes the modal (with \"cancel\" reason) with an optional result.\n * @param result The result to be passed when closing the modal.\n */\n public close(result?: R) {\n this.modal?.close('cancel', result);\n }\n}\n","export enum ModalWarnings {\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = '[ModalFooter] Directive used outside of a ModalComponent.',\n HEADER_DIRECTIVE_OUTSIDE_MODAL = '[ModalHeader] Directive used outside of a ModalComponent.'\n //#endregion\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalHeader]',\n standalone: true\n})\nexport class ModalHeaderDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setHeaderTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.HEADER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalFooter]',\n standalone: true\n})\nexport class ModalFooterDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Observable } from 'rxjs';\nimport { ModalService } from '../services/modal.service';\n\n/**\n * Abstract class representing a modal close guard.\n */\nexport abstract class ModalCloseGuard {\n /**\n * Determines whether the modal can be closed.\n */\n public abstract canClose(modalService: ModalService): Observable<boolean> | Promise<boolean> | boolean;\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { IModal } from '../../interfaces/imodal.interface';\nimport { ModalCloseGuard } from '../modal-close-guard';\nimport { IModalConfig } from '../../interfaces/imodal-config.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { map, Observable } from 'rxjs';\nimport { IModalCloseResult } from '@modal/public-api';\n\n/**\n * Modal Close Guard that opens a confirmation modal before allowing the original modal to close.\n * @param component The component to use for the confirmation modal.\n * @param config The configuration for the confirmation modal.\n */\nexport class ModalConfirmCloseGuard<D, R, C extends IModal<D, R> = IModal<D, R>> extends ModalCloseGuard {\n constructor(\n public component: ComponentType<C>,\n public config: IModalConfig<D, R>\n ) {\n super();\n }\n\n public override canClose(modalService: ModalService): Observable<boolean> {\n const ref = modalService.open<D, R, C>(this.component, this.config);\n\n return ref.afterClosed().pipe(map((result: IModalCloseResult<R | undefined>) => result.state === 'confirm'));\n }\n}\n","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/modal-core';\nexport * from './lib/components/views/bottom-sheet/modal-bottom-sheet';\nexport * from './lib/components/views/side/modal-side';\nexport * from './lib/components/views/centered/modal-centered';\nexport * from './lib/components/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/modal.service';\n\nexport * from './lib/classes/modal';\nexport * from './lib/classes/modal-config';\nexport * from './lib/classes/modal-ref';\nexport * from './lib/classes/modal-style.config';\n\nexport * from './lib/interfaces/imodal-close-result.interface';\nexport * from './lib/interfaces/imodal-component.interface';\nexport * from './lib/interfaces/imodal-config.interface';\nexport * from './lib/interfaces/imodal-ref.interface';\nexport * from './lib/interfaces/imodal-service.interface';\nexport * from './lib/interfaces/imodal-style-config.interface';\nexport * from './lib/interfaces/imodal-view.interface';\nexport * from './lib/interfaces/ibottom-sheet-modal-config.interface';\n\nexport * from './lib/constants/modal-animation.constants';\nexport * from './lib/constants/modal-bottom-sheet.constants';\n\nexport * from './lib/enums/modal-warnings.enum';\nexport * from './lib/enums/modal-state.enum';\n\nexport * from './lib/directives/modal-header.directive';\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/modal-data.token';\n\nexport * from './lib/types/modal.types';\n\nexport * from './lib/classes/modal-close-guard';\nexport * from './lib/classes/guards/modal-confirm-close-guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD","bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT","animConst.MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@filip.mazev/modal",
3
- "version": "0.1.51",
3
+ "version": "0.1.52",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  "./_modal-theme": "./lib/styles/_modal-theme.scss",
@@ -1,5 +1,5 @@
1
1
  import * as _filip_mazev_blocks_core from '@filip.mazev/blocks-core';
2
- import { BREAKPOINTS, ScrollLockService, WindowDimensionsService } from '@filip.mazev/blocks-core';
2
+ import { BREAKPOINTS } from '@filip.mazev/blocks-core';
3
3
  import * as _angular_core from '@angular/core';
4
4
  import { Type, ComponentRef, OnInit, OnDestroy, Signal, AfterViewInit, TemplateRef, ElementRef, ViewContainerRef, InputSignal, OutputEmitterRef, QueryList, InjectionToken } from '@angular/core';
5
5
  import { Observable, Subject } from 'rxjs';
@@ -132,13 +132,13 @@ interface IModalService {
132
132
  }
133
133
 
134
134
  declare class ModalService implements IModalService {
135
- private router;
136
- private injector;
137
- private appRef;
138
- private environmentInjector;
139
- private rendererFactory;
140
- private renderer;
141
- private document;
135
+ private readonly router;
136
+ private readonly injector;
137
+ private readonly appRef;
138
+ private readonly environmentInjector;
139
+ private readonly rendererFactory;
140
+ private readonly document;
141
+ private readonly renderer;
142
142
  private modals;
143
143
  private modalsSubject;
144
144
  constructor();
@@ -320,6 +320,10 @@ interface IModalComponent<D, R, C extends IModal<D, R> = IModal<D, R>> extends O
320
320
  }
321
321
 
322
322
  declare class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {
323
+ private readonly modalService;
324
+ private readonly scrollLockService;
325
+ private readonly windowDimensionsService;
326
+ readonly animationDuration: number;
323
327
  componentRef: ComponentRef<C>;
324
328
  config?: ModalConfig<D, R>;
325
329
  closeFunction?: (data: IModalCloseResult<R | undefined>) => void;
@@ -330,16 +334,12 @@ declare class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements
330
334
  isCentered: _angular_core.WritableSignal<boolean>;
331
335
  isSide: _angular_core.WritableSignal<boolean>;
332
336
  isAnimated: boolean;
333
- readonly animationDuration: number;
334
337
  protected headerTemplate: _angular_core.WritableSignal<TemplateRef<void> | null>;
335
338
  protected footerTemplate: _angular_core.WritableSignal<TemplateRef<void> | null>;
336
339
  protected id: _angular_core.WritableSignal<string | null>;
337
340
  protected isBottomSheetModalActive: _angular_core.WritableSignal<boolean>;
338
341
  protected hasBanner: boolean;
339
342
  protected hasDefaultContentWrapperClass: boolean;
340
- protected modalService: ModalService;
341
- protected scrollLockService: ScrollLockService;
342
- protected windowDimensionsService: WindowDimensionsService;
343
343
  protected windowDimensions: _angular_core.Signal<_filip_mazev_blocks_core.WindowDimensions>;
344
344
  protected modalContainer?: ElementRef;
345
345
  protected contentTemplate?: TemplateRef<HTMLElement>;
@@ -539,16 +539,16 @@ declare enum ModalWarnings {
539
539
  }
540
540
 
541
541
  declare class ModalHeaderDirective {
542
- private templateRef;
543
- private modal;
542
+ private readonly templateRef;
543
+ private readonly modal;
544
544
  constructor();
545
545
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalHeaderDirective, never>;
546
546
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ModalHeaderDirective, "[appModalHeader]", never, {}, {}, never, never, true, never>;
547
547
  }
548
548
 
549
549
  declare class ModalFooterDirective {
550
- private templateRef;
551
- private modal;
550
+ private readonly templateRef;
551
+ private readonly modal;
552
552
  constructor();
553
553
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalFooterDirective, never>;
554
554
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ModalFooterDirective, "[appModalFooter]", never, {}, {}, never, never, true, never>;