@filip.mazev/modal 0.1.53 → 0.1.55

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
@@ -289,3 +289,31 @@ const modal = this.modals.open<string, undefined>(CenteredModal, {
289
289
  })
290
290
  });
291
291
  ```
292
+
293
+ ## Global Modal Settings
294
+
295
+ The library provides a global settings service (`ModalGlobalSettingsService`) that allows you to update default behaviors and styles for all modals in your application. These defaults are applied unless overridden by the `IModalConfig` you provide when opening a modal.
296
+
297
+ ### Example Usage
298
+
299
+ ```typescript
300
+ import { ModalGlobalSettingsService } from '@filip.mazev/modal';
301
+
302
+ constructor(private readonly globalSettings: ModalGlobalSettingsService) {}
303
+
304
+ // Update global defaults at runtime
305
+ this.globalSettings.update({
306
+ animate: false, // Disable animations globally
307
+ hasBackdrop: true, // Ensure all modals have a backdrop
308
+ disableCloseOnBackdropClick: true // Prevent closing on backdrop click
309
+ });
310
+
311
+ ```
312
+
313
+ ### How It Works
314
+
315
+ * Each setting in ModalGlobalSettingsService is a reactive signal (`signal<boolean>` or `signal<ModalLayout>`).
316
+ * When a modal is opened, the service automatically resolves effective defaults from these signals.
317
+ * Individual modal configurations (IModalConfig) can still override the global defaults on a per-modal basis.
318
+
319
+ This enables dynamic control of modal behavior, such as temporarily disabling animations, forcing bottom-sheet layouts on mobile, or preventing accidental dismissals, without modifying individual modal calls.
@@ -1,10 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injector, ApplicationRef, EnvironmentInjector, RendererFactory2, createComponent, Injectable, input, output, Component, signal, computed, ViewChild, ViewChildren, effect, ViewContainerRef, TemplateRef, Directive } from '@angular/core';
2
+ import { InjectionToken, signal, Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, RendererFactory2, createComponent, input, output, Component, computed, ViewChild, ViewChildren, effect, ViewContainerRef, TemplateRef, Directive } from '@angular/core';
3
3
  import { BehaviorSubject, Subject, filter, skip, Observable, from, of, take, fromEvent, map } from 'rxjs';
4
4
  import { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';
5
5
  import { Router, NavigationEnd } from '@angular/router';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
  import { ScrollLockService, WindowDimensionsService, uuidv4 } from '@filip.mazev/blocks-core';
8
+ import { ModalGlobalSettingsService as ModalGlobalSettingsService$1 } from '@modal/services/modal-global-settings.service';
8
9
 
9
10
  class ModalStyleConfig {
10
11
  layout;
@@ -203,6 +204,48 @@ class ModalRef {
203
204
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
204
205
  const MODAL_DATA = new InjectionToken('MODAL_DATA');
205
206
 
207
+ class ModalGlobalSettingsService {
208
+ layout = signal('center', ...(ngDevMode ? [{ debugName: "layout" }] : []));
209
+ animate = signal(true, ...(ngDevMode ? [{ debugName: "animate" }] : []));
210
+ hasBackdrop = signal(true, ...(ngDevMode ? [{ debugName: "hasBackdrop" }] : []));
211
+ showCloseButton = signal(true, ...(ngDevMode ? [{ debugName: "showCloseButton" }] : []));
212
+ contentWrapper = signal(true, ...(ngDevMode ? [{ debugName: "contentWrapper" }] : []));
213
+ overrideFullHeight = signal(false, ...(ngDevMode ? [{ debugName: "overrideFullHeight" }] : []));
214
+ disableClose = signal(false, ...(ngDevMode ? [{ debugName: "disableClose" }] : []));
215
+ disableCloseOnBackdropClick = signal(false, ...(ngDevMode ? [{ debugName: "disableCloseOnBackdropClick" }] : []));
216
+ disableCloseOnNavigation = signal(false, ...(ngDevMode ? [{ debugName: "disableCloseOnNavigation" }] : []));
217
+ closeGuardOnlyOnCancel = signal(true, ...(ngDevMode ? [{ debugName: "closeGuardOnlyOnCancel" }] : []));
218
+ disableConsoleWarnings = signal(false, ...(ngDevMode ? [{ debugName: "disableConsoleWarnings" }] : []));
219
+ disableConsoleInfo = signal(false, ...(ngDevMode ? [{ debugName: "disableConsoleInfo" }] : []));
220
+ /**
221
+ * Updates the global modal settings with the provided values. Only the specified settings will be updated, while others will remain unchanged.
222
+ * @param settings An object containing the settings to be updated. Each property is optional, and only those provided will be updated.
223
+ * Example usage:
224
+ * this.modalGlobalSettingsService.update({
225
+ * animate: false,
226
+ * hasBackdrop: true,
227
+ * disableCloseOnBackdropClick: true
228
+ * });
229
+ * In this example, the global settings for 'animate', 'hasBackdrop', and 'disableCloseOnBackdropClick' will be updated, while all other settings will retain their current values.
230
+ */
231
+ update(settings) {
232
+ if (settings.animate !== undefined)
233
+ this.animate.set(settings.animate);
234
+ if (settings.hasBackdrop !== undefined)
235
+ this.hasBackdrop.set(settings.hasBackdrop);
236
+ if (settings.disableCloseOnBackdropClick !== undefined)
237
+ this.disableCloseOnBackdropClick.set(settings.disableCloseOnBackdropClick);
238
+ }
239
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModalGlobalSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
240
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModalGlobalSettingsService, providedIn: 'root' });
241
+ }
242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModalGlobalSettingsService, decorators: [{
243
+ type: Injectable,
244
+ args: [{
245
+ providedIn: 'root'
246
+ }]
247
+ }] });
248
+
206
249
  class ModalService {
207
250
  router = inject(Router);
208
251
  injector = inject(Injector);
@@ -211,6 +254,7 @@ class ModalService {
211
254
  rendererFactory = inject(RendererFactory2);
212
255
  document = inject(DOCUMENT);
213
256
  renderer;
257
+ globalSettings = inject(ModalGlobalSettingsService);
214
258
  //#region Properties
215
259
  modals = new Set();
216
260
  modalsSubject = new BehaviorSubject(this.modals);
@@ -254,11 +298,12 @@ class ModalService {
254
298
  environmentInjector: this.environmentInjector,
255
299
  elementInjector: contentInjector
256
300
  });
301
+ const resolvedConfig = this.resolveConfig(config);
257
302
  wrapperRef.instance.componentRef = contentRef;
258
- wrapperRef.instance.config = new ModalConfig(config);
303
+ wrapperRef.instance.config = new ModalConfig(resolvedConfig);
259
304
  this.appRef.attachView(wrapperRef.hostView);
260
305
  this.document.body.appendChild(wrapperRef.location.nativeElement);
261
- const modal = new ModalRef(contentRef, component, wrapperRef, this, new ModalConfig(config));
306
+ const modal = new ModalRef(contentRef, component, wrapperRef, this, new ModalConfig(resolvedConfig));
262
307
  if (this.isIModal(contentRef.instance)) {
263
308
  contentRef.instance.modal = modal;
264
309
  contentRef.instance.onModalInit();
@@ -328,6 +373,31 @@ class ModalService {
328
373
  isIModal(component) {
329
374
  return typeof component === 'object' && component !== null && 'onModalInit' in component && typeof component.onModalInit === 'function';
330
375
  }
376
+ resolveConfig(config) {
377
+ const resolvedStyle = {
378
+ layout: config?.style?.layout ?? this.globalSettings.layout(),
379
+ animate: config?.style?.animate ?? this.globalSettings.animate(),
380
+ hasBackdrop: config?.style?.hasBackdrop ?? this.globalSettings.hasBackdrop(),
381
+ showCloseButton: config?.style?.showCloseButton ?? this.globalSettings.showCloseButton(),
382
+ contentWrapper: config?.style?.contentWrapper ?? this.globalSettings.contentWrapper(),
383
+ overrideFullHeight: config?.style?.overrideFullHeight ?? this.globalSettings.overrideFullHeight(),
384
+ breakpoints: config?.style?.breakpoints,
385
+ mobileConfig: config?.style?.mobileConfig,
386
+ wrapperClasses: config?.style?.wrapperClasses,
387
+ wrapperStyles: config?.style?.wrapperStyles,
388
+ closeDelay: config?.style?.closeDelay,
389
+ };
390
+ return {
391
+ ...config,
392
+ disableClose: config?.disableClose ?? this.globalSettings.disableClose(),
393
+ disableCloseOnBackdropClick: config?.disableCloseOnBackdropClick ?? this.globalSettings.disableCloseOnBackdropClick(),
394
+ disableCloseOnNavigation: config?.disableCloseOnNavigation ?? this.globalSettings.disableCloseOnNavigation(),
395
+ closeGuardOnlyOnCancel: config?.closeGuardOnlyOnCancel ?? this.globalSettings.closeGuardOnlyOnCancel(),
396
+ disableConsoleWarnings: config?.disableConsoleWarnings ?? this.globalSettings.disableConsoleWarnings(),
397
+ disableConsoleInfo: config?.disableConsoleInfo ?? this.globalSettings.disableConsoleInfo(),
398
+ style: resolvedStyle,
399
+ };
400
+ }
331
401
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
332
402
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModalService, providedIn: 'root' });
333
403
  }
@@ -615,6 +685,7 @@ const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;
615
685
 
616
686
  class ModalCore {
617
687
  modalService = inject(ModalService);
688
+ globalSettings = inject(ModalGlobalSettingsService$1);
618
689
  scrollLockService = inject(ScrollLockService);
619
690
  windowDimensionsService = inject(WindowDimensionsService);
620
691
  animationDuration = MODAL_DEFAULT_ANIM_DURATION;
@@ -627,7 +698,7 @@ class ModalCore {
627
698
  effectiveLayout = signal('center', ...(ngDevMode ? [{ debugName: "effectiveLayout" }] : []));
628
699
  isCentered = signal(false, ...(ngDevMode ? [{ debugName: "isCentered" }] : []));
629
700
  isSide = signal(false, ...(ngDevMode ? [{ debugName: "isSide" }] : []));
630
- isAnimated = false;
701
+ isAnimated = computed(() => this.config?.style.animate ?? this.globalSettings.animate(), ...(ngDevMode ? [{ debugName: "isAnimated" }] : []));
631
702
  headerTemplate = signal(null, ...(ngDevMode ? [{ debugName: "headerTemplate" }] : []));
632
703
  footerTemplate = signal(null, ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
633
704
  id = signal(null, ...(ngDevMode ? [{ debugName: "id" }] : []));
@@ -741,7 +812,6 @@ class ModalCore {
741
812
  ((this.config.bannerText !== undefined && this.config.bannerText.length > 0) ||
742
813
  (this.config.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));
743
814
  this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;
744
- this.isAnimated = this.config?.style.animate === true;
745
815
  }
746
816
  initBreakpointCache() {
747
817
  const definedBreakpoints = this.config?.style?.breakpoints;
@@ -816,11 +886,11 @@ class ModalCore {
816
886
  this.isBottomSheetModalActive.set(false);
817
887
  }
818
888
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModalCore, deps: [], target: i0.ɵɵFactoryTarget.Component });
819
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: ModalCore, isStandalone: true, selector: "app-modal", viewQueries: [{ propertyName: "modalContainer", first: true, predicate: ["modalContainer"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["contentTemplate"], descendants: true }, { propertyName: "dynamicContainer", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "sideModalComponents", predicate: ModalSide, descendants: true }, { propertyName: "centeredModalComponents", predicate: ModalCentered, descendants: true }], ngImport: i0, template: "@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ModalCentered, selector: "app-modal-centered", inputs: ["headerTemplate", "footerTemplate", "config", "id", "isOpen", "isAnimated", "isBottomSheetModalActive", "animationDuration", "hasDefaultContentWrapperClass", "hasBanner"], outputs: ["close", "onBackdropClick"] }, { kind: "component", type: ModalSide, selector: "app-modal-side", inputs: ["layout", "headerTemplate", "footerTemplate", "config", "id", "isOpen", "isAnimated", "isBottomSheetModalActive", "animationDuration", "hasDefaultContentWrapperClass", "hasBanner"], outputs: ["close"] }, { kind: "component", type: ModalBackdrop, selector: "app-modal-backdrop", inputs: ["isAnimated", "isOpen"], outputs: ["click"] }] });
889
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: ModalCore, isStandalone: true, selector: "app-modal", viewQueries: [{ propertyName: "modalContainer", first: true, predicate: ["modalContainer"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["contentTemplate"], descendants: true }, { propertyName: "dynamicContainer", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "sideModalComponents", predicate: ModalSide, descendants: true }, { propertyName: "centeredModalComponents", predicate: ModalCentered, descendants: true }], ngImport: i0, template: "@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated()\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ModalCentered, selector: "app-modal-centered", inputs: ["headerTemplate", "footerTemplate", "config", "id", "isOpen", "isAnimated", "isBottomSheetModalActive", "animationDuration", "hasDefaultContentWrapperClass", "hasBanner"], outputs: ["close", "onBackdropClick"] }, { kind: "component", type: ModalSide, selector: "app-modal-side", inputs: ["layout", "headerTemplate", "footerTemplate", "config", "id", "isOpen", "isAnimated", "isBottomSheetModalActive", "animationDuration", "hasDefaultContentWrapperClass", "hasBanner"], outputs: ["close"] }, { kind: "component", type: ModalBackdrop, selector: "app-modal-backdrop", inputs: ["isAnimated", "isOpen"], outputs: ["click"] }] });
820
890
  }
821
891
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ModalCore, decorators: [{
822
892
  type: Component,
823
- args: [{ selector: 'app-modal', imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop], template: "@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>" }]
893
+ args: [{ selector: 'app-modal', imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop], template: "@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated()\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>" }]
824
894
  }], ctorParameters: () => [], propDecorators: { modalContainer: [{
825
895
  type: ViewChild,
826
896
  args: ['modalContainer', { static: false }]
@@ -1 +1 @@
1
- {"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/classes/modal-style.config.ts","../../../projects/modal/src/lib/classes/modal-config.ts","../../../projects/modal/src/lib/enums/modal-state.enum.ts","../../../projects/modal/src/lib/classes/modal-ref.ts","../../../projects/modal/src/lib/tokens/modal-data.token.ts","../../../projects/modal/src/lib/services/modal.service.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/modal-bottom-sheet.constants.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/constants/modal-animation.constants.ts","../../../projects/modal/src/lib/components/modal-core.ts","../../../projects/modal/src/lib/components/modal-core.html","../../../projects/modal/src/lib/classes/modal.ts","../../../projects/modal/src/lib/enums/modal-warnings.enum.ts","../../../projects/modal/src/lib/directives/modal-header.directive.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/lib/classes/modal-close-guard.ts","../../../projects/modal/src/lib/classes/guards/modal-confirm-close-guard.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["import { IModalStyleConfig } from '../interfaces/imodal-style-config.interface';\nimport { IBottomSheetModalConfig } from '../interfaces/ibottom-sheet-modal-config.interface';\nimport { BreakpointKey, ModalLayout } from '../types/modal.types';\n\nexport class ModalStyleConfig implements IModalStyleConfig {\n public layout: ModalLayout;\n public breakpoints?: Partial<Record<BreakpointKey, ModalLayout>>;\n\n public animate: boolean;\n public hasBackdrop: boolean;\n public closeDelay?: number;\n public showCloseButton?: boolean;\n\n public mobileConfig: IBottomSheetModalConfig;\n\n public contentWrapper: boolean;\n\n public wrapperClasses: string;\n public wrapperStyles: string;\n\n public overrideFullHeight: boolean;\n\n constructor(config?: IModalStyleConfig) {\n this.layout = config?.layout ?? 'center';\n this.breakpoints = config?.breakpoints;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? '';\n this.wrapperStyles = config?.wrapperStyles ?? '';\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { ModalStyleConfig } from './modal-style.config';\nimport { ModalCloseGuard } from './modal-close-guard';\nimport { IModalCloseResult } from '@modal/public-api';\nimport { Observable } from 'rxjs';\n\nexport class ModalConfig<D, R> {\n public open: boolean;\n\n public afterClose?: () => Observable<IModalCloseResult<R | undefined>>;\n\n public closeGuard?: ModalCloseGuard;\n public closeGuardOnlyOnCancel?: boolean;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public data: D | null;\n\n public style: ModalStyleConfig;\n\n public bannerText: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id?: string;\n\n constructor(config?: IModalConfig<D, R>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.closeGuard = config?.closeGuard;\n this.closeGuardOnlyOnCancel = config?.closeGuardOnlyOnCancel ?? true;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.data = config?.data ?? null;\n this.style = new ModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? '';\n\n this.contentClasses = config?.contentClasses ?? '';\n this.contentStyles = config?.contentStyles ?? '';\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id;\n }\n}\n","export enum ModalState {\n OPEN = 'open',\n OPENING = 'opening',\n CLOSED = 'closed',\n CLOSING = 'closing'\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ModalConfig } from './modal-config';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalState } from '../enums/modal-state.enum';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { IModalRef } from '../interfaces/imodal-ref.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalCloseMode } from '../types/modal.types';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ComponentType } from '@angular/cdk/portal';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ModalRef<D = unknown, R = any, C extends IModal<D, R> = IModal<D, R>> implements IModalRef<D, R, C> {\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n private _parentElement: HTMLElement | undefined = undefined;\n //#region Component\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n //#region Self\n private _modalState: ModalState = ModalState.CLOSED;\n //#endregion\n private modalState = new BehaviorSubject<ModalState>(this.getStatus());\n private _modalConfig?: ModalConfig<D, R> = undefined;\n //#region Observables\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n //#endregion\n private afterCloseSubject: Subject<IModalCloseResult<R | undefined>> = new Subject<IModalCloseResult<R | undefined>>();\n //#endregion\n constructor(\n componentRef: ComponentRef<C>,\n public componentType: ComponentType<C>,\n modalContainerRef: ComponentRef<ModalCore<D, R, C>>,\n private modalService: ModalService,\n modalConfig?: ModalConfig<D, R>\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n //#endregion\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get modalConfig(): ModalConfig<D, R> | undefined {\n return this._modalConfig;\n }\n\n private set modalConfig(modalConfig: ModalConfig<D, R> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n public modalState$(): Observable<ModalState> {\n return this.modalState.asObservable();\n }\n\n /**\n * Observable that emits when the modal has been closed.\n * @returns An Observable that emits an IModalCloseResult<R | undefined> when the modal is closed.\n */\n public afterClosed(): Observable<IModalCloseResult<R | undefined>> {\n return this.afterCloseSubject.asObservable();\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = ModalState.OPENING;\n this.modalState.next(ModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new ModalConfig(this.modalConfig);\n\n this.modalContainerRef.instance.config = config;\n\n this.modalContainerRef.instance.closeFunction = this.handleClose.bind(this);\n\n this.parentElement?.appendChild(this.modalContainerElement);\n\n this.modalContainerRef.instance.backdropClick.subscribe((event) => {\n this.backdropClicked(event);\n });\n\n this._modalState = ModalState.OPEN;\n this.modalState.next(ModalState.OPEN);\n }\n\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, forceClose: boolean = false): void {\n this.modalContainerRef.instance.close(state, result, false, forceClose);\n }\n\n private getStatus(): ModalState {\n return this._modalState;\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterClose(result: IModalCloseResult<R | undefined>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IModalCloseResult<R | undefined>): void {\n this._modalState = ModalState.CLOSING;\n this.modalState.next(ModalState.CLOSING);\n\n setTimeout(() => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = ModalState.CLOSED;\n this.modalState.next(ModalState.CLOSED);\n\n this.afterClose(result);\n\n this.modalService?.unregister(this);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const MODAL_DATA: InjectionToken<any> = new InjectionToken<any>('MODAL_DATA');\n","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, RendererFactory2, Renderer2, Type } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { BehaviorSubject, filter, skip } from 'rxjs';\nimport { ModalConfig } from '../classes/modal-config';\nimport { ModalRef } from '../classes/modal-ref';\nimport { ModalCore } from '../components/modal-core';\nimport { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { IModalService } from '../interfaces/imodal-service.interface';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService implements IModalService {\n private readonly router = inject(Router);\n private readonly injector = inject(Injector);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly rendererFactory = inject(RendererFactory2);\n private readonly document = inject(DOCUMENT);\n\n private readonly renderer: Renderer2;\n\n //#region Properties\n\n private modals: Set<ModalRef> = new Set();\n private modalsSubject = new BehaviorSubject<Set<ModalRef>>(this.modals);\n\n //#endregion\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.createSubscriptions();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n skip(1),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.modalsCount() > 0) {\n this.closeAll(true);\n }\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Opens a modal with the specified component and configuration.\n * @param component The component to be displayed in the modal.\n * @param config Optional configuration for the modal.\n * @returns A ModalRef instance representing the opened modal.\n */\n public open<D, R, C extends IModal<D, R> = IModal<D, R>>(component: ComponentType<C>, config?: IModalConfig<D, R>): ModalRef<D, R, C> {\n const dataInjector = Injector.create({\n providers: [{ provide: MODAL_DATA, useValue: config?.data }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent(ModalCore<D, R, C>, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n const contentInjector = Injector.create({\n providers: [{ provide: ModalCore, useValue: wrapperRef.instance }],\n parent: wrapperRef.injector\n });\n\n const contentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: contentInjector\n });\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = new ModalConfig(config);\n\n this.appRef.attachView(wrapperRef.hostView);\n this.document.body.appendChild(wrapperRef.location.nativeElement);\n\n const modal = new ModalRef<D, R, C>(contentRef, component, wrapperRef, this, new ModalConfig(config));\n\n if (this.isIModal<D, R>(contentRef.instance)) {\n contentRef.instance.modal = modal;\n contentRef.instance.onModalInit();\n }\n\n wrapperRef.onDestroy(() => {\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n });\n\n const modalElement = modal.componentRef.location.nativeElement;\n this.renderer.setStyle(modalElement, 'height', '97%');\n this.renderer.setStyle(modalElement, 'width', '100%');\n this.renderer.setStyle(modalElement, 'display', 'flex');\n this.renderer.setStyle(modalElement, 'flex-grow', '1');\n\n this.modals.add(modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n /**\n * Closes the specified modal.\n * @param modal The ModalRef instance representing the modal to be closed.\n */\n public close<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n modal.close();\n }\n\n /**\n * Unregisters the specified modal from the service.\n * @param modal The ModalRef instance representing the modal to be unregistered.\n */\n public unregister<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n this.modals.delete(modal);\n this.modalsSubject.next(this.modals);\n }\n\n /**\n * Closes all open modals.\n * @param onNavigate Indicates if the closeAll is triggered by navigation event.\n */\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close('cancel', undefined, true);\n }\n });\n }\n\n /**\n * Finds if a modal with the specified component type is currently open.\n * @param componentType The component type to search for.\n * @returns True if a modal with the specified component type is open, false otherwise.\n */\n public find<D, R>(componentType: Type<IModal<D, R>>): boolean {\n for (const modal of this.modals) {\n if (modal.componentRef.componentType === componentType) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the count of currently open modals.\n * @returns The number of open modals.\n */\n public modalsCount(): number {\n return this.modals.size;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private isIModal<D, R>(component: unknown): component is IModal<D, R> {\n return typeof component === 'object' && component !== null && 'onModalInit' in component && typeof (component as IModal<D, R>).onModalInit === 'function';\n }\n\n //#endregion\n}\n","import { Component, input, output } from '@angular/core';\n\n@Component({\n selector: 'app-modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n public readonly isAnimated = input(false);\n public readonly isOpen = input(false);\n\n public readonly click = output<MouseEvent>();\n}\n","<div class=\"modal-backdrop\" [class.backdrop-fade-in]=\"isAnimated() && isOpen()\"\n [class.backdrop-fade-out]=\"isAnimated() && !isOpen()\" (click)=\"click.emit($event)\">\n</div>","import { Component, input, output } from '@angular/core';\nimport { ModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'app-modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss'\n})\nexport class ModalDefaultCloseButton<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from '@angular/core';\nimport { ModalConfig } from '../../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../../types/modal.types';\nimport { ModalDefaultCloseButton } from '../default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-banner',\n imports: [ModalDefaultCloseButton],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss'\n})\nexport class ModalBanner<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n {{ config()?.bannerText }}\n }\n </div>\n\n <app-modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n</div>","export const MODAL_DOWN_SWIPE_LIMIT = 3;\nexport const MODAL_SWIPE_VELOCITY_THRESHOLD = 80;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as bottomSheetConst from '../../../constants/modal-bottom-sheet.constants';\n\n@Component({\n selector: 'app-modal-bottom-sheet',\n imports: [NgClass, NgTemplateOutlet],\n templateUrl: './modal-bottom-sheet.html',\n styleUrl: './modal-bottom-sheet.scss'\n})\nexport class ModalBottomSheet<D = unknown, R = unknown> implements OnInit, OnDestroy {\n public readonly id = input.required<string | null>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\n\n @ViewChild('verticalSwipeTarget', { static: true }) protected verticalSwipeTarget?: ElementRef;\n @ViewChild('elementRef', { static: true }) protected elementRef?: ElementRef;\n\n protected modalTransform = computed(() => {\n if (this.isSwipingVerticallyFinished()) {\n return 'translateY(100%)';\n }\n\n const calculatedY = Math.max(0, this.currentTranslateY());\n\n return `translateY(${calculatedY}px)`;\n });\n\n protected downSwipeLimit: number = 0;\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private bottomSheetInitiated: boolean = false;\n\n private cleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n this.globalResizeCleanup?.();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.initBottomSheetModalParams();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n let limit = 0;\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const modalHeight = this.elementRef?.nativeElement.offsetHeight || 0;\n limit = modalHeight / this.downSwipeLimit;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n this.isSwipingVertically.set(true);\n\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n const currentY = event.clientY - startY;\n\n if (event.cancelable) event.preventDefault();\n\n this.currentTranslateY.set(currentY);\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n isPointerDown = false;\n this.isSwipingVertically.set(false);\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = deltaY / duration;\n\n if (deltaY > limit || (velocityY > bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD && deltaY > 0)) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY.set(0);\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.cleanupListeners = () => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n };\n }\n\n private stopVerticalSwipeDetection(): void {\n if (!this.isTrackingSwipe) return;\n\n this.isTrackingSwipe = false;\n\n if (this.cleanupListeners) {\n this.cleanupListeners();\n this.cleanupListeners = null;\n }\n }\n\n private initBottomSheetModalParams(): void {\n if (this.bottomSheetInitiated) return;\n this.bottomSheetInitiated = true;\n\n const config = this.config();\n const style = config?.style?.mobileConfig;\n\n this.downSwipeLimit = style?.downSwipeLimit && style.downSwipeLimit > 0 ? style.downSwipeLimit : bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT;\n }\n\n private monitorInputType(): void {\n if (this.globalResizeCleanup) return;\n\n const handler = (event: PointerEvent) => {\n const isTouch = event.pointerType === 'touch';\n\n if (isTouch && !this.isTouchActive) {\n this.isTouchActive = true;\n this.startVerticalSwipeDetection();\n } else if (!isTouch && this.isTouchActive) {\n this.isTouchActive = false;\n this.stopVerticalSwipeDetection();\n }\n };\n\n window.addEventListener('pointerdown', handler);\n this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);\n }\n\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" \n [id]=\"id() ?? ''\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\"\n [style.max-height]=\"config()?.style?.mobileConfig?.customHeight ?? ''\"\n [style.transform]=\"modalTransform()\"\n [style.transition]=\"isAnimated() && !isSwipingVertically() ? 'transform 300ms ease-in-out' : ''\" \n [ngClass]=\"{\n 'opened-bottom-sheet-modal': isAnimated()\n }\" \n #elementRef\n class=\"bottom-sheet-modal-style\">\n \n <div #verticalSwipeTarget \n class=\"touch-hitbox bottom-sheet-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"bottom-sheet-modal-inner-content-container\">\n <div class=\"bottom-sheet-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"bottom-sheet-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"bottom-sheet-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"bottom-sheet-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-centered',\n imports: [NgTemplateOutlet, NgClass, ModalBottomSheet, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n public readonly close = output<ModalCloseMode | undefined>();\n public readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n return {\n 'centered-modal-content-wrapper': true,\n 'centered-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'centered-modal-animate-in': this.isAnimated() && this.isOpen(),\n 'centered-modal-animate-out': this.isAnimated() && !this.isOpen()\n };\n });\n}\n","@if(!isBottomSheetModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" [id]=\"id() ?? ''\"\n (click)=\"config()?.style?.hasBackdrop ? onBackdropClick.emit($event) : null\">\n <div class=\"modal-overlay-wrapper\">\n <div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\">\n <div class=\"centered-modal-inner-content-container\" [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n\n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode, ModalLayout } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-side',\n imports: [NgTemplateOutlet, ModalBottomSheet, NgClass, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss'\n})\nexport class ModalSide<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly layout = input.required<ModalLayout>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n const positionLeft = this.layout() === 'left';\n const positionRight = this.layout() === 'right';\n const shouldAnimate = this.isAnimated();\n\n const isRenderedOpen = this.renderOpenClass();\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n 'with-footer': this.footerTemplate() !== null,\n left: positionLeft,\n right: positionRight,\n\n 'side-modal-animate-in': shouldAnimate ? isRenderedOpen : true,\n 'side-modal-animate-out': shouldAnimate ? !isRenderedOpen : false\n };\n });\n\n protected renderOpenClass = signal(false);\n\n constructor() {\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n this.renderOpenClass.set(false);\n\n setTimeout(() => {\n this.renderOpenClass.set(true);\n }, 50);\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}\n","@if(!isBottomSheetModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\" [id]=\"id() ?? ''\"\n [style.--anim-duration.ms]=\"animationDuration()\">\n <div class=\"side-modal-inner-content-container\"\n [class]=\"config() && config()?.style?.wrapperClasses ? config()?.style?.wrapperClasses : ''\"\n [style]=\"config() && config()?.style?.wrapperStyles ? config()?.style?.wrapperStyles : ''\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;\n","import {\n Component,\n inject,\n ComponentRef,\n ViewChild,\n ElementRef,\n ViewChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n signal,\n effect,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { Subject, Observable, fromEvent, filter, take, from, of } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ModalConfig } from '../classes/modal-config';\nimport { IModalComponent } from '../interfaces/imodal-component.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalBackdrop } from './shared/ui/backdrop/modal-backdrop';\nimport { ModalCentered } from './views/centered/modal-centered';\nimport { ModalSide } from './views/side/modal-side';\nimport { ModalBottomSheet } from './views/bottom-sheet/modal-bottom-sheet';\nimport { BreakpointKey, ModalCloseMode, ModalLayout } from '../types/modal.types';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { ScrollLockService, uuidv4, WindowDimensionsService } from '@filip.mazev/blocks-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\nimport * as animConst from '../constants/modal-animation.constants';\n\n@Component({\n selector: 'app-modal',\n imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss'\n})\nexport class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {\n private readonly modalService = inject(ModalService);\n private readonly scrollLockService = inject(ScrollLockService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n public readonly animationDuration: number = animConst.MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: ModalConfig<D, R>;\n public closeFunction?: (data: IModalCloseResult<R | undefined>) => void;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n public isOpen = signal<boolean>(true);\n public effectiveLayout = signal<ModalLayout>('center');\n public isCentered = signal<boolean>(false);\n public isSide = signal<boolean>(false);\n public isAnimated: boolean = false;\n\n protected headerTemplate = signal<TemplateRef<void> | null>(null);\n protected footerTemplate = signal<TemplateRef<void> | null>(null);\n protected id = signal<string | null>(null);\n protected isBottomSheetModalActive = signal<boolean>(false);\n protected hasBanner: boolean = false;\n\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n @ViewChild('modalContainer', { static: false }) protected modalContainer?: ElementRef;\n @ViewChild('contentTemplate') protected contentTemplate?: TemplateRef<HTMLElement>;\n\n @ViewChildren(ModalSide) private sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) private centeredModalComponents?: QueryList<ModalCentered>;\n\n private isConfirmCloseModalOpen: boolean = false;\n private scrollLockId: string = uuidv4();\n\n private _sortedBreakpoints: Array<{ width: number; layout: ModalLayout }> = [];\n\n private _currentVcr: ViewContainerRef | null = null;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleLayout(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.initBreakpointCache();\n\n this.scrollLockService.disableScroll(this.scrollLockId, {\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true\n });\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n\n const width = this.windowDimensionsService.dimensions().width;\n this.handleLayout(width);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\n this.scrollLockService.enableScroll(this.scrollLockId);\n }\n\n //#region Public Template Methods\n public setHeaderTemplate(template: TemplateRef<void>) {\n this.headerTemplate.set(template);\n }\n\n //#endregion\n public setFooterTemplate(template: TemplateRef<void>) {\n this.footerTemplate.set(template);\n }\n\n //#region Closing Methods\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (forceClose) {\n this.handleClose(state, result);\n return;\n }\n\n if (this.config?.disableClose === true && fromInsideInteraction) {\n return;\n }\n\n const shouldCheckCloseGuard = this.config?.closeGuardOnlyOnCancel !== true || state !== 'confirm';\n\n if (shouldCheckCloseGuard && this.config?.closeGuard) {\n const guardResult = this.config.closeGuard.canClose(this.modalService);\n\n const canClose$ = guardResult instanceof Observable ? guardResult : guardResult instanceof Promise ? from(guardResult) : of(guardResult);\n\n if (this.isBottomSheetModalActive()) {\n this.resetBottomSheetModalLayout();\n }\n\n canClose$.pipe(take(1)).subscribe((canClose) => {\n if (canClose) {\n this.handleClose(state, result);\n }\n });\n return;\n }\n\n this.handleClose(state, result);\n }\n\n //#endregion\n protected onBackdropClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.backdropClickSubject.next(event);\n\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close('cancel', undefined, true);\n }\n }\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef })\n protected set dynamicContainer(vcr: ViewContainerRef | undefined) {\n if (vcr && this.componentRef) {\n this._currentVcr = vcr;\n vcr.insert(this.componentRef.hostView);\n }\n }\n\n //#region Subscription Methods\n\n private initKeyboardSubscription(): void {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close('cancel', undefined, true);\n }\n });\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.id.set(this.config?.id ?? this.scrollLockId);\n\n this.hasBanner =\n this.config !== undefined &&\n ((this.config.bannerText !== undefined && this.config.bannerText.length > 0) ||\n (this.config.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n this.isAnimated = this.config?.style.animate === true;\n }\n\n private initBreakpointCache(): void {\n const definedBreakpoints = this.config?.style?.breakpoints;\n\n if (definedBreakpoints && Object.keys(definedBreakpoints).length > 0) {\n const serviceBreakpoints = this.windowDimensionsService.breakpoints;\n\n this._sortedBreakpoints = (Object.keys(definedBreakpoints) as BreakpointKey[])\n .map((key) => ({\n width: serviceBreakpoints[key],\n layout: definedBreakpoints[key] ?? this.config?.style.layout ?? 'center'\n }))\n .sort((a, b) => a.width - b.width);\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setBottomSheetModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state\n } as IModalCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private handleLayout(width: number): void {\n if (!this.config) return;\n\n let resolvedLayout: ModalLayout = this.config.style.layout;\n\n for (const bp of this._sortedBreakpoints) {\n if (width <= bp.width) {\n resolvedLayout = bp.layout;\n break;\n }\n }\n\n const prevIsSide = this.isSide();\n const nextIsSide = resolvedLayout === 'left' || resolvedLayout === 'right';\n const layoutTypeChanged = prevIsSide !== nextIsSide;\n\n if (layoutTypeChanged && this._currentVcr && this.componentRef) {\n const index = this._currentVcr.indexOf(this.componentRef.hostView);\n if (index !== -1) {\n this._currentVcr.detach(index);\n }\n }\n\n this.effectiveLayout.set(resolvedLayout);\n this.isSide.set(nextIsSide);\n this.isCentered.set(resolvedLayout === 'center' || resolvedLayout === 'bottom-sheet');\n\n const shouldBeBottomSheet = resolvedLayout === 'bottom-sheet';\n const currentSwipeState = this.isBottomSheetModalActive();\n\n if (shouldBeBottomSheet && !currentSwipeState) {\n this.isBottomSheetModalActive.set(true);\n } else if (!shouldBeBottomSheet && currentSwipeState) {\n this.isBottomSheetModalActive.set(false);\n }\n }\n\n private getBottomSheetModal(): ModalBottomSheet | undefined {\n return this.sideModalComponents?.first?.bottomSheet?.first ?? this.centeredModalComponents?.first?.bottomSheet?.first;\n }\n\n private resetBottomSheetModalLayout(): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.currentTranslateY.set(0);\n }\n }\n\n private setBottomSheetModalFinishedState(isFinished: boolean): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.isSwipingVerticallyFinished.set(isFinished);\n }\n this.isBottomSheetModalActive.set(false);\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","import { inject, Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable()\nexport class Modal<D, R> implements IModal<D, R> {\n /**\n * Data injected into the modal component.\n */\n public data = inject<D>(MODAL_DATA);\n\n /**\n * Reference to the ModalRef instance associated with this modal.\n */\n public modal!: ModalRef<D, R>;\n\n /**\n * Called when the modal is initialized.\n */\n public onModalInit(): void {}\n\n /**\n * Closes the modal (with \"cancel\" reason) with an optional result.\n * @param result The result to be passed when closing the modal.\n */\n public close(result?: R) {\n this.modal?.close('cancel', result);\n }\n}\n","export enum ModalWarnings {\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = '[ModalFooter] Directive used outside of a ModalComponent.',\n HEADER_DIRECTIVE_OUTSIDE_MODAL = '[ModalHeader] Directive used outside of a ModalComponent.'\n //#endregion\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalHeader]',\n standalone: true\n})\nexport class ModalHeaderDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setHeaderTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.HEADER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalFooter]',\n standalone: true\n})\nexport class ModalFooterDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Observable } from 'rxjs';\nimport { ModalService } from '../services/modal.service';\n\n/**\n * Abstract class representing a modal close guard.\n */\nexport abstract class ModalCloseGuard {\n /**\n * Determines whether the modal can be closed.\n */\n public abstract canClose(modalService: ModalService): Observable<boolean> | Promise<boolean> | boolean;\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { IModal } from '../../interfaces/imodal.interface';\nimport { ModalCloseGuard } from '../modal-close-guard';\nimport { IModalConfig } from '../../interfaces/imodal-config.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { map, Observable } from 'rxjs';\nimport { IModalCloseResult } from '@modal/public-api';\n\n/**\n * Modal Close Guard that opens a confirmation modal before allowing the original modal to close.\n * @param component The component to use for the confirmation modal.\n * @param config The configuration for the confirmation modal.\n */\nexport class ModalConfirmCloseGuard<D, R, C extends IModal<D, R> = IModal<D, R>> extends ModalCloseGuard {\n constructor(\n public component: ComponentType<C>,\n public config: IModalConfig<D, R>\n ) {\n super();\n }\n\n public override canClose(modalService: ModalService): Observable<boolean> {\n const ref = modalService.open<D, R, C>(this.component, this.config);\n\n return ref.afterClosed().pipe(map((result: IModalCloseResult<R | undefined>) => result.state === 'confirm'));\n }\n}\n","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/modal-core';\nexport * from './lib/components/views/bottom-sheet/modal-bottom-sheet';\nexport * from './lib/components/views/side/modal-side';\nexport * from './lib/components/views/centered/modal-centered';\nexport * from './lib/components/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/modal.service';\n\nexport * from './lib/classes/modal';\nexport * from './lib/classes/modal-config';\nexport * from './lib/classes/modal-ref';\nexport * from './lib/classes/modal-style.config';\n\nexport * from './lib/interfaces/imodal-close-result.interface';\nexport * from './lib/interfaces/imodal-component.interface';\nexport * from './lib/interfaces/imodal-config.interface';\nexport * from './lib/interfaces/imodal-ref.interface';\nexport * from './lib/interfaces/imodal-service.interface';\nexport * from './lib/interfaces/imodal-style-config.interface';\nexport * from './lib/interfaces/imodal-view.interface';\nexport * from './lib/interfaces/ibottom-sheet-modal-config.interface';\n\nexport * from './lib/constants/modal-animation.constants';\nexport * from './lib/constants/modal-bottom-sheet.constants';\n\nexport * from './lib/enums/modal-warnings.enum';\nexport * from './lib/enums/modal-state.enum';\n\nexport * from './lib/directives/modal-header.directive';\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/modal-data.token';\n\nexport * from './lib/types/modal.types';\n\nexport * from './lib/classes/modal-close-guard';\nexport * from './lib/classes/guards/modal-confirm-close-guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD","bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT","animConst.MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
1
+ {"version":3,"file":"filip.mazev-modal.mjs","sources":["../../../projects/modal/src/lib/classes/modal-style.config.ts","../../../projects/modal/src/lib/classes/modal-config.ts","../../../projects/modal/src/lib/enums/modal-state.enum.ts","../../../projects/modal/src/lib/classes/modal-ref.ts","../../../projects/modal/src/lib/tokens/modal-data.token.ts","../../../projects/modal/src/lib/services/modal-global-settings.service.ts","../../../projects/modal/src/lib/services/modal.service.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.ts","../../../projects/modal/src/lib/components/shared/ui/backdrop/modal-backdrop.html","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.ts","../../../projects/modal/src/lib/components/shared/ui/default-close-button/default-close-button.html","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.ts","../../../projects/modal/src/lib/components/shared/ui/banner/modal-banner.html","../../../projects/modal/src/lib/constants/modal-bottom-sheet.constants.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.ts","../../../projects/modal/src/lib/components/views/bottom-sheet/modal-bottom-sheet.html","../../../projects/modal/src/lib/components/views/centered/modal-centered.ts","../../../projects/modal/src/lib/components/views/centered/modal-centered.html","../../../projects/modal/src/lib/components/views/side/modal-side.ts","../../../projects/modal/src/lib/components/views/side/modal-side.html","../../../projects/modal/src/lib/constants/modal-animation.constants.ts","../../../projects/modal/src/lib/components/modal-core.ts","../../../projects/modal/src/lib/components/modal-core.html","../../../projects/modal/src/lib/classes/modal.ts","../../../projects/modal/src/lib/enums/modal-warnings.enum.ts","../../../projects/modal/src/lib/directives/modal-header.directive.ts","../../../projects/modal/src/lib/directives/modal-footer.directive.ts","../../../projects/modal/src/lib/classes/modal-close-guard.ts","../../../projects/modal/src/lib/classes/guards/modal-confirm-close-guard.ts","../../../projects/modal/src/public-api.ts","../../../projects/modal/src/filip.mazev-modal.ts"],"sourcesContent":["import { IModalStyleConfig } from '../interfaces/imodal-style-config.interface';\nimport { IBottomSheetModalConfig } from '../interfaces/ibottom-sheet-modal-config.interface';\nimport { BreakpointKey, ModalLayout } from '../types/modal.types';\n\nexport class ModalStyleConfig implements IModalStyleConfig {\n public layout: ModalLayout;\n public breakpoints?: Partial<Record<BreakpointKey, ModalLayout>>;\n\n public animate: boolean;\n public hasBackdrop: boolean;\n public closeDelay?: number;\n public showCloseButton?: boolean;\n\n public mobileConfig: IBottomSheetModalConfig;\n\n public contentWrapper: boolean;\n\n public wrapperClasses: string;\n public wrapperStyles: string;\n\n public overrideFullHeight: boolean;\n\n constructor(config?: IModalStyleConfig) {\n this.layout = config?.layout ?? 'center';\n this.breakpoints = config?.breakpoints;\n\n this.animate = config?.animate ?? true;\n this.hasBackdrop = config?.hasBackdrop ?? true;\n this.closeDelay = config?.closeDelay;\n this.showCloseButton = config?.showCloseButton ?? true;\n\n this.mobileConfig = config?.mobileConfig ?? {};\n\n this.contentWrapper = config?.contentWrapper ?? true;\n\n this.wrapperClasses = config?.wrapperClasses ?? '';\n this.wrapperStyles = config?.wrapperStyles ?? '';\n\n this.overrideFullHeight = config?.overrideFullHeight ?? false;\n }\n}\n","import { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { ModalStyleConfig } from './modal-style.config';\nimport { ModalCloseGuard } from './modal-close-guard';\nimport { IModalCloseResult } from '@modal/public-api';\nimport { Observable } from 'rxjs';\n\nexport class ModalConfig<D, R> {\n public open: boolean;\n\n public afterClose?: () => Observable<IModalCloseResult<R | undefined>>;\n\n public closeGuard?: ModalCloseGuard;\n public closeGuardOnlyOnCancel?: boolean;\n\n public disableClose: boolean;\n public disableCloseOnBackdropClick: boolean;\n public disableCloseOnNavigation: boolean;\n\n public data: D | null;\n\n public style: ModalStyleConfig;\n\n public bannerText: string;\n\n public contentClasses: string;\n public contentStyles: string;\n\n public disableConsoleWarnings: boolean;\n public disableConsoleInfo: boolean;\n\n public id?: string;\n\n constructor(config?: IModalConfig<D, R>) {\n this.open = config?.open ?? true;\n\n this.afterClose = config?.afterClose;\n\n this.closeGuard = config?.closeGuard;\n this.closeGuardOnlyOnCancel = config?.closeGuardOnlyOnCancel ?? true;\n\n this.disableClose = config?.disableClose ?? false;\n this.disableCloseOnBackdropClick = config?.disableCloseOnBackdropClick ?? false;\n this.disableCloseOnNavigation = config?.disableCloseOnNavigation ?? false;\n\n this.data = config?.data ?? null;\n this.style = new ModalStyleConfig(config?.style);\n\n this.bannerText = config?.bannerText ?? '';\n\n this.contentClasses = config?.contentClasses ?? '';\n this.contentStyles = config?.contentStyles ?? '';\n\n this.disableConsoleWarnings = config?.disableConsoleWarnings ?? false;\n this.disableConsoleInfo = config?.disableConsoleInfo ?? false;\n\n this.id = config?.id;\n }\n}\n","export enum ModalState {\n OPEN = 'open',\n OPENING = 'opening',\n CLOSED = 'closed',\n CLOSING = 'closing'\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { ModalConfig } from './modal-config';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalState } from '../enums/modal-state.enum';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { IModalRef } from '../interfaces/imodal-ref.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalCloseMode } from '../types/modal.types';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ComponentType } from '@angular/cdk/portal';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class ModalRef<D = unknown, R = any, C extends IModal<D, R> = IModal<D, R>> implements IModalRef<D, R, C> {\n //#region Modal Container\n\n private _modalContainer: Type<ModalCore<D, R, C>> = {} as Type<ModalCore<D, R, C>>;\n\n private _modalContainerRef: ComponentRef<ModalCore<D, R, C>> = {} as ComponentRef<ModalCore<D, R, C>>;\n private _modalContainerElement: HTMLElement = {} as HTMLElement;\n private _parentElement: HTMLElement | undefined = undefined;\n //#region Component\n private _componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n //#region Self\n private _modalState: ModalState = ModalState.CLOSED;\n //#endregion\n private modalState = new BehaviorSubject<ModalState>(this.getStatus());\n private _modalConfig?: ModalConfig<D, R> = undefined;\n //#region Observables\n private backdropClickSubject: Subject<MouseEvent> = new Subject<MouseEvent>();\n //#endregion\n private afterCloseSubject: Subject<IModalCloseResult<R | undefined>> = new Subject<IModalCloseResult<R | undefined>>();\n //#endregion\n constructor(\n componentRef: ComponentRef<C>,\n public componentType: ComponentType<C>,\n modalContainerRef: ComponentRef<ModalCore<D, R, C>>,\n private modalService: ModalService,\n modalConfig?: ModalConfig<D, R>\n ) {\n this.modalConfig = modalConfig;\n this.modalContainerRef = modalContainerRef;\n this.modalContainerElement = modalContainerRef.location.nativeElement;\n\n this.componentRef = componentRef;\n }\n\n public get modalContainer(): Type<ModalCore<D, R, C>> {\n return this._modalContainer;\n }\n\n private set modalContainer(modalContainer: Type<ModalCore<D, R, C>>) {\n this._modalContainer = modalContainer;\n }\n\n public get modalContainerRef(): ComponentRef<ModalCore<D, R, C>> {\n return this._modalContainerRef;\n }\n\n private set modalContainerRef(modalContainerRef: ComponentRef<ModalCore<D, R, C>>) {\n this._modalContainerRef = modalContainerRef;\n }\n\n public get modalContainerElement(): HTMLElement {\n return this._modalContainerElement;\n }\n\n private set modalContainerElement(modalContainerElement: HTMLElement) {\n this._modalContainerElement = modalContainerElement;\n }\n\n public get parentElement(): HTMLElement | undefined {\n return this._parentElement;\n }\n\n private set parentElement(parentElement: HTMLElement | undefined) {\n this._parentElement = parentElement;\n }\n\n //#endregion\n\n public get componentRef(): ComponentRef<C> {\n return this._componentRef;\n }\n\n private set componentRef(componentRef: ComponentRef<C>) {\n this._componentRef = componentRef;\n }\n\n public get modalConfig(): ModalConfig<D, R> | undefined {\n return this._modalConfig;\n }\n\n private set modalConfig(modalConfig: ModalConfig<D, R> | undefined) {\n this._modalConfig = modalConfig;\n }\n\n public backdropClick(): Observable<MouseEvent> {\n return this.backdropClickSubject.asObservable();\n }\n\n public modalState$(): Observable<ModalState> {\n return this.modalState.asObservable();\n }\n\n /**\n * Observable that emits when the modal has been closed.\n * @returns An Observable that emits an IModalCloseResult<R | undefined> when the modal is closed.\n */\n public afterClosed(): Observable<IModalCloseResult<R | undefined>> {\n return this.afterCloseSubject.asObservable();\n }\n\n //#region Public Methods\n\n public async open(): Promise<void> {\n this._modalState = ModalState.OPENING;\n this.modalState.next(ModalState.OPENING);\n\n this.modalContainerRef.instance.componentRef = this._componentRef;\n\n const config = new ModalConfig(this.modalConfig);\n\n this.modalContainerRef.instance.config = config;\n\n this.modalContainerRef.instance.closeFunction = this.handleClose.bind(this);\n\n this.parentElement?.appendChild(this.modalContainerElement);\n\n this.modalContainerRef.instance.backdropClick.subscribe((event) => {\n this.backdropClicked(event);\n });\n\n this._modalState = ModalState.OPEN;\n this.modalState.next(ModalState.OPEN);\n }\n\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, forceClose: boolean = false): void {\n this.modalContainerRef.instance.close(state, result, false, forceClose);\n }\n\n private getStatus(): ModalState {\n return this._modalState;\n }\n\n private backdropClicked(event: MouseEvent) {\n this.backdropClickSubject.next(event);\n }\n\n private afterClose(result: IModalCloseResult<R | undefined>) {\n this.afterCloseSubject.next(result);\n }\n\n //#endregion\n\n //#region Private Methods\n\n private handleClose(result: IModalCloseResult<R | undefined>): void {\n this._modalState = ModalState.CLOSING;\n this.modalState.next(ModalState.CLOSING);\n\n setTimeout(() => {\n if (this.modalConfig?.afterClose) {\n this.modalConfig.afterClose();\n }\n\n this.modalContainerRef.destroy();\n\n this._modalState = ModalState.CLOSED;\n this.modalState.next(ModalState.CLOSED);\n\n this.afterClose(result);\n\n this.modalService?.unregister(this);\n }, this.modalContainerRef.instance.animationDuration);\n }\n //#endregion\n}\n","import { InjectionToken } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const MODAL_DATA: InjectionToken<any> = new InjectionToken<any>('MODAL_DATA');\n","import { Injectable, signal } from '@angular/core';\nimport { ModalLayout } from '../types/modal.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalGlobalSettingsService {\n public readonly layout = signal<ModalLayout>('center');\n public readonly animate = signal<boolean>(true);\n public readonly hasBackdrop = signal<boolean>(true);\n public readonly showCloseButton = signal<boolean>(true);\n public readonly contentWrapper = signal<boolean>(true);\n public readonly overrideFullHeight = signal<boolean>(false);\n \n public readonly disableClose = signal<boolean>(false);\n public readonly disableCloseOnBackdropClick = signal<boolean>(false);\n public readonly disableCloseOnNavigation = signal<boolean>(false);\n public readonly closeGuardOnlyOnCancel = signal<boolean>(true);\n \n public readonly disableConsoleWarnings = signal<boolean>(false);\n public readonly disableConsoleInfo = signal<boolean>(false);\n\n /**\n * Updates the global modal settings with the provided values. Only the specified settings will be updated, while others will remain unchanged.\n * @param settings An object containing the settings to be updated. Each property is optional, and only those provided will be updated.\n * Example usage:\n * this.modalGlobalSettingsService.update({\n * animate: false,\n * hasBackdrop: true,\n * disableCloseOnBackdropClick: true\n * });\n * In this example, the global settings for 'animate', 'hasBackdrop', and 'disableCloseOnBackdropClick' will be updated, while all other settings will retain their current values.\n */\n public update(settings: Partial<{\n layout: ModalLayout;\n animate: boolean;\n hasBackdrop: boolean;\n showCloseButton: boolean;\n contentWrapper: boolean;\n overrideFullHeight: boolean;\n disableCloseOnBackdropClick: boolean;\n disableCloseOnNavigation: boolean;\n closeGuardOnlyOnCancel: boolean;\n disableConsoleWarnings: boolean;\n disableConsoleInfo: boolean;\n }>) {\n if (settings.animate !== undefined) this.animate.set(settings.animate);\n if (settings.hasBackdrop !== undefined) this.hasBackdrop.set(settings.hasBackdrop);\n if (settings.disableCloseOnBackdropClick !== undefined) this.disableCloseOnBackdropClick.set(settings.disableCloseOnBackdropClick);\n }\n}","import { Injectable, inject, Injector, ApplicationRef, EnvironmentInjector, createComponent, RendererFactory2, Renderer2, Type } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { BehaviorSubject, filter, skip } from 'rxjs';\nimport { ModalConfig } from '../classes/modal-config';\nimport { ModalRef } from '../classes/modal-ref';\nimport { ModalCore } from '../components/modal-core';\nimport { IModalConfig } from '../interfaces/imodal-config.interface';\nimport { IModalService } from '../interfaces/imodal-service.interface';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\nimport { ModalGlobalSettingsService } from './modal-global-settings.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService implements IModalService {\n private readonly router = inject(Router);\n private readonly injector = inject(Injector);\n private readonly appRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly rendererFactory = inject(RendererFactory2);\n private readonly document = inject(DOCUMENT);\n\n private readonly renderer: Renderer2;\n\n private readonly globalSettings = inject(ModalGlobalSettingsService);\n\n //#region Properties\n\n private modals: Set<ModalRef> = new Set();\n private modalsSubject = new BehaviorSubject<Set<ModalRef>>(this.modals);\n\n //#endregion\n\n constructor() {\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.createSubscriptions();\n }\n\n //#region Subscription Methods\n\n private createSubscriptions(): void {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n skip(1),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.modalsCount() > 0) {\n this.closeAll(true);\n }\n });\n }\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * Opens a modal with the specified component and configuration.\n * @param component The component to be displayed in the modal.\n * @param config Optional configuration for the modal.\n * @returns A ModalRef instance representing the opened modal.\n */\n public open<D, R, C extends IModal<D, R> = IModal<D, R>>(component: ComponentType<C>, config?: IModalConfig<D, R>): ModalRef<D, R, C> {\n const dataInjector = Injector.create({\n providers: [{ provide: MODAL_DATA, useValue: config?.data }],\n parent: this.injector\n });\n\n const wrapperRef = createComponent(ModalCore<D, R, C>, {\n environmentInjector: this.environmentInjector,\n elementInjector: dataInjector\n });\n\n const contentInjector = Injector.create({\n providers: [{ provide: ModalCore, useValue: wrapperRef.instance }],\n parent: wrapperRef.injector\n });\n\n const contentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n elementInjector: contentInjector\n });\n\n const resolvedConfig = this.resolveConfig(config);\n\n wrapperRef.instance.componentRef = contentRef;\n wrapperRef.instance.config = new ModalConfig(resolvedConfig);\n\n this.appRef.attachView(wrapperRef.hostView);\n this.document.body.appendChild(wrapperRef.location.nativeElement);\n\n const modal = new ModalRef<D, R, C>(contentRef, component, wrapperRef, this, new ModalConfig(resolvedConfig));\n\n if (this.isIModal<D, R>(contentRef.instance)) {\n contentRef.instance.modal = modal;\n contentRef.instance.onModalInit();\n }\n\n wrapperRef.onDestroy(() => {\n this.appRef.detachView(wrapperRef.hostView);\n wrapperRef.location.nativeElement.remove();\n });\n\n const modalElement = modal.componentRef.location.nativeElement;\n this.renderer.setStyle(modalElement, 'height', '97%');\n this.renderer.setStyle(modalElement, 'width', '100%');\n this.renderer.setStyle(modalElement, 'display', 'flex');\n this.renderer.setStyle(modalElement, 'flex-grow', '1');\n\n this.modals.add(modal);\n this.modalsSubject.next(this.modals);\n\n modal.open();\n\n return modal;\n }\n\n /**\n * Closes the specified modal.\n * @param modal The ModalRef instance representing the modal to be closed.\n */\n public close<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n modal.close();\n }\n\n /**\n * Unregisters the specified modal from the service.\n * @param modal The ModalRef instance representing the modal to be unregistered.\n */\n public unregister<D, R, C extends IModal<D, R> = IModal<D, R>>(modal: ModalRef<D, R, C>): void {\n this.modals.delete(modal);\n this.modalsSubject.next(this.modals);\n }\n\n /**\n * Closes all open modals.\n * @param onNavigate Indicates if the closeAll is triggered by navigation event.\n */\n public closeAll(onNavigate: boolean = false): void {\n this.modals.forEach((modal) => {\n if (modal.modalConfig?.disableCloseOnNavigation !== true || !onNavigate) {\n modal.close('cancel', undefined, true);\n }\n });\n }\n\n /**\n * Finds if a modal with the specified component type is currently open.\n * @param componentType The component type to search for.\n * @returns True if a modal with the specified component type is open, false otherwise.\n */\n public find<D, R>(componentType: Type<IModal<D, R>>): boolean {\n for (const modal of this.modals) {\n if (modal.componentRef.componentType === componentType) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the count of currently open modals.\n * @returns The number of open modals.\n */\n public modalsCount(): number {\n return this.modals.size;\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private isIModal<D, R>(component: unknown): component is IModal<D, R> {\n return typeof component === 'object' && component !== null && 'onModalInit' in component && typeof (component as IModal<D, R>).onModalInit === 'function';\n }\n\n private resolveConfig<D, R>(config: IModalConfig<D, R> | undefined): IModalConfig<D, R> {\n const resolvedStyle = {\n layout: config?.style?.layout ?? this.globalSettings.layout(),\n animate: config?.style?.animate ?? this.globalSettings.animate(),\n hasBackdrop: config?.style?.hasBackdrop ?? this.globalSettings.hasBackdrop(),\n showCloseButton: config?.style?.showCloseButton ?? this.globalSettings.showCloseButton(),\n contentWrapper: config?.style?.contentWrapper ?? this.globalSettings.contentWrapper(),\n overrideFullHeight: config?.style?.overrideFullHeight ?? this.globalSettings.overrideFullHeight(),\n breakpoints: config?.style?.breakpoints,\n mobileConfig: config?.style?.mobileConfig,\n wrapperClasses: config?.style?.wrapperClasses,\n wrapperStyles: config?.style?.wrapperStyles,\n closeDelay: config?.style?.closeDelay,\n };\n\n return {\n ...config,\n disableClose: config?.disableClose ?? this.globalSettings.disableClose(),\n disableCloseOnBackdropClick: config?.disableCloseOnBackdropClick ?? this.globalSettings.disableCloseOnBackdropClick(),\n disableCloseOnNavigation: config?.disableCloseOnNavigation ?? this.globalSettings.disableCloseOnNavigation(),\n closeGuardOnlyOnCancel: config?.closeGuardOnlyOnCancel ?? this.globalSettings.closeGuardOnlyOnCancel(),\n disableConsoleWarnings: config?.disableConsoleWarnings ?? this.globalSettings.disableConsoleWarnings(),\n disableConsoleInfo: config?.disableConsoleInfo ?? this.globalSettings.disableConsoleInfo(),\n style: resolvedStyle,\n };\n}\n\n\n //#endregion\n}\n","import { Component, input, output } from '@angular/core';\n\n@Component({\n selector: 'app-modal-backdrop',\n imports: [],\n templateUrl: './modal-backdrop.html',\n styleUrls: ['./modal-backdrop.scss']\n})\nexport class ModalBackdrop {\n public readonly isAnimated = input(false);\n public readonly isOpen = input(false);\n\n public readonly click = output<MouseEvent>();\n}\n","<div class=\"modal-backdrop\" [class.backdrop-fade-in]=\"isAnimated() && isOpen()\"\n [class.backdrop-fade-out]=\"isAnimated() && !isOpen()\" (click)=\"click.emit($event)\">\n</div>","import { Component, input, output } from '@angular/core';\nimport { ModalConfig, ModalCloseMode } from '../../../../../public-api';\n\n@Component({\n selector: 'app-modal-default-close-button',\n imports: [],\n templateUrl: './default-close-button.html',\n styleUrl: './default-close-button.scss'\n})\nexport class ModalDefaultCloseButton<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n"," @if (config()?.disableClose !== true && config()?.style?.showCloseButton !== false) {\n <svg (click)=\"close.emit('cancel')\" aria-label=\"Close\" class=\"default-close-button\" viewBox=\"0 0 24 24\"\n fill=\"#ffffff\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.4 24L0 21.6L9.6 12L0 2.4L2.4 0L12 9.6L21.6 0L24 2.4L14.4 12L24 21.6L21.6 24L12 14.4L2.4 24Z\"\n fill=\"#ffffff\" />\n </svg>\n }","import { Component, input, output } from '@angular/core';\nimport { ModalConfig } from '../../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../../types/modal.types';\nimport { ModalDefaultCloseButton } from '../default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-banner',\n imports: [ModalDefaultCloseButton],\n templateUrl: './modal-banner.html',\n styleUrl: './modal-banner.scss'\n})\nexport class ModalBanner<D = unknown, R = unknown> {\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n}\n","<div class=\"modal-top-banner-container\">\n <div class=\"modal-top-banner-title-container\">\n @if (config() && config()?.bannerText && (config() && config()!.bannerText.length > 0)) {\n {{ config()?.bannerText }}\n }\n </div>\n\n <app-modal-default-close-button [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n</div>","export const MODAL_DOWN_SWIPE_LIMIT = 3;\nexport const MODAL_SWIPE_VELOCITY_THRESHOLD = 80;\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, OnDestroy, OnInit, TemplateRef, ViewChild, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport * as bottomSheetConst from '../../../constants/modal-bottom-sheet.constants';\n\n@Component({\n selector: 'app-modal-bottom-sheet',\n imports: [NgClass, NgTemplateOutlet],\n templateUrl: './modal-bottom-sheet.html',\n styleUrl: './modal-bottom-sheet.scss'\n})\nexport class ModalBottomSheet<D = unknown, R = unknown> implements OnInit, OnDestroy {\n public readonly id = input.required<string | null>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n public currentTranslateY = signal(0);\n public isSwipingVerticallyFinished = signal(false);\n protected isSwipingVertically = signal(false);\n\n @ViewChild('verticalSwipeTarget', { static: true }) protected verticalSwipeTarget?: ElementRef;\n @ViewChild('elementRef', { static: true }) protected elementRef?: ElementRef;\n\n protected modalTransform = computed(() => {\n if (this.isSwipingVerticallyFinished()) {\n return 'translateY(100%)';\n }\n\n const calculatedY = Math.max(0, this.currentTranslateY());\n\n return `translateY(${calculatedY}px)`;\n });\n\n protected downSwipeLimit: number = 0;\n protected isTrackingSwipe: boolean = false;\n\n private isTouchActive = false;\n private bottomSheetInitiated: boolean = false;\n\n private cleanupListeners: (() => void) | null = null;\n private globalResizeCleanup: (() => void) | null = null;\n\n public ngOnInit(): void {\n this.startVerticalSwipeDetection();\n this.monitorInputType();\n }\n\n public ngOnDestroy(): void {\n this.stopVerticalSwipeDetection();\n this.globalResizeCleanup?.();\n }\n\n //#region Swipe Methods\n\n private startVerticalSwipeDetection(): void {\n if (this.isTrackingSwipe) return;\n\n const hasTouch = typeof window !== 'undefined' && (window.matchMedia('(pointer: coarse)').matches || navigator.maxTouchPoints > 0);\n if (!hasTouch) return;\n\n this.initBottomSheetModalParams();\n this.isTrackingSwipe = true;\n\n const target = this.verticalSwipeTarget?.nativeElement;\n if (!target) return;\n\n let limit = 0;\n\n let startY = 0;\n let startTime = 0;\n let isPointerDown = false;\n\n const pointerDown = (event: PointerEvent) => {\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n\n const modalHeight = this.elementRef?.nativeElement.offsetHeight || 0;\n limit = modalHeight / this.downSwipeLimit;\n\n isPointerDown = true;\n startY = event.clientY;\n startTime = event.timeStamp;\n\n this.isSwipingVertically.set(true);\n\n target.setPointerCapture(event.pointerId);\n };\n\n const pointerMove = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n const currentY = event.clientY - startY;\n\n if (event.cancelable) event.preventDefault();\n\n this.currentTranslateY.set(currentY);\n };\n\n const pointerUp = (event: PointerEvent) => {\n if (!isPointerDown) return;\n\n isPointerDown = false;\n this.isSwipingVertically.set(false);\n target.releasePointerCapture(event.pointerId);\n\n const deltaY = event.clientY - startY;\n const duration = event.timeStamp - startTime || 1;\n const velocityY = deltaY / duration;\n\n if (deltaY > limit || (velocityY > bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD && deltaY > 0)) {\n this.close.emit('cancel');\n } else {\n this.currentTranslateY.set(0);\n }\n };\n\n target.addEventListener('pointerdown', pointerDown, { passive: false });\n target.addEventListener('pointermove', pointerMove, { passive: false });\n target.addEventListener('pointerup', pointerUp);\n target.addEventListener('pointercancel', pointerUp);\n\n this.cleanupListeners = () => {\n target.removeEventListener('pointerdown', pointerDown);\n target.removeEventListener('pointermove', pointerMove);\n target.removeEventListener('pointerup', pointerUp);\n target.removeEventListener('pointercancel', pointerUp);\n };\n }\n\n private stopVerticalSwipeDetection(): void {\n if (!this.isTrackingSwipe) return;\n\n this.isTrackingSwipe = false;\n\n if (this.cleanupListeners) {\n this.cleanupListeners();\n this.cleanupListeners = null;\n }\n }\n\n private initBottomSheetModalParams(): void {\n if (this.bottomSheetInitiated) return;\n this.bottomSheetInitiated = true;\n\n const config = this.config();\n const style = config?.style?.mobileConfig;\n\n this.downSwipeLimit = style?.downSwipeLimit && style.downSwipeLimit > 0 ? style.downSwipeLimit : bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT;\n }\n\n private monitorInputType(): void {\n if (this.globalResizeCleanup) return;\n\n const handler = (event: PointerEvent) => {\n const isTouch = event.pointerType === 'touch';\n\n if (isTouch && !this.isTouchActive) {\n this.isTouchActive = true;\n this.startVerticalSwipeDetection();\n } else if (!isTouch && this.isTouchActive) {\n this.isTouchActive = false;\n this.stopVerticalSwipeDetection();\n }\n };\n\n window.addEventListener('pointerdown', handler);\n this.globalResizeCleanup = () => window.removeEventListener('pointerdown', handler);\n }\n\n //#endregion\n}\n","<div (click)=\"$event.stopPropagation()\" \n [id]=\"id() ?? ''\"\n [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\"\n [style.max-height]=\"config()?.style?.mobileConfig?.customHeight ?? ''\"\n [style.transform]=\"modalTransform()\"\n [style.transition]=\"isAnimated() && !isSwipingVertically() ? 'transform 300ms ease-in-out' : ''\" \n [ngClass]=\"{\n 'opened-bottom-sheet-modal': isAnimated()\n }\" \n #elementRef\n class=\"bottom-sheet-modal-style\">\n \n <div #verticalSwipeTarget \n class=\"touch-hitbox bottom-sheet-modal-top-bar\"\n (click)=\"isTrackingSwipe ? null : close.emit('cancel')\">\n <div class=\"swipe-line\"></div>\n </div>\n\n <div class=\"bottom-sheet-modal-inner-content-container\">\n <div class=\"bottom-sheet-modal-top-group\">\n @if (headerTemplate()) {\n <div class=\"bottom-sheet-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n </div>\n }\n\n <div class=\"bottom-sheet-modal-main-content-container\"\n [style.animationDuration]=\"isAnimated() ? animationDuration() + 'ms' : '0ms'\">\n <ng-content></ng-content>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"bottom-sheet-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n</div>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, input, output, ViewChildren, QueryList, TemplateRef, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-centered',\n imports: [NgTemplateOutlet, NgClass, ModalBottomSheet, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-centered.html',\n styleUrl: './modal-centered.scss'\n})\nexport class ModalCentered<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n public readonly close = output<ModalCloseMode | undefined>();\n public readonly onBackdropClick = output<MouseEvent>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n return {\n 'centered-modal-content-wrapper': true,\n 'centered-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n\n 'centered-modal-animate-in': this.isAnimated() && this.isOpen(),\n 'centered-modal-animate-out': this.isAnimated() && !this.isOpen()\n };\n });\n}\n","@if(!isBottomSheetModalActive()) {\n<div class=\"modal-overlay\" [ngClass]=\"{'modal-backdrop': config()?.style?.hasBackdrop}\" [id]=\"id() ?? ''\"\n (click)=\"config()?.style?.hasBackdrop ? onBackdropClick.emit($event) : null\">\n <div class=\"modal-overlay-wrapper\">\n <div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\">\n <div class=\"centered-modal-inner-content-container\" [class]=\"config()?.style?.wrapperClasses ?? ''\"\n [style]=\"config()?.style?.wrapperStyles ?? ''\">\n\n <div class=\"centered-modal-top-group\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"centered-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"centered-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"centered-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, QueryList, TemplateRef, ViewChildren, effect, input, output, signal, computed } from '@angular/core';\nimport { ModalConfig } from '../../../classes/modal-config';\nimport { IModalView } from '../../../interfaces/imodal-view.interface';\nimport { ModalCloseMode, ModalLayout } from '../../../types/modal.types';\nimport { ModalBanner } from '../../shared/ui/banner/modal-banner';\nimport { ModalBottomSheet } from '../bottom-sheet/modal-bottom-sheet';\nimport { ModalDefaultCloseButton } from '../../shared/ui/default-close-button/default-close-button';\n\n@Component({\n selector: 'app-modal-side',\n imports: [NgTemplateOutlet, ModalBottomSheet, NgClass, ModalBanner, ModalDefaultCloseButton],\n templateUrl: './modal-side.html',\n styleUrl: './modal-side.scss'\n})\nexport class ModalSide<D = unknown, R = unknown> implements IModalView<D, R> {\n public readonly layout = input.required<ModalLayout>();\n\n public readonly headerTemplate = input.required<TemplateRef<void> | null>();\n public readonly footerTemplate = input.required<TemplateRef<void> | null>();\n\n public readonly config = input.required<ModalConfig<D, R> | undefined>();\n public readonly id = input.required<string | null>();\n public readonly isOpen = input.required<boolean>();\n public readonly isAnimated = input.required<boolean>();\n public readonly isBottomSheetModalActive = input.required<boolean>();\n public readonly animationDuration = input.required<number>();\n public readonly hasDefaultContentWrapperClass = input.required<boolean>();\n public readonly hasBanner = input.required<boolean>();\n\n public readonly close = output<ModalCloseMode | undefined>();\n\n @ViewChildren(ModalBottomSheet) public bottomSheet!: QueryList<ModalBottomSheet>;\n\n public modalClasses = computed(() => {\n const positionLeft = this.layout() === 'left';\n const positionRight = this.layout() === 'right';\n const shouldAnimate = this.isAnimated();\n\n const isRenderedOpen = this.renderOpenClass();\n\n return {\n 'side-modal-content-wrapper': true,\n 'side-modal-default-style': this.hasDefaultContentWrapperClass() || this.hasBanner(),\n 'with-footer': this.footerTemplate() !== null,\n left: positionLeft,\n right: positionRight,\n\n 'side-modal-animate-in': shouldAnimate ? isRenderedOpen : true,\n 'side-modal-animate-out': shouldAnimate ? !isRenderedOpen : false\n };\n });\n\n protected renderOpenClass = signal(false);\n\n constructor() {\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n this.renderOpenClass.set(false);\n\n setTimeout(() => {\n this.renderOpenClass.set(true);\n }, 50);\n } else {\n this.renderOpenClass.set(false);\n }\n });\n }\n}\n","@if(!isBottomSheetModalActive()) {\n<div [ngClass]=\"modalClasses()\" (click)=\"$event.stopPropagation()\" [id]=\"id() ?? ''\"\n [style.--anim-duration.ms]=\"animationDuration()\">\n <div class=\"side-modal-inner-content-container\"\n [class]=\"config() && config()?.style?.wrapperClasses ? config()?.style?.wrapperClasses : ''\"\n [style]=\"config() && config()?.style?.wrapperStyles ? config()?.style?.wrapperStyles : ''\">\n @if (hasBanner()) {\n <app-modal-banner [config]=\"config()\" (close)=\"close.emit('cancel')\"></app-modal-banner>\n }\n @if (headerTemplate()) {\n <div class=\"side-modal-header\">\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if(!hasBanner()) {\n <app-modal-default-close-button [config]=\"config()\"\n (close)=\"close.emit('cancel')\"></app-modal-default-close-button>\n }\n </div>\n }\n <div class=\"side-modal-main-content-container\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n </div>\n </div>\n\n @if (footerTemplate()) {\n <div class=\"side-modal-footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n </div>\n }\n</div>\n} @else {\n<app-modal-bottom-sheet [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config()\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\" [animationDuration]=\"animationDuration()\"\n (close)=\"close.emit('cancel')\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"> </ng-container>\n</app-modal-bottom-sheet>\n}\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>","export const MODAL_DEFAULT_ANIM_DURATION = 175;\nexport const MODAL_DEFAULT_INTERNAL_ANIM_DURATION = 350;\n\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_SMALL = 0.65;\nexport const MODAL_DEFAULT_ANIM_DURATION_MULTIPLIER_LARGE = 0.85;\n","import {\n Component,\n inject,\n ComponentRef,\n ViewChild,\n ElementRef,\n ViewChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\n signal,\n effect,\n OnInit,\n AfterViewInit,\n computed\n} from '@angular/core';\nimport { Subject, Observable, fromEvent, filter, take, from, of } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ModalConfig } from '../classes/modal-config';\nimport { IModalComponent } from '../interfaces/imodal-component.interface';\nimport { ModalService } from '../services/modal.service';\nimport { ModalBackdrop } from './shared/ui/backdrop/modal-backdrop';\nimport { ModalCentered } from './views/centered/modal-centered';\nimport { ModalSide } from './views/side/modal-side';\nimport { ModalBottomSheet } from './views/bottom-sheet/modal-bottom-sheet';\nimport { BreakpointKey, ModalCloseMode, ModalLayout } from '../types/modal.types';\nimport { IModalCloseResult } from '../interfaces/imodal-close-result.interface';\nimport { ScrollLockService, uuidv4, WindowDimensionsService } from '@filip.mazev/blocks-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IModal } from '../interfaces/imodal.interface';\nimport * as animConst from '../constants/modal-animation.constants';\nimport { ModalGlobalSettingsService } from '@modal/services/modal-global-settings.service';\n\n@Component({\n selector: 'app-modal',\n imports: [NgTemplateOutlet, ModalCentered, ModalSide, ModalBackdrop],\n templateUrl: './modal-core.html',\n styleUrl: './modal-core.scss'\n})\nexport class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {\n private readonly modalService = inject(ModalService);\n private readonly globalSettings = inject(ModalGlobalSettingsService);\n private readonly scrollLockService = inject(ScrollLockService);\n private readonly windowDimensionsService = inject(WindowDimensionsService);\n\n public readonly animationDuration: number = animConst.MODAL_DEFAULT_ANIM_DURATION;\n\n public componentRef: ComponentRef<C> = {} as ComponentRef<C>;\n public config?: ModalConfig<D, R>;\n public closeFunction?: (data: IModalCloseResult<R | undefined>) => void;\n public backdropClickSubject = new Subject<MouseEvent>();\n public backdropClick: Observable<MouseEvent> = this.backdropClickSubject.asObservable();\n public isOpen = signal<boolean>(true);\n public effectiveLayout = signal<ModalLayout>('center');\n public isCentered = signal<boolean>(false);\n public isSide = signal<boolean>(false);\n public isAnimated = computed(() => this.config?.style.animate ?? this.globalSettings.animate());\n\n protected headerTemplate = signal<TemplateRef<void> | null>(null);\n protected footerTemplate = signal<TemplateRef<void> | null>(null);\n protected id = signal<string | null>(null);\n protected isBottomSheetModalActive = signal<boolean>(false);\n protected hasBanner: boolean = false;\n\n protected hasDefaultContentWrapperClass: boolean = false;\n\n protected windowDimensions = this.windowDimensionsService.dimensions;\n\n @ViewChild('modalContainer', { static: false }) protected modalContainer?: ElementRef;\n @ViewChild('contentTemplate') protected contentTemplate?: TemplateRef<HTMLElement>;\n\n @ViewChildren(ModalSide) private sideModalComponents?: QueryList<ModalSide>;\n @ViewChildren(ModalCentered) private centeredModalComponents?: QueryList<ModalCentered>;\n\n private isConfirmCloseModalOpen: boolean = false;\n private scrollLockId: string = uuidv4();\n\n private _sortedBreakpoints: Array<{ width: number; layout: ModalLayout }> = [];\n\n private _currentVcr: ViewContainerRef | null = null;\n\n constructor() {\n this.initKeyboardSubscription();\n\n effect(() => {\n const width = this.windowDimensions().width;\n this.handleLayout(width);\n });\n }\n\n public ngOnInit() {\n this.initParamsFromConfig();\n this.initBreakpointCache();\n\n this.scrollLockService.disableScroll(this.scrollLockId, {\n animationDuration: this.animationDuration,\n handleTouchInput: true,\n mobileOnlyTouchPrevention: true\n });\n }\n\n public ngAfterViewInit(): void {\n if (!this.componentRef) return;\n this.dynamicContainer?.insert(this.componentRef.hostView);\n\n const width = this.windowDimensionsService.dimensions().width;\n this.handleLayout(width);\n }\n\n public ngOnDestroy(): void {\n this.componentRef?.destroy();\n this.dynamicContainer?.clear();\n this.scrollLockService.enableScroll(this.scrollLockId);\n }\n\n //#region Public Template Methods\n public setHeaderTemplate(template: TemplateRef<void>) {\n this.headerTemplate.set(template);\n }\n\n //#endregion\n public setFooterTemplate(template: TemplateRef<void>) {\n this.footerTemplate.set(template);\n }\n\n //#region Closing Methods\n public close(state: ModalCloseMode = 'cancel', result: R | undefined = undefined, fromInsideInteraction: boolean = false, forceClose: boolean = false): void {\n if (forceClose) {\n this.handleClose(state, result);\n return;\n }\n\n if (this.config?.disableClose === true && fromInsideInteraction) {\n return;\n }\n\n const shouldCheckCloseGuard = this.config?.closeGuardOnlyOnCancel !== true || state !== 'confirm';\n\n if (shouldCheckCloseGuard && this.config?.closeGuard) {\n const guardResult = this.config.closeGuard.canClose(this.modalService);\n\n const canClose$ = guardResult instanceof Observable ? guardResult : guardResult instanceof Promise ? from(guardResult) : of(guardResult);\n\n if (this.isBottomSheetModalActive()) {\n this.resetBottomSheetModalLayout();\n }\n\n canClose$.pipe(take(1)).subscribe((canClose) => {\n if (canClose) {\n this.handleClose(state, result);\n }\n });\n return;\n }\n\n this.handleClose(state, result);\n }\n\n //#endregion\n protected onBackdropClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.isOpen()) {\n return;\n }\n\n this.backdropClickSubject.next(event);\n\n if (this.config?.style?.hasBackdrop && this.config?.disableCloseOnBackdropClick !== true) {\n this.close('cancel', undefined, true);\n }\n }\n\n @ViewChild('dynamicContainer', { read: ViewContainerRef })\n protected set dynamicContainer(vcr: ViewContainerRef | undefined) {\n if (vcr && this.componentRef) {\n this._currentVcr = vcr;\n vcr.insert(this.componentRef.hostView);\n }\n }\n\n //#region Subscription Methods\n\n private initKeyboardSubscription(): void {\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter((event: KeyboardEvent) => event.key === 'Escape'),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (!this.isConfirmCloseModalOpen) {\n this.close('cancel', undefined, true);\n }\n });\n }\n\n //#endregion\n\n //#region Initialization Methods\n\n private initParamsFromConfig() {\n this.id.set(this.config?.id ?? this.scrollLockId);\n\n this.hasBanner =\n this.config !== undefined &&\n ((this.config.bannerText !== undefined && this.config.bannerText.length > 0) ||\n (this.config.disableClose !== true && this.config.style.showCloseButton !== false && this.headerTemplate() === null));\n\n this.hasDefaultContentWrapperClass = this.config?.style.contentWrapper !== false;\n }\n\n private initBreakpointCache(): void {\n const definedBreakpoints = this.config?.style?.breakpoints;\n\n if (definedBreakpoints && Object.keys(definedBreakpoints).length > 0) {\n const serviceBreakpoints = this.windowDimensionsService.breakpoints;\n\n this._sortedBreakpoints = (Object.keys(definedBreakpoints) as BreakpointKey[])\n .map((key) => ({\n width: serviceBreakpoints[key],\n layout: definedBreakpoints[key] ?? this.config?.style.layout ?? 'center'\n }))\n .sort((a, b) => a.width - b.width);\n }\n }\n\n private async handleClose(state: ModalCloseMode, result: R | undefined): Promise<void> {\n this.isOpen.set(false);\n this.setBottomSheetModalFinishedState(true);\n\n const returnResult = {\n data: result,\n state: state\n } as IModalCloseResult<R | undefined>;\n\n if (this.closeFunction) {\n this.closeFunction(returnResult);\n }\n }\n\n //#endregion\n\n //#region Helper Methods\n\n private handleLayout(width: number): void {\n if (!this.config) return;\n\n let resolvedLayout: ModalLayout = this.config.style.layout;\n\n for (const bp of this._sortedBreakpoints) {\n if (width <= bp.width) {\n resolvedLayout = bp.layout;\n break;\n }\n }\n\n const prevIsSide = this.isSide();\n const nextIsSide = resolvedLayout === 'left' || resolvedLayout === 'right';\n const layoutTypeChanged = prevIsSide !== nextIsSide;\n\n if (layoutTypeChanged && this._currentVcr && this.componentRef) {\n const index = this._currentVcr.indexOf(this.componentRef.hostView);\n if (index !== -1) {\n this._currentVcr.detach(index);\n }\n }\n\n this.effectiveLayout.set(resolvedLayout);\n this.isSide.set(nextIsSide);\n this.isCentered.set(resolvedLayout === 'center' || resolvedLayout === 'bottom-sheet');\n\n const shouldBeBottomSheet = resolvedLayout === 'bottom-sheet';\n const currentSwipeState = this.isBottomSheetModalActive();\n\n if (shouldBeBottomSheet && !currentSwipeState) {\n this.isBottomSheetModalActive.set(true);\n } else if (!shouldBeBottomSheet && currentSwipeState) {\n this.isBottomSheetModalActive.set(false);\n }\n }\n\n private getBottomSheetModal(): ModalBottomSheet | undefined {\n return this.sideModalComponents?.first?.bottomSheet?.first ?? this.centeredModalComponents?.first?.bottomSheet?.first;\n }\n\n private resetBottomSheetModalLayout(): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.currentTranslateY.set(0);\n }\n }\n\n private setBottomSheetModalFinishedState(isFinished: boolean): void {\n const bottomSheet = this.getBottomSheetModal();\n if (bottomSheet) {\n bottomSheet.isSwipingVerticallyFinished.set(isFinished);\n }\n this.isBottomSheetModalActive.set(false);\n }\n\n //#endregion\n}\n","@if (config?.style?.hasBackdrop && (isSide() || isBottomSheetModalActive())) {\n<app-modal-backdrop [isAnimated]=\"isAnimated()\" [isOpen]=\"isOpen()\" (click)=\"onBackdropClick($event)\">\n</app-modal-backdrop>\n}\n\n<ng-container #modalContainer>\n @switch (true) {\n @case (isSide()) {\n <app-modal-side [layout]=\"effectiveLayout()\" [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\"\n [config]=\"config\" [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-side>\n }\n @case (isCentered()) {\n <app-modal-centered [headerTemplate]=\"headerTemplate()\" [footerTemplate]=\"footerTemplate()\" [config]=\"config\"\n [id]=\"id()\" [isOpen]=\"isOpen()\" [isAnimated]=\"isAnimated()\"\n [isBottomSheetModalActive]=\"isBottomSheetModalActive()\" [animationDuration]=\"animationDuration\"\n [hasDefaultContentWrapperClass]=\"hasDefaultContentWrapperClass\" [hasBanner]=\"hasBanner\" (close)=\"close($event)\"\n (onBackdropClick)=\"onBackdropClick($event)\">\n <ng-container [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n </app-modal-centered>\n }\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-container #dynamicContainer></ng-container>\n</ng-template>","import { inject, Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\nimport { MODAL_DATA } from '../tokens/modal-data.token';\nimport { IModal } from '../interfaces/imodal.interface';\n\n@Injectable()\nexport class Modal<D, R> implements IModal<D, R> {\n /**\n * Data injected into the modal component.\n */\n public data = inject<D>(MODAL_DATA);\n\n /**\n * Reference to the ModalRef instance associated with this modal.\n */\n public modal!: ModalRef<D, R>;\n\n /**\n * Called when the modal is initialized.\n */\n public onModalInit(): void {}\n\n /**\n * Closes the modal (with \"cancel\" reason) with an optional result.\n * @param result The result to be passed when closing the modal.\n */\n public close(result?: R) {\n this.modal?.close('cancel', result);\n }\n}\n","export enum ModalWarnings {\n //#region Directive usage\n FOOTER_DIRECTIVE_OUTSIDE_MODAL = '[ModalFooter] Directive used outside of a ModalComponent.',\n HEADER_DIRECTIVE_OUTSIDE_MODAL = '[ModalHeader] Directive used outside of a ModalComponent.'\n //#endregion\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalHeader]',\n standalone: true\n})\nexport class ModalHeaderDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setHeaderTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.HEADER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ModalCore } from '../components/modal-core';\nimport { ModalWarnings } from '../enums/modal-warnings.enum';\n\n@Directive({\n selector: '[appModalFooter]',\n standalone: true\n})\nexport class ModalFooterDirective {\n private readonly templateRef = inject(TemplateRef);\n private readonly modal = inject(ModalCore, { optional: true });\n\n constructor() {\n if (this.modal) {\n this.modal.setFooterTemplate(this.templateRef);\n } else {\n console.warn(ModalWarnings.FOOTER_DIRECTIVE_OUTSIDE_MODAL);\n }\n }\n}\n","import { Observable } from 'rxjs';\nimport { ModalService } from '../services/modal.service';\n\n/**\n * Abstract class representing a modal close guard.\n */\nexport abstract class ModalCloseGuard {\n /**\n * Determines whether the modal can be closed.\n */\n public abstract canClose(modalService: ModalService): Observable<boolean> | Promise<boolean> | boolean;\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { IModal } from '../../interfaces/imodal.interface';\nimport { ModalCloseGuard } from '../modal-close-guard';\nimport { IModalConfig } from '../../interfaces/imodal-config.interface';\nimport { ModalService } from '../../services/modal.service';\nimport { map, Observable } from 'rxjs';\nimport { IModalCloseResult } from '@modal/public-api';\n\n/**\n * Modal Close Guard that opens a confirmation modal before allowing the original modal to close.\n * @param component The component to use for the confirmation modal.\n * @param config The configuration for the confirmation modal.\n */\nexport class ModalConfirmCloseGuard<D, R, C extends IModal<D, R> = IModal<D, R>> extends ModalCloseGuard {\n constructor(\n public component: ComponentType<C>,\n public config: IModalConfig<D, R>\n ) {\n super();\n }\n\n public override canClose(modalService: ModalService): Observable<boolean> {\n const ref = modalService.open<D, R, C>(this.component, this.config);\n\n return ref.afterClosed().pipe(map((result: IModalCloseResult<R | undefined>) => result.state === 'confirm'));\n }\n}\n","/*\n * Public API Surface of modal\n */\n\nexport * from './lib/components/modal-core';\nexport * from './lib/components/views/bottom-sheet/modal-bottom-sheet';\nexport * from './lib/components/views/side/modal-side';\nexport * from './lib/components/views/centered/modal-centered';\nexport * from './lib/components/shared/ui/backdrop/modal-backdrop';\nexport * from './lib/components/shared/ui/banner/modal-banner';\n\nexport * from './lib/services/modal.service';\n\nexport * from './lib/classes/modal';\nexport * from './lib/classes/modal-config';\nexport * from './lib/classes/modal-ref';\nexport * from './lib/classes/modal-style.config';\n\nexport * from './lib/interfaces/imodal-close-result.interface';\nexport * from './lib/interfaces/imodal-component.interface';\nexport * from './lib/interfaces/imodal-config.interface';\nexport * from './lib/interfaces/imodal-ref.interface';\nexport * from './lib/interfaces/imodal-service.interface';\nexport * from './lib/interfaces/imodal-style-config.interface';\nexport * from './lib/interfaces/imodal-view.interface';\nexport * from './lib/interfaces/ibottom-sheet-modal-config.interface';\n\nexport * from './lib/constants/modal-animation.constants';\nexport * from './lib/constants/modal-bottom-sheet.constants';\n\nexport * from './lib/enums/modal-warnings.enum';\nexport * from './lib/enums/modal-state.enum';\n\nexport * from './lib/directives/modal-header.directive';\nexport * from './lib/directives/modal-footer.directive';\n\nexport * from './lib/tokens/modal-data.token';\n\nexport * from './lib/types/modal.types';\n\nexport * from './lib/classes/modal-close-guard';\nexport * from './lib/classes/guards/modal-confirm-close-guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["bottomSheetConst.MODAL_SWIPE_VELOCITY_THRESHOLD","bottomSheetConst.MODAL_DOWN_SWIPE_LIMIT","ModalGlobalSettingsService","animConst.MODAL_DEFAULT_ANIM_DURATION"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@filip.mazev/modal",
3
- "version": "0.1.53",
3
+ "version": "0.1.55",
4
4
  "license": "MIT",
5
5
  "exports": {
6
6
  "./_modal-theme": "./lib/styles/_modal-theme.scss",
@@ -139,6 +139,7 @@ declare class ModalService implements IModalService {
139
139
  private readonly rendererFactory;
140
140
  private readonly document;
141
141
  private readonly renderer;
142
+ private readonly globalSettings;
142
143
  private modals;
143
144
  private modalsSubject;
144
145
  constructor();
@@ -177,6 +178,7 @@ declare class ModalService implements IModalService {
177
178
  */
178
179
  modalsCount(): number;
179
180
  private isIModal;
181
+ private resolveConfig;
180
182
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalService, never>;
181
183
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModalService>;
182
184
  }
@@ -321,6 +323,7 @@ interface IModalComponent<D, R, C extends IModal<D, R> = IModal<D, R>> extends O
321
323
 
322
324
  declare class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements IModalComponent<D, R, C>, OnInit, AfterViewInit {
323
325
  private readonly modalService;
326
+ private readonly globalSettings;
324
327
  private readonly scrollLockService;
325
328
  private readonly windowDimensionsService;
326
329
  readonly animationDuration: number;
@@ -333,7 +336,7 @@ declare class ModalCore<D, R, C extends IModal<D, R> = IModal<D, R>> implements
333
336
  effectiveLayout: _angular_core.WritableSignal<ModalLayout>;
334
337
  isCentered: _angular_core.WritableSignal<boolean>;
335
338
  isSide: _angular_core.WritableSignal<boolean>;
336
- isAnimated: boolean;
339
+ isAnimated: _angular_core.Signal<boolean>;
337
340
  protected headerTemplate: _angular_core.WritableSignal<TemplateRef<void> | null>;
338
341
  protected footerTemplate: _angular_core.WritableSignal<TemplateRef<void> | null>;
339
342
  protected id: _angular_core.WritableSignal<string | null>;