@filip.mazev/modal 0.1.21 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -213,7 +213,6 @@ Controls the behavior and content of the modal container:
213
213
  * `data` |`TData`|: (optional) The data to pass to the component of the modal. The component needs to use the @Inject(GENERIC_MODAL_DATA) or `data = inject<string>(GENERIC_MODAL_DATA);` (modern syntax) decorator to receive this.
214
214
  * `style` |`IGenericModalStyleConfig`|: (optional) The visual style configuration for the modal (position, backdrop, etc.), will default to an empty object.
215
215
  * `bannerText` |`string`|: (optional) The text to display in the header banner of the modal.
216
- * `bannerTextAnnotatedString` |`string`|: (optional) An annotated string (supporting bold styles) to display in the banner, will default to an empty string.
217
216
  * `contentClasses` |`string`|: (optional) Custom CSS classes to apply directly to the content container of the modal.
218
217
  * `contentStyles` |`string`|: (optional) Inline CSS styles to apply directly to the content container of the modal.
219
218
  * `disableConsoleWarnings` |`boolean`|: (optional) Whether to suppress library warnings in the console, will default to false.
@@ -63,7 +63,6 @@ class GenericModalConfig {
63
63
  data;
64
64
  style;
65
65
  bannerText;
66
- bannerTextAnnotatedString;
67
66
  contentClasses;
68
67
  contentStyles;
69
68
  disableConsoleWarnings;
@@ -81,7 +80,6 @@ class GenericModalConfig {
81
80
  this.data = config?.data ?? null;
82
81
  this.style = new GenericModalStyleConfig(config?.style);
83
82
  this.bannerText = config?.bannerText ?? EMPTY_STRING;
84
- this.bannerTextAnnotatedString = config?.bannerTextAnnotatedString ?? EMPTY_STRING;
85
83
  this.contentClasses = config?.contentClasses ?? EMPTY_STRING;
86
84
  this.contentStyles = config?.contentStyles ?? EMPTY_STRING;
87
85
  this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;
@@ -434,13 +432,13 @@ class ModalBanner {
434
432
  config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
435
433
  close = output();
436
434
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ModalBanner, deps: [], target: i0.ɵɵFactoryTarget.Component });
437
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: ModalBanner, isStandalone: true, selector: "modal-banner", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { close: "close" }, ngImport: i0, template: "<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n <b> {{ config()?.bannerTextAnnotatedString }} </b>\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>", styles: [".modal-banner-default-style{font:lighter;font-size:1.25rem;line-height:1.25rem}.modal-top-banner-container{display:flex;flex-direction:row;gap:2rem;justify-content:space-between;align-items:center;color:var(--modal-text, #000000);top:0;min-height:2rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem}.modal-top-banner-title-container{display:flex;flex-direction:row;justify-content:flex-start;gap:1.5rem;align-items:center;width:100%}@keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-webkit-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-moz-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}\n"], dependencies: [{ kind: "component", type: ModalDefaultCloseButton, selector: "modal-default-close-button", inputs: ["config"], outputs: ["close"] }] });
435
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: ModalBanner, isStandalone: true, selector: "modal-banner", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { close: "close" }, ngImport: i0, template: "<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>", styles: [".modal-banner-default-style{font:lighter;font-size:1.25rem;line-height:1.25rem}.modal-top-banner-container{display:flex;flex-direction:row;gap:2rem;justify-content:space-between;align-items:center;color:var(--modal-text, #000000);top:0;min-height:2rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem}.modal-top-banner-title-container{display:flex;flex-direction:row;justify-content:flex-start;gap:1.5rem;align-items:center;width:100%}@keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-webkit-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-moz-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}\n"], dependencies: [{ kind: "component", type: ModalDefaultCloseButton, selector: "modal-default-close-button", inputs: ["config"], outputs: ["close"] }] });
438
436
  }
