@filip.mazev/modal 0.1.0 → 0.1.2

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.
@@ -1,7 +1,7 @@
1
1
  import { NgClass, NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, Injectable, InjectionToken, Injector, input, output, Component, ViewChild, ViewChildren, effect, ChangeDetectorRef, signal, ViewContainerRef, TemplateRef, Directive } from '@angular/core';
4
- import { BehaviorSubject, Subject, takeUntil, filter, map, take, fromEvent } from 'rxjs';
4
+ import { BehaviorSubject, Subject, takeUntil, filter, skip, map, take, fromEvent } from 'rxjs';
5
5
  import { Router, NavigationEnd } from '@angular/router';
6
6
  import { uuidv4, WindowDimensionsService, ScrollLockService, DeviceTypeService } from '@filip.mazev/common-parts';
7
7
 
@@ -300,8 +300,7 @@ class GenericModalService {
300
300
  //#region Private Methods
301
301
  createSubscriptions() {
302
302
  this.router.events
303
- .pipe(filter((event) => event instanceof NavigationEnd))
304
- .pipe(takeUntil(this.unsubscribe$))
303
+ .pipe(filter((event) => event instanceof NavigationEnd), skip(1), takeUntil(this.unsubscribe$))
305
304
  .subscribe(() => {
306
305
  if (this.modalsCount() > 0) {
307
306
  this.closeAll(true);
@@ -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/views/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/views/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/views/banner/modal-banner.ts","../../../projects/modal/src/lib/components/views/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/constants/generic-modal-animation.constants.ts","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/components/generic-modal.ts","../../../projects/modal/src/lib/components/generic-modal.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 //#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/common-parts\";\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 closeOnSwipeBack: boolean;\n\n public data: D | null;\n\n public style: IGenericModalStyleConfig;\n\n public bannerText: string;\n public bannerTextAnnotatedString: string;\n public bannerIcons: 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.closeOnSwipeBack = config?.closeOnSwipeBack ?? false;\n\n this.data = config?.data ?? null;\n this.style = new GenericModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? EMPTY_STRING;\n this.bannerTextAnnotatedString = config?.bannerTextAnnotatedString ?? EMPTY_STRING;\n this.bannerIcons = config?.bannerIcons ?? [];\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 { GenericModalComponent } from \"../components/generic-modal\";\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<GenericModalComponent<D, R, C>> = {} as Type<GenericModalComponent<D, R, C>>;\n\n private set modalContainer(modalContainer: Type<GenericModalComponent<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainer(): Type<GenericModalComponent<D, R, C>> {\n return this._modalContainer;\n }\n\n private _modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>> = {} as ComponentRef<GenericModalComponent<D, R, C>>;\n\n private set modalContainerRef(modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerRef(): ComponentRef<GenericModalComponent<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<GenericModalComponent<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 } from \"rxjs\";\nimport { GenericModal } from \"../classes/generic-modal\";\nimport { GenericModalConfig } from \"../classes/generic-modal-config\";\nimport { GenericModalRef } from \"../classes/generic-modal-ref\";\nimport { GenericModalComponent } from \"../components/generic-modal\";\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\";\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 | GenericModalComponent> = new Map();\n private modalsSubject = new BehaviorSubject<Map<{ constructor: Function }, GenericModalRef | GenericModalComponent>>(this.modals);\n\n public viewContainer?: ViewContainerRef;\n public renderer?: Renderer2;\n\n private unsubscribe$ = new Subject<void>();\n\n //#endregion\n\n constructor() {\n this.createSubscriptions();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n //#region Private Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .pipe(takeUntil(this.unsubscribe$))\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(GenericModalComponent<D, R, C>, {\n injector: dataInjector,\n });\n\n const contentInjector = Injector.create({\n providers: [\n { provide: GenericModalComponent, 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> | GenericModalComponent<D, R, C> | undefined {\n const modal = this.modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | GenericModalComponent<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> | GenericModalComponent<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> | GenericModalComponent<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 | GenericModalComponent | 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 GenericModalComponent)) {\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 } from \"../../../classes/generic-modal-config\";\nimport { ModalCloseMode } from \"../../../types/modal.types\";\n\n@Component({\n selector: 'modal-banner',\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()?.bannerIcons && (config() && config()!.bannerIcons.length > 0)) {\n @for (icon of config()?.bannerIcons; track icon) {\n <img src=\"{{ icon }}\" class=\"icon-style custom-svg-icon-color-dark-green\" alt=\"\" />\n }\n }\n\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 <b> {{ config()?.bannerTextAnnotatedString }} </b>\n </div>\n </div>\n </div>\n }\n </div>\n\n @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"banner-svg-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 }\n</div>","export const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const GENERIC_MODAL_UP_SWIPE_LIMIT = 1;\nexport const GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD = 80; ","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output } from '@angular/core';\nimport { Subject, take } from 'rxjs';\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 footerTemplate = input.required<TemplateRef<any> | null>();\n \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: number = 0;\n public isSwipingVerticallyFinished: boolean = false;\n\n protected isSwipingVertically: boolean = false;\n\n protected downSwipeLimit: number = 0;\n protected upSwipeLimit: number = 0;\n\n protected windowInnerHeight: number = window.innerHeight;\n\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private swipeableModalInitiated: boolean = false;\n private globalPointerListenerAdded = false;\n\n private touchDetectionUnsubscribe$ = new Subject<void>();\n\n @ViewChild(\"verticalSwipeTarget\", { static: true }) verticalSwipeTarget?: ElementRef;\n @ViewChild(\"modalContent\", { static: true }) modalContent?: ElementRef;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0;\n if (!hasTouch) return;\n\n this.initSwipeableModalParams();\n\n this.touchDetectionUnsubscribe$ = new Subject<void>();\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 currentY = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n isPointerDown = true;\n startY = event.clientY;\n this.isSwipingVertically = true;\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n currentY = event.clientY - startY;\n\n event.preventDefault();\n this.currentTranslateY = currentY;\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n isPointerDown = false;\n this.isSwipingVertically = false;\n\n const deltaY = event.clientY - startY;\n const velocityY = (event.clientY - startY) / (event.timeStamp - (event as any).startTime || 1);\n\n if (Math.abs(deltaY) > limit || velocityY > swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY = 0;\n }\n };\n\n target.addEventListener('pointerdown', pointerDown);\n target.addEventListener('pointermove', pointerMove);\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.touchDetectionUnsubscribe$.pipe(take(1)).subscribe(() => {\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 this.touchDetectionUnsubscribe$.next();\n this.touchDetectionUnsubscribe$.complete();\n }\n\n private initSwipeableModalParams(): void {\n if (!this.swipeableModalInitiated) {\n this.swipeableModalInitiated = true;\n\n const config = this.config();\n this.downSwipeLimit = config?.style.mobileConfig?.downSwipeLimit\n ? config.style.mobileConfig.downSwipeLimit > 0\n ? config.style.mobileConfig.downSwipeLimit\n : 1\n : swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT;\n\n const configValue = this.config();\n this.upSwipeLimit = configValue?.style.mobileConfig?.upSwipeLimit\n ? configValue.style.mobileConfig.upSwipeLimit > 0\n ? configValue.style.mobileConfig.upSwipeLimit\n : swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT\n : window.innerHeight;\n }\n }\n\n private monitorInputType(): void {\n if (this.globalPointerListenerAdded) return;\n this.globalPointerListenerAdded = true;\n\n window.addEventListener('pointerdown', (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\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" [id]=\"config()?.id ?? ''\"\n [class]=\"config()?.style?.wrapperClasses !== undefined ? config()!.style.wrapperClasses! : ''\"\n [style]=\"config()?.style?.wrapperStyles !== undefined ? config()!.style.wrapperStyles! : ''\"\n [style.max-height]=\"config() && config()?.style?.mobileConfig && config()?.style?.mobileConfig?.customHeight ? config()?.style?.mobileConfig?.customHeight : ''\"\n [style.transform]=\"!isSwipingVerticallyFinished\n ? 'translateY(' + (currentTranslateY * -1 > windowInnerHeight / upSwipeLimit ? (windowInnerHeight / upSwipeLimit) * -1 : currentTranslateY) + 'px)'\n : 'translateY(100%)'\"\n [style.transition]=\"isAnimated() && !isSwipingVertically ? '300ms ease-in-out' : ''\" [ngClass]=\"{\n 'opened-swipeable-modal': isAnimated()\n }\" data-horizontal-swipe-target=\"swipeable-modal\" class=\"swipeable-modal-style\">\n <div #verticalSwipeTarget class=\"touch-hitbox\" class=\"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-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration().toString() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"swipeable-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>","import { NgTemplateOutlet, NgClass } from \"@angular/common\";\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef } 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 \"../banner/modal-banner\";\nimport { ModalSwipeable } from \"../swipeable/modal-swipeable\";\n\n@Component({\n selector: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalSwipeable,\n ModalBanner,\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IGenericModalView<D> {\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 get modalClasses(): { [key: string]: boolean } {\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 <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 [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, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output } 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 '../banner/modal-banner';\nimport { ModalSwipeable } from '../swipeable/modal-swipeable';\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 ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IGenericModalView<D> {\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n\n private _innerIsOpen = false;\n set innerIsOpen(value: boolean) {\n if (value) {\n this._innerIsOpen = false;\n setTimeout(() => {\n this._innerIsOpen = true;\n }, animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION);\n } else {\n this._innerIsOpen = false;\n }\n }\n get innerIsOpen(): boolean {\n return this._innerIsOpen;\n }\n\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 constructor() {\n effect(() => {\n this.innerIsOpen = this.isOpen();\n });\n }\n\n public get modalClasses(): { [key: string]: boolean } {\n const config = this.config();\n const positionLeft = config?.style?.position === 'left';\n const positionRight = config?.style?.position === 'right';\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'with-footer': this.footerTemplate() !== null,\n\n 'left': positionLeft,\n 'right': positionRight,\n\n 'side-modal-animate-in': this.isAnimated() && this.innerIsOpen,\n 'side-modal-animate-out': this.isAnimated() && !this.innerIsOpen,\n };\n }\n}","@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses\" (click)=\"$event.stopPropagation()\">\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 <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 [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"innerIsOpen\" [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 } from \"@angular/common\";\nimport { Component, inject, ChangeDetectorRef, output, ComponentRef, ViewChild, ElementRef, ViewChildren, QueryList, TemplateRef, ViewContainerRef, signal } from \"@angular/core\";\nimport { Subject, Observable, takeUntil, 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 \"./views/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, WindowDimensions, WindowDimensionsService } from \"@filip.mazev/common-parts\";\nimport * as animConst from \"../constants/generic-modal-animation.constants\";\n\n@Component({\n selector: \"generic-modal\",\n imports: [\n NgTemplateOutlet,\n ModalCentered,\n ModalSide,\n ModalBackdrop\n ],\n templateUrl: \"./generic-modal.html\",\n styleUrl: \"./generic-modal.scss\",\n})\nexport class GenericModalComponent<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>>\n implements IGenericModalComponenet<D, R, C> {\n private modalService = inject(GenericModalService);\n private windowDimensionService = inject(WindowDimensionsService);\n private scrollLockService = inject(ScrollLockService);\n private deviceTypeService = inject(DeviceTypeService);\n cdr = inject(ChangeDetectorRef);\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\n public closeFunction?: Function;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n\n private _isOpen: boolean = true;\n public get isOpen(): boolean {\n return this._isOpen;\n }\n private set isOpen(value: boolean) {\n this._isOpen = value;\n this.cdr.detectChanges();\n }\n\n public isSwipeableModalActive: boolean = false;\n public isAnimated: boolean = false;\n public isCentered: boolean = false;\n public isSide: boolean = false;\n\n protected hasBanner: boolean = false;\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected footerTemplate = signal<TemplateRef<any> | null>(null);\n\n private isConfirmCloseModalOpen: boolean = false;\n private isSpecialMobileOverflowHandlingEnabled: boolean = false;\n private isScrollDisabled: boolean = false;\n\n protected windowDimensions: WindowDimensions;\n\n private unsubscribe$ = new Subject<void>();\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.windowDimensions = this.windowDimensionService.getWindowDimensions();\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.createSubscriptions();\n\n if (this.config?.style.handleMobile !== false && this.windowDimensions.width < this.windowDimensions.threshold_sm) {\n this.isSwipeableModalActive = true;\n } else {\n this.isSwipeableModalActive = 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 this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.windowDimensionService\n .getWindowDimensions$()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((dimensions) => {\n this.windowDimensions = dimensions;\n this.handleWindowDimensionChange();\n });\n\n fromEvent<KeyboardEvent>(document, \"keydown\")\n .pipe(\n filter((event: KeyboardEvent) => event.key === \"Escape\"),\n takeUntil(this.unsubscribe$),\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close(\"cancel\", undefined, true);\n }\n });\n }\n\n private handleWindowDimensionChange(): void {\n if (this.config?.style.handleMobile !== false) {\n if (this.windowDimensions.width < this.windowDimensions.threshold_sm && !this.isSwipeableModalActive) {\n this.isSwipeableModalActive = true;\n\n if (this.isOpen) {\n if (this.isSpecialMobileOverflowHandlingEnabled) {\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\n if (this.windowDimensions.width >= this.windowDimensions.threshold_sm && this.isSwipeableModalActive) {\n this.isSwipeableModalActive = false;\n if (this.isOpen) {\n if (this.isSpecialMobileOverflowHandlingEnabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n this.isScrollDisabled = false;\n }\n }\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.bannerIcons && this.config.bannerIcons.length > 0) ||\n this.config.disableClose !== true &&\n this.config.style.showCloseButton !== false);\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n\n this.isAnimated = this.config?.style.animate === true && (this.config?.style.contentWrapper !== false || this.hasBanner);\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 setFooterTemplate(template: TemplateRef<any>) {\n Promise.resolve().then(() => {\n this.footerTemplate.set(template);\n });\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 bannerIcons: this.config.confirmCloseConfig.bannerIcons ?? [],\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 = 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 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 = 0;\n }\n }\n\n private setSwipeableModalFinishedState(isFinished: boolean): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.isSwipingVerticallyFinished = 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 [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 [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 { GenericModalComponent } from '../components/generic-modal';\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(GenericModalComponent, { 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/generic-modal';\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/views/backdrop/modal-backdrop';\nexport * from './lib/components/views/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","swipeConst.GENERIC_MODAL_UP_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/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/views/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/views/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/views/banner/modal-banner.ts","../../../projects/modal/src/lib/components/views/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/constants/generic-modal-animation.constants.ts","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/components/generic-modal.ts","../../../projects/modal/src/lib/components/generic-modal.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 //#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/common-parts\";\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 closeOnSwipeBack: boolean;\n\n public data: D | null;\n\n public style: IGenericModalStyleConfig;\n\n public bannerText: string;\n public bannerTextAnnotatedString: string;\n public bannerIcons: 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.closeOnSwipeBack = config?.closeOnSwipeBack ?? false;\n\n this.data = config?.data ?? null;\n this.style = new GenericModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? EMPTY_STRING;\n this.bannerTextAnnotatedString = config?.bannerTextAnnotatedString ?? EMPTY_STRING;\n this.bannerIcons = config?.bannerIcons ?? [];\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 { GenericModalComponent } from \"../components/generic-modal\";\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<GenericModalComponent<D, R, C>> = {} as Type<GenericModalComponent<D, R, C>>;\n\n private set modalContainer(modalContainer: Type<GenericModalComponent<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainer(): Type<GenericModalComponent<D, R, C>> {\n return this._modalContainer;\n }\n\n private _modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>> = {} as ComponentRef<GenericModalComponent<D, R, C>>;\n\n private set modalContainerRef(modalContainerRef: ComponentRef<GenericModalComponent<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerRef(): ComponentRef<GenericModalComponent<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<GenericModalComponent<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 { GenericModalComponent } from \"../components/generic-modal\";\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\";\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 | GenericModalComponent> = new Map();\n private modalsSubject = new BehaviorSubject<Map<{ constructor: Function }, GenericModalRef | GenericModalComponent>>(this.modals);\n\n public viewContainer?: ViewContainerRef;\n public renderer?: Renderer2;\n\n private unsubscribe$ = new Subject<void>();\n\n //#endregion\n\n constructor() {\n this.createSubscriptions();\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\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 takeUntil(this.unsubscribe$)\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(GenericModalComponent<D, R, C>, {\n injector: dataInjector,\n });\n\n const contentInjector = Injector.create({\n providers: [\n { provide: GenericModalComponent, 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> | GenericModalComponent<D, R, C> | undefined {\n const modal = this.modals.get(self);\n this.modalRequestedTypeCheck(modal);\n return modal as GenericModalRef<D, R, C> | GenericModalComponent<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> | GenericModalComponent<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> | GenericModalComponent<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 | GenericModalComponent | 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 GenericModalComponent)) {\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 } from \"../../../classes/generic-modal-config\";\nimport { ModalCloseMode } from \"../../../types/modal.types\";\n\n@Component({\n selector: 'modal-banner',\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()?.bannerIcons && (config() && config()!.bannerIcons.length > 0)) {\n @for (icon of config()?.bannerIcons; track icon) {\n <img src=\"{{ icon }}\" class=\"icon-style custom-svg-icon-color-dark-green\" alt=\"\" />\n }\n }\n\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 <b> {{ config()?.bannerTextAnnotatedString }} </b>\n </div>\n </div>\n </div>\n }\n </div>\n\n @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"banner-svg-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 }\n</div>","export const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const GENERIC_MODAL_UP_SWIPE_LIMIT = 1;\nexport const GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD = 80; ","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output } from '@angular/core';\nimport { Subject, take } from 'rxjs';\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 footerTemplate = input.required<TemplateRef<any> | null>();\n \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: number = 0;\n public isSwipingVerticallyFinished: boolean = false;\n\n protected isSwipingVertically: boolean = false;\n\n protected downSwipeLimit: number = 0;\n protected upSwipeLimit: number = 0;\n\n protected windowInnerHeight: number = window.innerHeight;\n\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private swipeableModalInitiated: boolean = false;\n private globalPointerListenerAdded = false;\n\n private touchDetectionUnsubscribe$ = new Subject<void>();\n\n @ViewChild(\"verticalSwipeTarget\", { static: true }) verticalSwipeTarget?: ElementRef;\n @ViewChild(\"modalContent\", { static: true }) modalContent?: ElementRef;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0;\n if (!hasTouch) return;\n\n this.initSwipeableModalParams();\n\n this.touchDetectionUnsubscribe$ = new Subject<void>();\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 currentY = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n isPointerDown = true;\n startY = event.clientY;\n this.isSwipingVertically = true;\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n currentY = event.clientY - startY;\n\n event.preventDefault();\n this.currentTranslateY = currentY;\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n isPointerDown = false;\n this.isSwipingVertically = false;\n\n const deltaY = event.clientY - startY;\n const velocityY = (event.clientY - startY) / (event.timeStamp - (event as any).startTime || 1);\n\n if (Math.abs(deltaY) > limit || velocityY > swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY = 0;\n }\n };\n\n target.addEventListener('pointerdown', pointerDown);\n target.addEventListener('pointermove', pointerMove);\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.touchDetectionUnsubscribe$.pipe(take(1)).subscribe(() => {\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 this.touchDetectionUnsubscribe$.next();\n this.touchDetectionUnsubscribe$.complete();\n }\n\n private initSwipeableModalParams(): void {\n if (!this.swipeableModalInitiated) {\n this.swipeableModalInitiated = true;\n\n const config = this.config();\n this.downSwipeLimit = config?.style.mobileConfig?.downSwipeLimit\n ? config.style.mobileConfig.downSwipeLimit > 0\n ? config.style.mobileConfig.downSwipeLimit\n : 1\n : swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT;\n\n const configValue = this.config();\n this.upSwipeLimit = configValue?.style.mobileConfig?.upSwipeLimit\n ? configValue.style.mobileConfig.upSwipeLimit > 0\n ? configValue.style.mobileConfig.upSwipeLimit\n : swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT\n : window.innerHeight;\n }\n }\n\n private monitorInputType(): void {\n if (this.globalPointerListenerAdded) return;\n this.globalPointerListenerAdded = true;\n\n window.addEventListener('pointerdown', (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\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" [id]=\"config()?.id ?? ''\"\n [class]=\"config()?.style?.wrapperClasses !== undefined ? config()!.style.wrapperClasses! : ''\"\n [style]=\"config()?.style?.wrapperStyles !== undefined ? config()!.style.wrapperStyles! : ''\"\n [style.max-height]=\"config() && config()?.style?.mobileConfig && config()?.style?.mobileConfig?.customHeight ? config()?.style?.mobileConfig?.customHeight : ''\"\n [style.transform]=\"!isSwipingVerticallyFinished\n ? 'translateY(' + (currentTranslateY * -1 > windowInnerHeight / upSwipeLimit ? (windowInnerHeight / upSwipeLimit) * -1 : currentTranslateY) + 'px)'\n : 'translateY(100%)'\"\n [style.transition]=\"isAnimated() && !isSwipingVertically ? '300ms ease-in-out' : ''\" [ngClass]=\"{\n 'opened-swipeable-modal': isAnimated()\n }\" data-horizontal-swipe-target=\"swipeable-modal\" class=\"swipeable-modal-style\">\n <div #verticalSwipeTarget class=\"touch-hitbox\" class=\"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-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration().toString() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"swipeable-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>","import { NgTemplateOutlet, NgClass } from \"@angular/common\";\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef } 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 \"../banner/modal-banner\";\nimport { ModalSwipeable } from \"../swipeable/modal-swipeable\";\n\n@Component({\n selector: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalSwipeable,\n ModalBanner,\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IGenericModalView<D> {\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 get modalClasses(): { [key: string]: boolean } {\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 <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 [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, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output } 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 '../banner/modal-banner';\nimport { ModalSwipeable } from '../swipeable/modal-swipeable';\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 ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IGenericModalView<D> {\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n\n private _innerIsOpen = false;\n set innerIsOpen(value: boolean) {\n if (value) {\n this._innerIsOpen = false;\n setTimeout(() => {\n this._innerIsOpen = true;\n }, animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION);\n } else {\n this._innerIsOpen = false;\n }\n }\n get innerIsOpen(): boolean {\n return this._innerIsOpen;\n }\n\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 constructor() {\n effect(() => {\n this.innerIsOpen = this.isOpen();\n });\n }\n\n public get modalClasses(): { [key: string]: boolean } {\n const config = this.config();\n const positionLeft = config?.style?.position === 'left';\n const positionRight = config?.style?.position === 'right';\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'with-footer': this.footerTemplate() !== null,\n\n 'left': positionLeft,\n 'right': positionRight,\n\n 'side-modal-animate-in': this.isAnimated() && this.innerIsOpen,\n 'side-modal-animate-out': this.isAnimated() && !this.innerIsOpen,\n };\n }\n}","@if(!isSwipeableModalActive()) {\n<div [ngClass]=\"modalClasses\" (click)=\"$event.stopPropagation()\">\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 <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 [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"innerIsOpen\" [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 } from \"@angular/common\";\nimport { Component, inject, ChangeDetectorRef, output, ComponentRef, ViewChild, ElementRef, ViewChildren, QueryList, TemplateRef, ViewContainerRef, signal } from \"@angular/core\";\nimport { Subject, Observable, takeUntil, 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 \"./views/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, WindowDimensions, WindowDimensionsService } from \"@filip.mazev/common-parts\";\nimport * as animConst from \"../constants/generic-modal-animation.constants\";\n\n@Component({\n selector: \"generic-modal\",\n imports: [\n NgTemplateOutlet,\n ModalCentered,\n ModalSide,\n ModalBackdrop\n ],\n templateUrl: \"./generic-modal.html\",\n styleUrl: \"./generic-modal.scss\",\n})\nexport class GenericModalComponent<\n D = unknown,\n R = any,\n C extends GenericModal<D, R> = GenericModal<D, R>>\n implements IGenericModalComponenet<D, R, C> {\n private modalService = inject(GenericModalService);\n private windowDimensionService = inject(WindowDimensionsService);\n private scrollLockService = inject(ScrollLockService);\n private deviceTypeService = inject(DeviceTypeService);\n cdr = inject(ChangeDetectorRef);\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\n public closeFunction?: Function;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n\n private _isOpen: boolean = true;\n public get isOpen(): boolean {\n return this._isOpen;\n }\n private set isOpen(value: boolean) {\n this._isOpen = value;\n this.cdr.detectChanges();\n }\n\n public isSwipeableModalActive: boolean = false;\n public isAnimated: boolean = false;\n public isCentered: boolean = false;\n public isSide: boolean = false;\n\n protected hasBanner: boolean = false;\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected footerTemplate = signal<TemplateRef<any> | null>(null);\n\n private isConfirmCloseModalOpen: boolean = false;\n private isSpecialMobileOverflowHandlingEnabled: boolean = false;\n private isScrollDisabled: boolean = false;\n\n protected windowDimensions: WindowDimensions;\n\n private unsubscribe$ = new Subject<void>();\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.windowDimensions = this.windowDimensionService.getWindowDimensions();\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.createSubscriptions();\n\n if (this.config?.style.handleMobile !== false && this.windowDimensions.width < this.windowDimensions.threshold_sm) {\n this.isSwipeableModalActive = true;\n } else {\n this.isSwipeableModalActive = 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 this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.windowDimensionService\n .getWindowDimensions$()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((dimensions) => {\n this.windowDimensions = dimensions;\n this.handleWindowDimensionChange();\n });\n\n fromEvent<KeyboardEvent>(document, \"keydown\")\n .pipe(\n filter((event: KeyboardEvent) => event.key === \"Escape\"),\n takeUntil(this.unsubscribe$),\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close(\"cancel\", undefined, true);\n }\n });\n }\n\n private handleWindowDimensionChange(): void {\n if (this.config?.style.handleMobile !== false) {\n if (this.windowDimensions.width < this.windowDimensions.threshold_sm && !this.isSwipeableModalActive) {\n this.isSwipeableModalActive = true;\n\n if (this.isOpen) {\n if (this.isSpecialMobileOverflowHandlingEnabled) {\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\n if (this.windowDimensions.width >= this.windowDimensions.threshold_sm && this.isSwipeableModalActive) {\n this.isSwipeableModalActive = false;\n if (this.isOpen) {\n if (this.isSpecialMobileOverflowHandlingEnabled) {\n this.scrollLockService.enableScroll(this.config?.enableExtremeOverflowHandling ?? false);\n this.isScrollDisabled = false;\n }\n }\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.bannerIcons && this.config.bannerIcons.length > 0) ||\n this.config.disableClose !== true &&\n this.config.style.showCloseButton !== false);\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n\n this.isAnimated = this.config?.style.animate === true && (this.config?.style.contentWrapper !== false || this.hasBanner);\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 setFooterTemplate(template: TemplateRef<any>) {\n Promise.resolve().then(() => {\n this.footerTemplate.set(template);\n });\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 bannerIcons: this.config.confirmCloseConfig.bannerIcons ?? [],\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 = 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 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 = 0;\n }\n }\n\n private setSwipeableModalFinishedState(isFinished: boolean): void {\n const swipeableModal = this.getSwipeableModal();\n if (swipeableModal) {\n swipeableModal.isSwipingVerticallyFinished = 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 [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 [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 { GenericModalComponent } from '../components/generic-modal';\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(GenericModalComponent, { 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/generic-modal';\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/views/backdrop/modal-backdrop';\nexport * from './lib/components/views/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","swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT","animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@filip.mazev/modal",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.1",
6
6
  "@angular/core": "^21.1.1",
7
- "@filip.mazev/common-parts": "^0.0.5"
7
+ "@filip.mazev/common-parts": "^0.0.6"
8
8
  },
9
9
  "dependencies": {
10
10
  "tslib": "^2.3.0"
@@ -1,5 +1,7 @@
1
+ @import 'theme';
2
+
1
3
  :root {
2
- --modal_bg: #f0f0f0;
3
- --modal_text_primary: #2d2d2d;
4
- --swipe_line_color: #cccccc;
4
+ --modal_bg: var(--fm-bg-surface);
5
+ --modal_text_primary: var(--fm-text-main);
6
+ --swipe_line_color: var(--fm-border);
5
7
  }