@filip.mazev/modal 0.1.26 → 0.1.28
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 +38 -90
- package/fesm2022/filip.mazev-modal.mjs +331 -346
- package/fesm2022/filip.mazev-modal.mjs.map +1 -1
- package/package.json +1 -1
- package/types/filip.mazev-modal.d.ts +338 -281
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/constants/generic-modal-common.constants.ts","../../../projects/modal/src/lib/enums/generic-modal-warnings.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-style.config.ts","../../../projects/modal/src/lib/classes/generic-modal-config.ts","../../../projects/modal/src/lib/enums/generic-modal-state.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-ref.ts","../../../projects/modal/src/lib/classes/generic-modal.ts","../../../projects/modal/src/lib/enums/generic-modal-errors.enum.ts","../../../projects/modal/src/lib/tokens/generic-modal-data.token.ts","../../../projects/modal/src/lib/services/generic-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/generic-modal-swipe.constants.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.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/generic-modal-animation.constants.ts","../../../projects/modal/src/lib/components/modal-core.ts","../../../projects/modal/src/lib/components/modal-core.html","../../../projects/modal/src/lib/constants/generic-modal-text.constants.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["export const EMPTY_STRING = '';","export enum GenericModalWarnings {\n //#region Multi-level modals\n NO_PARENT_PROVIDED = \"No parent modal provided for multilevel modal. Please provide a parent modal or set openAsMultilevel to false.\",\n MULTILEVEL_INLINE_NOT_SUPPORTED = \"As of this version, opening a multi-level modal from inline HTML is not possible. Please set openAsMultilevel to false or open your modal through the GenericModalService! Opening modal as normal modal.\",\n MULTILEVEL_NO_PARENT = \"Cannot open a multilevel modal with only one modal open. Please open another modal before opening a multilevel modal or set openAsMultilevel to false.\",\n PARENT_MODAL_NOT_SET = \"Error setting parent modal. Opening modal as normal modal\",\n //#endregion\n\n //#region Confirm close\n CONFIRM_MODAL_NESTING_NOT_SUPPORTED = \"Cannot open a confirm modal from within a confirm modal. If you want to allow this behaviour, set bypassSelfCheck to true in the confirmCloseConfig.\",\n //#endregion\n\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalFooter] Directive used outside of a GenericModalComponent.\",\n HEADER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalHeader] Directive used outside of a GenericModalComponent.\",\n //#endregion\n}","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { IGenericSwipeableModalConfig } from \"../interfaces/igeneric-swipeable-modal-config\";\nimport { ModalPoistion } from \"../types/modal.types\";\n\nexport class GenericModalStyleConfig implements IGenericModalStyleConfig {\n position: ModalPoistion;\n handleMobile: boolean;\n\n animate: boolean;\n hasBackdrop: boolean;\n closeDelay?: number;\n showCloseButton?: boolean;\n\n mobileConfig: IGenericSwipeableModalConfig;\n\n contentWrapper: boolean;\n\n wrapperClasses: string;\n wrapperStyles: string;\n\n overrideFullHeight: boolean;\n\n constructor(config?: IGenericModalStyleConfig) {\n this.position = config?.position ?? \"center\";\n this.handleMobile = config?.handleMobile ?? true;\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 ?? EMPTY_STRING;\n this.wrapperStyles = config?.wrapperStyles ?? EMPTY_STRING;\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericConfirmCloseConfig } from \"../interfaces/igeneric-confirm-close.interface\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { GenericModal } from \"./generic-modal\";\nimport { GenericModalStyleConfig } from \"./generic-modal-style.config\";\nimport { uuidv4 } from \"@filip.mazev/blocks-core\";\n\nexport class GenericModalConfig<\n D = unknown,\n ConfirmComponentData = any,\n ConfirmComponent extends GenericModal<ConfirmComponentData, undefined> = GenericModal<ConfirmComponentData, undefined>> {\n public open: boolean;\n\n public afterClose?: Function;\n public confirmCloseConfig?: IGenericConfirmCloseConfig<ConfirmComponentData, ConfirmComponent>;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public enableExtremeOverflowHandling?: boolean;\n public webkitOnlyOverflowMobileHandling?: boolean;\n\n public data: D | null;\n\n public style: IGenericModalStyleConfig;\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?: IGenericModalConfig<D, ConfirmComponentData, ConfirmComponent>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.confirmCloseConfig = config?.confirmCloseConfig;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.enableExtremeOverflowHandling = config?.enableExtremeOverflowHandling ?? false;\n this.webkitOnlyOverflowMobileHandling = config?.webkitOnlyOverflowMobileHandling ?? true;\n\n this.data = config?.data ?? null;\n this.style = new GenericModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? EMPTY_STRING;\n\n this.contentClasses = config?.contentClasses ?? EMPTY_STRING;\n this.contentStyles = config?.contentStyles ?? EMPTY_STRING;\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id ?? uuidv4();\n }\n}\n","export enum GenericModalState {\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 { GenericModalConfig } from \"./generic-modal-config\";\nimport { ModalCore } from \"../components/modal-core\";\nimport { GenericModalState } from \"../enums/generic-modal-state.enum\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { IGenericModalRef } from \"../interfaces/igeneric-modal-ref.interface\";\nimport { GenericModalService } from \"../services/generic-modal.service\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { GenericModal } from \"./generic-modal\";\n\nexport class GenericModalRef<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>> implements IGenericModalRef<D, R, C> {\n\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private _parentElement: HTMLElement | undefined = undefined;\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n //#endregion\n\n //#region Component\n\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n //#endregion\n\n //#region Self\n\n private _modalState: GenericModalState = GenericModalState.CLOSED;\n\n private modalState = new BehaviorSubject<GenericModalState>(this.getStatus());\n\n public modalState$(): Observable<GenericModalState> {\n return this.modalState.asObservable();\n }\n\n private getStatus(): GenericModalState {\n return this._modalState;\n }\n\n private _selfIdentifier: { constructor: Function } = {} as {\n constructor: Function;\n };\n\n private set selfIdentifier(selfIdentifier: { constructor: Function }) {\n this._selfIdentifier = selfIdentifier;\n }\n\n public get selfIdentifier(): { constructor: Function } {\n return this._selfIdentifier;\n }\n\n private _modalConfig?: GenericModalConfig<D> = undefined;\n\n private set modalConfig(modalConfig: GenericModalConfig<D> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public get modalConfig(): GenericModalConfig<D> | undefined {\n return this._modalConfig;\n }\n //#endregion\n\n //#region Observables\n\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterCloseSubject: Subject<IGenericCloseResult<R>> = new Subject<IGenericCloseResult<R>>();\n\n public afterClosed(): Observable<IGenericCloseResult<R>> {\n return this.afterCloseSubject.asObservable();\n }\n\n private afterClose(result: IGenericCloseResult<R>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n constructor(\n componentRef: ComponentRef<C>,\n selfIdentifier: { constructor: Function },\n modalContainerRef: ComponentRef<ModalCore<D, R, C>>,\n private modalService: GenericModalService,\n modalConfig?: GenericModalConfig<D>,\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n this.selfIdentifier = selfIdentifier;\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = GenericModalState.OPENING;\n this.modalState.next(GenericModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new GenericModalConfig(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 = GenericModalState.OPEN;\n this.modalState.next(GenericModalState.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 //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IGenericCloseResult<R>): void {\n this._modalState = GenericModalState.CLOSING;\n this.modalState.next(GenericModalState.CLOSING);\n\n setTimeout(\n () => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = GenericModalState.CLOSED;\n this.modalState.next(GenericModalState.CLOSED);\n\n this.afterClose(result);\n this.modalService?.close(this.selfIdentifier, true);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { Injectable, OnDestroy, inject } from \"@angular/core\";\nimport { GenericModalRef } from \"./generic-modal-ref\";\nimport { Subject, takeUntil } from \"rxjs\";\nimport { GenericModalService } from \"../services/generic-modal.service\";\n\n@Injectable()\nexport abstract class GenericModal<D, R> implements OnDestroy {\n protected genericModalService = inject(GenericModalService);\n\n modal?: GenericModalRef<D, R>;\n\n protected modalGetSubscription$ = new Subject<void>();\n\n constructor() {\n this.createModalSubscription();\n }\n\n ngOnDestroy(): void {\n this.onDestroy();\n this.unsubscribeModalGet();\n }\n\n protected createModalSubscription() {\n this.modalGetSubscription$ = new Subject<void>();\n\n this.genericModalService\n .getSubscribe<D, R>(this.constructor)\n .pipe(takeUntil(this.modalGetSubscription$))\n .subscribe((modal) => {\n if (modal instanceof GenericModalRef) {\n this.modal = modal;\n this.afterModalGet();\n this.modalGetSubscription$.next();\n this.modalGetSubscription$.complete();\n }\n });\n }\n\n protected unsubscribeModalGet() {\n this.modalGetSubscription$.next();\n this.modalGetSubscription$.complete();\n }\n\n abstract afterModalGet(): void;\n abstract onDestroy(): void;\n\n public close() {\n this.modal?.close();\n }\n}\n","export enum GenericModalErrors {\n //#region General\n MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES = \"The modal doesn't match the requested types.\",\n GENERIC_MODAL_SERVICE_RENDERER_NOT_SET = \"ViewContainer and Renderer not set, please set the view container in the constructor of app.module.ts / app.ts (by calling register), before opening a modal\",\n //#endregion\n\n //#region Multi-level modals\n PARENT_MODAL_CANT_BE_THE_SAME_AS_CHILD = \"Parent modal cannot be the same as the child modal\",\n PARENT_MODAL_NOT_FOUND = \"Parent modal does not exist\",\n PARENT_MODAL_NOT_PROVIDED = \"No parent modal provided for multilevel modal\",\n //#endregion\n}","import { InjectionToken } from \"@angular/core\";\n\nexport const GENERIC_MODAL_DATA: InjectionToken<any> = new InjectionToken<any>(\"GENERIC_MODAL_DATA\");\n","import { Injectable, inject, Injector, ViewContainerRef, Renderer2 } from \"@angular/core\";\nimport { Router, NavigationEnd } from \"@angular/router\";\nimport { BehaviorSubject, Subject, filter, takeUntil, Observable, map, skip } from \"rxjs\";\nimport { GenericModal } from \"../classes/generic-modal\";\nimport { GenericModalConfig } from \"../classes/generic-modal-config\";\nimport { GenericModalRef } from \"../classes/generic-modal-ref\";\nimport { ModalCore } from \"../components/modal-core\";\nimport { GenericModalErrors } from \"../enums/generic-modal-errors.enum\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalService } from \"../interfaces/igeneric-modal-service.interface\";\nimport { GENERIC_MODAL_DATA } from \"../tokens/generic-modal-data.token\";\nimport { ComponentType } from \"@angular/cdk/portal\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class GenericModalService implements IGenericModalService {\n private router = inject(Router);\n protected injector = inject(Injector);\n\n //#region Properties\n\n private modals: Map<{ constructor: Function }, GenericModalRef | ModalCore> = new Map();\n private modalsSubject = new BehaviorSubject<Map<{ constructor: Function }, GenericModalRef | ModalCore>>(this.modals);\n\n public viewContainer?: ViewContainerRef;\n public renderer?: Renderer2;\n\n //#endregion\n\n constructor() {\n this.createSubscriptions();\n }\n\n //#region Private 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 public register(viewContainer: ViewContainerRef, renderer: Renderer2): void {\n this.viewContainer = viewContainer;\n this.renderer = renderer;\n }\n\n public open<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(component: ComponentType<C>, config?: IGenericModalConfig<D>): GenericModalRef<D, R, C> {\n if (!this.viewContainer || !this.renderer) {\n throw new Error(GenericModalErrors.GENERIC_MODAL_SERVICE_RENDERER_NOT_SET);\n }\n\n const dataInjector = Injector.create({\n providers: [{ provide: GENERIC_MODAL_DATA, useValue: config?.data }],\n parent: this.injector,\n });\n\n const wrapperRef = this.viewContainer.createComponent(ModalCore<D, R, C>, {\n injector: dataInjector,\n });\n\n const contentInjector = Injector.create({\n providers: [\n { provide: ModalCore, useValue: wrapperRef.instance }\n ],\n parent: wrapperRef.injector,\n });\n\n const contentRef = this.viewContainer.createComponent(component, {\n injector: contentInjector,\n });\n\n const modal = new GenericModalRef<D, R, C>(\n contentRef,\n component,\n wrapperRef,\n this,\n new GenericModalConfig(config),\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.set(modal.selfIdentifier, modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n public close(self: { constructor: Function }, fromCloseFunction: boolean | undefined = false): void {\n if (this.modals.has(self)) {\n if (fromCloseFunction !== true) {\n\n const modal = this.modals.get(self);\n if (modal && modal instanceof GenericModalRef) {\n modal.close();\n }\n }\n this.modals.delete(self);\n this.modalsSubject.next(this.modals);\n }\n }\n\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal instanceof GenericModalRef) {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close(\"cancel\", undefined, true);\n }\n }\n });\n\n this.modals.clear();\n this.modalsSubject.next(this.modals);\n }\n\n public get<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(self: { constructor: Function }): GenericModalRef<D, R, C> | ModalCore<D, R, C> | undefined {\n const modal = this.modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | ModalCore<D, R, C> | undefined;\n }\n\n public getSubscribe<D, R, C extends GenericModal<D, R> = GenericModal<D, R>>(self: { constructor: Function }): Observable<GenericModalRef<D, R, C> | ModalCore<D, R, C> | undefined> {\n return this.modalsSubject.asObservable().pipe(map((modals) => {\n const modal = modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | ModalCore<D, R, C> | undefined;\n }));\n }\n\n public modalsCount(): number {\n return this.modals.size;\n }\n\n public find(self: { constructor: Function }): boolean {\n return this.modals.has(self);\n }\n\n //#endregion\n\n //#region Helper Methods\n\n public modalRequestedTypeCheck(modal: GenericModalRef | ModalCore | undefined): boolean {\n if (modal) {\n if (modal instanceof GenericModalRef) {\n if (!(modal.componentRef.instance instanceof GenericModal)) {\n throw new Error(GenericModalErrors.MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES);\n }\n } else if (!(modal instanceof ModalCore)) {\n throw new Error(GenericModalErrors.MODAL_DOESNT_MATCH_THE_REQUESTED_TYPES);\n }\n }\n\n return true;\n }\n\n //#endregion\n}\n","import { Component, input, output } from \"@angular/core\";\n\n@Component({\n selector: 'modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n readonly isAnimated = input(false);\n readonly isOpen = input(false);\n \n readonly click = output<MouseEvent>();\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 { GenericModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss',\n})\nexport class ModalDefaultCloseButton<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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 { GenericModalConfig } from \"../../../../classes/generic-modal-config\";\nimport { ModalCloseMode } from \"../../../../types/modal.types\";\nimport { ModalDefaultCloseButton } from \"../default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-banner',\n imports: [\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss',\n})\nexport class ModalBanner<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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 <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>","export const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD = 80; ","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output, signal, computed } from '@angular/core';\nimport { GenericModalConfig } from '../../../classes/generic-modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as swipeConst from '../../../constants/generic-modal-swipe.constants';\n\n@Component({\n selector: 'modal-swipeable',\n imports: [\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: './modal-swipeable.html',\n styleUrl: './modal-swipeable.scss',\n})\nexport class ModalSwipeable implements OnInit, OnDestroy {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n readonly config = input.required<GenericModalConfig<any> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\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 swipeableModalInitiated: boolean = false;\n \n private cleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n @ViewChild(\"verticalSwipeTarget\", { static: true }) verticalSwipeTarget?: ElementRef;\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.initSwipeableModalParams();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n const limit = document.body.offsetHeight / this.downSwipeLimit;\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 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 > swipeConst.GENERIC_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 initSwipeableModalParams(): void {\n if (this.swipeableModalInitiated) return;\n this.swipeableModalInitiated = true;\n\n const config = this.config();\n const style = config?.style?.mobileConfig;\n\n this.downSwipeLimit = style?.downSwipeLimit && style.downSwipeLimit > 0\n ? style.downSwipeLimit\n : swipeConst.GENERIC_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}","<div (click)=\"$event.stopPropagation()\" \n [id]=\"config()?.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-swipeable-modal': isAnimated()\n }\" \n data-horizontal-swipe-target=\"swipeable-modal\" \n class=\"swipeable-modal-style\">\n \n <div #verticalSwipeTarget \n class=\"touch-hitbox swipeable-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"swipeable-modal-inner-content-container\">\n <div class=\"swipeable-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"swipeable-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"swipeable-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=\"swipeable-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 { GenericModalConfig } from \"../../../classes/generic-modal-config\";\nimport { IGenericModalView } from \"../../../interfaces/igeneric-modal-view.interface\";\nimport { ModalCloseMode } from \"../../../types/modal.types\";\nimport { ModalBanner } from \"../../shared/ui/banner/modal-banner\";\nimport { ModalSwipeable } from \"../swipeable/modal-swipeable\";\nimport { ModalDefaultCloseButton } from \"../../shared/ui/default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalSwipeable,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\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}","@if(!isSwipeableModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\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 { GenericModalConfig } from '../../../classes/generic-modal-config';\nimport { IGenericModalView } from '../../../interfaces/igeneric-modal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalSwipeable } from '../swipeable/modal-swipeable';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\nimport * as animConst from '../../../constants/generic-modal-animation.constants';\n\n@Component({\n selector: 'modal-side',\n imports: [\n NgTemplateOutlet,\n ModalSwipeable,\n NgClass,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\n\n protected renderOpenClass = signal(false);\n\n public modalClasses = computed(() => {\n const config = this.config();\n const positionLeft = config?.style?.position === 'left';\n const positionRight = config?.style?.position === '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 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\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}","@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\"\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const GENERIC_MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const GENERIC_MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const GENERIC_MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;","import { NgTemplateOutlet } from \"@angular/common\";\nimport { Component, inject, output, ComponentRef, ViewChild, ElementRef, ViewChildren, QueryList, TemplateRef, ViewContainerRef, signal, effect } from \"@angular/core\";\nimport { Subject, Observable, fromEvent, filter, take } from \"rxjs\";\nimport { GenericModal } from \"../classes/generic-modal\";\nimport { GenericModalConfig } from \"../classes/generic-modal-config\";\nimport { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { GenericModalWarnings } from \"../enums/generic-modal-warnings.enum\";\nimport { IGenericModalComponenet } from \"../interfaces/igeneric-modal-component.interface\";\nimport { GenericModalService } from \"../services/generic-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 { ModalSwipeable } from \"./views/swipeable/modal-swipeable\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { DeviceTypeService, ScrollLockService, WindowDimensionsService } from \"@filip.mazev/blocks-core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport * as animConst from \"../constants/generic-modal-animation.constants\";\n\n@Component({\n selector: 'modal-core',\n imports: [\n NgTemplateOutlet,\n ModalCentered,\n ModalSide,\n ModalBackdrop\n ],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss',\n})\nexport class ModalCore<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>>\n implements IGenericModalComponenet<D, R, C> {\n\n private modalService = inject(GenericModalService);\n private windowDimensionsService = inject(WindowDimensionsService);\n private scrollLockService = inject(ScrollLockService);\n private deviceTypeService = inject(DeviceTypeService);\n\n readonly afterClose = output<void>();\n\n readonly animationDuration: number = animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: GenericModalConfig<D>;\n public closeFunction?: Function;\n\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n\n public isOpen = signal<boolean>(true);\n public isSwipeableModalActive = signal<boolean>(false);\n\n protected headerTemplate = signal<TemplateRef<any> | null>(null);\n protected footerTemplate = signal<TemplateRef<any> | null>(null);\n\n public isAnimated: boolean = false;\n public isCentered: boolean = false;\n public isSide: boolean = false;\n protected hasBanner: boolean = false;\n protected hasDefaultContentWrapperClass: boolean = false;\n\n private isConfirmCloseModalOpen: boolean = false;\n private isSpecialMobileOverflowHandlingEnabled: boolean = false;\n private isScrollDisabled: boolean = false;\n\n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n @ViewChild(\"modalContainer\", { static: true }) modalContainer?: ElementRef;\n\n @ViewChildren(ModalSide) sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) centeredModalComponents?: QueryList<ModalCentered>;\n\n @ViewChild(\"contentTemplate\") contentTemplate?: TemplateRef<HTMLElement>;\n @ViewChild(\"dynamicContainer\", { read: ViewContainerRef }) dynamicContainer?: ViewContainerRef;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleWindowDimensionChange(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n\n if (this.config?.style.handleMobile !== false && this.windowDimensionsService.isMobile()) {\n this.handleSwipeableModalOpened();\n } else {\n this.isSwipeableModalActive.set(false);\n }\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\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.isSpecialMobileOverflowHandlingEnabled = (this.deviceTypeService.getDeviceState().isAppleDevice || this.config?.webkitOnlyOverflowMobileHandling === false);\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\n this.isAnimated = this.config?.style.animate === true;\n this.isCentered = this.config?.style.position === \"center\";\n this.isSide = this.config?.style.position === \"left\" || this.config?.style.position === \"right\";\n }\n\n //#endregion\n\n //#region Public Template Methods\n\n public setHeaderTemplate(template: TemplateRef<any>) {\n this.headerTemplate.set(template);\n }\n\n public setFooterTemplate(template: TemplateRef<any>) {\n this.footerTemplate.set(template);\n }\n\n //#endregion\n\n //#region Closing Methods\n\n public close(state: ModalCloseMode = \"cancel\", result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (this.isConfirmCloseModalOpen) return;\n\n if (this.isScrollDisabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n }\n\n if ((this.config && this.config?.disableClose !== true) || !fromInsideInteraction || forceClose) {\n if (this.config?.confirmCloseConfig && this.shouldOpenConfirmCloseModal(forceClose, state)) {\n if (this.shouldOpenConfirmCloseModalSelfCheck()) {\n const modal = this.modalService.open<IGenericCloseResult, any>(this.config.confirmCloseConfig.confirmModalComponent, {\n style: this.config.confirmCloseConfig.style ?? {\n handleMobile: false,\n },\n disableClose: true,\n bannerText: this.config.confirmCloseConfig.bannerText ?? EMPTY_STRING,\n data: this.config.confirmCloseConfig.data ?? null,\n });\n\n this.isConfirmCloseModalOpen = true;\n\n if (this.isSwipeableModalActive()) {\n this.resetSwipeableModalPosition();\n }\n\n modal.afterClosed()\n .pipe(take(1))\n .subscribe((_result: IGenericCloseResult) => {\n this.isConfirmCloseModalOpen = false;\n if (_result.state === 'confirm') {\n this.handleClose(state, result);\n }\n });\n } else {\n if (this.config?.disableConsoleWarnings !== true) {\n console.warn(GenericModalWarnings.CONFIRM_MODAL_NESTING_NOT_SUPPORTED);\n }\n\n this.handleClose(state, result);\n }\n } else {\n this.handleClose(state, result);\n }\n } else if (this.isSwipeableModalActive()) {\n this.resetSwipeableModalPosition();\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setSwipeableModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state,\n } as IGenericCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n protected onBackdropClick(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close(\"cancel\", undefined, true);\n }\n }\n\n //#endregion\n\n //#region Logical Assertions\n\n private shouldOpenConfirmCloseModal(forceClose: boolean, state: ModalCloseMode): boolean {\n if (this.config?.confirmCloseConfig) {\n const closeNotCalledWithForceClose = !forceClose;\n\n if (closeNotCalledWithForceClose) {\n const configuredForConfirmClose = this.config.confirmCloseConfig.confirmClose === true;\n const closeCalledWithCancelState = state === \"cancel\";\n const configuredForConfirmCloseOnSubmit = this.config.confirmCloseConfig.confirmOnSubmit === true;\n\n return configuredForConfirmClose && (closeCalledWithCancelState || configuredForConfirmCloseOnSubmit);\n }\n }\n\n return false;\n }\n\n private shouldOpenConfirmCloseModalSelfCheck(): boolean {\n if (this.config?.confirmCloseConfig) {\n const hasSelfIdentifier = this.componentRef && this.componentRef.instance && this.componentRef.instance.modal && this.componentRef.instance.modal.selfIdentifier !== EMPTY_STRING;\n const bypassSelfCheck = this.config.confirmCloseConfig.bypassSelfCheck === true;\n\n return hasSelfIdentifier || bypassSelfCheck;\n }\n\n return false;\n }\n\n //#endregion\n\n //#region Swipable Modal Methods\n\n private handleWindowDimensionChange(width: number): void {\n if (this.config?.style.handleMobile === false) return;\n\n const smBreakpoint = this.windowDimensionsService.breakpoints.sm;\n const currentSwipeState = this.isSwipeableModalActive();\n\n if (width < smBreakpoint && !currentSwipeState) {\n this.handleSwipeableModalOpened();\n } \n \n if (width >= smBreakpoint && currentSwipeState) {\n this.handleSwipeableModalClosed();\n }\n }\n\n private handleSwipeableModalOpened(): void {\n this.isSwipeableModalActive.set(true);\n\n this.scrollLockService.disableScroll({\n mainContainer: this.modalContainer?.nativeElement,\n handleExtremeOverflow: this.config?.enableExtremeOverflowHandling ?? false,\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true,\n });\n\n this.isScrollDisabled = true;\n }\n\n private handleSwipeableModalClosed(): void {\n this.isSwipeableModalActive.set(false);\n\n if (this.isOpen() && this.isSpecialMobileOverflowHandlingEnabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n this.isScrollDisabled = false;\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private getSwipeableModal(): ModalSwipeable | undefined {\n return this.sideModalComponents?.first?.swipeableComponents?.first\n ?? this.centeredModalComponents?.first?.swipeableComponents?.first\n }\n\n private resetSwipeableModalPosition(): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.currentTranslateY.set(0);\n }\n }\n\n private setSwipeableModalFinishedState(isFinished: boolean): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.isSwipingVerticallyFinished.set(isFinished);\n }\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide || isSwipeableModalActive())) {\n<modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide) {\n <modal-side [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-side>\n } \n @case (isCentered) {\n <modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","export const LOWEST_CHARACTER_CAP = 23;\nexport const LOWER_CHARACTER_CAP = 33;\nexport const MID_CHARACTER_CAP = 49;\nexport const UPPER_CHARACTER_CAP = 60;","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { GenericModalWarnings } from '../enums/generic-modal-warnings.enum';\n\n@Directive({\n selector: '[modalFooter]', \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(GenericModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/modal-core';\nexport * from './lib/components/views/swipeable/modal-swipeable';\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/generic-modal.service';\n\nexport * from './lib/classes/generic-modal';\nexport * from './lib/classes/generic-modal-config';\nexport * from './lib/classes/generic-modal-ref';\nexport * from './lib/classes/generic-modal-style.config';\n\nexport * from './lib/interfaces/igeneric-close-result.interface';\nexport * from './lib/interfaces/igeneric-confirm-close.interface';\nexport * from './lib/interfaces/igeneric-modal-component.interface';\nexport * from './lib/interfaces/igeneric-modal-config.interface';\nexport * from './lib/interfaces/igeneric-modal-ref.interface';\nexport * from './lib/interfaces/igeneric-modal-service.interface';\nexport * from './lib/interfaces/igeneric-modal-style-config.interface';\nexport * from './lib/interfaces/igeneric-modal-view.interface';\nexport * from './lib/interfaces/igeneric-swipeable-modal-config';\n\nexport * from './lib/constants/generic-modal-animation.constants';\nexport * from './lib/constants/generic-modal-common.constants';\nexport * from './lib/constants/generic-modal-swipe.constants';\nexport * from './lib/constants/generic-modal-text.constants';\n\nexport * from './lib/enums/generic-modal-errors.enum';\nexport * from './lib/enums/generic-modal-warnings.enum';\nexport * from './lib/enums/generic-modal-state.enum';\n\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/generic-modal-data.token';\n\nexport * from './lib/types/modal.types';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD","swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT","animConst.GENERIC_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-footer.directive.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\";\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 { uuidv4 } from \"@filip.mazev/blocks-core\";\nimport { ModalCloseGuard } from \"./modal-close-guard\";\n\nexport class ModalConfig<D = unknown> {\n public open: boolean;\n\n public afterClose?: Function;\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 enableExtremeOverflowHandling?: boolean;\n public webkitOnlyOverflowMobileHandling?: 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>) {\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.enableExtremeOverflowHandling = config?.enableExtremeOverflowHandling ?? false;\n this.webkitOnlyOverflowMobileHandling = config?.webkitOnlyOverflowMobileHandling ?? true;\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 ?? uuidv4();\n }\n}\n","export enum ModalState {\n OPEN = \"open\",\n OPENING = \"opening\",\n CLOSED = \"closed\",\n CLOSING = \"closing\",\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\";\nimport { ComponentType } from \"@angular/cdk/portal\";\n\nexport class ModalRef<\n D = unknown,\n R = any,\n C extends IModal<D, R> = IModal<D, R>> implements IModalRef<D, R, C> {\n\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private _parentElement: HTMLElement | undefined = undefined;\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n //#endregion\n\n //#region Component\n\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n //#endregion\n\n //#region Self\n\n private _modalState: ModalState = ModalState.CLOSED;\n\n private modalState = new BehaviorSubject<ModalState>(this.getStatus());\n\n public modalState$(): Observable<ModalState> {\n return this.modalState.asObservable();\n }\n\n private getStatus(): ModalState {\n return this._modalState;\n }\n\n private _modalConfig?: ModalConfig<D> = undefined;\n\n private set modalConfig(modalConfig: ModalConfig<D> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public get modalConfig(): ModalConfig<D> | undefined {\n return this._modalConfig;\n }\n //#endregion\n\n //#region Observables\n\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterCloseSubject: Subject<IModalCloseResult<R>> = new Subject<IModalCloseResult<R>>();\n\n /**\n * Observable that emits when the modal has been closed.\n * @returns An Observable that emits an IModalCloseResult<R> when the modal is closed.\n */\n public afterClosed(): Observable<IModalCloseResult<R>> {\n return this.afterCloseSubject.asObservable();\n }\n\n private afterClose(result: IModalCloseResult<R>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\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>,\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\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 //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IModalCloseResult<R>): void {\n this._modalState = ModalState.CLOSING;\n this.modalState.next(ModalState.CLOSING);\n\n setTimeout(\n () => {\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\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const MODAL_DATA: InjectionToken<any> = new InjectionToken<any>(\"MODAL_DATA\");","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\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ModalService implements IModalService {\n\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>): 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: [\n { provide: ModalCore, useValue: wrapperRef.instance }\n ],\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>(\n contentRef,\n component,\n wrapperRef,\n this,\n new ModalConfig(config),\n );\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 (\n typeof component === 'object' &&\n component !== null &&\n 'onModalInit' in component &&\n typeof (component as IModal<D, R>).onModalInit === 'function'\n );\n }\n\n //#endregion\n}","import { Component, input, output } from \"@angular/core\";\n\n@Component({\n selector: 'modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n readonly isAnimated = input(false);\n readonly isOpen = input(false);\n \n readonly click = output<MouseEvent>();\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: 'modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss',\n})\nexport class ModalDefaultCloseButton<D = unknown> {\n readonly config = input.required<ModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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: 'modal-banner',\n imports: [\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss',\n})\nexport class ModalBanner<D = unknown> {\n readonly config = input.required<ModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\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 <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>","export const MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const MODAL_SWIPE_VELOCITY_THRESHOLD = 80; ","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: 'modal-bottom-sheet',\n imports: [\n NgClass,\n NgTemplateOutlet\n ],\n templateUrl: './modal-bottom-sheet.html',\n styleUrl: './modal-bottom-sheet.scss',\n})\nexport class ModalBottomSheet implements OnInit, OnDestroy {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n readonly config = input.required<ModalConfig | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\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 @ViewChild(\"verticalSwipeTarget\", { static: true }) verticalSwipeTarget?: ElementRef;\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 const limit = document.body.offsetHeight / this.downSwipeLimit;\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 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\n ? style.downSwipeLimit\n : 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}","<div (click)=\"$event.stopPropagation()\" \n [id]=\"config()?.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 data-horizontal-swipe-target=\"bottom-sheet-modal\" \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, 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: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalBottomSheet,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n\n readonly config = input.required<ModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isBottomSheetModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalBottomSheet) 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}","@if(!isBottomSheetModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" (click)=\"\n 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\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n \n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</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: 'modal-side',\n imports: [\n NgTemplateOutlet,\n ModalBottomSheet,\n NgClass,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IModalView<D> {\n readonly layout = input.required<ModalLayout>();\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n readonly config = input.required<ModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isBottomSheetModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalBottomSheet) bottomSheet!: QueryList<ModalBottomSheet>;\n\n protected renderOpenClass = signal(false);\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 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\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}","@if(!isBottomSheetModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\"\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 <modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></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<modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</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;","import { Component, inject, output, ComponentRef, ViewChild, ElementRef, ViewChildren, QueryList, TemplateRef, ViewContainerRef, signal, effect } 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 { IModalComponenet } 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 { DeviceTypeService, ScrollLockService, WindowDimensionsService } from \"@filip.mazev/blocks-core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { IModal } from \"../interfaces/imodal\";\nimport * as animConst from \"../constants/modal-animation.constants\";\n\n@Component({\n selector: 'modal-core',\n imports: [\n NgTemplateOutlet,\n ModalCentered,\n ModalSide,\n ModalBackdrop\n ],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss',\n})\nexport class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>>\n implements IModalComponenet<D, R, C> {\n\n private modalService = inject(ModalService);\n private windowDimensionsService = inject(WindowDimensionsService);\n private scrollLockService = inject(ScrollLockService);\n private deviceTypeService = inject(DeviceTypeService);\n\n readonly afterClose = output<void>();\n\n readonly animationDuration: number = animConst.MODAL_DEFAULT_ANIM_DURATION;\n\n /** The component reference (the component that is being displayed in the modal) */\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n\n /** The configuration for the modal */\n public config?: ModalConfig<D>;\n\n public closeFunction?: Function;\n\n private backdropClickSubject = new Subject<MouseEvent>();\n\n /* Observable for backdrop clicks */\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n\n /* Whether the modal is open or not */\n public isOpen = signal<boolean>(true);\n\n public effectiveLayout = signal<ModalLayout>('center');\n public isCentered = signal<boolean>(false);\n public isSide = signal<boolean>(false);\n\n protected headerTemplate = signal<TemplateRef<any> | null>(null);\n protected footerTemplate = signal<TemplateRef<any> | null>(null);\n\n protected isBottomSheetModalActive = signal<boolean>(false);\n\n public isAnimated: boolean = false;\n protected hasBanner: boolean = false;\n protected hasDefaultContentWrapperClass: boolean = false;\n\n private isConfirmCloseModalOpen: boolean = false;\n private isScrollHandlingEnabled: boolean = false;\n private isScrollDisabled: boolean = false;\n\n private _sortedBreakpoints: Array<{ width: number, layout: ModalLayout }> = [];\n\n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n private _currentVcr: ViewContainerRef | null = null;\n\n @ViewChild(\"dynamicContainer\", { read: ViewContainerRef })\n set dynamicContainer(vcr: ViewContainerRef | undefined) {\n if (vcr && this.componentRef) {\n this._currentVcr = vcr;\n vcr.insert(this.componentRef.hostView);\n }\n }\n\n @ViewChild(\"modalContainer\", { static: false }) modalContainer?: ElementRef;\n @ViewChild(\"contentTemplate\") contentTemplate?: TemplateRef<HTMLElement>;\n\n @ViewChildren(ModalSide) sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) centeredModalComponents?: QueryList<ModalCentered>;\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 const width = this.windowDimensionsService.dimensions().width;\n this.handleLayout(width);\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\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.isScrollHandlingEnabled = \n this.deviceTypeService.getDeviceState().isAppleDevice \n || this.config?.webkitOnlyOverflowMobileHandling === false\n || this.config?.enableExtremeOverflowHandling === true;\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]!\n }))\n .sort((a, b) => a.width - b.width);\n }\n }\n\n //#endregion\n\n //#region Public Template Methods\n\n public setHeaderTemplate(template: TemplateRef<any>) {\n this.headerTemplate.set(template);\n }\n\n public setFooterTemplate(template: TemplateRef<any>) {\n this.footerTemplate.set(template);\n }\n\n //#endregion\n\n //#region Closing Methods\n\n /** \n * Closes the modal with the specified state and result.\n * @param {ModalCloseMode} state The state of the modal close (e.g., 'confirm', 'cancel').\n * @param {R | undefined} result The result to be returned when the modal closes.\n * @param {boolean} fromInsideInteraction Whether the close was triggered from inside the modal interaction.\n * @param {boolean} forceClose Whether to force close the modal, bypassing the close guards.\n */\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 :\n guardResult instanceof Promise ? from(guardResult) :\n of(guardResult);\n\n canClose$.pipe(take(1)).subscribe((canClose) => {\n if (canClose) {\n this.handleClose(state, result);\n } else {\n if (this.isBottomSheetModalActive()) {\n this.resetBottomSheetModalLayout();\n }\n }\n });\n return;\n }\n\n this.handleClose(state, result);\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 protected onBackdropClick(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close(\"cancel\", undefined, true);\n }\n }\n\n //#endregion\n\n //#region Layout 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.handleBottomSheetModalOpened();\n } else if (!shouldBeBottomSheet && currentSwipeState) {\n this.handleBottomSheetModalClosed();\n }\n }\n\n private handleBottomSheetModalOpened(): void {\n this.isBottomSheetModalActive.set(true);\n\n if(this.isScrollHandlingEnabled && !this.isScrollDisabled) {\n this.scrollLockService.disableScroll({\n mainContainer: this.modalContainer?.nativeElement,\n handleExtremeOverflow: this.config?.enableExtremeOverflowHandling ?? false,\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true,\n });\n \n this.isScrollDisabled = true;\n }\n }\n\n private handleBottomSheetModalClosed(): void {\n this.isBottomSheetModalActive.set(false);\n if (this.isOpen() && this.isScrollHandlingEnabled && this.isScrollDisabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n this.isScrollDisabled = false;\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private getBottomSheetModal(): ModalBottomSheet | undefined {\n return this.sideModalComponents?.first?.bottomSheet?.first\n ?? 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 }\n\n //#endregion\n}","@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <modal-side \n [layout]=\"effectiveLayout()\"\n [headerTemplate]=\"headerTemplate()\" \n [footerTemplate]=\"footerTemplate()\" \n [config]=\"config\" \n [isOpen]=\"isOpen()\" \n [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" \n [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" \n [hasBanner]=\"hasBanner\" \n (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </modal-side>\n } \n @case (isCentered()) {\n <modal-centered \n [headerTemplate]=\"headerTemplate()\" \n [footerTemplate]=\"footerTemplate()\" \n [config]=\"config\" \n [isOpen]=\"isOpen()\" \n [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" \n [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" \n [hasBanner]=\"hasBanner\" \n (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </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\";\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}","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}","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: '[modalFooter]', \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 * 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';\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-footer.directive';\n\nexport * from './lib/tokens/modal-data.token';\n\nexport * from './lib/types/modal.types';","/**\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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"}
|