@skyux/modals 14.0.0-alpha.9 → 14.0.0-beta.1

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.
@@ -86,6 +86,8 @@ class SkyModalFixture {
86
86
  clickHeaderCloseButton() {
87
87
  this.#checkModalElement();
88
88
  const closeButton = this.#modalElement.querySelector('.sky-modal .sky-modal-btn-close');
89
+ /* Safety check */
90
+ /* istanbul ignore else */
89
91
  if (closeButton &&
90
92
  window.getComputedStyle(closeButton).display !== 'none') {
91
93
  closeButton.click();
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-modals-testing.mjs","sources":["../../../../../libs/components/modals/testing/src/legacy/modal-fixture.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-button-harness.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-harness.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-testing.controller.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-testing.service.ts","../../../../../libs/components/modals/testing/src/modules/confirm/provide-confirm-testing.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-testing.module.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/modal-testing.controller.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/modal-testing.service.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/provide-modal-testing.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/modal-testing.module.ts","../../../../../libs/components/modals/testing/src/modules/modal/modal-banner-harness.ts","../../../../../libs/components/modals/testing/src/modules/modal/modal-harness.ts","../../../../../libs/components/modals/testing/src/skyux-modals-testing.ts"],"sourcesContent":["import { ComponentFixture } from '@angular/core/testing';\n\n/**\n * Allows interaction with a SKY UX modal component.\n * @deprecated Use `SkyModalHarness` instead.\n * @internal\n */\nexport class SkyModalFixture {\n #modalElement: HTMLElement;\n\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>, skyTestId: string) {\n this.#fixture = fixture;\n const modalElement = document.querySelector(\n 'sky-modal[data-sky-id=\"' + skyTestId + '\"]',\n ) as HTMLElement;\n\n if (!modalElement) {\n throw new Error(\n `No element was found with a \\`data-sky-id\\` value of \"${skyTestId}\".`,\n );\n }\n\n this.#modalElement = modalElement;\n }\n\n /**\n * The modal component's ARIA describedby attribute.\n */\n public get ariaDescribedBy(): string | undefined {\n const modalDialogElement = this.#getModalDialogElement();\n /* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide \"undefined\" */\n const describedByAttribute =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n modalDialogElement.getAttribute('aria-describedby')!;\n return describedByAttribute;\n }\n\n /**\n * The modal component's ARIA labelledby attribute.\n */\n public get ariaLabelledBy(): string | undefined {\n const modalDialogElement = this.#getModalDialogElement();\n /* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide \"undefined\" */\n const labelledByAttribute =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n modalDialogElement.getAttribute('aria-labelledby')!;\n\n return labelledByAttribute;\n }\n\n /**\n * The modal component's role attribute.\n */\n public get ariaRole(): string | undefined {\n const modalDialogElement = this.#getModalDialogElement();\n /* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide \"undefined\" */\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const roleAttribute = modalDialogElement.getAttribute('role')!;\n return roleAttribute;\n }\n\n /**\n * Whether or not the modal is a full page modal.\n */\n public get fullPage(): boolean {\n const modalDivElement = this.getModalDiv();\n return modalDivElement.classList.contains('sky-modal-full-page');\n }\n\n /**\n * The size of the modal.\n */\n public get size(): string | undefined {\n const modalDivElement = this.getModalDiv();\n const possibleSizes = ['small', 'medium', 'large'];\n\n for (const size of possibleSizes) {\n if (modalDivElement.classList.contains('sky-modal-' + size)) {\n return size;\n }\n }\n\n return;\n }\n\n /**\n * Whether or not the modal is set up for tiled content.\n */\n public get tiledBody(): boolean {\n const modalDivElement = this.getModalDiv();\n return modalDivElement.classList.contains('sky-modal-tiled');\n }\n\n /**\n * Clicks the modal header's \"close\" button.\n */\n public clickHeaderCloseButton(): void {\n this.#checkModalElement();\n const closeButton: HTMLElement | null = this.#modalElement.querySelector(\n '.sky-modal .sky-modal-btn-close',\n );\n\n if (\n closeButton &&\n window.getComputedStyle(closeButton).display !== 'none'\n ) {\n closeButton.click();\n this.#fixture.detectChanges();\n } else {\n throw new Error(`No header close button exists.`);\n }\n }\n\n /**\n * Clicks the modal header's \"help\" button.\n */\n public clickHelpButton(): void {\n this.#checkModalElement();\n const helpButton: HTMLElement | null = this.#modalElement.querySelector(\n '.sky-modal .sky-modal-header-buttons button[name=\"help-button\"]',\n );\n\n if (helpButton && window.getComputedStyle(helpButton).display !== 'none') {\n helpButton.click();\n this.#fixture.detectChanges();\n } else {\n throw new Error(`No help button exists.`);\n }\n }\n\n /**\n * Returns the main modal element.\n */\n public getModalDiv(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal');\n }\n\n /**\n * Returns the modal's content element.\n */\n public getModalContentEl(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal-content');\n }\n\n /**\n * Returns the modal's footer element.\n */\n public getModalFooterEl(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal-footer');\n }\n\n /**\n * Returns the modal's header element.\n */\n public getModalHeaderEl(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal-header');\n }\n\n #checkModalElement(): void {\n if (!document.contains(this.#modalElement)) {\n throw new Error('Modal element no longer exists. Was the modal closed?');\n }\n }\n\n #getModalDialogElement(): HTMLElement {\n this.#checkModalElement();\n // We can always know that the dialog element will exist if the modal is open and exists.\n return this.#modalElement.querySelector('.sky-modal-dialog')!;\n }\n}\n","import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyConfirmButtonStyleType } from '@skyux/modals';\n\nimport { SkyConfirmButtonHarnessFilters } from './confirm-button-harness-filters';\n\n/**\n * Harness for interacting with a confirm component in tests.\n */\nexport class SkyConfirmButtonHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-confirm-buttons .sky-btn';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyConfirmButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyConfirmButtonHarnessFilters,\n ): HarnessPredicate<SkyConfirmButtonHarness> {\n return new HarnessPredicate(SkyConfirmButtonHarness, filters)\n .addOption('text', filters.text, async (harness, text) => {\n const buttonText = await harness.getText();\n return await HarnessPredicate.stringMatches(buttonText, text);\n })\n .addOption('styleType', filters.styleType, async (harness, styleType) => {\n const buttonStyleType = await harness.getStyleType();\n return await HarnessPredicate.stringMatches(buttonStyleType, styleType);\n });\n }\n\n /**\n * Clicks the confirm button.\n */\n public async click(): Promise<void> {\n await (await this.host()).click();\n }\n\n /**\n * Gets the button style of the confirm button.\n */\n public async getStyleType(): Promise<SkyConfirmButtonStyleType> {\n const hostEl = await this.host();\n\n if (await hostEl.hasClass('sky-btn-primary')) {\n return 'primary';\n } else if (await hostEl.hasClass('sky-btn-link')) {\n return 'link';\n } else if (await hostEl.hasClass('sky-btn-danger')) {\n return 'danger';\n }\n return 'default';\n }\n\n /**\n * Gets the text content of the confirm button.\n */\n public async getText(): Promise<string> {\n return await (await this.host()).text();\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyConfirmType } from '@skyux/modals';\n\nimport { SkyConfirmButtonHarness } from './confirm-button-harness';\nimport { SkyConfirmButtonHarnessFilters } from './confirm-button-harness-filters';\n\n/**\n * Harness for interacting with a confirm component in tests.\n */\nexport class SkyConfirmHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-confirm';\n\n #getBodyEl = this.locatorForOptional('.sky-confirm-body');\n #getButtons = this.locatorForAll(SkyConfirmButtonHarness);\n #getConfirmEl = this.locatorFor('.sky-confirm');\n #getMessageEl = this.locatorFor('.sky-confirm-message');\n\n /**\n * Clicks a confirm button.\n */\n public async clickCustomButton(\n filters: SkyConfirmButtonHarnessFilters,\n ): Promise<void> {\n const buttons = await this.getCustomButtons(filters);\n\n if (buttons.length > 1) {\n if (filters.text instanceof RegExp) {\n filters.text = filters.text.toString();\n }\n throw new Error(\n `More than one button matches the filter(s): ${JSON.stringify(\n filters,\n )}.`,\n );\n }\n await buttons[0].click();\n }\n\n /**\n * Clicks a confirm button.\n */\n public async clickOkButton(): Promise<void> {\n const type = await this.getType();\n\n if (type === SkyConfirmType.Custom) {\n throw new Error('Cannot click OK button on a confirm of type custom.');\n }\n const buttons = await this.#getButtons();\n await buttons[0].click();\n }\n\n /**\n * Gets the body of the confirm component.\n */\n public async getBodyText(): Promise<string | undefined> {\n return await (await this.#getBodyEl())?.text();\n }\n\n /**\n * Gets a specific confirm custom button based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getCustomButton(\n filter: SkyConfirmButtonHarnessFilters,\n ): Promise<SkyConfirmButtonHarness> {\n const confirmType = await this.getType();\n\n if (confirmType !== SkyConfirmType.Custom) {\n throw new Error(\n 'Cannot get a custom button for non-custom confirm modals.',\n );\n }\n\n return await this.locatorFor(SkyConfirmButtonHarness.with(filter))();\n }\n\n /**\n * Gets an array of confirm custom buttons based on the filter criteria.\n * If no filter is provided, returns all confirm custom buttons.\n * @param filters The optional filter criteria.\n */\n public async getCustomButtons(\n filters?: SkyConfirmButtonHarnessFilters,\n ): Promise<SkyConfirmButtonHarness[]> {\n const confirmType = await this.getType();\n\n if (confirmType !== SkyConfirmType.Custom) {\n throw new Error(\n 'Cannot get custom buttons for non-custom confirm modals.',\n );\n }\n\n return await this.locatorForAll(\n SkyConfirmButtonHarness.with(filters || {}),\n )();\n }\n\n /**\n * Gets the message of the confirm component.\n */\n public async getMessageText(): Promise<string> {\n return await (await this.#getMessageEl()).text();\n }\n\n /**\n * Gets the type of the confirm component.\n */\n public async getType(): Promise<SkyConfirmType> {\n const confirmEl = await this.#getConfirmEl();\n if (await confirmEl.hasClass('sky-confirm-type-ok')) {\n return SkyConfirmType.OK;\n }\n\n return SkyConfirmType.Custom;\n }\n\n /**\n * Whether the whitespace is preserved on the confirm component.\n */\n public async isWhiteSpacePreserved(): Promise<boolean> {\n return await (\n await this.#getMessageEl()\n ).hasClass('sky-confirm-preserve-white-space');\n }\n}\n","import { SkyConfirmCloseEventArgs, SkyConfirmConfig } from '@skyux/modals';\n\n/**\n * A controller to be injected into tests, which mocks the confirm service\n * and handles interactions with confirm dialogs.\n */\nexport abstract class SkyConfirmTestingController {\n /**\n * Closes the confirm dialog with the \"cancel\" action.\n */\n public abstract cancel(): void;\n /**\n * Throws if a confirm dialog is open.\n */\n public abstract expectNone(): void;\n /**\n * Throws if the open confirm dialog does not match the provided configuration.\n * @param config\n */\n public abstract expectOpen(config: SkyConfirmConfig): void;\n /**\n * Closes the confirm dialog with the provided action.\n */\n public abstract close(args: SkyConfirmCloseEventArgs): void;\n /**\n * Closes the confirm dialog with the \"ok\" action.\n */\n public abstract ok(): void;\n}\n","import {\n SkyConfirmButtonConfig,\n SkyConfirmCloseEventArgs,\n SkyConfirmConfig,\n SkyConfirmInstance,\n SkyConfirmServiceInterface,\n SkyConfirmType,\n} from '@skyux/modals';\n\nimport { SkyConfirmTestingController } from './confirm-testing.controller';\n\ninterface TestSubject {\n buttons: SkyConfirmButtonConfig[];\n config: SkyConfirmConfig;\n instance: SkyConfirmInstance;\n}\n\nfunction assertConfirmOpen(\n value: TestSubject | undefined,\n): asserts value is TestSubject {\n if (value === undefined) {\n throw new Error('A confirm dialog is expected to be open but is closed.');\n }\n\n return;\n}\n\nfunction assertConfirmClosed(\n value: TestSubject | undefined,\n): asserts value is undefined {\n if (value !== undefined) {\n throw new Error('A confirm dialog is expected to be closed but is open.');\n }\n\n return;\n}\n\nfunction isButtonConfigArray(val: unknown): val is SkyConfirmButtonConfig[] {\n return (\n Array.isArray(val) && (val.length === 0 || val[0].action !== undefined)\n );\n}\n\nfunction buttonConfigMatches(\n actual: SkyConfirmButtonConfig,\n expected: SkyConfirmButtonConfig,\n): boolean {\n return (\n expected.action === actual.action &&\n expected.text === actual.text &&\n expected.styleType === actual.styleType\n );\n}\n\n/**\n * @internal\n */\nexport class SkyConfirmTestingService\n extends SkyConfirmTestingController\n implements SkyConfirmServiceInterface\n{\n #testSubject: TestSubject | undefined;\n\n public cancel(): void {\n this.close({ action: 'cancel' });\n }\n\n public ok(): void {\n this.close({ action: 'ok' });\n }\n\n public close(args: SkyConfirmCloseEventArgs): void {\n assertConfirmOpen(this.#testSubject);\n\n const isActionPermitted = this.#testSubject?.buttons.some(\n (b) => b.action === args.action,\n );\n\n if (isActionPermitted) {\n this.#testSubject.instance.close(args);\n this.#testSubject = undefined;\n } else {\n throw new Error(\n `The confirm dialog does not have a button configured for the \"${args.action}\" action.`,\n );\n }\n }\n\n public expectNone(): void {\n assertConfirmClosed(this.#testSubject);\n }\n\n public expectOpen(expectedConfig: SkyConfirmConfig): void {\n assertConfirmOpen(this.#testSubject);\n\n const actualConfig = this.#testSubject.config;\n\n for (const [key, expectedValue] of Object.entries(expectedConfig)) {\n const k = key as keyof typeof expectedConfig;\n const actualValue = actualConfig[k];\n\n if (\n isButtonConfigArray(expectedValue) &&\n isButtonConfigArray(actualValue)\n ) {\n if (expectedValue.length !== actualValue.length) throwDetailedError();\n\n expectedValue.forEach((expectedButton, index) => {\n if (!buttonConfigMatches(expectedButton, actualValue[index])) {\n throwDetailedError();\n }\n });\n } else if (actualValue !== expectedValue) {\n throwDetailedError();\n }\n }\n\n function throwDetailedError(): never {\n throw new Error(`Expected a confirm dialog to be open with a specific configuration.\nExpected:\n${JSON.stringify(expectedConfig, undefined, 2)}\nActual:\n${JSON.stringify(actualConfig, undefined, 2)}\n`);\n }\n }\n\n public open(config: SkyConfirmConfig): SkyConfirmInstance {\n assertConfirmClosed(this.#testSubject);\n\n const instance = new SkyConfirmInstance();\n const testSubject: TestSubject = {\n buttons: [],\n config,\n instance,\n };\n\n switch (config.type) {\n case SkyConfirmType.Custom:\n config.buttons?.forEach((b) => {\n testSubject.buttons.push({ action: b.action, text: b.text });\n });\n break;\n\n case SkyConfirmType.OK:\n default:\n testSubject.buttons.push({ action: 'ok', text: 'Ok' });\n testSubject.buttons.push({ action: 'cancel', text: 'Cancel' });\n break;\n }\n\n this.#testSubject = testSubject;\n\n return instance;\n }\n}\n","import { Provider } from '@angular/core';\nimport { SkyConfirmService } from '@skyux/modals';\n\nimport { SkyConfirmTestingController } from './confirm-testing.controller';\nimport { SkyConfirmTestingService } from './confirm-testing.service';\n\n/**\n * @internal\n */\nexport function provideConfirmTesting(): Provider[] {\n return [\n SkyConfirmTestingService,\n {\n provide: SkyConfirmService,\n useExisting: SkyConfirmTestingService,\n },\n {\n provide: SkyConfirmTestingController,\n useExisting: SkyConfirmTestingService,\n },\n ];\n}\n","import { NgModule } from '@angular/core';\n\nimport { provideConfirmTesting } from './provide-confirm-testing';\n\n/**\n * Configures the `SkyConfirmTestingController` as the backend for the `SkyConfirmService`.\n */\n@NgModule({\n providers: [provideConfirmTesting()],\n})\nexport class SkyConfirmTestingModule {}\n","import { Type } from '@angular/core';\nimport { SkyModalCloseArgs } from '@skyux/modals';\n\n/**\n * A controller to be injected into tests, which mocks the modal service\n * and handles interactions with modal instances. For testing interactions\n * with the modal component itself, use the `SkyModalHarness`.\n */\nexport abstract class SkyModalTestingController {\n /**\n * Closes the topmost modal with the provided arguments.\n * @param args Arguments to pass to the modal's close event.\n */\n public abstract closeTopModal(args?: SkyModalCloseArgs): void;\n\n /**\n * Throws if the provided value does not match the number of open modals.\n */\n public abstract expectCount(value: number): void;\n\n /**\n * Throws if modals are open.\n */\n public abstract expectNone(): void;\n\n /**\n * Throws if the given criteria does not match the topmost open modal.\n */\n public abstract expectOpen<TComponent>(component: Type<TComponent>): void;\n}\n","import { Injectable, OnDestroy, StaticProvider, Type } from '@angular/core';\nimport {\n SkyModalCloseArgs,\n SkyModalConfigurationInterface,\n SkyModalInstance,\n SkyModalServiceInterface,\n} from '@skyux/modals';\n\nimport { SkyModalTestingController } from './modal-testing.controller';\n\ninterface TestSubject<T = unknown> {\n component: Type<T>;\n config: SkyModalConfigurationInterface | StaticProvider[] | undefined;\n instance: SkyModalInstance;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalTestingService\n extends SkyModalTestingController\n implements OnDestroy, SkyModalServiceInterface\n{\n readonly #modals = new Map<SkyModalInstance, TestSubject>();\n\n public ngOnDestroy(): void {\n for (const instance of this.#modals.keys()) {\n instance.close();\n }\n }\n\n public closeTopModal(args?: SkyModalCloseArgs): void {\n const modal = this.#getTopmostModal();\n if (!modal) {\n throw new Error(\n 'Expected to close the topmost modal, but no modals are open.',\n );\n }\n\n modal.instance.close(args?.data, args?.reason);\n }\n\n public expectCount(value: number): void {\n const count = this.#modals.size;\n if (count !== value) {\n throw new Error(\n `Expected ${value} open ${value === 1 ? 'modal' : 'modals'}, but ${count} ${count === 1 ? 'is' : 'are'} open.`,\n );\n }\n }\n\n public expectNone(): void {\n const count = this.#modals.size;\n if (count > 0) {\n throw new Error(\n `Expected no modals to be open, but there ${count === 1 ? 'is' : 'are'} ${count} open.`,\n );\n }\n }\n\n public expectOpen<TComponent>(component: Type<TComponent>): void {\n const modal = this.#getTopmostModal();\n if (!modal) {\n throw new Error(\n 'A modal is expected to be open, but no modals are open.',\n );\n }\n\n if (modal.component !== component) {\n throw new Error(\n `Expected the topmost modal to be of type ${component.name}, but it is of type ${modal.component.name}.`,\n );\n }\n }\n\n public open<TComponent>(\n component: Type<TComponent>,\n config?: SkyModalConfigurationInterface | StaticProvider[],\n ): SkyModalInstance {\n const instance = new SkyModalInstance();\n\n instance.closed.subscribe(() => {\n this.#modals.delete(instance);\n });\n\n this.#modals.set(instance, { component, config, instance });\n\n return instance;\n }\n\n #getTopmostModal(): TestSubject | undefined {\n return Array.from(this.#modals.values()).pop();\n }\n}\n","import { Provider } from '@angular/core';\nimport { SkyModalService } from '@skyux/modals';\n\nimport { SkyModalTestingController } from './modal-testing.controller';\nimport { SkyModalTestingService } from './modal-testing.service';\n\n/**\n * @internal\n */\nexport function provideModalTesting(): Provider[] {\n return [\n SkyModalTestingService,\n {\n provide: SkyModalService,\n useExisting: SkyModalTestingService,\n },\n {\n provide: SkyModalTestingController,\n useExisting: SkyModalTestingService,\n },\n ];\n}\n","import { NgModule } from '@angular/core';\n\nimport { provideModalTesting } from './provide-modal-testing';\n\n/**\n * Configures the `SkyModalTestingController` as the implementation for the `SkyModalService`.\n */\n@NgModule({\n providers: [provideModalTesting()],\n})\nexport class SkyModalTestingModule {}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness for interacting with a modal banner component in tests.\n */\nexport class SkyModalBannerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-modal-banner';\n\n /**\n * Gets the image source URL from the banner's background image style.\n * Returns `null` if no image source is set.\n */\n public async getImageSrc(): Promise<string | null> {\n const backgroundImage = await (\n await this.host()\n ).getCssValue('background-image');\n\n if (!backgroundImage || backgroundImage === 'none') {\n return null;\n }\n\n // The component sets background-image as url(\"${imageSrc}\") with internal\n // double quotes escaped as \\\". Strip the url(\"...\") wrapper and unescape.\n const match = backgroundImage.match(/^url\\(\"([\\s\\S]*)\"\\)$/);\n if (!match) {\n return null;\n }\n\n return match[1].replaceAll('\\\\\"', '\"');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyModalBannerHarness } from './modal-banner-harness';\nimport { SkyModalHarnessFilters } from './modal-harness-filters';\n\n/**\n * Harness for interacting with a modal component in tests.\n */\nexport class SkyModalHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-modal';\n\n #getModal = this.locatorFor('.sky-modal');\n #getModalDialog = this.locatorFor('.sky-modal-dialog');\n #getModalHeading = this.locatorFor('.sky-modal-heading');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyModalHarness` that meets certain criteria\n */\n public static with(\n filters: SkyModalHarnessFilters,\n ): HarnessPredicate<SkyModalHarness> {\n return SkyModalHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the modal banner harness, or `null` if no banner is present.\n */\n public async getBanner(): Promise<SkyModalBannerHarness | null> {\n return await this.locatorForOptional(SkyModalBannerHarness)();\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the aria-describedBy property of the modal.\n * @deprecated\n */\n public async getAriaDescribedBy(): Promise<string | null> {\n return await (\n await this.#getModalDialog()\n ).getAttribute('aria-describedby');\n }\n\n /**\n * Gets the aria-labelledBy property of the modal.\n * @deprecated\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (await this.#getModalDialog()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the role of the modal.\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.#getModalDialog()).getAttribute('role');\n }\n\n /**\n * Gets the modal's heading text.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await (await this.#getModalHeading()).text();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the modal size.\n */\n public async getSize(): Promise<string> {\n if (await this.isFullPage()) {\n throw new Error(\n 'Size cannot be determined because size property is overridden when modal is full page',\n );\n }\n\n const modal = await this.#getModal();\n\n if (await modal.hasClass('sky-modal-small')) {\n return 'small';\n }\n\n if (await modal.hasClass('sky-modal-large')) {\n return 'large';\n }\n\n return 'medium';\n }\n\n /**\n * Gets the wrapper class of the modal.\n */\n public async getWrapperClass(): Promise<string | undefined> {\n return await (await this.host()).getProperty('className');\n }\n\n /**\n * Whether the modal is full page.\n */\n public async isFullPage(): Promise<boolean> {\n const modal = this.#getModal();\n return await (await modal).hasClass('sky-modal-full-page');\n }\n\n /**\n * Whether the modal has {@link SkyModalIsDirtyDirective.isDirty} set to dirty.\n */\n public async isDirty(): Promise<boolean> {\n const modalHost = await this.host();\n const isDirtyAttribute = await modalHost.getAttribute(\n 'data-sky-modal-is-dirty',\n );\n return isDirtyAttribute === 'true';\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAEA;;;;AAIG;MACU,eAAe,CAAA;AAC1B,IAAA,aAAa;AAEb,IAAA,QAAQ;IAER,WAAA,CAAY,OAAkC,EAAE,SAAiB,EAAA;AAC/D,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CACzC,yBAAyB,GAAG,SAAS,GAAG,IAAI,CAC9B;QAEhB,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CACb,yDAAyD,SAAS,CAAA,EAAA,CAAI,CACvE;QACH;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;IACnC;AAEA;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;;AAExD,QAAA,MAAM,oBAAoB;;AAExB,QAAA,kBAAkB,CAAC,YAAY,CAAC,kBAAkB,CAAE;AACtD,QAAA,OAAO,oBAAoB;IAC7B;AAEA;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;;AAExD,QAAA,MAAM,mBAAmB;;AAEvB,QAAA,kBAAkB,CAAC,YAAY,CAAC,iBAAiB,CAAE;AAErD,QAAA,OAAO,mBAAmB;IAC5B;AAEA;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE;;;QAGxD,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAE;AAC9D,QAAA,OAAO,aAAa;IACtB;AAEA;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE;QAC1C,OAAO,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAClE;AAEA;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE;QAC1C,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;AAElD,QAAA,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;YAChC,IAAI,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE;AAC3D,gBAAA,OAAO,IAAI;YACb;QACF;QAEA;IACF;AAEA;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE;QAC1C,OAAO,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC9D;AAEA;;AAEG;IACI,sBAAsB,GAAA;QAC3B,IAAI,CAAC,kBAAkB,EAAE;QACzB,MAAM,WAAW,GAAuB,IAAI,CAAC,aAAa,CAAC,aAAa,CACtE,iCAAiC,CAClC;AAED,QAAA,IACE,WAAW;YACX,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,OAAO,KAAK,MAAM,EACvD;YACA,WAAW,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC/B;aAAO;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,8BAAA,CAAgC,CAAC;QACnD;IACF;AAEA;;AAEG;IACI,eAAe,GAAA;QACpB,IAAI,CAAC,kBAAkB,EAAE;QACzB,MAAM,UAAU,GAAuB,IAAI,CAAC,aAAa,CAAC,aAAa,CACrE,iEAAiE,CAClE;AAED,QAAA,IAAI,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE;YACxE,UAAU,CAAC,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC/B;aAAO;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC;QAC3C;IACF;AAEA;;AAEG;IACI,WAAW,GAAA;QAChB,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;IACvD;AAEA;;AAEG;IACI,iBAAiB,GAAA;QACtB,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC;IAC/D;AAEA;;AAEG;IACI,gBAAgB,GAAA;QACrB,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;IAC9D;AAEA;;AAEG;IACI,gBAAgB,GAAA;QACrB,IAAI,CAAC,kBAAkB,EAAE;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;IAC9D;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC1C,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;QAC1E;IACF;IAEA,sBAAsB,GAAA;QACpB,IAAI,CAAC,kBAAkB,EAAE;;QAEzB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAE;IAC/D;AACD;;AC1KD;;AAEG;AACG,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AAC3D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,+BAA+B,CAAC;AAE7D;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAuC,EAAA;AAEvC,QAAA,OAAO,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,OAAO;AACzD,aAAA,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,OAAO,EAAE,IAAI,KAAI;AACvD,YAAA,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;YAC1C,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC;AAC/D,QAAA,CAAC;AACA,aAAA,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,OAAO,EAAE,SAAS,KAAI;AACtE,YAAA,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE;YACpD,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,eAAe,EAAE,SAAS,CAAC;AACzE,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;IACnC;AAEA;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;QAEhC,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC5C,YAAA,OAAO,SAAS;QAClB;aAAO,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAChD,YAAA,OAAO,MAAM;QACf;aAAO,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AAClD,YAAA,OAAO,QAAQ;QACjB;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;QAClB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;IACzC;;;ACtDF;;AAEG;AACG,MAAO,iBAAkB,SAAQ,mBAAmB,CAAA;AACxD;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,aAAa,CAAC;AAE3C,IAAA,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC;AACzD,IAAA,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC;AACzD,IAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AAC/C,IAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;AAEvD;;AAEG;IACI,MAAM,iBAAiB,CAC5B,OAAuC,EAAA;QAEvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAEpD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,IAAI,OAAO,CAAC,IAAI,YAAY,MAAM,EAAE;gBAClC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;YACxC;AACA,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,4CAAA,EAA+C,IAAI,CAAC,SAAS,CAC3D,OAAO,CACR,CAAA,CAAA,CAAG,CACL;QACH;AACA,QAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;IAC1B;AAEA;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AAEjC,QAAA,IAAI,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;QACxE;AACA,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AACxC,QAAA,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;IAC1B;AAEA;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;QACtB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE;IAChD;AAEA;;;AAGG;IACI,MAAM,eAAe,CAC1B,MAAsC,EAAA;AAEtC,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AAExC,QAAA,IAAI,WAAW,KAAK,cAAc,CAAC,MAAM,EAAE;AACzC,YAAA,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D;QACH;AAEA,QAAA,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;IACtE;AAEA;;;;AAIG;IACI,MAAM,gBAAgB,CAC3B,OAAwC,EAAA;AAExC,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AAExC,QAAA,IAAI,WAAW,KAAK,cAAc,CAAC,MAAM,EAAE;AACzC,YAAA,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D;QACH;AAEA,QAAA,OAAO,MAAM,IAAI,CAAC,aAAa,CAC7B,uBAAuB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAC5C,EAAE;IACL;AAEA;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;QACzB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE;IAClD;AAEA;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QAC5C,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YACnD,OAAO,cAAc,CAAC,EAAE;QAC1B;QAEA,OAAO,cAAc,CAAC,MAAM;IAC9B;AAEA;;AAEG;AACI,IAAA,MAAM,qBAAqB,GAAA;AAChC,QAAA,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,aAAa,EAAE,EAC1B,QAAQ,CAAC,kCAAkC,CAAC;IAChD;;;AC5HF;;;AAGG;MACmB,2BAA2B,CAAA;AAsBhD;;ACXD,SAAS,iBAAiB,CACxB,KAA8B,EAAA;AAE9B,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IAEA;AACF;AAEA,SAAS,mBAAmB,CAC1B,KAA8B,EAAA;AAE9B,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IAEA;AACF;AAEA,SAAS,mBAAmB,CAAC,GAAY,EAAA;IACvC,QACE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;AAE3E;AAEA,SAAS,mBAAmB,CAC1B,MAA8B,EAC9B,QAAgC,EAAA;AAEhC,IAAA,QACE,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;AACjC,QAAA,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;AAC7B,QAAA,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;AAE3C;AAEA;;AAEG;AACG,MAAO,wBACX,SAAQ,2BAA2B,CAAA;AAGnC,IAAA,YAAY;IAEL,MAAM,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAClC;IAEO,EAAE,GAAA;QACP,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9B;AAEO,IAAA,KAAK,CAAC,IAA8B,EAAA;AACzC,QAAA,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;QAEpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CACvD,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAChC;QAED,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACtC,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;QAC/B;aAAO;YACL,MAAM,IAAI,KAAK,CACb,CAAA,8DAAA,EAAiE,IAAI,CAAC,MAAM,CAAA,SAAA,CAAW,CACxF;QACH;IACF;IAEO,UAAU,GAAA;AACf,QAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;IACxC;AAEO,IAAA,UAAU,CAAC,cAAgC,EAAA;AAChD,QAAA,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;AAEpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;AAE7C,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YACjE,MAAM,CAAC,GAAG,GAAkC;AAC5C,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;YAEnC,IACE,mBAAmB,CAAC,aAAa,CAAC;AAClC,gBAAA,mBAAmB,CAAC,WAAW,CAAC,EAChC;AACA,gBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;AAAE,oBAAA,kBAAkB,EAAE;gBAErE,aAAa,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,KAAI;oBAC9C,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AAC5D,wBAAA,kBAAkB,EAAE;oBACtB;AACF,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,WAAW,KAAK,aAAa,EAAE;AACxC,gBAAA,kBAAkB,EAAE;YACtB;QACF;AAEA,QAAA,SAAS,kBAAkB,GAAA;YACzB,MAAM,IAAI,KAAK,CAAC,CAAA;;EAEpB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;;EAE5C,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3C,CAAA,CAAC;QACE;IACF;AAEO,IAAA,IAAI,CAAC,MAAwB,EAAA;AAClC,QAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;AAEtC,QAAA,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE;AACzC,QAAA,MAAM,WAAW,GAAgB;AAC/B,YAAA,OAAO,EAAE,EAAE;YACX,MAAM;YACN,QAAQ;SACT;AAED,QAAA,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,cAAc,CAAC,MAAM;gBACxB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;AAC5B,oBAAA,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9D,gBAAA,CAAC,CAAC;gBACF;YAEF,KAAK,cAAc,CAAC,EAAE;AACtB,YAAA;AACE,gBAAA,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACtD,gBAAA,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC9D;;AAGJ,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;AAE/B,QAAA,OAAO,QAAQ;IACjB;AACD;;ACrJD;;AAEG;SACa,qBAAqB,GAAA;IACnC,OAAO;QACL,wBAAwB;AACxB,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,wBAAwB;AACtC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,WAAW,EAAE,wBAAwB;AACtC,SAAA;KACF;AACH;;ACjBA;;AAEG;MAIU,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAvB,uBAAuB,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,SAAA,EAFvB,CAAC,qBAAqB,EAAE,CAAC,EAAA,CAAA,CAAA;;2FAEzB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE,CAAC,qBAAqB,EAAE,CAAC;AACrC,iBAAA;;;ACND;;;;AAIG;MACmB,yBAAyB,CAAA;AAqB9C;;ACbD;;AAEG;AAEG,MAAO,sBACX,SAAQ,yBAAyB,CAAA;AAGxB,IAAA,OAAO,GAAG,IAAI,GAAG,EAAiC;IAEpD,WAAW,GAAA;QAChB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;YAC1C,QAAQ,CAAC,KAAK,EAAE;QAClB;IACF;AAEO,IAAA,aAAa,CAAC,IAAwB,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACrC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D;QACH;AAEA,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IAChD;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAC/B,QAAA,IAAI,KAAK,KAAK,KAAK,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,SAAA,EAAY,KAAK,CAAA,MAAA,EAAS,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA,EAAI,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAA,MAAA,CAAQ,CAC/G;QACH;IACF;IAEO,UAAU,GAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAC/B,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CACb,4CAA4C,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK,CAAA,MAAA,CAAQ,CACxF;QACH;IACF;AAEO,IAAA,UAAU,CAAa,SAA2B,EAAA;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACrC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D;QACH;AAEA,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,yCAAA,EAA4C,SAAS,CAAC,IAAI,CAAA,oBAAA,EAAuB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAA,CAAA,CAAG,CACzG;QACH;IACF;IAEO,IAAI,CACT,SAA2B,EAC3B,MAA0D,EAAA;AAE1D,QAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE;AAEvC,QAAA,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAE3D,QAAA,OAAO,QAAQ;IACjB;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE;IAChD;8GAzEW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACbD;;AAEG;SACa,mBAAmB,GAAA;IACjC,OAAO;QACL,sBAAsB;AACtB,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,WAAW,EAAE,sBAAsB;AACpC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,WAAW,EAAE,sBAAsB;AACpC,SAAA;KACF;AACH;;ACjBA;;AAEG;MAIU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAArB,qBAAqB,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,SAAA,EAFrB,CAAC,mBAAmB,EAAE,CAAC,EAAA,CAAA,CAAA;;2FAEvB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACnC,iBAAA;;;ACPD;;AAEG;AACG,MAAO,qBAAsB,SAAQ,mBAAmB,CAAA;AAC5D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,kBAAkB,CAAC;AAEhD;;;AAGG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,MAAM,eAAe,GAAG,MAAM,CAC5B,MAAM,IAAI,CAAC,IAAI,EAAE,EACjB,WAAW,CAAC,kBAAkB,CAAC;AAEjC,QAAA,IAAI,CAAC,eAAe,IAAI,eAAe,KAAK,MAAM,EAAE;AAClD,YAAA,OAAO,IAAI;QACb;;;QAIA,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAC3D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC;IACxC;;;ACzBF;;AAEG;AACG,MAAO,eAAgB,SAAQ,mBAAmB,CAAA;AACtD;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,WAAW,CAAC;AAEzC,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AACzC,IAAA,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;AACtD,IAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAExD;;;AAGG;IACI,OAAO,IAAI,CAChB,OAA+B,EAAA;AAE/B,QAAA,OAAO,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC;IACvD;AAEA;;AAEG;AACI,IAAA,MAAM,SAAS,GAAA;QACpB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,EAAE;IAC/D;AAEA;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;QAC1B,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;IAC7C;AAEA;;;AAGG;AACI,IAAA,MAAM,kBAAkB,GAAA;AAC7B,QAAA,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,eAAe,EAAE,EAC5B,YAAY,CAAC,kBAAkB,CAAC;IACpC;AAEA;;;AAGG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;IAC7E;AAEA;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC;IAClE;AAEA;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;QACzB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE;IACrD;AAEA;;AAEG;AACI,IAAA,MAAM,qBAAqB,GAAA;QAChC,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,iBAAiB,EAAE;IAChE;AAEA;;AAEG;AACI,IAAA,MAAM,mBAAmB,GAAA;QAC9B,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,EAAE;IAC9D;AAEA;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF;QACH;AAEA,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;QAEpC,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC3C,YAAA,OAAO,OAAO;QAChB;QAEA,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC3C,YAAA,OAAO,OAAO;QAChB;AAEA,QAAA,OAAO,QAAQ;IACjB;AAEA;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC;IAC3D;AAEA;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,OAAO,MAAM,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC;IAC5D;AAEA;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE;QACnC,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,YAAY,CACnD,yBAAyB,CAC1B;QACD,OAAO,gBAAgB,KAAK,MAAM;IACpC;AAEA,IAAA,MAAM,cAAc,GAAA;QAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;QAErE,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,OAAO;QAChB;AAEA,QAAA,MAAM,KAAK,CAAC,uBAAuB,CAAC;IACtC;;;ACnJF;;AAEG;;;;"}
1
+ {"version":3,"file":"skyux-modals-testing.mjs","sources":["../../../../../libs/components/modals/testing/src/legacy/modal-fixture.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-button-harness.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-harness.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-testing.controller.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-testing.service.ts","../../../../../libs/components/modals/testing/src/modules/confirm/provide-confirm-testing.ts","../../../../../libs/components/modals/testing/src/modules/confirm/confirm-testing.module.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/modal-testing.controller.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/modal-testing.service.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/provide-modal-testing.ts","../../../../../libs/components/modals/testing/src/modules/modal/controller/modal-testing.module.ts","../../../../../libs/components/modals/testing/src/modules/modal/modal-banner-harness.ts","../../../../../libs/components/modals/testing/src/modules/modal/modal-harness.ts","../../../../../libs/components/modals/testing/src/skyux-modals-testing.ts"],"sourcesContent":["import { ComponentFixture } from '@angular/core/testing';\n\n/**\n * Allows interaction with a SKY UX modal component.\n * @deprecated Use `SkyModalHarness` instead.\n * @internal\n */\nexport class SkyModalFixture {\n #modalElement: HTMLElement;\n\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>, skyTestId: string) {\n this.#fixture = fixture;\n const modalElement = document.querySelector(\n 'sky-modal[data-sky-id=\"' + skyTestId + '\"]',\n ) as HTMLElement;\n\n if (!modalElement) {\n throw new Error(\n `No element was found with a \\`data-sky-id\\` value of \"${skyTestId}\".`,\n );\n }\n\n this.#modalElement = modalElement;\n }\n\n /**\n * The modal component's ARIA describedby attribute.\n */\n public get ariaDescribedBy(): string | undefined {\n const modalDialogElement = this.#getModalDialogElement();\n /* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide \"undefined\" */\n const describedByAttribute =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n modalDialogElement.getAttribute('aria-describedby')!;\n return describedByAttribute;\n }\n\n /**\n * The modal component's ARIA labelledby attribute.\n */\n public get ariaLabelledBy(): string | undefined {\n const modalDialogElement = this.#getModalDialogElement();\n /* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide \"undefined\" */\n const labelledByAttribute =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n modalDialogElement.getAttribute('aria-labelledby')!;\n\n return labelledByAttribute;\n }\n\n /**\n * The modal component's role attribute.\n */\n public get ariaRole(): string | undefined {\n const modalDialogElement = this.#getModalDialogElement();\n /* Non-null assertion as our component has a default for if the user does not provide this attribute or if they provide \"undefined\" */\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const roleAttribute = modalDialogElement.getAttribute('role')!;\n return roleAttribute;\n }\n\n /**\n * Whether or not the modal is a full page modal.\n */\n public get fullPage(): boolean {\n const modalDivElement = this.getModalDiv();\n return modalDivElement.classList.contains('sky-modal-full-page');\n }\n\n /**\n * The size of the modal.\n */\n public get size(): string | undefined {\n const modalDivElement = this.getModalDiv();\n const possibleSizes = ['small', 'medium', 'large'];\n\n for (const size of possibleSizes) {\n if (modalDivElement.classList.contains('sky-modal-' + size)) {\n return size;\n }\n }\n\n return;\n }\n\n /**\n * Whether or not the modal is set up for tiled content.\n */\n public get tiledBody(): boolean {\n const modalDivElement = this.getModalDiv();\n return modalDivElement.classList.contains('sky-modal-tiled');\n }\n\n /**\n * Clicks the modal header's \"close\" button.\n */\n public clickHeaderCloseButton(): void {\n this.#checkModalElement();\n const closeButton: HTMLElement | null = this.#modalElement.querySelector(\n '.sky-modal .sky-modal-btn-close',\n );\n\n /* Safety check */\n /* istanbul ignore else */\n if (\n closeButton &&\n window.getComputedStyle(closeButton).display !== 'none'\n ) {\n closeButton.click();\n this.#fixture.detectChanges();\n } else {\n throw new Error(`No header close button exists.`);\n }\n }\n\n /**\n * Clicks the modal header's \"help\" button.\n */\n public clickHelpButton(): void {\n this.#checkModalElement();\n const helpButton: HTMLElement | null = this.#modalElement.querySelector(\n '.sky-modal .sky-modal-header-buttons button[name=\"help-button\"]',\n );\n\n if (helpButton && window.getComputedStyle(helpButton).display !== 'none') {\n helpButton.click();\n this.#fixture.detectChanges();\n } else {\n throw new Error(`No help button exists.`);\n }\n }\n\n /**\n * Returns the main modal element.\n */\n public getModalDiv(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal');\n }\n\n /**\n * Returns the modal's content element.\n */\n public getModalContentEl(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal-content');\n }\n\n /**\n * Returns the modal's footer element.\n */\n public getModalFooterEl(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal-footer');\n }\n\n /**\n * Returns the modal's header element.\n */\n public getModalHeaderEl(): any {\n this.#checkModalElement();\n return this.#modalElement.querySelector('.sky-modal-header');\n }\n\n #checkModalElement(): void {\n if (!document.contains(this.#modalElement)) {\n throw new Error('Modal element no longer exists. Was the modal closed?');\n }\n }\n\n #getModalDialogElement(): HTMLElement {\n this.#checkModalElement();\n // We can always know that the dialog element will exist if the modal is open and exists.\n return this.#modalElement.querySelector('.sky-modal-dialog')!;\n }\n}\n","import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyConfirmButtonStyleType } from '@skyux/modals';\n\nimport { SkyConfirmButtonHarnessFilters } from './confirm-button-harness-filters';\n\n/**\n * Harness for interacting with a confirm component in tests.\n */\nexport class SkyConfirmButtonHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-confirm-buttons .sky-btn';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyConfirmButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyConfirmButtonHarnessFilters,\n ): HarnessPredicate<SkyConfirmButtonHarness> {\n return new HarnessPredicate(SkyConfirmButtonHarness, filters)\n .addOption('text', filters.text, async (harness, text) => {\n const buttonText = await harness.getText();\n return await HarnessPredicate.stringMatches(buttonText, text);\n })\n .addOption('styleType', filters.styleType, async (harness, styleType) => {\n const buttonStyleType = await harness.getStyleType();\n return await HarnessPredicate.stringMatches(buttonStyleType, styleType);\n });\n }\n\n /**\n * Clicks the confirm button.\n */\n public async click(): Promise<void> {\n await (await this.host()).click();\n }\n\n /**\n * Gets the button style of the confirm button.\n */\n public async getStyleType(): Promise<SkyConfirmButtonStyleType> {\n const hostEl = await this.host();\n\n if (await hostEl.hasClass('sky-btn-primary')) {\n return 'primary';\n } else if (await hostEl.hasClass('sky-btn-link')) {\n return 'link';\n } else if (await hostEl.hasClass('sky-btn-danger')) {\n return 'danger';\n }\n return 'default';\n }\n\n /**\n * Gets the text content of the confirm button.\n */\n public async getText(): Promise<string> {\n return await (await this.host()).text();\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyConfirmType } from '@skyux/modals';\n\nimport { SkyConfirmButtonHarness } from './confirm-button-harness';\nimport { SkyConfirmButtonHarnessFilters } from './confirm-button-harness-filters';\n\n/**\n * Harness for interacting with a confirm component in tests.\n */\nexport class SkyConfirmHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-confirm';\n\n #getBodyEl = this.locatorForOptional('.sky-confirm-body');\n #getButtons = this.locatorForAll(SkyConfirmButtonHarness);\n #getConfirmEl = this.locatorFor('.sky-confirm');\n #getMessageEl = this.locatorFor('.sky-confirm-message');\n\n /**\n * Clicks a confirm button.\n */\n public async clickCustomButton(\n filters: SkyConfirmButtonHarnessFilters,\n ): Promise<void> {\n const buttons = await this.getCustomButtons(filters);\n\n if (buttons.length > 1) {\n if (filters.text instanceof RegExp) {\n filters.text = filters.text.toString();\n }\n throw new Error(\n `More than one button matches the filter(s): ${JSON.stringify(\n filters,\n )}.`,\n );\n }\n await buttons[0].click();\n }\n\n /**\n * Clicks a confirm button.\n */\n public async clickOkButton(): Promise<void> {\n const type = await this.getType();\n\n if (type === SkyConfirmType.Custom) {\n throw new Error('Cannot click OK button on a confirm of type custom.');\n }\n const buttons = await this.#getButtons();\n await buttons[0].click();\n }\n\n /**\n * Gets the body of the confirm component.\n */\n public async getBodyText(): Promise<string | undefined> {\n return await (await this.#getBodyEl())?.text();\n }\n\n /**\n * Gets a specific confirm custom button based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getCustomButton(\n filter: SkyConfirmButtonHarnessFilters,\n ): Promise<SkyConfirmButtonHarness> {\n const confirmType = await this.getType();\n\n if (confirmType !== SkyConfirmType.Custom) {\n throw new Error(\n 'Cannot get a custom button for non-custom confirm modals.',\n );\n }\n\n return await this.locatorFor(SkyConfirmButtonHarness.with(filter))();\n }\n\n /**\n * Gets an array of confirm custom buttons based on the filter criteria.\n * If no filter is provided, returns all confirm custom buttons.\n * @param filters The optional filter criteria.\n */\n public async getCustomButtons(\n filters?: SkyConfirmButtonHarnessFilters,\n ): Promise<SkyConfirmButtonHarness[]> {\n const confirmType = await this.getType();\n\n if (confirmType !== SkyConfirmType.Custom) {\n throw new Error(\n 'Cannot get custom buttons for non-custom confirm modals.',\n );\n }\n\n return await this.locatorForAll(\n SkyConfirmButtonHarness.with(filters || {}),\n )();\n }\n\n /**\n * Gets the message of the confirm component.\n */\n public async getMessageText(): Promise<string> {\n return await (await this.#getMessageEl()).text();\n }\n\n /**\n * Gets the type of the confirm component.\n */\n public async getType(): Promise<SkyConfirmType> {\n const confirmEl = await this.#getConfirmEl();\n if (await confirmEl.hasClass('sky-confirm-type-ok')) {\n return SkyConfirmType.OK;\n }\n\n return SkyConfirmType.Custom;\n }\n\n /**\n * Whether the whitespace is preserved on the confirm component.\n */\n public async isWhiteSpacePreserved(): Promise<boolean> {\n return await (\n await this.#getMessageEl()\n ).hasClass('sky-confirm-preserve-white-space');\n }\n}\n","import { SkyConfirmCloseEventArgs, SkyConfirmConfig } from '@skyux/modals';\n\n/**\n * A controller to be injected into tests, which mocks the confirm service\n * and handles interactions with confirm dialogs.\n */\nexport abstract class SkyConfirmTestingController {\n /**\n * Closes the confirm dialog with the \"cancel\" action.\n */\n public abstract cancel(): void;\n /**\n * Throws if a confirm dialog is open.\n */\n public abstract expectNone(): void;\n /**\n * Throws if the open confirm dialog does not match the provided configuration.\n * @param config\n */\n public abstract expectOpen(config: SkyConfirmConfig): void;\n /**\n * Closes the confirm dialog with the provided action.\n */\n public abstract close(args: SkyConfirmCloseEventArgs): void;\n /**\n * Closes the confirm dialog with the \"ok\" action.\n */\n public abstract ok(): void;\n}\n","import {\n SkyConfirmButtonConfig,\n SkyConfirmCloseEventArgs,\n SkyConfirmConfig,\n SkyConfirmInstance,\n SkyConfirmServiceInterface,\n SkyConfirmType,\n} from '@skyux/modals';\n\nimport { SkyConfirmTestingController } from './confirm-testing.controller';\n\ninterface TestSubject {\n buttons: SkyConfirmButtonConfig[];\n config: SkyConfirmConfig;\n instance: SkyConfirmInstance;\n}\n\nfunction assertConfirmOpen(\n value: TestSubject | undefined,\n): asserts value is TestSubject {\n if (value === undefined) {\n throw new Error('A confirm dialog is expected to be open but is closed.');\n }\n\n return;\n}\n\nfunction assertConfirmClosed(\n value: TestSubject | undefined,\n): asserts value is undefined {\n if (value !== undefined) {\n throw new Error('A confirm dialog is expected to be closed but is open.');\n }\n\n return;\n}\n\nfunction isButtonConfigArray(val: unknown): val is SkyConfirmButtonConfig[] {\n return (\n Array.isArray(val) && (val.length === 0 || val[0].action !== undefined)\n );\n}\n\nfunction buttonConfigMatches(\n actual: SkyConfirmButtonConfig,\n expected: SkyConfirmButtonConfig,\n): boolean {\n return (\n expected.action === actual.action &&\n expected.text === actual.text &&\n expected.styleType === actual.styleType\n );\n}\n\n/**\n * @internal\n */\nexport class SkyConfirmTestingService\n extends SkyConfirmTestingController\n implements SkyConfirmServiceInterface\n{\n #testSubject: TestSubject | undefined;\n\n public cancel(): void {\n this.close({ action: 'cancel' });\n }\n\n public ok(): void {\n this.close({ action: 'ok' });\n }\n\n public close(args: SkyConfirmCloseEventArgs): void {\n assertConfirmOpen(this.#testSubject);\n\n const isActionPermitted = this.#testSubject?.buttons.some(\n (b) => b.action === args.action,\n );\n\n if (isActionPermitted) {\n this.#testSubject.instance.close(args);\n this.#testSubject = undefined;\n } else {\n throw new Error(\n `The confirm dialog does not have a button configured for the \"${args.action}\" action.`,\n );\n }\n }\n\n public expectNone(): void {\n assertConfirmClosed(this.#testSubject);\n }\n\n public expectOpen(expectedConfig: SkyConfirmConfig): void {\n assertConfirmOpen(this.#testSubject);\n\n const actualConfig = this.#testSubject.config;\n\n for (const [key, expectedValue] of Object.entries(expectedConfig)) {\n const k = key as keyof typeof expectedConfig;\n const actualValue = actualConfig[k];\n\n if (\n isButtonConfigArray(expectedValue) &&\n isButtonConfigArray(actualValue)\n ) {\n if (expectedValue.length !== actualValue.length) throwDetailedError();\n\n expectedValue.forEach((expectedButton, index) => {\n if (!buttonConfigMatches(expectedButton, actualValue[index])) {\n throwDetailedError();\n }\n });\n } else if (actualValue !== expectedValue) {\n throwDetailedError();\n }\n }\n\n function throwDetailedError(): never {\n throw new Error(`Expected a confirm dialog to be open with a specific configuration.\nExpected:\n${JSON.stringify(expectedConfig, undefined, 2)}\nActual:\n${JSON.stringify(actualConfig, undefined, 2)}\n`);\n }\n }\n\n public open(config: SkyConfirmConfig): SkyConfirmInstance {\n assertConfirmClosed(this.#testSubject);\n\n const instance = new SkyConfirmInstance();\n const testSubject: TestSubject = {\n buttons: [],\n config,\n instance,\n };\n\n switch (config.type) {\n case SkyConfirmType.Custom:\n config.buttons?.forEach((b) => {\n testSubject.buttons.push({ action: b.action, text: b.text });\n });\n break;\n\n case SkyConfirmType.OK:\n default:\n testSubject.buttons.push({ action: 'ok', text: 'Ok' });\n testSubject.buttons.push({ action: 'cancel', text: 'Cancel' });\n break;\n }\n\n this.#testSubject = testSubject;\n\n return instance;\n }\n}\n","import { Provider } from '@angular/core';\nimport { SkyConfirmService } from '@skyux/modals';\n\nimport { SkyConfirmTestingController } from './confirm-testing.controller';\nimport { SkyConfirmTestingService } from './confirm-testing.service';\n\n/**\n * @internal\n */\nexport function provideConfirmTesting(): Provider[] {\n return [\n SkyConfirmTestingService,\n {\n provide: SkyConfirmService,\n useExisting: SkyConfirmTestingService,\n },\n {\n provide: SkyConfirmTestingController,\n useExisting: SkyConfirmTestingService,\n },\n ];\n}\n","import { NgModule } from '@angular/core';\n\nimport { provideConfirmTesting } from './provide-confirm-testing';\n\n/**\n * Configures the `SkyConfirmTestingController` as the backend for the `SkyConfirmService`.\n */\n@NgModule({\n providers: [provideConfirmTesting()],\n})\nexport class SkyConfirmTestingModule {}\n","import { Type } from '@angular/core';\nimport { SkyModalCloseArgs } from '@skyux/modals';\n\n/**\n * A controller to be injected into tests, which mocks the modal service\n * and handles interactions with modal instances. For testing interactions\n * with the modal component itself, use the `SkyModalHarness`.\n */\nexport abstract class SkyModalTestingController {\n /**\n * Closes the topmost modal with the provided arguments.\n * @param args Arguments to pass to the modal's close event.\n */\n public abstract closeTopModal(args?: SkyModalCloseArgs): void;\n\n /**\n * Throws if the provided value does not match the number of open modals.\n */\n public abstract expectCount(value: number): void;\n\n /**\n * Throws if modals are open.\n */\n public abstract expectNone(): void;\n\n /**\n * Throws if the given criteria does not match the topmost open modal.\n */\n public abstract expectOpen<TComponent>(component: Type<TComponent>): void;\n}\n","import { Injectable, OnDestroy, StaticProvider, Type } from '@angular/core';\nimport {\n SkyModalCloseArgs,\n SkyModalConfigurationInterface,\n SkyModalInstance,\n SkyModalServiceInterface,\n} from '@skyux/modals';\n\nimport { SkyModalTestingController } from './modal-testing.controller';\n\ninterface TestSubject<T = unknown> {\n component: Type<T>;\n config: SkyModalConfigurationInterface | StaticProvider[] | undefined;\n instance: SkyModalInstance;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyModalTestingService\n extends SkyModalTestingController\n implements OnDestroy, SkyModalServiceInterface\n{\n readonly #modals = new Map<SkyModalInstance, TestSubject>();\n\n public ngOnDestroy(): void {\n for (const instance of this.#modals.keys()) {\n instance.close();\n }\n }\n\n public closeTopModal(args?: SkyModalCloseArgs): void {\n const modal = this.#getTopmostModal();\n if (!modal) {\n throw new Error(\n 'Expected to close the topmost modal, but no modals are open.',\n );\n }\n\n modal.instance.close(args?.data, args?.reason);\n }\n\n public expectCount(value: number): void {\n const count = this.#modals.size;\n if (count !== value) {\n throw new Error(\n `Expected ${value} open ${value === 1 ? 'modal' : 'modals'}, but ${count} ${count === 1 ? 'is' : 'are'} open.`,\n );\n }\n }\n\n public expectNone(): void {\n const count = this.#modals.size;\n if (count > 0) {\n throw new Error(\n `Expected no modals to be open, but there ${count === 1 ? 'is' : 'are'} ${count} open.`,\n );\n }\n }\n\n public expectOpen<TComponent>(component: Type<TComponent>): void {\n const modal = this.#getTopmostModal();\n if (!modal) {\n throw new Error(\n 'A modal is expected to be open, but no modals are open.',\n );\n }\n\n if (modal.component !== component) {\n throw new Error(\n `Expected the topmost modal to be of type ${component.name}, but it is of type ${modal.component.name}.`,\n );\n }\n }\n\n public open<TComponent>(\n component: Type<TComponent>,\n config?: SkyModalConfigurationInterface | StaticProvider[],\n ): SkyModalInstance {\n const instance = new SkyModalInstance();\n\n instance.closed.subscribe(() => {\n this.#modals.delete(instance);\n });\n\n this.#modals.set(instance, { component, config, instance });\n\n return instance;\n }\n\n #getTopmostModal(): TestSubject | undefined {\n return Array.from(this.#modals.values()).pop();\n }\n}\n","import { Provider } from '@angular/core';\nimport { SkyModalService } from '@skyux/modals';\n\nimport { SkyModalTestingController } from './modal-testing.controller';\nimport { SkyModalTestingService } from './modal-testing.service';\n\n/**\n * @internal\n */\nexport function provideModalTesting(): Provider[] {\n return [\n SkyModalTestingService,\n {\n provide: SkyModalService,\n useExisting: SkyModalTestingService,\n },\n {\n provide: SkyModalTestingController,\n useExisting: SkyModalTestingService,\n },\n ];\n}\n","import { NgModule } from '@angular/core';\n\nimport { provideModalTesting } from './provide-modal-testing';\n\n/**\n * Configures the `SkyModalTestingController` as the implementation for the `SkyModalService`.\n */\n@NgModule({\n providers: [provideModalTesting()],\n})\nexport class SkyModalTestingModule {}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness for interacting with a modal banner component in tests.\n */\nexport class SkyModalBannerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-modal-banner';\n\n /**\n * Gets the image source URL from the banner's background image style.\n * Returns `null` if no image source is set.\n */\n public async getImageSrc(): Promise<string | null> {\n const backgroundImage = await (\n await this.host()\n ).getCssValue('background-image');\n\n if (!backgroundImage || backgroundImage === 'none') {\n return null;\n }\n\n // The component sets background-image as url(\"${imageSrc}\") with internal\n // double quotes escaped as \\\". Strip the url(\"...\") wrapper and unescape.\n const match = backgroundImage.match(/^url\\(\"([\\s\\S]*)\"\\)$/);\n if (!match) {\n return null;\n }\n\n return match[1].replaceAll('\\\\\"', '\"');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyModalBannerHarness } from './modal-banner-harness';\nimport { SkyModalHarnessFilters } from './modal-harness-filters';\n\n/**\n * Harness for interacting with a modal component in tests.\n */\nexport class SkyModalHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-modal';\n\n #getModal = this.locatorFor('.sky-modal');\n #getModalDialog = this.locatorFor('.sky-modal-dialog');\n #getModalHeading = this.locatorFor('.sky-modal-heading');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyModalHarness` that meets certain criteria\n */\n public static with(\n filters: SkyModalHarnessFilters,\n ): HarnessPredicate<SkyModalHarness> {\n return SkyModalHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the modal banner harness, or `null` if no banner is present.\n */\n public async getBanner(): Promise<SkyModalBannerHarness | null> {\n return await this.locatorForOptional(SkyModalBannerHarness)();\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the aria-describedBy property of the modal.\n * @deprecated\n */\n public async getAriaDescribedBy(): Promise<string | null> {\n return await (\n await this.#getModalDialog()\n ).getAttribute('aria-describedby');\n }\n\n /**\n * Gets the aria-labelledBy property of the modal.\n * @deprecated\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (await this.#getModalDialog()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the role of the modal.\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.#getModalDialog()).getAttribute('role');\n }\n\n /**\n * Gets the modal's heading text.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await (await this.#getModalHeading()).text();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the modal size.\n */\n public async getSize(): Promise<string> {\n if (await this.isFullPage()) {\n throw new Error(\n 'Size cannot be determined because size property is overridden when modal is full page',\n );\n }\n\n const modal = await this.#getModal();\n\n if (await modal.hasClass('sky-modal-small')) {\n return 'small';\n }\n\n if (await modal.hasClass('sky-modal-large')) {\n return 'large';\n }\n\n return 'medium';\n }\n\n /**\n * Gets the wrapper class of the modal.\n */\n public async getWrapperClass(): Promise<string | undefined> {\n return await (await this.host()).getProperty('className');\n }\n\n /**\n * Whether the modal is full page.\n */\n public async isFullPage(): Promise<boolean> {\n const modal = this.#getModal();\n return await (await modal).hasClass('sky-modal-full-page');\n }\n\n /**\n * Whether the modal has {@link SkyModalIsDirtyDirective.isDirty} set to dirty.\n */\n public async isDirty(): Promise<boolean> {\n const modalHost = await this.host();\n const isDirtyAttribute = await modalHost.getAttribute(\n 'data-sky-modal-is-dirty',\n );\n return isDirtyAttribute === 'true';\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -718,7 +718,7 @@ class SkyModalComponent {
718
718
  SkyModalComponentAdapterService,
719
719
  SkyModalErrorsService,
720
720
  SkyDockService,
721
- ], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<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 [hidden]=\"headingHidden()\"\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-internal\n [headingText]=\"headingText\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n />\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-banner\" />\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", styles: [".sky-modal:not(.sky-theme-modern *){--sky-override-modal-background-color: #fff;--sky-override-modal-border: 1px solid #cdcfd2;--sky-override-modal-dock-bottom: -15px;--sky-override-modal-dock-margin-left-right-bottom: -15px;--sky-override-modal-dock-padding-top: 15px;--sky-override-modal-dock-width: calc(100% + 30px) ;--sky-override-modal-full-page-margin-xs: 0;--sky-override-modal-full-page-margin: 0;--sky-override-modal-full-page-width: 100%;--sky-override-modal-header-bottom-border: 1px solid #e2e3e4;--sky-override-modal-header-padding: 9px 3px 9px 15px;--sky-override-modal-help-close-display: inline-block;--sky-override-modal-margin: 20px auto;--sky-override-modal-viewkept-toolbar-box-shadow: none;--sky-override-modal-viewkept-toolbar-padding-horizontal: 10px;--sky-override-modal-width-l: 900px;--sky-override-modal-width-m: 600px;--sky-override-modal-width-s: 300px;--sky-override-modal-xs-margin: 30px 10px 10px 10px}:host{--sky-viewport-top: 0;--sky-viewport-bottom: 0;--sky-viewport-left: 0;--sky-viewport-right: 0}.sky-modal{--sky-comp-override-list-header-background-color: initial;border:var(--sky-override-modal-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));position:fixed;width:auto;left:0;right:0;top:0;margin:var(--sky-override-modal-xs-margin, var(--sky-comp-modal-space-offset-xs-top) var(--sky-comp-modal-space-offset-xs-right) var(--sky-comp-modal-space-offset-xs-bottom) var(--sky-comp-modal-space-offset-xs-left));display:flex;flex-direction:column;overflow:hidden}.sky-modal:has(.sky-modal-content.sky-layout-host-fit){height:var(--sky-modal-content-max-height, 100%)}.sky-modal:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}.sky-modal-btn-help,.sky-modal-btn-close{display:var(--sky-override-modal-help-close-display, none)}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-right)) + var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-left)))));margin:var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-top) var(--sky-comp-modal-fullscreen-space-offset-xs-right) var(--sky-comp-modal-fullscreen-space-offset-xs-bottom) var(--sky-comp-modal-fullscreen-space-offset-xs-left))}@media(min-width:768px){.sky-modal:not(.sky-modal-full-page){margin:var(--sky-override-modal-margin, var(--sky-comp-modal-space-offset-sm-top) auto var(--sky-comp-modal-space-offset-sm-bottom))}.sky-modal-small{width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-medium{width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-left)) + var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-right)))));margin:var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-top) var(--sky-comp-modal-fullscreen-space-offset-sm-right) var(--sky-comp-modal-fullscreen-space-offset-sm-bottom) var(--sky-comp-modal-fullscreen-space-offset-sm-left))}}@media(min-width:920px){.sky-modal-large{width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}}.sky-modal-content{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) )}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-content.sky-layout-host-fit{flex-grow:1;position:relative}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:var(--sky-override-modal-header-padding, var(--sky-comp-modal-header-space-inset-top) var(--sky-comp-modal-header-space-inset-right) var(--sky-comp-modal-header-space-inset-bottom) var(--sky-comp-modal-header-space-inset-left));background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));border-bottom:var(--sky-override-modal-header-bottom-border);display:flex;align-items:baseline}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#686c73;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#383a3d;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:var(--sky-override-modal-dock-bottom, 0);margin-left:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-right:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-bottom:var(--sky-override-modal-dock-margin-left-right-bottom, initial);padding-top:var(--sky-override-modal-dock-padding-top, initial);width:var(--sky-override-modal-dock-width, 100%)}.sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:var(--sky-override-modal-viewkept-toolbar-box-shadow, var(--sky-elevation-overflow))}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) );padding-left:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-left));padding-right:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-right))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SkyHelpInlineModule }, { kind: "ngmodule", type: SkyIconModule }, { kind: "component", type: i2.λ1, selector: "sky-icon", inputs: ["iconName", "variant", "iconSize"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "directive", type: SkyLayoutHostDirective, selector: "[skyLayoutHost]", inputs: ["layout"] }, { kind: "component", type: SkyModalHeaderInternalComponent, selector: "sky-modal-header-internal", inputs: ["headingText", "helpKey", "helpPopoverContent", "helpPopoverTitle"] }, { kind: "ngmodule", type: SkyModalsResourcesModule }, { kind: "directive", type: SkyScrollShadowDirective, selector: "[skyScrollShadow]", inputs: ["skyScrollShadowEnabled"], outputs: ["skyScrollShadow"] }, { kind: "ngmodule", type: SkyThemeModule }, { kind: "directive", type: i4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
721
+ ], viewQueries: [{ propertyName: "modalContentWrapperElement", first: true, predicate: ["modalContentWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "<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 [hidden]=\"headingHidden()\"\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-internal\n [headingText]=\"headingText\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n />\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-btn-borderless 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 [skyThemeClass]=\"{\n 'sky-btn-borderless': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\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-theme-padding-inset-balanced-m': 'default'\n }\"\n (skyScrollShadow)=\"scrollShadowChange($event)\"\n >\n <ng-content select=\"sky-modal-banner\" />\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", styles: [".sky-modal:not(.sky-theme-modern *){--sky-override-modal-background-color: #fff;--sky-override-modal-border: 1px solid #cdcfd2;--sky-override-modal-dock-bottom: -15px;--sky-override-modal-dock-margin-left-right-bottom: -15px;--sky-override-modal-dock-padding-top: 15px;--sky-override-modal-dock-width: calc(100% + 30px) ;--sky-override-modal-full-page-margin-xs: 0;--sky-override-modal-full-page-margin: 0;--sky-override-modal-full-page-width: 100%;--sky-override-modal-header-align-items: baseline;--sky-override-modal-header-bottom-border: 1px solid #e2e3e4;--sky-override-modal-header-padding: 9px 3px 9px 15px;--sky-override-modal-help-close-display: inline-block;--sky-override-modal-margin: 20px auto;--sky-override-modal-viewkept-toolbar-box-shadow: none;--sky-override-modal-viewkept-toolbar-padding-horizontal: 10px;--sky-override-modal-width-l: 900px;--sky-override-modal-width-m: 600px;--sky-override-modal-width-s: 300px;--sky-override-modal-xs-margin: 30px 10px 10px 10px}:host{--sky-viewport-top: 0;--sky-viewport-bottom: 0;--sky-viewport-left: 0;--sky-viewport-right: 0}.sky-modal{--sky-comp-override-list-header-background-color: initial;border:var(--sky-override-modal-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));position:fixed;width:auto;left:0;right:0;top:0;margin:var(--sky-override-modal-xs-margin, var(--sky-comp-modal-space-offset-xs-top) var(--sky-comp-modal-space-offset-xs-right) var(--sky-comp-modal-space-offset-xs-bottom) var(--sky-comp-modal-space-offset-xs-left));display:flex;flex-direction:column;overflow:hidden}.sky-modal:has(.sky-modal-content.sky-layout-host-fit){height:var(--sky-modal-content-max-height, 100%)}.sky-modal:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}.sky-modal-btn-help{display:var(--sky-override-modal-help-close-display, none)}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-right)) + var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-left)))));margin:var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-top) var(--sky-comp-modal-fullscreen-space-offset-xs-right) var(--sky-comp-modal-fullscreen-space-offset-xs-bottom) var(--sky-comp-modal-fullscreen-space-offset-xs-left))}@media(min-width:768px){.sky-modal:not(.sky-modal-full-page){margin:var(--sky-override-modal-margin, var(--sky-comp-modal-space-offset-sm-top) auto var(--sky-comp-modal-space-offset-sm-bottom))}.sky-modal-small{width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-medium{width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-left)) + var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-right)))));margin:var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-top) var(--sky-comp-modal-fullscreen-space-offset-sm-right) var(--sky-comp-modal-fullscreen-space-offset-sm-bottom) var(--sky-comp-modal-fullscreen-space-offset-sm-left))}}@media(min-width:920px){.sky-modal-large{width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}}.sky-modal-content{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) )}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-content.sky-layout-host-fit{flex-grow:1;position:relative}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:var(--sky-override-modal-header-padding, var(--sky-comp-modal-header-space-inset-top) var(--sky-comp-modal-header-space-inset-right) var(--sky-comp-modal-header-space-inset-bottom) var(--sky-comp-modal-header-space-inset-left));background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));border-bottom:var(--sky-override-modal-header-bottom-border);display:flex;align-items:var(--sky-override-modal-header-align-items, center)}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-modal-btn-close{margin-left:var(--sky-space-gap-text_action-l)}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:var(--sky-override-modal-dock-bottom, 0);margin-left:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-right:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-bottom:var(--sky-override-modal-dock-margin-left-right-bottom, initial);padding-top:var(--sky-override-modal-dock-padding-top, initial);width:var(--sky-override-modal-dock-width, 100%)}.sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:var(--sky-override-modal-viewkept-toolbar-box-shadow, var(--sky-elevation-overflow))}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) );padding-left:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-left));padding-right:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-right))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SkyHelpInlineModule }, { kind: "ngmodule", type: SkyIconModule }, { kind: "component", type: i2.λ1, selector: "sky-icon", inputs: ["iconName", "variant", "iconSize"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i1.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "directive", type: SkyLayoutHostDirective, selector: "[skyLayoutHost]", inputs: ["layout"] }, { kind: "component", type: SkyModalHeaderInternalComponent, selector: "sky-modal-header-internal", inputs: ["headingText", "helpKey", "helpPopoverContent", "helpPopoverTitle"] }, { kind: "ngmodule", type: SkyModalsResourcesModule }, { kind: "directive", type: SkyScrollShadowDirective, selector: "[skyScrollShadow]", inputs: ["skyScrollShadowEnabled"], outputs: ["skyScrollShadow"] }, { kind: "ngmodule", type: SkyThemeModule }, { kind: "directive", type: i4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
722
722
  }
723
723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SkyModalComponent, decorators: [{
724
724
  type: Component,
@@ -736,7 +736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
736
736
  SkyModalsResourcesModule,
737
737
  SkyScrollShadowDirective,
738
738
  SkyThemeModule,
739
- ], template: "<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 [hidden]=\"headingHidden()\"\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-internal\n [headingText]=\"headingText\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n />\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-banner\" />\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", styles: [".sky-modal:not(.sky-theme-modern *){--sky-override-modal-background-color: #fff;--sky-override-modal-border: 1px solid #cdcfd2;--sky-override-modal-dock-bottom: -15px;--sky-override-modal-dock-margin-left-right-bottom: -15px;--sky-override-modal-dock-padding-top: 15px;--sky-override-modal-dock-width: calc(100% + 30px) ;--sky-override-modal-full-page-margin-xs: 0;--sky-override-modal-full-page-margin: 0;--sky-override-modal-full-page-width: 100%;--sky-override-modal-header-bottom-border: 1px solid #e2e3e4;--sky-override-modal-header-padding: 9px 3px 9px 15px;--sky-override-modal-help-close-display: inline-block;--sky-override-modal-margin: 20px auto;--sky-override-modal-viewkept-toolbar-box-shadow: none;--sky-override-modal-viewkept-toolbar-padding-horizontal: 10px;--sky-override-modal-width-l: 900px;--sky-override-modal-width-m: 600px;--sky-override-modal-width-s: 300px;--sky-override-modal-xs-margin: 30px 10px 10px 10px}:host{--sky-viewport-top: 0;--sky-viewport-bottom: 0;--sky-viewport-left: 0;--sky-viewport-right: 0}.sky-modal{--sky-comp-override-list-header-background-color: initial;border:var(--sky-override-modal-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));position:fixed;width:auto;left:0;right:0;top:0;margin:var(--sky-override-modal-xs-margin, var(--sky-comp-modal-space-offset-xs-top) var(--sky-comp-modal-space-offset-xs-right) var(--sky-comp-modal-space-offset-xs-bottom) var(--sky-comp-modal-space-offset-xs-left));display:flex;flex-direction:column;overflow:hidden}.sky-modal:has(.sky-modal-content.sky-layout-host-fit){height:var(--sky-modal-content-max-height, 100%)}.sky-modal:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}.sky-modal-btn-help,.sky-modal-btn-close{display:var(--sky-override-modal-help-close-display, none)}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-right)) + var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-left)))));margin:var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-top) var(--sky-comp-modal-fullscreen-space-offset-xs-right) var(--sky-comp-modal-fullscreen-space-offset-xs-bottom) var(--sky-comp-modal-fullscreen-space-offset-xs-left))}@media(min-width:768px){.sky-modal:not(.sky-modal-full-page){margin:var(--sky-override-modal-margin, var(--sky-comp-modal-space-offset-sm-top) auto var(--sky-comp-modal-space-offset-sm-bottom))}.sky-modal-small{width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-medium{width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-left)) + var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-right)))));margin:var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-top) var(--sky-comp-modal-fullscreen-space-offset-sm-right) var(--sky-comp-modal-fullscreen-space-offset-sm-bottom) var(--sky-comp-modal-fullscreen-space-offset-sm-left))}}@media(min-width:920px){.sky-modal-large{width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}}.sky-modal-content{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) )}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-content.sky-layout-host-fit{flex-grow:1;position:relative}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:var(--sky-override-modal-header-padding, var(--sky-comp-modal-header-space-inset-top) var(--sky-comp-modal-header-space-inset-right) var(--sky-comp-modal-header-space-inset-bottom) var(--sky-comp-modal-header-space-inset-left));background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));border-bottom:var(--sky-override-modal-header-bottom-border);display:flex;align-items:baseline}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-btn{border:none;color:#686c73;cursor:pointer}.sky-modal-header-buttons .sky-btn:hover{color:#383a3d;transition:color .15s}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:var(--sky-override-modal-dock-bottom, 0);margin-left:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-right:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-bottom:var(--sky-override-modal-dock-margin-left-right-bottom, initial);padding-top:var(--sky-override-modal-dock-padding-top, initial);width:var(--sky-override-modal-dock-width, 100%)}.sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:var(--sky-override-modal-viewkept-toolbar-box-shadow, var(--sky-elevation-overflow))}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) );padding-left:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-left));padding-right:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-right))}\n"] }]
739
+ ], template: "<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 [hidden]=\"headingHidden()\"\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-internal\n [headingText]=\"headingText\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n />\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-btn-borderless 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 [skyThemeClass]=\"{\n 'sky-btn-borderless': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\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-theme-padding-inset-balanced-m': 'default'\n }\"\n (skyScrollShadow)=\"scrollShadowChange($event)\"\n >\n <ng-content select=\"sky-modal-banner\" />\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", styles: [".sky-modal:not(.sky-theme-modern *){--sky-override-modal-background-color: #fff;--sky-override-modal-border: 1px solid #cdcfd2;--sky-override-modal-dock-bottom: -15px;--sky-override-modal-dock-margin-left-right-bottom: -15px;--sky-override-modal-dock-padding-top: 15px;--sky-override-modal-dock-width: calc(100% + 30px) ;--sky-override-modal-full-page-margin-xs: 0;--sky-override-modal-full-page-margin: 0;--sky-override-modal-full-page-width: 100%;--sky-override-modal-header-align-items: baseline;--sky-override-modal-header-bottom-border: 1px solid #e2e3e4;--sky-override-modal-header-padding: 9px 3px 9px 15px;--sky-override-modal-help-close-display: inline-block;--sky-override-modal-margin: 20px auto;--sky-override-modal-viewkept-toolbar-box-shadow: none;--sky-override-modal-viewkept-toolbar-padding-horizontal: 10px;--sky-override-modal-width-l: 900px;--sky-override-modal-width-m: 600px;--sky-override-modal-width-s: 300px;--sky-override-modal-xs-margin: 30px 10px 10px 10px}:host{--sky-viewport-top: 0;--sky-viewport-bottom: 0;--sky-viewport-left: 0;--sky-viewport-right: 0}.sky-modal{--sky-comp-override-list-header-background-color: initial;border:var(--sky-override-modal-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));position:fixed;width:auto;left:0;right:0;top:0;margin:var(--sky-override-modal-xs-margin, var(--sky-comp-modal-space-offset-xs-top) var(--sky-comp-modal-space-offset-xs-right) var(--sky-comp-modal-space-offset-xs-bottom) var(--sky-comp-modal-space-offset-xs-left));display:flex;flex-direction:column;overflow:hidden}.sky-modal:has(.sky-modal-content.sky-layout-host-fit){height:var(--sky-modal-content-max-height, 100%)}.sky-modal:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-header:has(.sky-modal-header-content:empty){display:none}.sky-modal-btn-help{display:var(--sky-override-modal-help-close-display, none)}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-right)) + var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-left)))));margin:var(--sky-override-modal-full-page-margin-xs, var(--sky-comp-modal-fullscreen-space-offset-xs-top) var(--sky-comp-modal-fullscreen-space-offset-xs-right) var(--sky-comp-modal-fullscreen-space-offset-xs-bottom) var(--sky-comp-modal-fullscreen-space-offset-xs-left))}@media(min-width:768px){.sky-modal:not(.sky-modal-full-page){margin:var(--sky-override-modal-margin, var(--sky-comp-modal-space-offset-sm-top) auto var(--sky-comp-modal-space-offset-sm-bottom))}.sky-modal-small{width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-small .sky-modal-content,.sky-modal-small .sky-modal-header,.sky-modal-small .sky-modal-footer{max-width:var(--sky-override-modal-width-s, var(--sky-size-width-modal-s))}.sky-modal-medium{width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-medium .sky-modal-content,.sky-modal-medium .sky-modal-header,.sky-modal-medium .sky-modal-footer{max-width:var(--sky-override-modal-width-m, var(--sky-size-width-modal-m))}.sky-modal-full-page{width:var(--sky-override-modal-full-page-width, calc(100% - (var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-left)) + var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-right)))));margin:var(--sky-override-modal-full-page-margin, var(--sky-comp-modal-fullscreen-space-offset-sm-top) var(--sky-comp-modal-fullscreen-space-offset-sm-right) var(--sky-comp-modal-fullscreen-space-offset-sm-bottom) var(--sky-comp-modal-fullscreen-space-offset-sm-left))}}@media(min-width:920px){.sky-modal-large{width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}.sky-modal-large .sky-modal-content,.sky-modal-large .sky-modal-header,.sky-modal-large .sky-modal-footer{max-width:var(--sky-override-modal-width-l, var(--sky-size-width-modal-l))}}.sky-modal-content{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) )}.sky-modal-content:focus{outline-style:dotted;outline-width:thin;outline-offset:-1px}.sky-modal-content.sky-layout-host-fit{flex-grow:1;position:relative}.sky-modal-tiled .sky-modal-content{background-color:#eeeeef;--sky-background-color-page-default: $sky-background-color-neutral-light}.sky-modal-tiled .sky-modal-content ::ng-deep .sky-tile-title{font-family:BLKB Sans,Helvetica Neue,Arial,sans-serif;color:var(--sky-text-color-deemphasized);font-weight:300;font-size:19px}.sky-modal-header{padding:var(--sky-override-modal-header-padding, var(--sky-comp-modal-header-space-inset-top) var(--sky-comp-modal-header-space-inset-right) var(--sky-comp-modal-header-space-inset-bottom) var(--sky-comp-modal-header-space-inset-left));background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));border-bottom:var(--sky-override-modal-header-bottom-border);display:flex;align-items:var(--sky-override-modal-header-align-items, center)}.sky-modal-header-buttons{flex-shrink:.0001}.sky-modal-header-buttons .sky-modal-btn-close{margin-left:var(--sky-space-gap-text_action-l)}.sky-modal-header-content{flex-grow:1}.sky-modal-header{flex-shrink:0;z-index:2}.sky-modal-content{overflow-y:auto}.sky-modal-footer{flex-shrink:0;z-index:2}.sky-modal-full-page .sky-modal-content{flex-grow:1}.sky-modal-content>::ng-deep sky-dock{bottom:var(--sky-override-modal-dock-bottom, 0);margin-left:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-right:var(--sky-override-modal-dock-margin-left-right-bottom, initial);margin-bottom:var(--sky-override-modal-dock-margin-left-right-bottom, initial);padding-top:var(--sky-override-modal-dock-padding-top, initial);width:var(--sky-override-modal-dock-width, 100%)}.sky-modal-viewkeeper .sky-modal-header{box-shadow:none!important}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed{box-shadow:var(--sky-override-modal-viewkept-toolbar-box-shadow, var(--sky-elevation-overflow))}.sky-modal-viewkeeper .sky-modal-content ::ng-deep sky-modal-content>.sky-viewkeeper-fixed>sky-toolbar .sky-toolbar-container{background-color:var(--sky-override-modal-background-color, var(--sky-color-background-container-base));--sky-background-color-page-default: var( --sky-override-modal-background-color, var(--sky-color-background-container-base) );padding-left:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-left));padding-right:var(--sky-override-modal-viewkept-toolbar-padding-horizontal, var(--sky-comp-modal-header-space-inset-right))}\n"] }]
740
740
  }], ctorParameters: () => [], propDecorators: { wrapperClass: [{
741
741
  type: HostBinding,
742
742
  args: ['class']
@@ -1 +1 @@
1
- {"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-internal.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-header-internal.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-banner.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-banner.component.html","../../../../../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-header.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-header.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 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 help inline 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 help inline 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 {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n input,\n} from '@angular/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\n\n/**\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyHelpInlineModule],\n selector: 'sky-modal-header-internal',\n styleUrl: './modal-header.component.scss',\n templateUrl: './modal-header-internal.component.html',\n})\nexport class SkyModalHeaderInternalComponent {\n public readonly headingText = input.required<string>();\n public readonly helpKey = input<string>();\n public readonly helpPopoverContent = input<string | TemplateRef<unknown>>();\n public readonly helpPopoverTitle = input<string>();\n}\n","<h2 class=\"sky-modal-heading\">{{ headingText() }}</h2>\n@if (helpKey() || helpPopoverContent()) {\n <span class=\"sky-control-help-container\"\n ><sky-help-inline\n [helpKey]=\"helpKey()\"\n [labelText]=\"headingText()\"\n [popoverContent]=\"helpPopoverContent()\"\n [popoverTitle]=\"helpPopoverTitle()\"\n /></span>\n}\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 booleanAttribute,\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 { SkyModalHeaderInternalComponent } from './modal-header-internal.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 SkyModalHeaderInternalComponent,\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](https://developer.blackbaud.com/skyux/learn/develop/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 /**\n * Whether to hide the modal's header, including the heading from `headingText`,\n * the help inline button if `helpKey` is provided, and the close button in the\n * top right. Reserve this property for specific use cases where you need a\n * banner image in place of the header.\n */\n public readonly headingHidden = input(false, {\n transform: booleanAttribute,\n });\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 [hidden]=\"headingHidden()\"\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-internal\n [headingText]=\"headingText\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n />\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-banner\" />\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 { Component, computed, input } from '@angular/core';\n\n/**\n * Specifies content to display at the top of the modal. The content extends\n * the full width of the modal without any padding or margin. In general, only\n * use a banner when the modal's `headingHidden` input is set to `true`.\n */\n@Component({\n selector: 'sky-modal-banner',\n host: {\n '[class.sky-modal-banner-with-image]': 'backgroundImage()',\n '[style.background-image]': 'backgroundImage()',\n },\n templateUrl: './modal-banner.component.html',\n styleUrl: './modal-banner.component.scss',\n})\nexport class SkyModalBannerComponent {\n /**\n * The banner image to display at the top of the modal. To fit the allotted\n * space, the image must have a 5:3 aspect ratio. If it is wider, extra space\n * appears under the image. If it is narrower, the bottom of the image is\n * cropped.\n */\n public readonly imageSrc = input('');\n\n protected readonly backgroundImage = computed(() => {\n const imageSrc = this.imageSrc();\n return imageSrc ? `url(\"${imageSrc.replaceAll('\"', '\\\\\"')}\")` : null;\n });\n}\n","<ng-content />\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 { Component } from '@angular/core';\nimport { SkyTrimModule } from '@skyux/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\n/**\n * Specifies a header for the modal.\n * @deprecated Use the `headingText` input on the `sky-modal` component for modal headings.\n * For inline help, use the `helpKey` or `helpPopoverContent` inputs on the `sky-modal` component.\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 {\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 // 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 { SkyModalBannerComponent } from './modal-banner.component';\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 SkyModalBannerComponent,\n SkyModalContentComponent,\n SkyModalFooterComponent,\n SkyModalHeaderComponent,\n SkyModalIsDirtyDirective,\n ],\n exports: [\n SkyModalComponent,\n SkyModalBannerComponent,\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","i3","i2","i1.SkyModalService"],"mappings":"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"}
1
+ {"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-internal.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-header-internal.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-banner.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-banner.component.html","../../../../../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-header.component.ts","../../../../../libs/components/modals/src/lib/modules/modal/modal-header.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 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 help inline 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 help inline 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 {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n input,\n} from '@angular/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\n\n/**\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyHelpInlineModule],\n selector: 'sky-modal-header-internal',\n styleUrl: './modal-header.component.scss',\n templateUrl: './modal-header-internal.component.html',\n})\nexport class SkyModalHeaderInternalComponent {\n public readonly headingText = input.required<string>();\n public readonly helpKey = input<string>();\n public readonly helpPopoverContent = input<string | TemplateRef<unknown>>();\n public readonly helpPopoverTitle = input<string>();\n}\n","<h2 class=\"sky-modal-heading\">{{ headingText() }}</h2>\n@if (helpKey() || helpPopoverContent()) {\n <span class=\"sky-control-help-container\"\n ><sky-help-inline\n [helpKey]=\"helpKey()\"\n [labelText]=\"headingText()\"\n [popoverContent]=\"helpPopoverContent()\"\n [popoverTitle]=\"helpPopoverTitle()\"\n /></span>\n}\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 booleanAttribute,\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 { SkyModalHeaderInternalComponent } from './modal-header-internal.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 SkyModalHeaderInternalComponent,\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](https://developer.blackbaud.com/skyux/learn/develop/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 /**\n * Whether to hide the modal's header, including the heading from `headingText`,\n * the help inline button if `helpKey` is provided, and the close button in the\n * top right. Reserve this property for specific use cases where you need a\n * banner image in place of the header.\n */\n public readonly headingHidden = input(false, {\n transform: booleanAttribute,\n });\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 [hidden]=\"headingHidden()\"\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-internal\n [headingText]=\"headingText\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n />\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-btn-borderless 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 [skyThemeClass]=\"{\n 'sky-btn-borderless': 'default',\n 'sky-btn-icon-borderless': 'modern'\n }\"\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-theme-padding-inset-balanced-m': 'default'\n }\"\n (skyScrollShadow)=\"scrollShadowChange($event)\"\n >\n <ng-content select=\"sky-modal-banner\" />\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 { Component, computed, input } from '@angular/core';\n\n/**\n * Specifies content to display at the top of the modal. The content extends\n * the full width of the modal without any padding or margin. In general, only\n * use a banner when the modal's `headingHidden` input is set to `true`.\n */\n@Component({\n selector: 'sky-modal-banner',\n host: {\n '[class.sky-modal-banner-with-image]': 'backgroundImage()',\n '[style.background-image]': 'backgroundImage()',\n },\n templateUrl: './modal-banner.component.html',\n styleUrl: './modal-banner.component.scss',\n})\nexport class SkyModalBannerComponent {\n /**\n * The banner image to display at the top of the modal. To fit the allotted\n * space, the image must have a 5:3 aspect ratio. If it is wider, extra space\n * appears under the image. If it is narrower, the bottom of the image is\n * cropped.\n */\n public readonly imageSrc = input('');\n\n protected readonly backgroundImage = computed(() => {\n const imageSrc = this.imageSrc();\n return imageSrc ? `url(\"${imageSrc.replaceAll('\"', '\\\\\"')}\")` : null;\n });\n}\n","<ng-content />\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 { Component } from '@angular/core';\nimport { SkyTrimModule } from '@skyux/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\n/**\n * Specifies a header for the modal.\n * @deprecated Use the `headingText` input on the `sky-modal` component for modal headings.\n * For inline help, use the `helpKey` or `helpPopoverContent` inputs on the `sky-modal` component.\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 {\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 // 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 { SkyModalBannerComponent } from './modal-banner.component';\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 SkyModalBannerComponent,\n SkyModalContentComponent,\n SkyModalFooterComponent,\n SkyModalHeaderComponent,\n SkyModalIsDirtyDirective,\n ],\n exports: [\n SkyModalComponent,\n SkyModalBannerComponent,\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","i3","i2","i1.SkyModalService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyux/modals",
3
- "version": "14.0.0-alpha.9",
3
+ "version": "14.0.0-beta.1",
4
4
  "author": "Blackbaud, Inc.",
5
5
  "keywords": [
6
6
  "blackbaud",
@@ -20,12 +20,12 @@
20
20
  "@angular/common": "^21.2.0",
21
21
  "@angular/core": "^21.2.0",
22
22
  "@angular/router": "^21.2.0",
23
- "@skyux/core": "14.0.0-alpha.9",
24
- "@skyux/help-inline": "14.0.0-alpha.9",
25
- "@skyux/i18n": "14.0.0-alpha.9",
26
- "@skyux/icon": "14.0.0-alpha.9",
27
- "@skyux/indicators": "14.0.0-alpha.9",
28
- "@skyux/theme": "14.0.0-alpha.9"
23
+ "@skyux/core": "14.0.0-beta.1",
24
+ "@skyux/help-inline": "14.0.0-beta.1",
25
+ "@skyux/i18n": "14.0.0-beta.1",
26
+ "@skyux/icon": "14.0.0-beta.1",
27
+ "@skyux/indicators": "14.0.0-beta.1",
28
+ "@skyux/theme": "14.0.0-beta.1"
29
29
  },
30
30
  "dependencies": {
31
31
  "tslib": "^2.8.1"