439
437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ModalBanner, decorators: [{
440
438
  type: Component,
441
439
  args: [{ selector: 'modal-banner', imports: [
442
440
  ModalDefaultCloseButton
443
- ], template: "<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n <b> {{ config()?.bannerTextAnnotatedString }} </b>\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>", styles: [".modal-banner-default-style{font:lighter;font-size:1.25rem;line-height:1.25rem}.modal-top-banner-container{display:flex;flex-direction:row;gap:2rem;justify-content:space-between;align-items:center;color:var(--modal-text, #000000);top:0;min-height:2rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem}.modal-top-banner-title-container{display:flex;flex-direction:row;justify-content:flex-start;gap:1.5rem;align-items:center;width:100%}@keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-webkit-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-moz-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}\n"] }]
441
+ ], template: "<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>", styles: [".modal-banner-default-style{font:lighter;font-size:1.25rem;line-height:1.25rem}.modal-top-banner-container{display:flex;flex-direction:row;gap:2rem;justify-content:space-between;align-items:center;color:var(--modal-text, #000000);top:0;min-height:2rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem}.modal-top-banner-title-container{display:flex;flex-direction:row;justify-content:flex-start;gap:1.5rem;align-items:center;width:100%}@keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-webkit-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}@-moz-keyframes banner-display{0%{opacity:0;height:0}to{opacity:1;height:auto}}\n"] }]
444
442
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], close: [{ type: i0.Output, args: ["close"] }] } });
445
443
 
446
444
  const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;
