UNPKG

@skyux/modals

Version:

This library was generated with [Nx](https://nx.dev).

1 lines 107 kB
{"version":3,"file":"skyux-modals.mjs","sources":["../../../../../libs/components/modals/src/lib/modules/confirm/confirm-instance.ts","../../../../../libs/components/modals/src/lib/modules/confirm/confirm-type.ts","../../../../../libs/components/modals/src/lib/modules/confirm/confirm.module.ts","../../../../../libs/components/modals/src/lib/modules/confirm/confirm-config-token.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-content.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-content.component.html","../../../../../libs/components/modals/src/lib/modules/modal/modal-before-close-handler.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-close-args.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-instance.ts","../../../../../libs/components/modals/src/lib/modules/shared/sky-modals-resources.module.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-component-adapter.service.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-configuration.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-errors.service.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-header.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-header.component.html","../../../../../libs/components/modals/src/lib/modules/modal/modal-host.service.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal.component.html","../../../../../libs/components/modals/src/lib/modules/confirm/confirm.component.ts","../../../../../libs/components/modals/src/lib/modules/confirm/confirm.component.html","../../../../../libs/components/modals/src/lib/modules/modal/modal-host-context.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-adapter.service.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-host.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-host.component.html","../../../../../libs/components/modals/src/lib/modules/modal/modal.service.ts","../../../../../libs/components/modals/src/lib/modules/confirm/confirm.service.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-footer.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-footer.component.html","../../../../../libs/components/modals/src/lib/modules/modal/modal-is-dirty.directive.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal.module.ts","../../../../../libs/components/modals/src/skyux-modals.ts"],"sourcesContent":["import { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyConfirmCloseEventArgs } from './confirm-closed-event-args';\n\nexport class SkyConfirmInstance {\n  /**\n   * Fires when users select an action to close the dialog. This event\n   * returns a `SkyConfirmCloseEventArgs` object with information about the button that\n   * users select. It returns the `'cancel'` action when users press the <kbd>Escape</kbd> key.\n   */\n  public get closed(): Observable<SkyConfirmCloseEventArgs> {\n    return this.#closedObs;\n  }\n\n  readonly #closed = new ReplaySubject<SkyConfirmCloseEventArgs>();\n  readonly #closedObs = this.#closed.asObservable();\n\n  /**\n   * Closes the confirm instance.\n   * @param args Specifies an object to emit to subscribers of the `closed` event\n   * of the confirm instance.\n   */\n  public close(args: SkyConfirmCloseEventArgs): void {\n    this.#closed.next(args);\n    this.#closed.complete();\n  }\n}\n","export enum SkyConfirmType {\n  /**\n   * Allows you to define your own buttons using the `buttons` property of `SkyConfirmConfig`.\n   */\n  Custom = 0,\n  /**\n   * Displays one button with an **OK** label and an `'ok'` action.\n   */\n  OK = 1,\n  /**\n   * Displays two buttons with **Yes** and **Cancel** labels.\n   * @deprecated Use the `Custom` type to follow the guidance that labels\n   * should clearly indicate the actions that occur when users select buttons.\n   */\n  YesCancel = 2,\n  /**\n   * Displays three buttons with **Yes**, **No**, and **Cancel** labels.\n   * @deprecated Use the `Custom` type to follow the guidance that labels\n   * should clearly indicate the actions that occur when users select buttons.\n   */\n  YesNoCancel = 3,\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkyConfirmModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkyConfirmModule {}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyConfirmConfig } from './confirm-config';\n\n/**\n * @internal\n */\nexport const SKY_CONFIRM_CONFIG = new InjectionToken<SkyConfirmConfig>(\n  'SkyConfirmConfig',\n);\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { SkyResponsiveHostDirective } from '@skyux/core';\n\n/**\n * Specifies content to display in the modal's body.\n */\n@Component({\n  hostDirectives: [SkyResponsiveHostDirective],\n  standalone: true,\n  selector: 'sky-modal-content',\n  templateUrl: './modal-content.component.html',\n  styleUrls: ['./modal-content.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class SkyModalContentComponent {}\n","<ng-content />\n","import { SkyModalCloseArgs } from './modal-close-args';\n\n/**\n * Properties about the modal close action and a method to close the modal.\n */\nexport class SkyModalBeforeCloseHandler {\n  /**\n   * The object that would be emitted by a modal's `closed` event. This object\n   * can be used to determine whether to prompt the user for confirmation, such\n   * as when the user closes a modal form after entering data.\n   */\n  public readonly closeArgs: SkyModalCloseArgs;\n\n  /**\n   * Function to call to close the modal. Neglecting to call this function\n   * effectively cancels the close modal action.\n   */\n  public readonly closeModal: () => void;\n\n  constructor(closeModal: () => void, closeArgs: SkyModalCloseArgs) {\n    this.closeArgs = closeArgs;\n    this.closeModal = closeModal;\n  }\n}\n","/**\n * Contains an object with the data passed from users when\n * a modal is closed and the reason that the modal was closed.\n */\nexport class SkyModalCloseArgs {\n  /**\n   * The reason the modal was closed.\n   * Options include `\"close\"`, `\"save\"`, and `\"cancel\"`.\n   */\n  public reason: string | undefined;\n  /**\n   * The data passed from users when the modal is closed.\n   */\n  public data: any;\n}\n","import { ComponentRef, ElementRef } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SkyModalAdapterService } from './modal-adapter.service';\nimport { SkyModalBeforeCloseHandler } from './modal-before-close-handler';\nimport { SkyModalCloseArgs } from './modal-close-args';\n\nexport class SkyModalInstance {\n  /**\n   * An event that the modal instance emits when it is about to close.\n   * It emits a `SkyModalBeforeCloseHandler` object with a `closeModal` method\n   * that closes the modal. If a subscription exists for this event,\n   * the modal does not close until the subscriber calls the `closeModal` method.\n   */\n  public get beforeClose(): Observable<SkyModalBeforeCloseHandler> {\n    return this.#_beforeClose;\n  }\n\n  /**\n   * An event that the modal instance emits when it closes.\n   * It emits a `SkyModalCloseArgs` object with a `data` property that includes\n   * data passed from users on close or save and a `reason` property that indicates\n   * whether the modal was saved or closed without saving.\n   * The `reason` property accepts any string value.\n   * Common examples include `\"cancel\"`, `\"close\"`, and `\"save\"`.\n   */\n  public get closed(): Observable<SkyModalCloseArgs> {\n    return this.#_closed;\n  }\n\n  /**\n   * An event that the modal instance emits when users click\n   * the <i class=\"fa fa-question-circle\" aria-hidden=\"true\"></i> button.\n   * If a `helpKey` parameter was specified, the `helpOpened` event broadcasts the `helpKey`.\n   * @deprecated\n   */\n  public get helpOpened(): Observable<string> {\n    return this.#_helpOpened;\n  }\n\n  /**\n   * A direct reference to the provided component's class.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public componentInstance: any;\n\n  /**\n   * Sets the component adapter for the instance. This is used internally for actions such as scrolling the content.\n   * @internal\n   */\n  public set adapter(value: SkyModalAdapterService) {\n    this.#adapter = value;\n  }\n\n  /**\n   * Sets the component ref for the instance. This is used to extract the component instance for the public API and the element ref for internal use.\n   * @internal\n   */\n  public set componentRef(value: ComponentRef<any>) {\n    this.componentInstance = value.instance;\n    this.#elementRef = value.location;\n  }\n\n  #_beforeClose = new Subject<SkyModalBeforeCloseHandler>();\n\n  #_closed = new Subject<SkyModalCloseArgs>();\n\n  /**\n   * @deprecated\n   */\n  #_helpOpened = new Subject<string>();\n\n  #adapter: SkyModalAdapterService | undefined;\n  #elementRef: ElementRef | undefined;\n\n  /**\n   * Closes the modal instance.\n   * @param result Specifies an object to emit to subscribers of the `closed` event of the\n   * modal instance. The `SkyModalInstance` provider can be injected into a component's constructor\n   * so that this `close` function can be called from a button in the `sky-modal-footer`.\n   * @param reason Specifies the reason for the modal closing, with the default reason of `\"close\"`.\n   * @param ignoreBeforeClose Indicates whether to ignore the modal instance's `beforeClose` event.\n   */\n  public close(\n    result?: any,\n    reason?: string,\n    ignoreBeforeClose?: boolean,\n  ): void {\n    if (reason === undefined) {\n      reason = 'close';\n    }\n\n    this.#closeModal(reason, result, ignoreBeforeClose);\n  }\n\n  /**\n   * Closes the modal instance with `reason=\"cancel\"`.\n   * @param result Specifies an object to emit to subscribers of the `closed` event of the modal\n   * instance. The `SkyModalInstance` provider can be injected into a component's constructor so\n   * that this cancel function can be called from a button in the `sky-modal-footer`.\n   */\n  public cancel(result?: any): void {\n    this.#closeModal('cancel', result);\n  }\n\n  /**\n   * Closes the modal instance with `reason=\"save\"`.\n   * @param result Specifies an object to emit to subscribers of the `closed` event of the modal\n   * instance. The `SkyModalInstance` provider can be injected into a component's constructor so\n   * that this `save` function can be called from a button in `the sky-modal-footer`.\n   */\n  public save(result?: any): void {\n    this.#closeModal('save', result);\n  }\n\n  /**\n   * Scrolls the modal content area to the top of its scrollable area.\n   */\n  public scrollContentToTop(): void {\n    if (this.#adapter && this.#elementRef) {\n      this.#adapter.scrollContentToTop(this.#elementRef);\n    }\n  }\n\n  /**\n   * Triggers the `helpOpened` event that broadcasts a `helpKey` parameter to open\n   * when users click the <i class=\"fa fa-question-circle\" aria-hidden=\"true\"></i> button.\n   * @param helpKey Specifies a string to emit to subscribers of\n   * the modal instance's `helpOpened` event. Consumers can inject the `SkyModalInstance` provider\n   * into a component's constructor to call the `openHelp` function in the modal template.\n   * @deprecated\n   */\n  public openHelp(helpKey: string): void {\n    this.#_helpOpened.next(helpKey);\n  }\n\n  #closeModal(type: string, result?: any, ignoreBeforeClose = false): void {\n    const args = new SkyModalCloseArgs();\n\n    args.reason = type;\n    args.data = result;\n\n    if (this.#_beforeClose.observers.length === 0 || ignoreBeforeClose) {\n      this.#notifyClosed(args);\n    } else {\n      this.#_beforeClose.next(\n        new SkyModalBeforeCloseHandler(() => {\n          this.#notifyClosed(args);\n        }, args),\n      );\n    }\n  }\n\n  #notifyClosed(args: SkyModalCloseArgs): void {\n    this.#_closed.next(args);\n    this.#_closed.complete();\n    this.#_beforeClose.complete();\n    this.#_helpOpened.complete();\n  }\n}\n","/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-modals' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n  SkyI18nModule,\n  SkyLibResources,\n  SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n  'EN-US': {\n    skyux_confirm_dialog_default_ok_text: { message: 'OK' },\n    skyux_confirm_dialog_default_yes_text: { message: 'Yes' },\n    skyux_confirm_dialog_default_no_text: { message: 'No' },\n    skyux_confirm_dialog_default_cancel_text: { message: 'Cancel' },\n    skyux_modal_close: { message: 'Close modal' },\n    skyux_modal_open_help: { message: 'Open Help' },\n    skyux_modal_footer_cancel_button: { message: 'Cancel' },\n    skyux_modal_footer_primary_button: { message: 'Save' },\n    skyux_modal_dirty_default_message: {\n      message: 'Are you sure you want to discard your changes?',\n    },\n    skyux_modal_dirty_default_discard_changes_text: {\n      message: 'Discard changes',\n    },\n    skyux_modal_dirty_default_keep_working_text: { message: 'Keep working' },\n  },\n  'FR-CA': {\n    skyux_confirm_dialog_default_ok_text: { message: 'OK' },\n    skyux_confirm_dialog_default_yes_text: { message: 'Oui' },\n    skyux_confirm_dialog_default_no_text: { message: 'Non' },\n    skyux_confirm_dialog_default_cancel_text: { message: 'Annuler' },\n    skyux_modal_close: { message: 'Fermer le modal' },\n    skyux_modal_open_help: { message: 'Ouvrir l’aide' },\n    skyux_modal_footer_cancel_button: { message: 'Annuler' },\n    skyux_modal_footer_primary_button: { message: 'Sauvegarder' },\n    skyux_modal_dirty_default_message: {\n      message: 'Êtes-vous certain de vouloir supprimer ces changements?',\n    },\n    skyux_modal_dirty_default_discard_changes_text: {\n      message: 'Supprimer les changements',\n    },\n    skyux_modal_dirty_default_keep_working_text: {\n      message: 'Continuer à travailler',\n    },\n  },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n  exports: [SkyI18nModule],\n})\nexport class SkyModalsResourcesModule {}\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalComponentAdapterService {\n  public handleWindowChange(modalEl: ElementRef): void {\n    const boundedHeightEl = modalEl.nativeElement.querySelector('.sky-modal');\n    const fullPageModalEl = modalEl.nativeElement.querySelector(\n      '.sky-modal-full-page',\n    );\n    const modalStyle = getComputedStyle(boundedHeightEl);\n\n    const marginTopBottom =\n      parseInt(modalStyle.marginTop, 10) +\n      parseInt(modalStyle.marginBottom, 10);\n\n    /*\n      Set modal height equal to max height of window (accounting for padding above and below modal)\n    */\n    const newHeight = window.innerHeight - marginTopBottom;\n\n    boundedHeightEl.style.maxHeight = newHeight.toString() + 'px';\n    boundedHeightEl.style.setProperty(\n      '--sky-modal-content-max-height',\n      boundedHeightEl.style.maxHeight,\n    );\n    if (fullPageModalEl) {\n      this.#setFullPageHeight(fullPageModalEl);\n    }\n  }\n\n  public isFocusInFirstItem(\n    event: KeyboardEvent,\n    list: HTMLElement[],\n  ): boolean {\n    /* istanbul ignore next */\n    /* sanity check */\n    const eventTarget = event.target || event.srcElement;\n    return list.length > 0 && eventTarget === list[0];\n  }\n\n  public isFocusInLastItem(event: KeyboardEvent, list: HTMLElement[]): boolean {\n    /* istanbul ignore next */\n    /* sanity check */\n    const eventTarget = event.target || event.srcElement;\n    return list.length > 0 && eventTarget === list[list.length - 1];\n  }\n\n  public isModalFocused(event: KeyboardEvent, modalEl: ElementRef): boolean {\n    /* istanbul ignore next */\n    /* sanity check */\n    const eventTarget = event.target || event.srcElement;\n    return (\n      modalEl &&\n      eventTarget === modalEl.nativeElement.querySelector('.sky-modal-dialog')\n    );\n  }\n\n  public focusLastElement(list: HTMLElement[]): boolean {\n    if (list.length > 0) {\n      list[list.length - 1].focus();\n      return true;\n    }\n    return false;\n  }\n\n  public focusFirstElement(list: HTMLElement[]): boolean {\n    if (list.length > 0) {\n      list[0].focus();\n      return true;\n    }\n    return false;\n  }\n\n  public modalContentHasDirectChildViewkeeper(\n    modalContentEl: ElementRef,\n  ): boolean {\n    return !!modalContentEl.nativeElement.querySelector(\n      'sky-modal-content > .sky-viewkeeper-fixed',\n    );\n  }\n\n  #setFullPageHeight(fullPageModalEl: HTMLElement): void {\n    const windowHeight = window.innerHeight;\n    const fullPageModalStyle = getComputedStyle(fullPageModalEl);\n\n    const marginTopBottom =\n      parseInt(fullPageModalStyle.marginTop, 10) +\n      parseInt(fullPageModalStyle.marginBottom, 10);\n\n    const fullPageModalHeight = windowHeight - marginTopBottom + 'px';\n\n    fullPageModalEl.style.height = fullPageModalHeight;\n    fullPageModalEl.style.maxHeight = fullPageModalHeight;\n  }\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalConfiguration {\n  public fullPage?: boolean;\n  public size?: string;\n  /**\n   * @deprecated\n   */\n  public ariaDescribedBy?: string;\n  /**\n   * @deprecated\n   */\n  public ariaLabelledBy?: string;\n  public ariaRole?: string;\n  /**\n   * @deprecated\n   */\n  public tiledBody?: boolean;\n  /**\n   * @deprecated\n   */\n  public helpKey?: string;\n  public wrapperClass?: string;\n\n  constructor() {\n    this.size = 'medium';\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SkyModalError } from './modal-error';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalErrorsService {\n  public formErrors: Observable<SkyModalError[] | undefined>;\n\n  #formErrors = new BehaviorSubject<SkyModalError[] | undefined>(undefined);\n\n  constructor() {\n    this.formErrors = this.#formErrors.asObservable();\n  }\n\n  public updateErrors(value: SkyModalError[] | undefined): void {\n    this.#formErrors.next(value);\n  }\n}\n","import { Component } from '@angular/core';\nimport { SkyTrimModule } from '@skyux/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\n/**\n * Specifies a header for the modal.\n */\n@Component({\n  selector: 'sky-modal-header',\n  templateUrl: './modal-header.component.html',\n  styleUrls: ['./modal-header.component.scss'],\n  imports: [SkyThemeModule, SkyTrimModule],\n})\nexport class SkyModalHeaderComponent {}\n","<h2 class=\"sky-modal-heading\" skyTrim>\n  <ng-content />\n</h2>\n<span class=\"sky-control-help-container\" skyTrim\n  ><ng-content select=\".sky-control-help\"></ng-content\n></span>\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nconst BASE_Z_INDEX = 1040;\nconst modalHosts: SkyModalHostService[] = [];\n\nconst backdropZIndex = new BehaviorSubject<number>(0);\nconst backdropZIndexObs = backdropZIndex.asObservable();\n\nconst openModalCount = new BehaviorSubject<number>(0);\nconst openModalCountObs = openModalCount.asObservable();\n\n/**\n * @internal\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class SkyModalHostService {\n  public static get openModalCountChange(): Observable<number> {\n    return openModalCountObs;\n  }\n\n  public static get backdropZIndexChange(): Observable<number> {\n    return backdropZIndexObs;\n  }\n\n  /**\n   * @deprecated Subscribe to `openModalCountChange` instead.\n   */\n  public static get openModalCount(): number {\n    return modalHosts.length;\n  }\n\n  public static get fullPageModalCount(): number {\n    const fullPageModals = modalHosts.filter((modal) => modal.fullPage);\n    return fullPageModals.length;\n  }\n\n  /**\n   * @deprecated Subscribe to `backdropZIndexChange` instead.\n   */\n  public static get backdropZIndex(): number {\n    return BASE_Z_INDEX + modalHosts.length * 10;\n  }\n\n  public static get topModal(): SkyModalHostService {\n    return modalHosts[modalHosts.length - 1];\n  }\n\n  public close = new Subject<void>();\n  public fullPage = false;\n  /**\n   * @deprecated\n   */\n  public openHelp = new Subject<string>();\n  public zIndex: number;\n\n  constructor() {\n    this.zIndex = this.#calculateZIndex();\n    modalHosts.push(this);\n    this.#notifyBackdropZIndex();\n    this.#notifyOpenModalCount();\n  }\n\n  public getModalZIndex(): number {\n    return this.zIndex;\n  }\n\n  public onClose(): void {\n    this.close.next();\n  }\n\n  /**\n   * @deprecated\n   */\n  public onOpenHelp(helpKey: string): void {\n    this.openHelp.next(helpKey);\n  }\n\n  public destroy(): void {\n    modalHosts.splice(modalHosts.indexOf(this), 1);\n    this.#notifyBackdropZIndex();\n    this.#notifyOpenModalCount();\n  }\n\n  #calculateZIndex(): number {\n    const zIndexArray = modalHosts.map((hostService) => hostService.zIndex);\n    if (zIndexArray.length === 0) {\n      return BASE_Z_INDEX + 11;\n    } else {\n      const currentMaxZIndex = Math.max(...zIndexArray);\n      return currentMaxZIndex + 10;\n    }\n  }\n\n  #notifyOpenModalCount(): void {\n    openModalCount.next(modalHosts.length);\n  }\n\n  #notifyBackdropZIndex(): void {\n    backdropZIndex.next(SkyModalHostService.backdropZIndex);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  ViewChild,\n  inject,\n  input,\n} from '@angular/core';\nimport {\n  SkyCoreAdapterService,\n  SkyDockLocation,\n  SkyDockService,\n  SkyIdModule,\n  SkyLayoutHostDirective,\n  SkyLiveAnnouncerService,\n  SkyScrollShadowDirective,\n  SkyScrollShadowEventArgs,\n} from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTheme, SkyThemeModule, SkyThemeService } from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyModalsResourcesModule } from '../shared/sky-modals-resources.module';\n\nimport { SkyModalComponentAdapterService } from './modal-component-adapter.service';\nimport { SkyModalConfiguration } from './modal-configuration';\nimport { SkyModalError } from './modal-error';\nimport { SkyModalErrorsService } from './modal-errors.service';\nimport { SkyModalHeaderComponent } from './modal-header.component';\nimport { SkyModalHostService } from './modal-host.service';\n\nconst ARIA_ROLE_DEFAULT = 'dialog';\n\n/**\n * Provides a common look-and-feel for modal content with options to display\n * a common modal header, specify body content, and display a common modal footer\n * and buttons.\n */\n@Component({\n  selector: 'sky-modal',\n  templateUrl: './modal.component.html',\n  styleUrls: ['./modal.component.scss'],\n  providers: [\n    SkyModalComponentAdapterService,\n    SkyModalErrorsService,\n    SkyDockService,\n  ],\n  imports: [\n    CommonModule,\n    SkyHelpInlineModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyLayoutHostDirective,\n    SkyModalHeaderComponent,\n    SkyModalsResourcesModule,\n    SkyScrollShadowDirective,\n    SkyThemeModule,\n  ],\n})\nexport class SkyModalComponent implements AfterViewInit, OnDestroy, OnInit {\n  @HostBinding('class')\n  public wrapperClass: string | undefined;\n\n  /**\n   * A list of form-level errors to display to the user.\n   */\n  @Input()\n  public set formErrors(value: SkyModalError[] | undefined) {\n    this.#errorsSvc.updateErrors(value);\n  }\n\n  /**\n   * The text to display as the modal's heading.\n   */\n  @Input()\n  public headingText: string | undefined;\n\n  /**\n   * A help key that identifies the global help content to display. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline) button is\n   * added to the modal header. Clicking the button invokes global help as configured by the application. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpKey: string | undefined;\n\n  /**\n   * The content of the help popover. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n   * button is added to the modal header. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n   * when clicked using the specified content and optional title. This property only applies when `headingText` is also specified.\n   */\n  @Input()\n  public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n  /**\n   * The title of the help popover. This property only applies when `helpPopoverContent` is\n   * also specified.\n   */\n  @Input()\n  public helpPopoverTitle: string | undefined;\n\n  /**\n   * Used by the confirm component to set a different role for the modal.\n   * @internal\n   */\n  @Input()\n  public set ariaRole(value: string | undefined) {\n    this.ariaRoleOrDefault = value || ARIA_ROLE_DEFAULT;\n  }\n\n  public ariaRoleOrDefault = ARIA_ROLE_DEFAULT;\n\n  /**\n   * @internal\n   * @deprecated\n   */\n  @Input()\n  public tiledBody: boolean | undefined;\n\n  /**\n   * Used by the confirm component to set descriptive text without using a\n   * modal header.\n   * @internal\n   */\n  @Input()\n  public set ariaDescribedBy(id: string | undefined) {\n    this.#_ariaDescribedBy = id;\n  }\n\n  public get ariaDescribedBy(): string | undefined {\n    return this.#_ariaDescribedBy;\n  }\n\n  /**\n   * Used by the confirm component to set descriptive text without using a\n   * modal header.\n   * @internal\n   */\n  @Input()\n  public set ariaLabelledBy(id: string | undefined) {\n    this.#_ariaLabelledBy = id;\n  }\n\n  public get ariaLabelledBy(): string | undefined {\n    return this.#_ariaLabelledBy;\n  }\n\n  public readonly layout = input<'none' | 'fit'>('none');\n\n  public ariaOwns: string | null = null;\n\n  /**\n   * @deprecated\n   */\n  public legacyHelpKey: string | undefined;\n\n  public modalState = 'in';\n\n  public modalZIndex: number | undefined;\n\n  public scrollShadow: SkyScrollShadowEventArgs = {\n    bottomShadow: 'none',\n    topShadow: 'none',\n  };\n\n  public size: string;\n\n  @ViewChild('modalContentWrapper', { read: ElementRef })\n  public modalContentWrapperElement: ElementRef | undefined;\n\n  protected scrollShadowEnabled = false;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #_ariaDescribedBy: string | undefined;\n  #_ariaLabelledBy: string | undefined;\n\n  readonly #changeDetector = inject(ChangeDetectorRef);\n  readonly #componentAdapter = inject(SkyModalComponentAdapterService);\n  readonly #coreAdapter = inject(SkyCoreAdapterService);\n  readonly #dockService = inject(SkyDockService, { host: true });\n  readonly #elRef = inject(ElementRef);\n  readonly #errorsSvc = inject(SkyModalErrorsService);\n  readonly #hostService = inject(SkyModalHostService);\n  readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n\n  /**\n   * This provider is optional to account for situations where a modal component\n   * is implemented without the modal service. For example, when a consumer tests\n   * a component that uses the modal component but doesn't launch the modal from\n   * the modal service before executing assertions.\n   */\n  readonly #config =\n    inject(SkyModalConfiguration, { optional: true }) ??\n    new SkyModalConfiguration();\n  readonly #themeSvc = inject(SkyThemeService, { optional: true });\n\n  constructor() {\n    this.ariaDescribedBy = this.#config.ariaDescribedBy;\n    this.ariaLabelledBy = this.#config.ariaLabelledBy;\n    this.ariaRole = this.#config.ariaRole;\n    this.legacyHelpKey = this.#config.helpKey;\n    this.tiledBody = this.#config.tiledBody;\n    this.wrapperClass = this.#config.wrapperClass;\n\n    this.size = this.#config.fullPage\n      ? 'full-page'\n      : this.#config.size?.toLowerCase() || 'medium';\n\n    this.modalZIndex = this.#hostService.zIndex;\n  }\n\n  @HostListener('document:keyup', ['$event'])\n  public onDocumentKeyUp(event: KeyboardEvent): void {\n    /* istanbul ignore else */\n    /* sanity check */\n    if (SkyModalHostService.openModalCount > 0) {\n      const topModal = SkyModalHostService.topModal;\n      if (topModal && topModal === this.#hostService) {\n        if (event.which === 27) {\n          // Escape key up\n          event.preventDefault();\n          this.closeButtonClick();\n        }\n      }\n    }\n  }\n\n  @HostListener('document:keydown', ['$event'])\n  public onDocumentKeyDown(event: KeyboardEvent): void {\n    /* istanbul ignore else */\n    /* sanity check */\n    if (SkyModalHostService.openModalCount > 0) {\n      const topModal = SkyModalHostService.topModal;\n      if (topModal && topModal === this.#hostService) {\n        if (event.which === 9) {\n          // Tab pressed\n          let focusChanged = false;\n\n          const focusElementList = this.#coreAdapter.getFocusableChildren(\n            this.#elRef.nativeElement,\n          );\n\n          if (\n            event.shiftKey &&\n            (this.#componentAdapter.isFocusInFirstItem(\n              event,\n              focusElementList,\n            ) ||\n              this.#componentAdapter.isModalFocused(event, this.#elRef))\n          ) {\n            focusChanged =\n              this.#componentAdapter.focusLastElement(focusElementList);\n          } else if (\n            !event.shiftKey &&\n            this.#componentAdapter.isFocusInLastItem(event, focusElementList)\n          ) {\n            focusChanged =\n              this.#componentAdapter.focusFirstElement(focusElementList);\n          }\n\n          if (focusChanged) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n        }\n      }\n    }\n  }\n\n  public ngOnInit(): void {\n    this.#liveAnnouncerSvc.announcerElementChanged\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((element) => {\n        if (element?.id) {\n          this.ariaOwns = element.id;\n          this.#changeDetector.markForCheck();\n        }\n      });\n\n    if (this.#themeSvc) {\n      this.#themeSvc.settingsChange\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe((themeSettings) => {\n          this.scrollShadowEnabled =\n            themeSettings.currentSettings.theme === SkyTheme.presets.modern;\n        });\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    this.#componentAdapter.handleWindowChange(this.#elRef);\n\n    this.#dockService.setDockOptions({\n      location: SkyDockLocation.ElementBottom,\n      referenceEl: this.modalContentWrapperElement!.nativeElement,\n      zIndex: 5,\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  /**\n   * @deprecated\n   */\n  public helpButtonClick(): void {\n    if (this.legacyHelpKey) {\n      this.#hostService.onOpenHelp(this.legacyHelpKey);\n    }\n  }\n\n  public closeButtonClick(): void {\n    this.#hostService.onClose();\n  }\n\n  public windowResize(): void {\n    this.#componentAdapter.handleWindowChange(this.#elRef);\n  }\n\n  public scrollShadowChange(args: SkyScrollShadowEventArgs): void {\n    this.scrollShadow = args;\n  }\n\n  public viewkeeperEnabled(): boolean {\n    return this.#componentAdapter.modalContentHasDirectChildViewkeeper(\n      this.#elRef,\n    );\n  }\n}\n","<div\n  class=\"sky-modal-dialog\"\n  aria-modal=\"true\"\n  [attr.aria-describedby]=\"ariaDescribedBy || modalContentId.id\"\n  [attr.aria-labelledby]=\"ariaLabelledBy || headerId.id\"\n  [attr.aria-owns]=\"ariaOwns\"\n  [attr.role]=\"ariaRoleOrDefault\"\n  (window:resize)=\"windowResize()\"\n>\n  <div\n    class=\"sky-modal sky-shadow sky-box sky-elevation-16 sky-modal-{{ size }}\"\n    tabindex=\"-1\"\n    [ngClass]=\"{\n      'sky-modal-tiled': tiledBody,\n      'sky-modal-viewkeeper': viewkeeperEnabled()\n    }\"\n    [ngStyle]=\"{\n      zIndex: modalZIndex\n    }\"\n  >\n    <div\n      class=\"sky-modal-header\"\n      [ngStyle]=\"{\n        'box-shadow': scrollShadow?.topShadow\n      }\"\n    >\n      <div #headerId=\"skyId\" class=\"sky-modal-header-content\" skyId>\n        @if (headingText) {\n          <sky-modal-header>\n            {{ headingText }}\n            @if (helpKey || helpPopoverContent) {\n              <sky-help-inline\n                class=\"sky-control-help\"\n                [helpKey]=\"helpKey\"\n                [labelText]=\"headingText\"\n                [popoverContent]=\"helpPopoverContent\"\n                [popoverTitle]=\"helpPopoverTitle\"\n              />\n            }\n          </sky-modal-header>\n        } @else {\n          <ng-content select=\"sky-modal-header\" />\n        }\n      </div>\n      <div class=\"sky-modal-header-buttons\">\n        @if (legacyHelpKey) {\n          <button\n            class=\"sky-btn sky-modal-btn-help\"\n            name=\"help-button\"\n            type=\"button\"\n            [attr.aria-label]=\"'skyux_modal_open_help' | skyLibResources\"\n            (click)=\"helpButtonClick()\"\n          >\n            <sky-icon iconName=\"question-circle\" />\n          </button>\n        }\n\n        <button\n          type=\"button\"\n          class=\"sky-btn sky-modal-btn-close\"\n          [attr.aria-label]=\"'skyux_modal_close' | skyLibResources\"\n          (click)=\"closeButtonClick()\"\n        >\n          <sky-icon iconName=\"close\" />\n        </button>\n      </div>\n    </div>\n    <div\n      #modalContentId=\"skyId\"\n      #modalContentWrapper\n      class=\"sky-modal-content\"\n      role=\"region\"\n      tabindex=\"0\"\n      skyId\n      skyLayoutHost\n      [layout]=\"layout()\"\n      [attr.aria-labelledby]=\"headerId.id\"\n      [skyScrollShadowEnabled]=\"scrollShadowEnabled\"\n      [skyThemeClass]=\"{\n        'sky-padding-even-large': 'default'\n      }\"\n      (skyScrollShadow)=\"scrollShadowChange($event)\"\n    >\n      <ng-content select=\"sky-modal-content\" />\n    </div>\n    <div\n      class=\"sky-modal-footer\"\n      [ngStyle]=\"{\n        'box-shadow': scrollShadow?.bottomShadow\n      }\"\n    >\n      <ng-content select=\"sky-modal-footer\" />\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, OnDestroy, inject } from '@angular/core';\nimport { SkyIdModule, SkyIdService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyModalContentComponent } from '../modal/modal-content.component';\nimport { SkyModalInstance } from '../modal/modal-instance';\nimport { SkyModalComponent } from '../modal/modal.component';\nimport { SkyModalsResourcesModule } from '../shared/sky-modals-resources.module';\n\nimport { SkyConfirmButton } from './confirm-button';\nimport { SkyConfirmButtonConfig } from './confirm-button-config';\nimport { SkyConfirmCloseEventArgs } from './confirm-closed-event-args';\nimport { SKY_CONFIRM_CONFIG } from './confirm-config-token';\nimport { SkyConfirmInstance } from './confirm-instance';\nimport { SkyConfirmType } from './confirm-type';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-confirm',\n  templateUrl: './confirm.component.html',\n  styleUrls: ['./confirm.component.scss'],\n  imports: [\n    CommonModule,\n    SkyIdModule,\n    SkyModalComponent,\n    SkyModalContentComponent,\n    SkyModalsResourcesModule,\n    SkyThemeModule,\n  ],\n})\nexport class SkyConfirmComponent implements OnDestroy {\n  protected body: string | undefined;\n  protected bodyId: string;\n  protected buttons: SkyConfirmButton[] | undefined;\n  protected isOkType = false;\n  protected message: string;\n  protected preserveWhiteSpace = false;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  readonly #config = inject(SKY_CONFIRM_CONFIG);\n  readonly #modalInstance = inject(SkyModalInstance);\n  readonly #confirmInstance = inject(SkyConfirmInstance);\n  readonly #resourcesSvc = inject(SkyLibResourcesService);\n  readonly #idSvc = inject(SkyIdService);\n\n  constructor() {\n    this.#config.type ??= SkyConfirmType.OK;\n\n    if (\n      this.#config.type === SkyConfirmType.Custom &&\n      this.#config.buttons &&\n      this.#config.buttons.length > 0\n    ) {\n      this.buttons = this.#getCustomButtons(this.#config.buttons);\n    } else {\n      this.#getPresetButtons()\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe((buttons) => {\n          this.buttons = buttons;\n        });\n    }\n\n    this.message = this.#config.message;\n    this.body = this.#config.body;\n\n    // Using the service here instead of the directive due to the confirm\n    // component's \"body\" container being conditional and thus a template\n    // variable being unavailable at an outer scope\n    this.bodyId = this.#idSvc.generateId();\n\n    this.preserveWhiteSpace = !!this.#config.preserveWhiteSpace;\n    this.isOkType = this.#config.type === SkyConfirmType.OK;\n\n    // Closes the modal when requested by the confirm instance.\n    this.#confirmInstance.closed.subscribe((args) => {\n      this.#modalInstance.close(args);\n    });\n\n    this.#modalInstance.closed.subscribe((args) => {\n      // Close the confirm when the \"escape\" key is pressed (passes 'undefined')\n      // since this behavior is handled by the underlying modal component.\n      if (args.data === undefined) {\n        this.#confirmInstance.close({\n          action: 'cancel',\n        });\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  protected close(button: SkyConfirmButton): void {\n    const result: SkyConfirmCloseEventArgs = {\n      action: button.action,\n    };\n\n    this.#confirmInstance.close(result);\n  }\n\n  #getPresetButtons(): Observable<SkyConfirmButton[]> {\n    const emitter = new ReplaySubject<SkyConfirmButton[]>(1);\n\n    this.#resourcesSvc\n      .getStrings({\n        cancel: 'skyux_confirm_dialog_default_cancel_text',\n        no: 'skyux_confirm_dialog_default_no_text',\n        ok: 'skyux_confirm_dialog_default_ok_text',\n        yes: 'skyux_confirm_dialog_default_yes_text',\n      })\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((values) => {\n        const confirmButtons: SkyConfirmButton[] = [];\n\n        switch (this.#config.type) {\n          case SkyConfirmType.YesNoCancel:\n          case SkyConfirmType.YesCancel:\n            confirmButtons.push({\n              text: values.yes,\n              autofocus: true,\n              styleType: 'primary',\n              action: 'yes',\n            });\n\n            if (this.#config.type === SkyConfirmType.YesNoCancel) {\n              confirmButtons.push({\n                text: values.no,\n                styleType: 'default',\n                action: 'no',\n              });\n            }\n\n            confirmButtons.push({\n              text: values.cancel,\n              styleType: 'link',\n              action: 'cancel',\n            });\n            break;\n          default:\n            confirmButtons.push({\n              text: values.ok,\n              autofocus: true,\n              styleType: 'primary',\n              action: 'ok',\n            });\n        }\n\n        emitter.next(confirmButtons);\n      });\n\n    return emitter.asObservable();\n  }\n\n  #getCustomButtons(\n    buttonConfig: SkyConfirmButtonConfig[],\n  ): SkyConfirmButton[] {\n    return buttonConfig.map(\n      (config) =>\n        ({\n          text: config.text,\n          action: config.action,\n          styleType: config.styleType || 'default',\n          autofocus: config.autofocus || false,\n        }) as SkyConfirmButton,\n    );\n  }\n}\n","<div class=\"sky-confirm\" [ngClass]=\"{ 'sky-confirm-type-ok': isOkType }\">\n  <sky-modal\n    ariaRole=\"alertdialog\"\n    [ariaLabelledBy]=\"confirmMessage.id\"\n    [ariaDescribedBy]=\"body ? bodyId : undefined\"\n  >\n    <sky-modal-content class=\"sky-confirm-content\">\n      <!--\n        The following \"magic comment\" keeps Prettier from adding line breaks\n        inside the div and causing leading and trailing whitespace when\n        `preserveWhiteSpace` is `true`.\n        https://prettier.io/blog/2018/11/07/1.15.0.html#whitespace-sensitive-formatting\n      -->\n      <!-- display: inline -->\n      <div\n        #confirmMessage=\"skyId\"\n        class=\"sky-confirm-message\"\n        skyId\n        [ngClass]=\"{\n          'sky-confirm-preserve-white-space': preserveWhiteSpace\n        }\"\n        [skyThemeClass]=\"{\n          'sky-font-display-4': 'default'\n        }\"\n        >{{ message }}</div\n      >\n\n      @if (body) {\n        <!--\n          The following \"magic comment\" keeps Prettier from adding line breaks\n          inside the div and causing leading and trailing whitespace when\n          `preserveWhiteSpace` is `true`.\n          https://prettier.io/blog/2018/11/07/1.15.0.html#whitespace-sensitive-formatting\n        -->\n        <!-- display: inline -->\n        <div\n          class=\"sky-confirm-body\"\n          [id]=\"bodyId\"\n          [ngClass]=\"{\n            'sky-confirm-preserve-white-space': preserveWhiteSpace\n          }\"\n          >{{ body }}</div\n        >\n      }\n\n      <div class=\"sky-confirm-buttons\">\n        @for (button of buttons; track button.text) {\n          <button\n            type=\"button\"\n            class=\"sky-btn\"\n            [ngClass]=\"'sky-btn-' + button.styleType\"\n            [attr.autofocus]=\"button.autofocus ? 'autofocus' : null\"\n            (click)=\"close(button)\"\n          >\n            {{ button.text }}\n          </button>\n        }\n      </div>\n    </sky-modal-content>\n  </sky-modal>\n</div>\n","import { Inject, Injectable } from '@angular/core';\n\nimport { SkyModalHostContextArgs } from './modal-host-context-args';\n\n/**\n * Provided by the modal service to give the modal host\n * component additional context and features.\n * @internal\n */\n@Injectable()\nexport class SkyModalHostContext {\n  constructor(\n    @Inject('SkyModalHostContextArgs') public args: SkyModalHostContextArgs,\n  ) {}\n}\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { SkyAppWindowRef, SkyCoreAdapterService } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalAdapterService {\n  private static readonly MODAL_BODY_FULL_CLASS = 'sky-modal-body-full-page';\n  private static readonly MODAL_BODY_CLASS = 'sky-modal-body-open';\n\n  #docRef: any;\n  #bodyEl: HTMLElement;\n\n  #coreAdapter = inject(SkyCoreAdapterService);\n  #windowRef: SkyAppWindowRef;\n  #hostSiblingAriaHiddenCache = new Map<Element, string | null>();\n\n  constructor(windowRef: SkyAppWindowRef) {\n    this.#windowRef = windowRef;\n    this.#docRef = this.#windowRef.nativeWindow.document;\n    this.#bodyEl = this.#windowRef.nativeWindow.document.body;\n  }\n\n  public toggleFullPageModalClass(isAddFull: boolean): void {\n    if (isAddFull) {\n      this.#addClassToBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);\n    } else {\n      this.#removeClassFromBody(SkyModalAdapterService.MODAL_BODY_FULL_CLASS);\n    }\n  }\n\n  public setPageScroll(isAdd: boolean): void {\n    if (isAdd) {\n      this.#addClassToBody(SkyModalAdapterService.MODAL_BODY_CLASS);\n    } else {\n      this.#removeClassFromBody(SkyModalAdapterService.MODAL_BODY_CLASS);\n    }\n  }\n\n  public getModalOpener(): HTMLElement {\n    return this.#docRef.activeElement;\n  }\n\n  #addClassToBody(className: string): void {\n    this.#bodyEl.classList.add(className);\n  }\n\n  #removeClassFromBody(className: string): void {\n    this.#bodyEl.classList.remove(className);\n  }\n\n  public scrollContentToTop(element: ElementRef): void {\n    element.nativeElement.querySelector('.sky-modal-content').scrollTop = 0;\n  }\n\n  /**\n   * Hides siblings of modal-host from screen readers\n   * @param hostElRef reference to modal-host element\n   */\n  public hideHostSiblingsFromScreenReaders(hostElRef: ElementRef): void {\n    const hostElement = hostElRef.nativeElement;\n    const hostSiblings = hostElement.parentElement?.children;\n\n    if (hostSiblings) {\n      for (const element of hostSiblings) {\n        if (element.contains(document.activeElement)) {\n          document.body.focus();\n        }\n        if (\n          element !== hostElement &&\n          !element.hasAttribute('aria-live') &&\n          element.nodeName.toLowerCase() !== 'script' &&\n          element.nodeName.toLowerCase() !== 'style'\n        ) {\n          // preserve previous aria-hidden status of elements outside of modal host\n          this.#hostSiblingAriaHiddenCache.set(\n            element,\n            element.getAttribute('aria-hidden'),\n          );\n          element.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n  }\n\n  public focusFirstElement(modalEl: ElementRef): void {\n    /* istanbul ignore else */\n    /* handle the case where somehow there is a focused element already in the modal */\n    if (\n      !(\n        document.activeElement &&\n        modalEl.nativeElement.contains(document.activeElement)\n      )\n    ) {\n      const currentScrollX = window.pageXOffset;\n      const currentScrollY = window.pageYOffset;\n\n      const inputWithAutofocus =\n        modalEl.nativeElement.querySelector('[autofocus]');\n\n      if (inputWithAutofocus) {\n        inputWithAutofocus.focus();\n      } else {\n        this.#coreAdapter.getFocusableChildrenAndApplyFocus(\n          modalEl,\n          '.sky-modal-content',\n          true,\n        );\n      }\n      window.scrollTo(currentScrollX, currentScrollY);\n    }\n  }\n\n  /**\n   * Restores modal-host siblings to screen reader status prior to modals being opened\n   */\n  public unhideOrRestoreHostSiblingsFromScreenReaders(): void {\n    this.#hostSiblingAriaHiddenCache.forEach((previousValue, element) => {\n      // if element had aria-hidden status prior, restore status\n      if (element.parentElement) {\n        if (previousValue) {\n          element.setAttribute('aria-hidden', previousValue);\n        } else {\n          element.removeAttribute('aria-hidden');\n        }\n      }\n    });\n    this.#hostSiblingAriaHiddenCache.clear();\n  }\n\n  public hidePreviousModalFromScreenReaders(topModal: ElementRef): void {\n    if (topModal && topModal.nativeElement.previousElementSibling) {\n      topModal.nativeElement.previousElementSibling.setAttribute(\n        'aria-hidden',\n        'true',\n      );\n    }\n  }\n\n  public unhidePreviousModalFromScreenReaders(topModal: ElementRef): void {\n    if (topModal && topModal.nativeElement.previousElementSibling) {\n      topModal.nativeElement.previousElementSibling.removeAttribute(\n        'aria-hidden',\n      );\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EnvironmentInjector,\n  OnDestroy,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n  inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationStart, Router, RouterModule } from '@angular/router';\nimport {\n  SKY_STACKING_CONTEXT,\n  SkyAppWindowRef,\n  SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { BehaviorSubject } from 'rxjs';\nimport { takeUntil, takeWhile } from 'rxjs/operators';\n\nimport { SkyModalsResourcesModule } from '../shared/sky-modals-resources.module';\n\nimport { SkyModalAdapterService } from './modal-adapter.service';\nimport { SkyModalConfiguration } from './modal-configuration';\nimport { SkyModalHostContext } from './modal-host-context';\nimport { SkyModalHostService } from './modal-host.service';\nimport { SkyModalInstance } from './modal-instance';\nimport { SkyModalConfigurationInterface } from './modal.interface';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-modal-host',\n  templateUrl: './modal-host.component.html',\n  styleUrls: ['./modal-host.component.scss'],\n  viewProviders: [SkyModalAdapterService],\n  imports: [CommonModule, RouterModule, SkyModalsResourcesModule],\n})\nexport class SkyModalHostComponent implements OnDestroy {\n  protected backdropZIndex = toSignal(SkyModalHostService.backdropZIndexChange);\n  protected modalCount = toSignal(SkyModalHostService.openModalCountChange);\n\n  @ViewChild('target', {\n    read: ViewContainerRef,\n    static: true,\n  })\n  public target: ViewContainerRef | undefined;\n\n  #modalInstances: SkyModalInstance[] = [];\n\n  readonly #adapter = inject(SkyModalAdapterService);\n  readonly #changeDetector = inject(ChangeDetectorRef);\n  readonly #dynamicComponentSvc = inject(SkyDynamicComponentService);\n  readonly #elRef = inject(ElementRef);\n  readonly #environmentInjector = inject(EnvironmentInjector);\n  readonly #modalHostContext = inject(SkyModalHostContext);\n  readonly #router = inject(Router, { optional: true });\n  readonly #windowRef = inject(SkyAppWindowRef);\n\n  public ngOnDestroy(): void {\n    // Close all modal instances before disposing of the host container.\n    this.#closeAllModalInstances();\n    this.#modalHostContext.args.teardownCallback();\n  }\n\n  public open<T>(\n    modalInstance: SkyModalInstance,\n    component: Type<T>,\n    config?: SkyModalConfigurationInterface,\n    environmentInjector?: EnvironmentInjector,\n  ): void {\n    /* Ignore coverage as we specify the target element and so the view child should never be undefined unless\n     * we were to call the `open` method in an early lifecycle hook. */\n    /* istanbul ignore next */\n    if (!this.target) {\n      return;\n    }\n\n    const params: SkyModalConfigurationInterface = Object.assign({}, config);\n\n    const hostService = new SkyModalHostService();\n    hostService.fullPage = !!params.fullPage;\n\n    const adapter = this.#adapter;\n    const modalOpener: HTMLElement = adapter.getModalOpener();\n\n    let isOpen = true;\n\n    params.providers ||= [];\n    params.providers.push(\n      {\n        provide: SkyModalHostService,\n        useValue: hostService,\n      },\n      {\n        provide: SkyModalConfiguration,\n        useValue: params,\n      },\n      {\n        provide: SKY_STACKING_CONTEXT,\n        useValue: {\n          zIndex: new BehaviorSubject(hostService.getModalZIndex())\n            .asObservable()\n            .pipe(takeUntil(modalInstance.closed)),\n        },\n      },\n    );\n\n    adapter.setPageScroll(SkyModalHostService.openModalCount > 0);\n    adapter.toggleFullPageModalClass(\n      SkyModalHostService.fullPageModalCount > 0,\n    );\n\n    environmentInjector ||= this.#environmentInjector;\n    const modalComponentRef = this.#dynamicComponentSvc.createComponent(\n      component,\n      {\n        environmentInjector: environmentInjector,\n        providers: params.providers,\n        viewContainerRef: this.target,\n      },\n    );\n\n    // modal element that was just opened\n    const modalElement = modalComponentRef.location;\n\n    modalInstance.adapter = this.#adapter;\n    modalInstance.componentRef = modalComponentRef;\n\n    this.#registerModalInstance(modalInstance);\n\n    // Adding a timeout to avoid ExpressionChangedAfterItHasBeenCheckedError.\n    // https://stackoverflow.com/questions/40562845\n    this.#windowRef.nativeWindow.setTimeout(() => {\n      this.#adapter.focusFirstElement(modalElement);\n\n      // hiding all elements at the modal-host level from screen readers when the a modal is opened\n      this.#adapter.hideHostSiblingsFromScreenReaders(this.#elRef);\n      if (\n        SkyModalHostService.openModalCount > 1 &&\n        SkyModalHostService.topModal === hostService\n      ) {\n        // hiding the lower modals when more than one modal is opened\n        this.#adapter.hidePreviousModalFromScreenReaders(modalElement);\n      }\n    });\n\n    const closeModal = (): void => {\n      // unhide siblings if last modal is closing\n      if (SkyModalHostService.openModalCount === 1) {\n        this.#adapter.unhideOrRestoreHostSiblingsFromScreenReaders();\n      } else if (SkyModalHostService.topModal === hostService) {\n        // if there are more than 1 modal then unhide the one behind this one before closing it\n        this.#adapter.unhidePreviousModalFromScreenReaders(modalElement);\n      }\n\n      hostService.destroy();\n      adapter.setPageScroll(SkyModalHostService.openModalCount > 0);\n      adapter.toggleFullPageModalClass(\n        SkyModalHostService.fullPageModalCount > 0,\n      );\n      /* istanbul ignore else */\n      /* sanity check */\n      if (modalOpener && modalOpener.focus) {\n        modalOpener.focus();\n      }\n      modalComponentRef.destroy();\n    };\n\n    hostService.openHelp.subscribe((helpKey) => {\n      modalInstance.openHelp(helpKey);\n    });\n\n    hostService.close.subscribe(() => {\n      modalInstance.close();\n    });\n\n    this.#router?.events.pipe(takeWhile(() => isOpen)).subscribe((event) => {\n      /* istanbul ignore else */\n      if (event instanceof NavigationStart) {\n        modalInstance.close();\n      }\n    });\n\n    modalInstance.closed.subscribe(() => {\n      isOpen = false;\n      this.#unregisterModalInstance(modalInstance);\n      closeModal();\n    });\n\n    // Necessary if the host was created via a consumer's lifecycle hook such as ngOnInit\n    this.#changeDetector.detectChanges();\n  }\n\n  #registerModalInstance(instance: SkyModalInstance): void {\n    this.#modalInstances.push(instance);\n  }\n\n  #unregisterModalInstance(instance: SkyModalInstance): void {\n    this.#modalInstances.slice(this.#modalInstances.indexOf(instance), 1);\n  }\n\n  #closeAllModalInstances(): void {\n    for (const instance of this.#modalInstances) {\n      instance.close();\n    }\n  }\n}\n","<div\n  class=\"sky-modal-host-backdrop\"\n  [hidden]=\"modalCount() === 0\"\n  [ngStyle]=\"{\n    zIndex: backdropZIndex()\n  }\"\n></div>\n<div #target></div>\n","import {\n  ComponentRef,\n  EnvironmentInjector,\n  Injectable,\n  inject,\n} from '@angular/core';\nimport {\n  SkyDynamicComponentLegacyService,\n  SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { SkyModalHostContext } from './modal-host-context';\nimport { SkyModalHostComponent } from './modal-host.component';\nimport { SkyModalInstance } from './modal-instance';\nimport { SkyModalServiceInterface } from './modal-service-interface';\nimport { SkyModalConfigurationInterface } from './modal.interface';\n\n/**\n * A service that launches modals.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class SkyModalService implements SkyModalServiceInterface {\n  private static host: ComponentRef<SkyModalHostComponent> | undefined; // <-- how do we handle only having one of these?\n\n  #dynamicComponentService: SkyDynamicComponentService;\n  #environmentInjector = inject(EnvironmentInjector);\n\n  constructor(dynamicComponentService: SkyDynamicComponentService) {\n    this.#dynamicComponentService = dynamicComponentService;\n  }\n\n  /**\n   * @internal\n   * Removes the modal host from the DOM.\n   */\n  public dispose(): void {\n    if (SkyModalService.host) {\n      this.#dynamicComponentService.removeComponent(SkyModalService.host);\n      SkyModalService.host = undefined;\n    }\n  }\n\n  /**\n   * Opens a modal using the specified component.\n   * @param component Determines the component to render.\n   * @param {SkyModalConfigurationInterface} config Specifies configuration options for the modal.\n   */\n  public open(\n    component: any,\n    config?: SkyModalConfigurationInterface | any[],\n  ): SkyModalInstance {\n    const modalInstance = new SkyModalInstance();\n\n    if (!SkyModalService.host) {\n      SkyModalService.host = this.#createHostComponent();\n    }\n\n    const params = this.#getConfigFromParameter(config);\n\n    params.providers ||= [];\n    params.providers.push({\n      provide: SkyModalInstance,\n      useValue: modalInstance,\n    });\n\n    if (SkyModalService.host) {\n      SkyModalService.host.instance.open(\n        modalInstance,\n        component,\n        params,\n        this.#environmentInjector,\n      );\n    }\n\n    return modalInstance;\n  }\n\n  #getConfigFromParameter(\n    providersOrConfig: any,\n  ): SkyModalConfigurationInterface {\n    const defaultParams: SkyModalConfigurationInterface = {\n      providers: [],\n      fullPage: false,\n      size: 'medium',\n      tiledBody: false,\n    };\n    let params: SkyModalConfigurationInterface = {};\n    let method: any = undefined;\n\n    // Object Literal Lookup for backwards compatibility.\n    method = {\n      'providers?': Object.assign({}, defaultParams, {\n        providers: providersOrConfig,\n      }),\n      config: Object.assign({}, defaultParams, providersOrConfig),\n    };\n\n    if (Array.isArray(providersOrConfig) === true) {\n      params = method['providers?'];\n    } else {\n      params = method['config'];\n    }\n\n    return params;\n  }\n\n  #createHostComponent(): ComponentRef<SkyModalHostComponent> {\n    const componentRef = this.#dynamicComponentService.createComponent(\n      SkyModalHostComponent,\n      {\n        environmentInjector: this.#environmentInjector,\n        providers: [\n          {\n            provide: SkyModalHostContext,\n            useValue: new SkyModalHostContext({\n              teardownCallback: (): void => {\n                this.dispose();\n              },\n            }),\n          },\n        ],\n      },\n    );\n\n    return componentRef;\n  }\n}\n\n/**\n * A service that launches modals.\n * @internal\n * @deprecated Use `SkyModalService` to open a standalone component instead.\n */\n@Injectable({\n  // Must be 'any' so that the modal component is created in the context of its module's injector.\n  // If set to 'root', the component's dependency injections would only be derived from the root\n  // injector and may lose context if the modal was opened from within a lazy-loaded module.\n  providedIn: 'any',\n})\nexport class SkyModalLegacyService extends SkyModalService {\n  /* istanbul ignore next */\n  constructor(dynamicComponentSvc: SkyDynamicComponentLegacyService) {\n    super(dynamicComponentSvc);\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyModalService } from '../modal/modal.service';\n\nimport { SkyConfirmConfig } from './confirm-config';\nimport { SKY_CONFIRM_CONFIG } from './confirm-config-token';\nimport { SkyConfirmInstance } from './confirm-instance';\nimport { SkyConfirmServiceInterface } from './confirm-service-interface';\nimport { SkyConfirmComponent } from './confirm.component';\n\n/**\n * Launches a dialog.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class SkyConfirmService implements SkyConfirmServiceInterface {\n  #modalService: SkyModalService;\n\n  constructor(modalService: SkyModalService) {\n    this.#modalService = modalService;\n  }\n\n  /**\n   * Opens a dialog using the specified options.\n   * @param config Specifies configuration options for the dialog.\n   */\n  public open(config: SkyConfirmConfig): SkyConfirmInstance {\n    const confirmInstance = new SkyConfirmInstance();\n\n    this.#modalService.open(SkyConfirmComponent, {\n      providers: [\n        {\n          provide: SKY_CONFIRM_CONFIG,\n          useValue: config,\n        },\n        {\n          provide: SkyConfirmInstance,\n          useValue: confirmInstance,\n        },\n      ],\n    });\n\n    return confirmInstance;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { SkyResponsiveHostDirective } from '@skyux/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\n\nimport { SkyModalErrorsService } from './modal-errors.service';\n\n/**\n * Specifies content to display in the modal's footer.\n */\n@Component({\n  hostDirectives: [SkyResponsiveHostDirective],\n  selector: 'sky-modal-footer',\n  templateUrl: './modal-footer.component.html',\n  styleUrls: ['./modal-footer.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  imports: [CommonModule, SkyStatusIndicatorModule],\n})\nexport class SkyModalFooterComponent {\n  protected readonly errorsSvc = inject(SkyModalErrorsService);\n}\n","<div class=\"sky-modal-footer-container\">\n  <div aria-live=\"polite\">\n    @if (errorsSvc.formErrors | async; as formErrors) {\n      @if (formErrors.length > 0) {\n        <div\n          class=\"sky-modal-footer-errors sky-margin-stacked-lg sky-errors-overflow\"\n          tabindex=\"0\"\n        >\n          @for (formError of formErrors; track formError.message) {\n            <sky-status-indicator\n              descriptionType=\"error\"\n              indicatorType=\"danger\"\n              [ngClass]=\"{\n                'sky-margin-stacked-sm':\n                  formErrors.indexOf(formError) < formErrors.length - 1,\n                'footer-error': true\n              }\"\n            >\n              {{ formError.message }}\n            </sky-status-indicator>\n          }\n        </div>\n      }\n    }\n  </div>\n  <ng-content />\n</div>\n","import {\n  Directive,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  inject,\n} from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyConfirmType } from '../confirm/confirm-type';\nimport { SkyConfirmService } from '../confirm/confirm.service';\n\nimport { SkyModalBeforeCloseHandler } from './modal-before-close-handler';\nimport { SkyModalInstance } from './modal-instance';\n\n/**\n * Provides a way to mark a modal as \"dirty\" and displays a confirmation\n * message when a user closes the modal without saving.\n */\n@Directive({\n  standalone: true,\n  // Since this is limited to sky-modal, it should be safe to\n  // leave off the sky prefix.\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'sky-modal[isDirty]',\n})\nexport class SkyModalIsDirtyDirective implements OnInit, OnDestroy {\n  /**\n   * Whether the user edited an input on the modal.\n   * @required\n   */\n  @Input()\n  // This attribute is being applied to the host to support\n  // unit testing this feature.\n  @HostBinding('attr.data-sky-modal-is-dirty')\n  public isDirty = false;\n\n  readonly #ngUnsubscribe = new Subject<void>();\n\n  readonly #modalInstance = inject(SkyModalInstance);\n  readonly #confirmSvc = inject(SkyConfirmService);\n  readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n  public ngOnInit(): void {\n    this.#modalInstance.beforeClose\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((handler) => this.#promptIfDirty(handler));\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  #promptIfDirty(handler: SkyModalBeforeCloseHandler): void {\n    if (\n      this.isDirty &&\n      (handler.closeArgs.reason === 'close' ||\n        handler.closeArgs.reason === 'cancel')\n    ) {\n      this.#resourcesSvc\n        .getStrings({\n          message: 'skyux_modal_dirty_default_message',\n          discardActionText: 'skyux_modal_dirty_default_discard_changes_text',\n          keepActionText: 'skyux_modal_dirty_default_keep_working_text',\n        })\n        .subscribe((textValues) => {\n          const discardAction = 'discard';\n          const keepAction = 'keep';\n\n          this.#confirmSvc\n            .open({\n              message: textValues.message,\n              buttons: [\n                {\n                  action: discardAction,\n                  text: textValues.discardActionText,\n                  styleType: 'primary',\n                },\n                {\n                  action: keepAction,\n                  text: textValues.keepActionText,\n                  styleType: 'link',\n                },\n              ],\n              type: SkyConfirmType.Custom,\n            })\n            .closed.subscribe((args) => {\n              if (args.action === discardAction) {\n                handler.closeModal();\n              }\n            });\n        });\n    } else {\n      handler.closeModal();\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyModalContentComponent } from './modal-content.component';\nimport { SkyModalFooterComponent } from './modal-footer.component';\nimport { SkyModalHeaderComponent } from './modal-header.component';\nimport { SkyModalIsDirtyDirective } from './modal-is-dirty.directive';\nimport { SkyModalComponent } from './modal.component';\n\n@NgModule({\n  imports: [\n    SkyModalComponent,\n    SkyModalContentComponent,\n    SkyModalFooterComponent,\n    SkyModalHeaderComponent,\n    SkyModalIsDirtyDirective,\n  ],\n  exports: [\n    SkyModalComponent,\n    SkyModalContentComponent,\n    SkyModalFooterComponent,\n    SkyModalHeaderComponent,\n    SkyModalIsDirtyDirective,\n  ],\n})\nexport class SkyModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i4","i2","i3","i1.SkyModalService"],"mappings":"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"}