diff --git a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts index b16b2bb14c..b1fbef79be 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts @@ -4,8 +4,10 @@ import { ContentChild, ElementRef, EventEmitter, + Inject, Input, OnDestroy, + Optional, Output, Renderer2, TemplateRef, @@ -18,6 +20,7 @@ import { fadeAnimation } from '../../animations/modal.animations'; import { Confirmation } from '../../models/confirmation'; import { ConfirmationService } from '../../services/confirmation.service'; import { ModalService } from '../../services/modal.service'; +import { SUPPRESS_UNSAVED_CHANGES_WARNING } from '../../tokens/suppress-unsaved-changes-warning.token'; import { ButtonComponent } from '../button/button.component'; export type ModalSize = 'sm' | 'md' | 'lg' | 'xl'; @@ -57,6 +60,8 @@ export class ModalComponent implements OnDestroy { @Input() size: ModalSize = 'lg'; + @Input() suppressUnsavedChangesWarning = this.suppressUnsavedChangesWarningToken; + @ContentChild(ButtonComponent, { static: false, read: ButtonComponent }) abpSubmit: ButtonComponent; @@ -104,6 +109,9 @@ export class ModalComponent implements OnDestroy { private confirmationService: ConfirmationService, private modalService: ModalService, private subscription: SubscriptionService, + @Optional() + @Inject(SUPPRESS_UNSAVED_CHANGES_WARNING) + private suppressUnsavedChangesWarningToken: boolean, ) { this.initToggleStream(); } @@ -139,7 +147,7 @@ export class ModalComponent implements OnDestroy { close() { if (this.busy) return; - if (this.isFormDirty) { + if (this.isFormDirty && !this.suppressUnsavedChangesWarning) { if (this.isConfirmationOpen) return; this.isConfirmationOpen = true; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts index a923c8fc23..18a2aac2f6 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tokens/index.ts @@ -1,3 +1,4 @@ export * from './append-content.token'; export * from './http-error.token'; export * from './lazy-styles.token'; +export * from './suppress-unsaved-changes-warning.token'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tokens/suppress-unsaved-changes-warning.token.ts b/npm/ng-packs/packages/theme-shared/src/lib/tokens/suppress-unsaved-changes-warning.token.ts new file mode 100644 index 0000000000..af68c8130c --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/tokens/suppress-unsaved-changes-warning.token.ts @@ -0,0 +1,6 @@ +import { InjectionToken } from '@angular/core'; + +// TODO: Should be documented +export const SUPPRESS_UNSAVED_CHANGES_WARNING = new InjectionToken( + 'SUPPRESS_UNSAVED_CHANGES_WARNING', +);