@@ -1 +1 @@
1
- {"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/constants/generic-modal-common.constants.ts","../../../projects/modal/src/lib/enums/generic-modal-warnings.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-style.config.ts","../../../projects/modal/src/lib/classes/generic-modal-config.ts","../../../projects/modal/src/lib/enums/generic-modal-state.enum.ts","../../../projects/modal/src/lib/classes/generic-modal-ref.ts","../../../projects/modal/src/lib/classes/generic-modal.ts","../../../projects/modal/src/lib/enums/generic-modal-errors.enum.ts","../../../projects/modal/src/lib/tokens/generic-modal-data.token.ts","../../../projects/modal/src/lib/services/generic-modal.service.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/generic-modal-swipe.constants.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/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 HEADER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalHeader] Directive used outside of a GenericModalComponent.\",\n //#endregion\n}","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { IGenericSwipeableModalConfig } from \"../interfaces/igeneric-swipeable-modal-config\";\nimport { ModalPoistion } from \"../types/modal.types\";\n\nexport class GenericModalStyleConfig implements IGenericModalStyleConfig {\n position: ModalPoistion;\n handleMobile: boolean;\n\n animate: boolean;\n hasBackdrop: boolean;\n closeDelay?: number;\n showCloseButton?: boolean;\n\n mobileConfig: IGenericSwipeableModalConfig;\n\n contentWrapper: boolean;\n\n wrapperClasses: string;\n wrapperStyles: string;\n\n overrideFullHeight: boolean;\n\n constructor(config?: IGenericModalStyleConfig) {\n this.position = config?.position ?? \"center\";\n this.handleMobile = config?.handleMobile ?? true;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? EMPTY_STRING;\n this.wrapperStyles = config?.wrapperStyles ?? EMPTY_STRING;\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericConfirmCloseConfig } from \"../interfaces/igeneric-confirm-close.interface\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { GenericModal } from \"./generic-modal\";\nimport { GenericModalStyleConfig } from \"./generic-modal-style.config\";\nimport { uuidv4 } from \"@filip.mazev/blocks-core\";\n\nexport class GenericModalConfig<\n D = unknown,\n ConfirmComponentData = any,\n ConfirmComponent extends GenericModal<ConfirmComponentData, undefined> = GenericModal<ConfirmComponentData, undefined>> {\n public open: boolean;\n\n public afterClose?: Function;\n public confirmCloseConfig?: IGenericConfirmCloseConfig<ConfirmComponentData, ConfirmComponent>;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public enableExtremeOverflowHandling?: boolean;\n public webkitOnlyOverflowMobileHandling?: boolean;\n\n public data: D | null;\n\n public style: IGenericModalStyleConfig;\n\n public bannerText: string;\n public bannerTextAnnotatedString: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id: string;\n\n constructor(config?: IGenericModalConfig<D, ConfirmComponentData, ConfirmComponent>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.confirmCloseConfig = config?.confirmCloseConfig;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.enableExtremeOverflowHandling = config?.enableExtremeOverflowHandling ?? false;\n this.webkitOnlyOverflowMobileHandling = config?.webkitOnlyOverflowMobileHandling ?? true;\n\n this.data = config?.data ?? null;\n this.style = new GenericModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? EMPTY_STRING;\n this.bannerTextAnnotatedString = config?.bannerTextAnnotatedString ?? EMPTY_STRING;\n\n this.contentClasses = config?.contentClasses ?? EMPTY_STRING;\n this.contentStyles = config?.contentStyles ?? EMPTY_STRING;\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id ?? uuidv4();\n }\n}\n","export enum GenericModalState {\n OPEN = \"open\",\n OPENING = \"opening\",\n CLOSED = \"closed\",\n CLOSING = \"closing\",\n}\n","import { ComponentRef, Type } from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { GenericModalConfig } from \"./generic-modal-config\";\nimport { 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, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss',\n})\nexport class ModalDefaultCloseButton<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\n}"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from \"@angular/core\";\nimport { GenericModalConfig } from \"../../../../classes/generic-modal-config\";\nimport { ModalCloseMode } from \"../../../../types/modal.types\";\nimport { ModalDefaultCloseButton } from \"../default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-banner',\n imports: [\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss',\n})\nexport class ModalBanner<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\n}","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n <b> {{ config()?.bannerTextAnnotatedString }} </b>\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>","export const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const GENERIC_MODAL_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 headerTemplate = input.required<TemplateRef<any> | null>();\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 \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-inner-content-container\">\n <div class=\"swipeable-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"swipeable-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"swipeable-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration().toString() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"swipeable-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from \"@angular/common\";\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef } from \"@angular/core\";\nimport { GenericModalConfig } from \"../../../classes/generic-modal-config\";\nimport { IGenericModalView } from \"../../../interfaces/igeneric-modal-view.interface\";\nimport { ModalCloseMode } from \"../../../types/modal.types\";\nimport { ModalBanner } from \"../../shared/ui/banner/modal-banner\";\nimport { ModalSwipeable } from \"../swipeable/modal-swipeable\";\nimport { ModalDefaultCloseButton } from \"../../shared/ui/default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalSwipeable,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\n\n public 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 @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","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 '../../shared/ui/banner/modal-banner';\nimport { ModalSwipeable } from '../swipeable/modal-swipeable';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\nimport * as animConst from '../../../constants/generic-modal-animation.constants';\n\n@Component({\n selector: 'modal-side',\n imports: [\n NgTemplateOutlet,\n ModalSwipeable,\n NgClass,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n\n private _innerIsOpen = false;\n\n protected 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\n protected 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 \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 @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n \n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"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 \"./shared/ui/backdrop/modal-backdrop\";\nimport { ModalCentered } from \"./views/centered/modal-centered\";\nimport { ModalSide } from \"./views/side/modal-side\";\nimport { ModalSwipeable } from \"./views/swipeable/modal-swipeable\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { DeviceTypeService, ScrollLockService, WindowDimensions, WindowDimensionsService } from \"@filip.mazev/blocks-core\";\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 \n private 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 headerTemplate = signal<TemplateRef<any> | null>(null);\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.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n\n this.isAnimated = this.config?.style.animate === true && (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 setHeaderTemplate(template: TemplateRef<any>) {\n Promise.resolve().then(() => {\n this.headerTemplate.set(template);\n });\n }\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 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 [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-side>\n } \n @case (isCentered) {\n <modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","export const LOWEST_CHARACTER_CAP = 23;\nexport const LOWER_CHARACTER_CAP = 33;\nexport const MID_CHARACTER_CAP = 49;\nexport const UPPER_CHARACTER_CAP = 60;","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { 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/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/generic-modal.service';\n\nexport * from './lib/classes/generic-modal';\nexport * from './lib/classes/generic-modal-config';\nexport * from './lib/classes/generic-modal-ref';\nexport * from './lib/classes/generic-modal-style.config';\n\nexport * from './lib/interfaces/igeneric-close-result.interface';\nexport * from './lib/interfaces/igeneric-confirm-close.interface';\nexport * from './lib/interfaces/igeneric-modal-component.interface';\nexport * from './lib/interfaces/igeneric-modal-config.interface';\nexport * from './lib/interfaces/igeneric-modal-ref.interface';\nexport * from './lib/interfaces/igeneric-modal-service.interface';\nexport * from './lib/interfaces/igeneric-modal-style-config.interface';\nexport * from './lib/interfaces/igeneric-modal-view.interface';\nexport * from './lib/interfaces/igeneric-swipeable-modal-config';\n\nexport * from './lib/constants/generic-modal-animation.constants';\nexport * from './lib/constants/generic-modal-common.constants';\nexport * from './lib/constants/generic-modal-swipe.constants';\nexport * from './lib/constants/generic-modal-text.constants';\n\nexport * from './lib/enums/generic-modal-errors.enum';\nexport * from './lib/enums/generic-modal-warnings.enum';\nexport * from './lib/enums/generic-modal-state.enum';\n\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/generic-modal-data.token';\n\nexport * from './lib/types/modal.types';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD","swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT","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/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/generic-modal-swipe.constants.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.ts","../../../projects/modal/src/lib/components/views/swipeable/modal-swipeable.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/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 HEADER_DIRECTIVE_OUTSIDE_MODAL = \"[ModalHeader] Directive used outside of a GenericModalComponent.\",\n //#endregion\n}","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { IGenericSwipeableModalConfig } from \"../interfaces/igeneric-swipeable-modal-config\";\nimport { ModalPoistion } from \"../types/modal.types\";\n\nexport class GenericModalStyleConfig implements IGenericModalStyleConfig {\n position: ModalPoistion;\n handleMobile: boolean;\n\n animate: boolean;\n hasBackdrop: boolean;\n closeDelay?: number;\n showCloseButton?: boolean;\n\n mobileConfig: IGenericSwipeableModalConfig;\n\n contentWrapper: boolean;\n\n wrapperClasses: string;\n wrapperStyles: string;\n\n overrideFullHeight: boolean;\n\n constructor(config?: IGenericModalStyleConfig) {\n this.position = config?.position ?? \"center\";\n this.handleMobile = config?.handleMobile ?? true;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? EMPTY_STRING;\n this.wrapperStyles = config?.wrapperStyles ?? EMPTY_STRING;\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { EMPTY_STRING } from \"../constants/generic-modal-common.constants\";\nimport { IGenericConfirmCloseConfig } from \"../interfaces/igeneric-confirm-close.interface\";\nimport { IGenericModalConfig } from \"../interfaces/igeneric-modal-config.interface\";\nimport { IGenericModalStyleConfig } from \"../interfaces/igeneric-modal-style-config.interface\";\nimport { GenericModal } from \"./generic-modal\";\nimport { GenericModalStyleConfig } from \"./generic-modal-style.config\";\nimport { uuidv4 } from \"@filip.mazev/blocks-core\";\n\nexport class GenericModalConfig<\n D = unknown,\n ConfirmComponentData = any,\n ConfirmComponent extends GenericModal<ConfirmComponentData, undefined> = GenericModal<ConfirmComponentData, undefined>> {\n public open: boolean;\n\n public afterClose?: Function;\n public confirmCloseConfig?: IGenericConfirmCloseConfig<ConfirmComponentData, ConfirmComponent>;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public enableExtremeOverflowHandling?: boolean;\n public webkitOnlyOverflowMobileHandling?: boolean;\n\n public data: D | null;\n\n public style: IGenericModalStyleConfig;\n\n public bannerText: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id: string;\n\n constructor(config?: IGenericModalConfig<D, ConfirmComponentData, ConfirmComponent>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.confirmCloseConfig = config?.confirmCloseConfig;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.enableExtremeOverflowHandling = config?.enableExtremeOverflowHandling ?? false;\n this.webkitOnlyOverflowMobileHandling = config?.webkitOnlyOverflowMobileHandling ?? true;\n\n this.data = config?.data ?? null;\n this.style = new GenericModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? EMPTY_STRING;\n\n this.contentClasses = config?.contentClasses ?? EMPTY_STRING;\n this.contentStyles = config?.contentStyles ?? EMPTY_STRING;\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id ?? uuidv4();\n }\n}\n","export enum GenericModalState {\n OPEN = \"open\",\n OPENING = \"opening\",\n CLOSED = \"closed\",\n CLOSING = \"closing\",\n}\n","import { ComponentRef, Type } from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { GenericModalConfig } from \"./generic-modal-config\";\nimport { 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, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss',\n})\nexport class ModalDefaultCloseButton<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\n}"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from \"@angular/core\";\nimport { GenericModalConfig } from \"../../../../classes/generic-modal-config\";\nimport { ModalCloseMode } from \"../../../../types/modal.types\";\nimport { ModalDefaultCloseButton } from \"../default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-banner',\n imports: [\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss',\n})\nexport class ModalBanner<D = unknown> {\n readonly config = input.required<GenericModalConfig<D> | undefined>();\n\n readonly close = output<ModalCloseMode | undefined>();\n}","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n <div class=\"modal-banner-default-style\">\n <div class=\"generic-modal-banner-text\">\n <div>\n {{ config()?.bannerText }}\n </div>\n </div>\n </div>\n }\n </div>\n \n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n</div>","export const GENERIC_MODAL_DOWN_SWIPE_LIMIT = 2;\nexport const GENERIC_MODAL_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 headerTemplate = input.required<TemplateRef<any> | null>();\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 \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-inner-content-container\">\n <div class=\"swipeable-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"swipeable-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"swipeable-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration().toString() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"swipeable-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from \"@angular/common\";\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef } from \"@angular/core\";\nimport { GenericModalConfig } from \"../../../classes/generic-modal-config\";\nimport { IGenericModalView } from \"../../../interfaces/igeneric-modal-view.interface\";\nimport { ModalCloseMode } from \"../../../types/modal.types\";\nimport { ModalBanner } from \"../../shared/ui/banner/modal-banner\";\nimport { ModalSwipeable } from \"../swipeable/modal-swipeable\";\nimport { ModalDefaultCloseButton } from \"../../shared/ui/default-close-button/default-close-button\";\n\n@Component({\n selector: 'modal-centered',\n imports: [\n NgTemplateOutlet,\n NgClass,\n ModalSwipeable,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n readonly isAnimated = input.required<boolean>();\n readonly isSwipeableModalActive = input.required<boolean>();\n readonly animationDuration = input.required<number>();\n readonly hasDefaultContentWrapperClass = input.required<boolean>();\n readonly hasBanner = input.required<boolean>();\n\n readonly close = output<ModalCloseMode | undefined>();\n readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalSwipeable) swipeableComponents!: QueryList<ModalSwipeable>;\n\n public 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 @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [animationDuration]=\"animationDuration()\" (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</modal-swipeable>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","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 '../../shared/ui/banner/modal-banner';\nimport { ModalSwipeable } from '../swipeable/modal-swipeable';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\nimport * as animConst from '../../../constants/generic-modal-animation.constants';\n\n@Component({\n selector: 'modal-side',\n imports: [\n NgTemplateOutlet,\n ModalSwipeable,\n NgClass,\n ModalBanner,\n ModalDefaultCloseButton\n ],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss',\n})\nexport class ModalSide<D = unknown> implements IGenericModalView<D> {\n readonly headerTemplate = input.required<TemplateRef<any> | null>();\n readonly footerTemplate = input.required<TemplateRef<any> | null>();\n \n readonly config = input.required<GenericModalConfig<D> | undefined>();\n readonly isOpen = input.required<boolean>();\n\n private _innerIsOpen = false;\n\n protected 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\n protected 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 \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 @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n \n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<modal-swipeable [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\" [isOpen]=\"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 \"./shared/ui/backdrop/modal-backdrop\";\nimport { ModalCentered } from \"./views/centered/modal-centered\";\nimport { ModalSide } from \"./views/side/modal-side\";\nimport { ModalSwipeable } from \"./views/swipeable/modal-swipeable\";\nimport { ModalCloseMode } from \"../types/modal.types\";\nimport { IGenericCloseResult } from \"../interfaces/igeneric-close-result.interface\";\nimport { DeviceTypeService, ScrollLockService, WindowDimensions, WindowDimensionsService } from \"@filip.mazev/blocks-core\";\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 \n private 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 headerTemplate = signal<TemplateRef<any> | null>(null);\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.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n\n this.isAnimated = this.config?.style.animate === true && (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 setHeaderTemplate(template: TemplateRef<any>) {\n Promise.resolve().then(() => {\n this.headerTemplate.set(template);\n });\n }\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 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 [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-side>\n } \n @case (isCentered) {\n <modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\" [isOpen]=\"isOpen\" [isAnimated]=\"isAnimated\"\n [isSwipeableModalActive]=\"isSwipeableModalActive\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\">\n </ng-container>\n </modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","export const LOWEST_CHARACTER_CAP = 23;\nexport const LOWER_CHARACTER_CAP = 33;\nexport const MID_CHARACTER_CAP = 49;\nexport const UPPER_CHARACTER_CAP = 60;","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { 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/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/generic-modal.service';\n\nexport * from './lib/classes/generic-modal';\nexport * from './lib/classes/generic-modal-config';\nexport * from './lib/classes/generic-modal-ref';\nexport * from './lib/classes/generic-modal-style.config';\n\nexport * from './lib/interfaces/igeneric-close-result.interface';\nexport * from './lib/interfaces/igeneric-confirm-close.interface';\nexport * from './lib/interfaces/igeneric-modal-component.interface';\nexport * from './lib/interfaces/igeneric-modal-config.interface';\nexport * from './lib/interfaces/igeneric-modal-ref.interface';\nexport * from './lib/interfaces/igeneric-modal-service.interface';\nexport * from './lib/interfaces/igeneric-modal-style-config.interface';\nexport * from './lib/interfaces/igeneric-modal-view.interface';\nexport * from './lib/interfaces/igeneric-swipeable-modal-config';\n\nexport * from './lib/constants/generic-modal-animation.constants';\nexport * from './lib/constants/generic-modal-common.constants';\nexport * from './lib/constants/generic-modal-swipe.constants';\nexport * from './lib/constants/generic-modal-text.constants';\n\nexport * from './lib/enums/generic-modal-errors.enum';\nexport * from './lib/enums/generic-modal-warnings.enum';\nexport * from './lib/enums/generic-modal-state.enum';\n\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/generic-modal-data.token';\n\nexport * from './lib/types/modal.types';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["swipeConst.GENERIC_MODAL_SWIPE_VELOCITY_THRESHOLD","swipeConst.GENERIC_MODAL_DOWN_SWIPE_LIMIT","swipeConst.GENERIC_MODAL_UP_SWIPE_LIMIT","animConst.GENERIC_MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@filip.mazev/modal",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
4
4
  "exports": {
5
5
  "./_modal-theme": "./lib/styles/_modal-theme.scss",
6
6
  "./index": "./lib/styles/_index.scss",
@@ -75,7 +75,6 @@ interface IGenericConfirmCloseConfig<ConfirmComponentData = any, ConfirmComponen
75
75
  * @param {IGenericModalStyleConfig} style (optional) The style configuration for the modal, will default to an empty object
76
76
  * @param {boolean} showCloseButton (optional) Whether the modal should show a close button or not, will default to true
77
77
  * @param {string} bannerText (optional) The text to display in the banner of the modal
78
- * @param {string} bannerTextAnnotatedString (optional) The annotated string (in bold style, in addition to some text) to display in the banner of the modal, will default to an empty string
79
78
  * @param {string} contentClasses (optional) The classes to apply to the content of the modal
80
79
  * @param {string} contentStyles (optional) The styles to apply to the content of the modal
81
80
  * @param {string} id (optional) The id of the modal (set at the top level of the modal), will default to a random string
@@ -92,7 +91,6 @@ interface IGenericModalConfig<D = undefined, ConfirmComponentData = any, Confirm
92
91
  data?: D | null;
93
92
  style?: IGenericModalStyleConfig;
94
93
  bannerText?: string;
95
- bannerTextAnnotatedString?: string;
96
94
  contentClasses?: string;
97
95
  contentStyles?: string;
98
96
  disableConsoleWarnings?: boolean;
@@ -112,7 +110,6 @@ declare class GenericModalConfig<D = unknown, ConfirmComponentData = any, Confir
112
110
  data: D | null;
113
111
  style: IGenericModalStyleConfig;
114
112
  bannerText: string;
115
- bannerTextAnnotatedString: string;
116
113
  contentClasses: string;
117
114
  contentStyles: string;
118
115
  disableConsoleWarnings: boolean;