@skyux/popovers 12.41.1 → 12.44.0

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.
@@ -148,11 +148,11 @@ class SkyDropdownFixture {
148
148
  * @internal
149
149
  */
150
150
  class SkyDropdownTestingModule {
151
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SkyDropdownTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
152
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SkyDropdownTestingModule, exports: [SkyDropdownModule] }); }
153
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SkyDropdownTestingModule, imports: [SkyDropdownModule] }); }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SkyDropdownTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
152
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: SkyDropdownTestingModule, exports: [SkyDropdownModule] }); }
153
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SkyDropdownTestingModule, imports: [SkyDropdownModule] }); }
154
154
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SkyDropdownTestingModule, decorators: [{
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SkyDropdownTestingModule, decorators: [{
156
156
  type: NgModule,
157
157
  args: [{
158
158
  exports: [SkyDropdownModule],
@@ -250,17 +250,17 @@ class SkyPopoverFixture {
250
250
  * @internal
251
251
  */
252
252
  class SkyPopoverTestingModule {
253
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SkyPopoverTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
254
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SkyPopoverTestingModule, imports: [SkyThemeModule], exports: [SkyPopoverModule,
253
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SkyPopoverTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
254
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: SkyPopoverTestingModule, imports: [SkyThemeModule], exports: [SkyPopoverModule,
255
255
  // The noop animations module needs to be loaded last to avoid
256
256
  // subsequent modules adding animations and overriding this.
257
257
  NoopAnimationsModule] }); }
258
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SkyPopoverTestingModule, imports: [SkyThemeModule, SkyPopoverModule,
258
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SkyPopoverTestingModule, imports: [SkyThemeModule, SkyPopoverModule,
259
259
  // The noop animations module needs to be loaded last to avoid
260
260
  // subsequent modules adding animations and overriding this.
261
261
  NoopAnimationsModule] }); }
262
262
  }
263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SkyPopoverTestingModule, decorators: [{
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SkyPopoverTestingModule, decorators: [{
264
264
  type: NgModule,
265
265
  args: [{
266
266
  exports: [
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-popovers-testing.mjs","sources":["../../../../../libs/components/popovers/testing/src/legacy/dropdown/dropdown-fixture.ts","../../../../../libs/components/popovers/testing/src/legacy/dropdown/dropdown-testing.module.ts","../../../../../libs/components/popovers/testing/src/legacy/popover/popover-fixture.ts","../../../../../libs/components/popovers/testing/src/legacy/popover/popover-testing.module.ts","../../../../../libs/components/popovers/testing/src/modules/dropdown/dropdown-item-harness.ts","../../../../../libs/components/popovers/testing/src/modules/dropdown/dropdown-menu-harness.ts","../../../../../libs/components/popovers/testing/src/modules/dropdown/dropdown-harness.ts","../../../../../libs/components/popovers/testing/src/modules/popover/popover-body-harness.ts","../../../../../libs/components/popovers/testing/src/modules/popover/popover-content-harness.ts","../../../../../libs/components/popovers/testing/src/modules/popover/popover-harness.ts","../../../../../libs/components/popovers/testing/src/skyux-popovers-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyPopoversFixtureDropdown } from './popovers-fixture-dropdown';\nimport { SkyPopoversFixtureDropdownItem } from './popovers-fixture-dropdown-item';\nimport { SkyPopoversFixtureDropdownMenu } from './popovers-fixture-dropdown-menu';\n\n/**\n * Provides information for and interaction with a SKY UX dropdown component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyDropdownFixture {\n /**\n * Returns information about the dropdown component.\n */\n public get dropdown(): SkyPopoversFixtureDropdown | undefined {\n const button = this.#buttonDebugElement;\n return {\n buttonStyle: this.#getButtonStyle(button.classes),\n buttonType: this.#getButtonType(button.classes),\n disabled: button.nativeElement.disabled,\n label: button.nativeElement.getAttribute('aria-label'),\n title: button.nativeElement.getAttribute('title'),\n };\n }\n\n /**\n * Returns the dropdown button's text.\n */\n public get dropdownButtonText(): string | undefined {\n return SkyAppTestUtility.getText(this.#buttonDebugElement.nativeElement);\n }\n\n /**\n * Returns information about the dropdown menu component.\n */\n public get dropdownMenu(): SkyPopoversFixtureDropdownMenu | undefined {\n const menu = this.getDropdownMenuContent();\n if (!menu) {\n return;\n }\n\n return {\n ariaLabelledBy: menu.getAttribute('aria-labelledby'),\n ariaRole: menu.getAttribute('role'),\n };\n }\n\n /**\n * Whether the dropdown menu is open and visible.\n */\n public get dropdownMenuIsVisible(): boolean {\n return this.getDropdownMenuContent() !== undefined;\n }\n\n get #buttonDebugElement(): DebugElement {\n return this.#debugEl.query(By.css('.sky-dropdown-button'));\n }\n\n #debugEl: DebugElement;\n\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-dropdown',\n );\n }\n\n /**\n * Click the dropdown button to open or close the dropdown menu.\n */\n public async clickDropdownButton(): Promise<void> {\n this.#buttonDebugElement.nativeElement.click();\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n /**\n * Click the dropdown item at the provided index.\n */\n public async clickDropdownItem(index: number): Promise<void> {\n const itemEls = this.#getDropdownItemEls();\n\n if (!itemEls) {\n return;\n }\n\n if (index >= itemEls.length) {\n throw new Error(`There is no dropdown item at index ${index}.`);\n }\n\n itemEls[index].querySelector('button,a').click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n /**\n * Returns information about the dropdown item at the provided index.\n */\n public getDropdownItem(\n index: number,\n ): SkyPopoversFixtureDropdownItem | undefined {\n const itemEls = this.#getDropdownItemEls();\n\n if (!itemEls) {\n return;\n }\n\n if (!itemEls[index]) {\n throw new Error(`There is no dropdown item at index ${index}.`);\n }\n\n const item = itemEls[index];\n\n return {\n ariaRole: item.getAttribute('role'),\n };\n }\n\n /**\n * Returns the contents of the dropdown menu.\n */\n public getDropdownMenuContent(): any {\n const overlay = this.#getOverlay();\n if (!overlay) {\n return;\n }\n\n return overlay.querySelector('.sky-dropdown-menu');\n }\n\n #getDropdownItemEls(): NodeListOf<any> | undefined {\n const overlay = this.#getOverlay();\n\n if (!overlay) {\n return;\n }\n\n return overlay.querySelectorAll('.sky-dropdown-item');\n }\n\n #getOverlay(): HTMLElement | null {\n return document.querySelector('sky-overlay');\n }\n\n #getButtonStyle(classNames: { [key: string]: boolean }): string | undefined {\n if (classNames['sky-btn-primary']) {\n return 'primary';\n }\n if (classNames['sky-btn-default']) {\n return 'default';\n }\n return;\n }\n\n #getButtonType(classNames: { [key: string]: boolean }): string {\n const prefix = 'sky-dropdown-button-type-';\n\n let found = '';\n for (const i in classNames) {\n if (classNames[i]) {\n if (i.indexOf(prefix) > -1) {\n found = i.replace(prefix, '');\n }\n }\n }\n\n return found;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyDropdownModule } from '@skyux/popovers';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyDropdownModule],\n})\nexport class SkyDropdownTestingModule {}\n","import { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Provides information for and interaction with a SKY UX popover component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyPopoverFixture {\n /**\n * Returns the popover alignment if the popover is open, otherwise undefined.\n */\n public get alignment(): string | undefined {\n return this.#getClassSuffixByClassPrefix(\n this.#containerElement,\n 'sky-popover-alignment-',\n );\n }\n\n /**\n * Returns the popover body element if the popover is open, otherwise undefined.\n */\n public get body(): HTMLElement | undefined {\n return this.#bodyElement;\n }\n\n /**\n * Returns the popover position if the popover is open, otherwise undefined.\n */\n public get placement(): string | undefined {\n return this.#getClassSuffixByClassPrefix(\n this.#containerElement,\n 'sky-popover-placement-',\n );\n }\n\n /**\n * Returns the popover title text if the popover is open, otherwise undefined.\n */\n public get popoverTitle(): string | undefined {\n return SkyAppTestUtility.getText(this.#titleElement);\n }\n\n /**\n * Whether the popover is open and visible.\n */\n public get popoverIsVisible(): boolean {\n return this.#contentElement !== undefined;\n }\n\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>) {\n this.#fixture = fixture;\n }\n\n /**\n * Triggers the blur event for the popover.\n */\n public blur(): Promise<unknown> {\n // close the popover by changing focus to the body element\n SkyAppTestUtility.fireDomEvent(window.document.body, 'click');\n\n this.#fixture.detectChanges();\n return this.#fixture.whenStable();\n }\n\n //#region helpers\n get #contentElement(): HTMLElement | undefined {\n return this.#queryOverlay('sky-popover-content') || undefined;\n }\n\n get #containerElement(): HTMLElement | undefined {\n return this.#queryOverlay('.sky-popover-container') || undefined;\n }\n\n get #titleElement(): HTMLElement | undefined {\n return this.#queryOverlay('.sky-popover-title') || undefined;\n }\n\n get #bodyElement(): HTMLElement | undefined {\n return this.#queryOverlay('.sky-popover-body') || undefined;\n }\n\n #getOverlay(): Element | undefined {\n return document.querySelector('sky-overlay') || undefined;\n }\n\n #queryOverlay(query: string): HTMLElement | null {\n const overlay = this.#getOverlay();\n\n return !overlay ? null : overlay.querySelector(query);\n }\n\n /**\n * Searches the element's class names for a class which matches a given prefix.\n * If a match is found, the prefix is trimmed from the class name and the suffix is returned.\n * If no class matching the prefix is found, undefined is returned.\n *\n * Example:\n * For a class 'sky-popover-placement-right', passing the prefix 'sky-popover-placement-'\n * should return the value 'right'.\n * @param prefix\n */\n #getClassSuffixByClassPrefix(\n element: HTMLElement | undefined,\n prefix: string,\n ): string | undefined {\n const containerClasses = element?.className.split(' ');\n const prefixedClass = containerClasses?.find((x) => x.startsWith(prefix));\n\n return !prefixedClass ? undefined : prefixedClass.slice(prefix.length);\n }\n //#endregion\n}\n","import { NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { SkyPopoverModule } from '@skyux/popovers';\nimport { SkyThemeModule } from '@skyux/theme';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [\n SkyPopoverModule,\n\n // The noop animations module needs to be loaded last to avoid\n // subsequent modules adding animations and overriding this.\n NoopAnimationsModule,\n ],\n imports: [SkyThemeModule],\n})\nexport class SkyPopoverTestingModule {}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDropdownItemHarnessFilters } from './dropdown-item-harness.filters';\n\n/**\n * Harness for interacting with a dropdown item component in tests.\n */\nexport class SkyDropdownItemHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-dropdown-item';\n\n #getItem = this.locatorFor('.sky-dropdown-item');\n #getButton = this.locatorFor('button,a');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDropdownItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDropdownItemHarnessFilters,\n ): HarnessPredicate<SkyDropdownItemHarness> {\n return SkyDropdownItemHarness.getDataSkyIdPredicate(filters)\n .addOption('text', filters.text, async (harness, text) => {\n const menuItemText = await harness.getText();\n return await HarnessPredicate.stringMatches(menuItemText, text);\n })\n .addOption('ariaRole', filters.ariaRole, async (harness, ariaRole) => {\n const itemAriaRole = await harness.getAriaRole();\n return await HarnessPredicate.stringMatches(itemAriaRole, ariaRole);\n });\n }\n\n /**\n * Clicks the dropdown item.\n */\n public async click(): Promise<void> {\n await (await this.#getButton()).click();\n }\n\n /**\n * Gets the dropdown item role.\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.#getItem()).getAttribute('role');\n }\n\n /**\n * Gets the menu item text.\n */\n public async getText(): Promise<string | null> {\n return await (await this.#getItem()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport {\n SkyOverlayHarness,\n SkyQueryableComponentHarness,\n} from '@skyux/core/testing';\n\nimport { SkyDropdownItemHarness } from './dropdown-item-harness';\nimport { SkyDropdownItemHarnessFilters } from './dropdown-item-harness.filters';\nimport { SkyDropdownMenuHarnessFilters } from './dropdown-menu-harness.filters';\n\n/**\n * Harness for interacting with a dropdown menu component in tests.\n */\nexport class SkyDropdownMenuHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-dropdown-menu';\n\n #getOverlay =\n this.documentRootLocatorFactory().locatorForOptional(SkyOverlayHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDropdownMenuHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDropdownMenuHarnessFilters,\n ): HarnessPredicate<SkyDropdownMenuHarness> {\n return new HarnessPredicate(SkyDropdownMenuHarness, filters);\n }\n\n /**\n * Clicks out of the dropdown menu.\n */\n public async clickOut(): Promise<void> {\n await (await (await this.#getOverlay())?.host())?.click();\n }\n\n /**\n * Gets the `aria-labelledby` value.\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (await this.host()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the dropdown menu role.\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.host()).getAttribute('role');\n }\n\n /**\n * Gets an array of dropdown menu item harnesses.\n * @param filters Optional filter for which menu items to return\n */\n public async getItems(\n filters?: SkyDropdownItemHarnessFilters,\n ): Promise<SkyDropdownItemHarness[]> {\n const harnesses = await this.locatorForAll(\n SkyDropdownItemHarness.with(filters || {}),\n )();\n\n if (harnesses.length === 0) {\n if (filters) {\n throw new Error(\n `Unable to find dropdown menu item(s) with filter(s): ${JSON.stringify(\n filters,\n )}.`,\n );\n } else {\n throw new Error(\n 'Unable to retrieve item(s) because dropdown menu is empty.',\n );\n }\n }\n\n return harnesses;\n }\n\n /**\n * Gets the first item that matches the given filters\n * @param filters filter for which menu item to return\n */\n public async getItem(\n filters: SkyDropdownItemHarnessFilters,\n ): Promise<SkyDropdownItemHarness> {\n const harnesses = await this.getItems(filters);\n return harnesses[0];\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDropdownHarnessFilters } from './dropdown-harness.filters';\nimport { SkyDropdownMenuHarness } from './dropdown-menu-harness';\n\n/**\n * Harness for interacting with a dropdown component in tests.\n */\nexport class SkyDropdownHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-dropdown';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getDropdownButton = this.locatorFor(\n // Default trigger button\n '.sky-dropdown-button',\n // Custom trigger button\n '[skyDropdownTrigger]',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDropdownHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDropdownHarnessFilters,\n ): HarnessPredicate<SkyDropdownHarness> {\n return SkyDropdownHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the dropdown button.\n */\n public async clickDropdownButton(): Promise<void> {\n await (await this.#getDropdownButton()).click();\n }\n\n /**\n * Gets the aria-label value.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getDropdownButton()).getAttribute('aria-label');\n }\n\n /**\n * Gets the dropdown button style.\n */\n public async getButtonStyle(): Promise<string> {\n const button = await this.#getDropdownButton();\n\n if (await button.hasClass('sky-btn-primary')) {\n return 'primary';\n }\n\n if (await button.hasClass('sky-btn-link')) {\n return 'link';\n }\n\n return 'default';\n }\n\n /**\n * Gets the dropdown button type.\n */\n public async getButtonType(): Promise<string> {\n const button = await this.#getDropdownButton();\n\n if (await button.hasClass('sky-dropdown-button-type-context-menu')) {\n return 'context-menu';\n }\n\n if (await button.hasClass('sky-dropdown-button-type-tab')) {\n return 'tab';\n }\n\n return 'select';\n }\n\n /**\n * Gets the dropdown menu component.\n */\n public async getDropdownMenu(): Promise<SkyDropdownMenuHarness> {\n const dropdownMenuId = await this.#getAriaControls();\n\n if (!dropdownMenuId) {\n throw new Error(\n 'Unable to retrieve dropdown menu harness because dropdown is closed.',\n );\n }\n\n return await this.#documentRootLocator.locatorFor(\n SkyDropdownMenuHarness.with({ selector: `#${dropdownMenuId}` }),\n )();\n }\n\n /**\n * Gets the hover tooltip text.\n */\n public async getTitle(): Promise<string | null> {\n return await (await this.#getDropdownButton()).getAttribute('title');\n }\n\n /**\n * Gets whether the dropdown is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const button = await this.#getDropdownButton();\n\n return (await button.getProperty('disabled')) ? true : false;\n }\n\n /**\n * Gets whether the dropdown menu is open.\n */\n public async isOpen(): Promise<boolean> {\n const ariaExpanded = await (\n await this.#getDropdownButton()\n ).getAttribute('aria-expanded');\n\n if (ariaExpanded === 'true') {\n return true;\n }\n\n return false;\n }\n\n /**\n * Gets the element ID of the dropdown menu that the dropdown button controls.\n */\n async #getAriaControls(): Promise<string | null> {\n return await (\n await this.#getDropdownButton()\n ).getAttribute('aria-controls');\n }\n}\n","import { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness for interacting with a popover body in tests.\n * @internal\n */\nexport class SkyPopoverBodyHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-popover-body';\n\n /**\n * Gets the text of the popover content body.\n */\n public async getText(): Promise<string> {\n return await (await this.host()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport {\n SkyOverlayHarness,\n SkyQueryableComponentHarness,\n} from '@skyux/core/testing';\n\nimport { SkyPopoverBodyHarness } from './popover-body-harness';\nimport { SkyPopoverContentHarnessFilters } from './popover-content-harness-filters';\n\n/**\n * Harness for interacting with a popover content component in tests.\n */\nexport class SkyPopoverContentHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-popover-content';\n\n #getBody = this.locatorFor(SkyPopoverBodyHarness);\n #getContainer = this.locatorFor('.sky-popover-container');\n #getOverlay =\n this.documentRootLocatorFactory().locatorForOptional(SkyOverlayHarness);\n #getTitle = this.locatorForOptional('.sky-popover-title');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyPopoverContentHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyPopoverContentHarnessFilters,\n ): HarnessPredicate<SkyPopoverContentHarness> {\n return new HarnessPredicate(SkyPopoverContentHarness, filters);\n }\n\n /**\n * Gets the placement of the popover content.\n */\n public async getPlacement(): Promise<string> {\n const container = await this.#getContainer();\n\n for (const placement of ['left', 'right', 'above', 'below']) {\n if (await container.hasClass('sky-popover-placement-' + placement)) {\n return placement;\n }\n }\n\n // This should never happen because the placement input is always defined by the parent.\n /* istanbul ignore next */\n return '';\n }\n\n /**\n * Gets the alignment of the popover content.\n */\n public async getAlignment(): Promise<string> {\n const container = await this.#getContainer();\n\n for (const alignment of ['left', 'center', 'right']) {\n if (await container.hasClass('sky-popover-alignment-' + alignment)) {\n return alignment;\n }\n }\n\n // This should never happen because the alignment input is always defined by the parent.\n /* istanbul ignore next */\n return '';\n }\n\n /**\n * Gets the text of the popover content title.\n */\n public async getTitleText(): Promise<string | undefined> {\n return await (await this.#getTitle())?.text();\n }\n\n /**\n * Gets the text of the popover content body.\n */\n public async getBodyText(): Promise<string> {\n return await (await this.#getBody()).getText();\n }\n\n /**\n * Clicks out of the popover.\n */\n public async clickOut(): Promise<void> {\n await (await (await this.#getOverlay())?.host())?.click();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyPopoverContentHarness } from './popover-content-harness';\nimport { SkyPopoverHarnessFilters } from './popover-harness-filters';\n\n/**\n * Harness for interacting with a popover component in tests.\n */\nexport class SkyPopoverHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-popover-trigger';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyPopoverHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyPopoverHarnessFilters,\n ): HarnessPredicate<SkyPopoverHarness> {\n return SkyPopoverHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Toggles a popover open or closed.\n */\n public async clickPopoverButton(): Promise<void> {\n await (await this.host()).click();\n }\n\n /**\n * Gets the popover content component.\n */\n public async getPopoverContent(): Promise<SkyPopoverContentHarness> {\n const content = await this.#getContent();\n if (!content) {\n throw new Error(\n 'Unable to retrieve the popover content because the popover is not open.',\n );\n }\n return content;\n }\n\n /**\n * Whether the popover is open.\n */\n public async isOpen(): Promise<boolean> {\n return !!(await this.#getContent());\n }\n\n async #getContent(): Promise<SkyPopoverContentHarness | null> {\n const popoverId = await this.#getPopoverId();\n\n if (popoverId) {\n return await this.#documentRootLocator.locatorForOptional(\n SkyPopoverContentHarness.with({ selector: `#${popoverId}` }),\n )();\n }\n\n return null;\n }\n\n async #getPopoverId(): Promise<string | null | undefined> {\n const pointerId = await (await this.host()).getAttribute('aria-controls');\n const pointerEl = await this.#documentRootLocator.locatorForOptional(\n `#${pointerId}`,\n )();\n\n return await pointerEl?.getAttribute('aria-owns');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;AASA;;;;;AAKG;MACU,kBAAkB,CAAA;AAC7B;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB;QACvC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;YACjD,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/C,YAAA,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ;YACvC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC;YACtD,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;SAClD;;AAGH;;AAEG;AACH,IAAA,IAAW,kBAAkB,GAAA;QAC3B,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;;AAG1E;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAC1C,IAAI,CAAC,IAAI,EAAE;YACT;;QAGF,OAAO;AACL,YAAA,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC;AACpD,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;SACpC;;AAGH;;AAEG;AACH,IAAA,IAAW,qBAAqB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE,KAAK,SAAS;;AAGpD,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;;AAG5D,IAAA,QAAQ;AAER,IAAA,QAAQ;IAER,WAAA,CAAY,OAAkC,EAAE,SAAiB,EAAA;AAC/D,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,uBAAuB,CACvD,OAAO,EACP,SAAS,EACT,cAAc,CACf;;AAGH;;AAEG;AACI,IAAA,MAAM,mBAAmB,GAAA;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,EAAE;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC7B,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AAGlC;;AAEG;IACI,MAAM,iBAAiB,CAAC,KAAa,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAE1C,IAAI,CAAC,OAAO,EAAE;YACZ;;AAGF,QAAA,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAA,CAAA,CAAG,CAAC;;QAGjE,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE;AAEhD,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC7B,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AAGlC;;AAEG;AACI,IAAA,eAAe,CACpB,KAAa,EAAA;AAEb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAE1C,IAAI,CAAC,OAAO,EAAE;YACZ;;AAGF,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAA,CAAA,CAAG,CAAC;;AAGjE,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAE3B,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;SACpC;;AAGH;;AAEG;IACI,sBAAsB,GAAA;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;;AAGF,QAAA,OAAO,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC;;IAGpD,mBAAmB,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAElC,IAAI,CAAC,OAAO,EAAE;YACZ;;AAGF,QAAA,OAAO,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;;IAGvD,WAAW,GAAA;AACT,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;;AAG9C,IAAA,eAAe,CAAC,UAAsC,EAAA;AACpD,QAAA,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE;AACjC,YAAA,OAAO,SAAS;;AAElB,QAAA,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE;AACjC,YAAA,OAAO,SAAS;;QAElB;;AAGF,IAAA,cAAc,CAAC,UAAsC,EAAA;QACnD,MAAM,MAAM,GAAG,2BAA2B;QAE1C,IAAI,KAAK,GAAG,EAAE;AACd,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC1B,YAAA,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBACjB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC1B,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;;;;AAKnC,QAAA,OAAO,KAAK;;AAEf;;AC/KD;;AAEG;MAIU,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAEhB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA;;;ACLD;;;;;AAKG;MACU,iBAAiB,CAAA;AAC5B;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,4BAA4B,CACtC,IAAI,CAAC,iBAAiB,EACtB,wBAAwB,CACzB;;AAGH;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;AAG1B;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,4BAA4B,CACtC,IAAI,CAAC,iBAAiB,EACtB,wBAAwB,CACzB;;AAGH;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGtD;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,eAAe,KAAK,SAAS;;AAG3C,IAAA,QAAQ;AAER,IAAA,WAAA,CAAY,OAAkC,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;AAGzB;;AAEG;IACI,IAAI,GAAA;;QAET,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;AAE7D,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC7B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;;AAInC,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,SAAS;;AAG/D,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,IAAI,SAAS;;AAGlE,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,SAAS;;AAG9D,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,SAAS;;IAG7D,WAAW,GAAA;QACT,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,SAAS;;AAG3D,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAElC,QAAA,OAAO,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;;AAGvD;;;;;;;;;AASG;IACH,4BAA4B,CAC1B,OAAgC,EAChC,MAAc,EAAA;QAEd,MAAM,gBAAgB,GAAG,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,QAAA,MAAM,aAAa,GAAG,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAEzE,QAAA,OAAO,CAAC,aAAa,GAAG,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGzE;;AC9GD;;AAEG;MAWU,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAvB,uBAAuB,EAAA,OAAA,EAAA,CAFxB,cAAc,CAAA,EAAA,OAAA,EAAA,CANtB,gBAAgB;;;YAIhB,oBAAoB,CAAA,EAAA,CAAA,CAAA;gHAIX,uBAAuB,EAAA,OAAA,EAAA,CAFxB,cAAc,EANtB,gBAAgB;;;YAIhB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAIX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,gBAAgB;;;wBAIhB,oBAAoB;AACrB,qBAAA;oBACD,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA;;;ACZD;;AAEG;AACG,MAAO,sBAAuB,SAAQ,mBAAmB,CAAA;AAC7D;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,mBAAmB,CAAC;AAEjD,IAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAChD,IAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAExC;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAsC,EAAA;AAEtC,QAAA,OAAO,sBAAsB,CAAC,qBAAqB,CAAC,OAAO;AACxD,aAAA,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,OAAO,EAAE,IAAI,KAAI;AACvD,YAAA,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;YAC5C,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACjE,SAAC;AACA,aAAA,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,OAAO,EAAE,QAAQ,KAAI;AACnE,YAAA,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE;YAChD,OAAO,MAAM,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC;AACrE,SAAC,CAAC;;AAGN;;AAEG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE;;AAGzC;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC;;AAG3D;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;QAClB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;;;;AC3C/C;;AAEG;AACG,MAAO,sBAAuB,SAAQ,4BAA4B,CAAA;AACtE;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,oBAAoB,CAAC;IAElD,WAAW,GACT,IAAI,CAAC,0BAA0B,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;AAEzE;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,gBAAgB,CAAC,sBAAsB,EAAE,OAAO,CAAC;;AAG9D;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE;;AAG3D;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;;AAGlE;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;AACtB,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC;;AAGvD;;;AAGG;IACI,MAAM,QAAQ,CACnB,OAAuC,EAAA;AAEvC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CACxC,sBAAsB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAC3C,EAAE;AAEH,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,IAAI,KAAK,CACb,CAAA,qDAAA,EAAwD,IAAI,CAAC,SAAS,CACpE,OAAO,CACR,CAAA,CAAA,CAAG,CACL;;iBACI;AACL,gBAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D;;;AAIL,QAAA,OAAO,SAAS;;AAGlB;;;AAGG;IACI,MAAM,OAAO,CAClB,OAAsC,EAAA;QAEtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC9C,QAAA,OAAO,SAAS,CAAC,CAAC,CAAC;;;;ACnFvB;;AAEG;AACG,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AACzD;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,cAAc,CAAC;AAE5C,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;IAExD,kBAAkB,GAAG,IAAI,CAAC,UAAU;;IAElC,sBAAsB;;AAEtB,IAAA,sBAAsB,CACvB;AAED;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAkC,EAAA;AAElC,QAAA,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAG1D;;AAEG;AACI,IAAA,MAAM,mBAAmB,GAAA;QAC9B,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE;;AAGjD;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;;AAG3E;;AAEG;AACI,IAAA,MAAM,cAAc,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;QAE9C,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC5C,YAAA,OAAO,SAAS;;QAGlB,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AACzC,YAAA,OAAO,MAAM;;AAGf,QAAA,OAAO,SAAS;;AAGlB;;AAEG;AACI,IAAA,MAAM,aAAa,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;QAE9C,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,uCAAuC,CAAC,EAAE;AAClE,YAAA,OAAO,cAAc;;QAGvB,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE;AACzD,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,QAAQ;;AAGjB;;AAEG;AACI,IAAA,MAAM,eAAe,GAAA;AAC1B,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE;QAEpD,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE;;QAGH,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAC/C,sBAAsB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,cAAc,EAAE,EAAE,CAAC,CAChE,EAAE;;AAGL;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC;;AAGtE;;AAEG;AACI,IAAA,MAAM,UAAU,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAE9C,QAAA,OAAO,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,KAAK;;AAG9D;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,MAAM,YAAY,GAAG,MAAM,CACzB,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAC/B,YAAY,CAAC,eAAe,CAAC;AAE/B,QAAA,IAAI,YAAY,KAAK,MAAM,EAAE;AAC3B,YAAA,OAAO,IAAI;;AAGb,QAAA,OAAO,KAAK;;AAGd;;AAEG;AACH,IAAA,MAAM,gBAAgB,GAAA;AACpB,QAAA,OAAO,MAAM,CACX,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAC/B,YAAY,CAAC,eAAe,CAAC;;;;ACtInC;;;AAGG;AACG,MAAO,qBAAsB,SAAQ,4BAA4B,CAAA;AACrE;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,mBAAmB,CAAC;AAEjD;;AAEG;AACI,IAAA,MAAM,OAAO,GAAA;QAClB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;;;;ACP3C;;AAEG;AACG,MAAO,wBAAyB,SAAQ,4BAA4B,CAAA;AACxE;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,qBAAqB,CAAC;AAEnD,IAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;AACjD,IAAA,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;IACzD,WAAW,GACT,IAAI,CAAC,0BAA0B,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;AACzE,IAAA,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;AAEzD;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAwC,EAAA;AAExC,QAAA,OAAO,IAAI,gBAAgB,CAAC,wBAAwB,EAAE,OAAO,CAAC;;AAGhE;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;AAE5C,QAAA,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;YAC3D,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC,wBAAwB,GAAG,SAAS,CAAC,EAAE;AAClE,gBAAA,OAAO,SAAS;;;;;AAMpB,QAAA,OAAO,EAAE;;AAGX;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QAE5C,KAAK,MAAM,SAAS,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;YACnD,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC,wBAAwB,GAAG,SAAS,CAAC,EAAE;AAClE,gBAAA,OAAO,SAAS;;;;;AAMpB,QAAA,OAAO,EAAE;;AAGX;;AAEG;AACI,IAAA,MAAM,YAAY,GAAA;QACvB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE;;AAG/C;;AAEG;AACI,IAAA,MAAM,WAAW,GAAA;QACtB,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE;;AAGhD;;AAEG;AACI,IAAA,MAAM,QAAQ,GAAA;AACnB,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE;;;;AChF7D;;AAEG;AACG,MAAO,iBAAkB,SAAQ,mBAAmB,CAAA;AACxD;;AAEG;aACW,IAAA,CAAA,YAAY,GAAG,sBAAsB,CAAC;AAEpD,IAAA,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAExD;;;AAGG;IACI,OAAO,IAAI,CAChB,OAAiC,EAAA;AAEjC,QAAA,OAAO,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC;;AAGzD;;AAEG;AACI,IAAA,MAAM,kBAAkB,GAAA;QAC7B,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE;;AAGnC;;AAEG;AACI,IAAA,MAAM,iBAAiB,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACxC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E;;AAEH,QAAA,OAAO,OAAO;;AAGhB;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;QACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;AAGrC,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QAE5C,IAAI,SAAS,EAAE;YACb,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CACvD,wBAAwB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAA,CAAA,EAAI,SAAS,EAAE,EAAE,CAAC,CAC7D,EAAE;;AAGL,QAAA,OAAO,IAAI;;AAGb,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,eAAe,CAAC;AACzE,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAClE,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAChB,EAAE;AAEH,QAAA,OAAO,MAAM,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC;;;;ACxErD;;AAEG;;;;"}
1
+ {"version":3,"file":"skyux-popovers-testing.mjs","sources":["../../../../../libs/components/popovers/testing/src/legacy/dropdown/dropdown-fixture.ts","../../../../../libs/components/popovers/testing/src/legacy/dropdown/dropdown-testing.module.ts","../../../../../libs/components/popovers/testing/src/legacy/popover/popover-fixture.ts","../../../../../libs/components/popovers/testing/src/legacy/popover/popover-testing.module.ts","../../../../../libs/components/popovers/testing/src/modules/dropdown/dropdown-item-harness.ts","../../../../../libs/components/popovers/testing/src/modules/dropdown/dropdown-menu-harness.ts","../../../../../libs/components/popovers/testing/src/modules/dropdown/dropdown-harness.ts","../../../../../libs/components/popovers/testing/src/modules/popover/popover-body-harness.ts","../../../../../libs/components/popovers/testing/src/modules/popover/popover-content-harness.ts","../../../../../libs/components/popovers/testing/src/modules/popover/popover-harness.ts","../../../../../libs/components/popovers/testing/src/skyux-popovers-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyPopoversFixtureDropdown } from './popovers-fixture-dropdown';\nimport { SkyPopoversFixtureDropdownItem } from './popovers-fixture-dropdown-item';\nimport { SkyPopoversFixtureDropdownMenu } from './popovers-fixture-dropdown-menu';\n\n/**\n * Provides information for and interaction with a SKY UX dropdown component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyDropdownFixture {\n /**\n * Returns information about the dropdown component.\n */\n public get dropdown(): SkyPopoversFixtureDropdown | undefined {\n const button = this.#buttonDebugElement;\n return {\n buttonStyle: this.#getButtonStyle(button.classes),\n buttonType: this.#getButtonType(button.classes),\n disabled: button.nativeElement.disabled,\n label: button.nativeElement.getAttribute('aria-label'),\n title: button.nativeElement.getAttribute('title'),\n };\n }\n\n /**\n * Returns the dropdown button's text.\n */\n public get dropdownButtonText(): string | undefined {\n return SkyAppTestUtility.getText(this.#buttonDebugElement.nativeElement);\n }\n\n /**\n * Returns information about the dropdown menu component.\n */\n public get dropdownMenu(): SkyPopoversFixtureDropdownMenu | undefined {\n const menu = this.getDropdownMenuContent();\n if (!menu) {\n return;\n }\n\n return {\n ariaLabelledBy: menu.getAttribute('aria-labelledby'),\n ariaRole: menu.getAttribute('role'),\n };\n }\n\n /**\n * Whether the dropdown menu is open and visible.\n */\n public get dropdownMenuIsVisible(): boolean {\n return this.getDropdownMenuContent() !== undefined;\n }\n\n get #buttonDebugElement(): DebugElement {\n return this.#debugEl.query(By.css('.sky-dropdown-button'));\n }\n\n #debugEl: DebugElement;\n\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-dropdown',\n );\n }\n\n /**\n * Click the dropdown button to open or close the dropdown menu.\n */\n public async clickDropdownButton(): Promise<void> {\n this.#buttonDebugElement.nativeElement.click();\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n /**\n * Click the dropdown item at the provided index.\n */\n public async clickDropdownItem(index: number): Promise<void> {\n const itemEls = this.#getDropdownItemEls();\n\n if (!itemEls) {\n return;\n }\n\n if (index >= itemEls.length) {\n throw new Error(`There is no dropdown item at index ${index}.`);\n }\n\n itemEls[index].querySelector('button,a').click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n /**\n * Returns information about the dropdown item at the provided index.\n */\n public getDropdownItem(\n index: number,\n ): SkyPopoversFixtureDropdownItem | undefined {\n const itemEls = this.#getDropdownItemEls();\n\n if (!itemEls) {\n return;\n }\n\n if (!itemEls[index]) {\n throw new Error(`There is no dropdown item at index ${index}.`);\n }\n\n const item = itemEls[index];\n\n return {\n ariaRole: item.getAttribute('role'),\n };\n }\n\n /**\n * Returns the contents of the dropdown menu.\n */\n public getDropdownMenuContent(): any {\n const overlay = this.#getOverlay();\n if (!overlay) {\n return;\n }\n\n return overlay.querySelector('.sky-dropdown-menu');\n }\n\n #getDropdownItemEls(): NodeListOf<any> | undefined {\n const overlay = this.#getOverlay();\n\n if (!overlay) {\n return;\n }\n\n return overlay.querySelectorAll('.sky-dropdown-item');\n }\n\n #getOverlay(): HTMLElement | null {\n return document.querySelector('sky-overlay');\n }\n\n #getButtonStyle(classNames: { [key: string]: boolean }): string | undefined {\n if (classNames['sky-btn-primary']) {\n return 'primary';\n }\n if (classNames['sky-btn-default']) {\n return 'default';\n }\n return;\n }\n\n #getButtonType(classNames: { [key: string]: boolean }): string {\n const prefix = 'sky-dropdown-button-type-';\n\n let found = '';\n for (const i in classNames) {\n if (classNames[i]) {\n if (i.indexOf(prefix) > -1) {\n found = i.replace(prefix, '');\n }\n }\n }\n\n return found;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyDropdownModule } from '@skyux/popovers';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyDropdownModule],\n})\nexport class SkyDropdownTestingModule {}\n","import { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Provides information for and interaction with a SKY UX popover component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyPopoverFixture {\n /**\n * Returns the popover alignment if the popover is open, otherwise undefined.\n */\n public get alignment(): string | undefined {\n return this.#getClassSuffixByClassPrefix(\n this.#containerElement,\n 'sky-popover-alignment-',\n );\n }\n\n /**\n * Returns the popover body element if the popover is open, otherwise undefined.\n */\n public get body(): HTMLElement | undefined {\n return this.#bodyElement;\n }\n\n /**\n * Returns the popover position if the popover is open, otherwise undefined.\n */\n public get placement(): string | undefined {\n return this.#getClassSuffixByClassPrefix(\n this.#containerElement,\n 'sky-popover-placement-',\n );\n }\n\n /**\n * Returns the popover title text if the popover is open, otherwise undefined.\n */\n public get popoverTitle(): string | undefined {\n return SkyAppTestUtility.getText(this.#titleElement);\n }\n\n /**\n * Whether the popover is open and visible.\n */\n public get popoverIsVisible(): boolean {\n return this.#contentElement !== undefined;\n }\n\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>) {\n this.#fixture = fixture;\n }\n\n /**\n * Triggers the blur event for the popover.\n */\n public blur(): Promise<unknown> {\n // close the popover by changing focus to the body element\n SkyAppTestUtility.fireDomEvent(window.document.body, 'click');\n\n this.#fixture.detectChanges();\n return this.#fixture.whenStable();\n }\n\n //#region helpers\n get #contentElement(): HTMLElement | undefined {\n return this.#queryOverlay('sky-popover-content') || undefined;\n }\n\n get #containerElement(): HTMLElement | undefined {\n return this.#queryOverlay('.sky-popover-container') || undefined;\n }\n\n get #titleElement(): HTMLElement | undefined {\n return this.#queryOverlay('.sky-popover-title') || undefined;\n }\n\n get #bodyElement(): HTMLElement | undefined {\n return this.#queryOverlay('.sky-popover-body') || undefined;\n }\n\n #getOverlay(): Element | undefined {\n return document.querySelector('sky-overlay') || undefined;\n }\n\n #queryOverlay(query: string): HTMLElement | null {\n const overlay = this.#getOverlay();\n\n return !overlay ? null : overlay.querySelector(query);\n }\n\n /**\n * Searches the element's class names for a class which matches a given prefix.\n * If a match is found, the prefix is trimmed from the class name and the suffix is returned.\n * If no class matching the prefix is found, undefined is returned.\n *\n * Example:\n * For a class 'sky-popover-placement-right', passing the prefix 'sky-popover-placement-'\n * should return the value 'right'.\n * @param prefix\n */\n #getClassSuffixByClassPrefix(\n element: HTMLElement | undefined,\n prefix: string,\n ): string | undefined {\n const containerClasses = element?.className.split(' ');\n const prefixedClass = containerClasses?.find((x) => x.startsWith(prefix));\n\n return !prefixedClass ? undefined : prefixedClass.slice(prefix.length);\n }\n //#endregion\n}\n","import { NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { SkyPopoverModule } from '@skyux/popovers';\nimport { SkyThemeModule } from '@skyux/theme';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [\n SkyPopoverModule,\n\n // The noop animations module needs to be loaded last to avoid\n // subsequent modules adding animations and overriding this.\n NoopAnimationsModule,\n ],\n imports: [SkyThemeModule],\n})\nexport class SkyPopoverTestingModule {}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDropdownItemHarnessFilters } from './dropdown-item-harness.filters';\n\n/**\n * Harness for interacting with a dropdown item component in tests.\n */\nexport class SkyDropdownItemHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-dropdown-item';\n\n #getItem = this.locatorFor('.sky-dropdown-item');\n #getButton = this.locatorFor('button,a');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDropdownItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDropdownItemHarnessFilters,\n ): HarnessPredicate<SkyDropdownItemHarness> {\n return SkyDropdownItemHarness.getDataSkyIdPredicate(filters)\n .addOption('text', filters.text, async (harness, text) => {\n const menuItemText = await harness.getText();\n return await HarnessPredicate.stringMatches(menuItemText, text);\n })\n .addOption('ariaRole', filters.ariaRole, async (harness, ariaRole) => {\n const itemAriaRole = await harness.getAriaRole();\n return await HarnessPredicate.stringMatches(itemAriaRole, ariaRole);\n });\n }\n\n /**\n * Clicks the dropdown item.\n */\n public async click(): Promise<void> {\n await (await this.#getButton()).click();\n }\n\n /**\n * Gets the dropdown item role.\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.#getItem()).getAttribute('role');\n }\n\n /**\n * Gets the menu item text.\n */\n public async getText(): Promise<string | null> {\n return await (await this.#getItem()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport {\n SkyOverlayHarness,\n SkyQueryableComponentHarness,\n} from '@skyux/core/testing';\n\nimport { SkyDropdownItemHarness } from './dropdown-item-harness';\nimport { SkyDropdownItemHarnessFilters } from './dropdown-item-harness.filters';\nimport { SkyDropdownMenuHarnessFilters } from './dropdown-menu-harness.filters';\n\n/**\n * Harness for interacting with a dropdown menu component in tests.\n */\nexport class SkyDropdownMenuHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-dropdown-menu';\n\n #getOverlay =\n this.documentRootLocatorFactory().locatorForOptional(SkyOverlayHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDropdownMenuHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDropdownMenuHarnessFilters,\n ): HarnessPredicate<SkyDropdownMenuHarness> {\n return new HarnessPredicate(SkyDropdownMenuHarness, filters);\n }\n\n /**\n * Clicks out of the dropdown menu.\n */\n public async clickOut(): Promise<void> {\n await (await (await this.#getOverlay())?.host())?.click();\n }\n\n /**\n * Gets the `aria-labelledby` value.\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (await this.host()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the dropdown menu role.\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.host()).getAttribute('role');\n }\n\n /**\n * Gets an array of dropdown menu item harnesses.\n * @param filters Optional filter for which menu items to return\n */\n public async getItems(\n filters?: SkyDropdownItemHarnessFilters,\n ): Promise<SkyDropdownItemHarness[]> {\n const harnesses = await this.locatorForAll(\n SkyDropdownItemHarness.with(filters || {}),\n )();\n\n if (harnesses.length === 0) {\n if (filters) {\n throw new Error(\n `Unable to find dropdown menu item(s) with filter(s): ${JSON.stringify(\n filters,\n )}.`,\n );\n } else {\n throw new Error(\n 'Unable to retrieve item(s) because dropdown menu is empty.',\n );\n }\n }\n\n return harnesses;\n }\n\n /**\n * Gets the first item that matches the given filters\n * @param filters filter for which menu item to return\n */\n public async getItem(\n filters: SkyDropdownItemHarnessFilters,\n ): Promise<SkyDropdownItemHarness> {\n const harnesses = await this.getItems(filters);\n return harnesses[0];\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDropdownHarnessFilters } from './dropdown-harness.filters';\nimport { SkyDropdownMenuHarness } from './dropdown-menu-harness';\n\n/**\n * Harness for interacting with a dropdown component in tests.\n */\nexport class SkyDropdownHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-dropdown';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getDropdownButton = this.locatorFor(\n // Default trigger button\n '.sky-dropdown-button',\n // Custom trigger button\n '[skyDropdownTrigger]',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDropdownHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDropdownHarnessFilters,\n ): HarnessPredicate<SkyDropdownHarness> {\n return SkyDropdownHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the dropdown button.\n */\n public async clickDropdownButton(): Promise<void> {\n await (await this.#getDropdownButton()).click();\n }\n\n /**\n * Gets the aria-label value.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getDropdownButton()).getAttribute('aria-label');\n }\n\n /**\n * Gets the dropdown button style.\n */\n public async getButtonStyle(): Promise<string> {\n const button = await this.#getDropdownButton();\n\n if (await button.hasClass('sky-btn-primary')) {\n return 'primary';\n }\n\n if (await button.hasClass('sky-btn-link')) {\n return 'link';\n }\n\n return 'default';\n }\n\n /**\n * Gets the dropdown button type.\n */\n public async getButtonType(): Promise<string> {\n const button = await this.#getDropdownButton();\n\n if (await button.hasClass('sky-dropdown-button-type-context-menu')) {\n return 'context-menu';\n }\n\n if (await button.hasClass('sky-dropdown-button-type-tab')) {\n return 'tab';\n }\n\n return 'select';\n }\n\n /**\n * Gets the dropdown menu component.\n */\n public async getDropdownMenu(): Promise<SkyDropdownMenuHarness> {\n const dropdownMenuId = await this.#getAriaControls();\n\n if (!dropdownMenuId) {\n throw new Error(\n 'Unable to retrieve dropdown menu harness because dropdown is closed.',\n );\n }\n\n return await this.#documentRootLocator.locatorFor(\n SkyDropdownMenuHarness.with({ selector: `#${dropdownMenuId}` }),\n )();\n }\n\n /**\n * Gets the hover tooltip text.\n */\n public async getTitle(): Promise<string | null> {\n return await (await this.#getDropdownButton()).getAttribute('title');\n }\n\n /**\n * Gets whether the dropdown is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const button = await this.#getDropdownButton();\n\n return (await button.getProperty('disabled')) ? true : false;\n }\n\n /**\n * Gets whether the dropdown menu is open.\n */\n public async isOpen(): Promise<boolean> {\n const ariaExpanded = await (\n await this.#getDropdownButton()\n ).getAttribute('aria-expanded');\n\n if (ariaExpanded === 'true') {\n return true;\n }\n\n return false;\n }\n\n /**\n * Gets the element ID of the dropdown menu that the dropdown button controls.\n */\n async #getAriaControls(): Promise<string | null> {\n return await (\n await this.#getDropdownButton()\n ).getAttribute('aria-controls');\n }\n}\n","import { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness for interacting with a popover body in tests.\n * @internal\n */\nexport class SkyPopoverBodyHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-popover-body';\n\n /**\n * Gets the text of the popover content body.\n */\n public async getText(): Promise<string> {\n return await (await this.host()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport {\n SkyOverlayHarness,\n SkyQueryableComponentHarness,\n} from '@skyux/core/testing';\n\nimport { SkyPopoverBodyHarness } from './popover-body-harness';\nimport { SkyPopoverContentHarnessFilters } from './popover-content-harness-filters';\n\n/**\n * Harness for interacting with a popover content component in tests.\n */\nexport class SkyPopoverContentHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-popover-content';\n\n #getBody = this.locatorFor(SkyPopoverBodyHarness);\n #getContainer = this.locatorFor('.sky-popover-container');\n #getOverlay =\n this.documentRootLocatorFactory().locatorForOptional(SkyOverlayHarness);\n #getTitle = this.locatorForOptional('.sky-popover-title');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyPopoverContentHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyPopoverContentHarnessFilters,\n ): HarnessPredicate<SkyPopoverContentHarness> {\n return new HarnessPredicate(SkyPopoverContentHarness, filters);\n }\n\n /**\n * Gets the placement of the popover content.\n */\n public async getPlacement(): Promise<string> {\n const container = await this.#getContainer();\n\n for (const placement of ['left', 'right', 'above', 'below']) {\n if (await container.hasClass('sky-popover-placement-' + placement)) {\n return placement;\n }\n }\n\n // This should never happen because the placement input is always defined by the parent.\n /* istanbul ignore next */\n return '';\n }\n\n /**\n * Gets the alignment of the popover content.\n */\n public async getAlignment(): Promise<string> {\n const container = await this.#getContainer();\n\n for (const alignment of ['left', 'center', 'right']) {\n if (await container.hasClass('sky-popover-alignment-' + alignment)) {\n return alignment;\n }\n }\n\n // This should never happen because the alignment input is always defined by the parent.\n /* istanbul ignore next */\n return '';\n }\n\n /**\n * Gets the text of the popover content title.\n */\n public async getTitleText(): Promise<string | undefined> {\n return await (await this.#getTitle())?.text();\n }\n\n /**\n * Gets the text of the popover content body.\n */\n public async getBodyText(): Promise<string> {\n return await (await this.#getBody()).getText();\n }\n\n /**\n * Clicks out of the popover.\n */\n public async clickOut(): Promise<void> {\n await (await (await this.#getOverlay())?.host())?.click();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyPopoverContentHarness } from './popover-content-harness';\nimport { SkyPopoverHarnessFilters } from './popover-harness-filters';\n\n/**\n * Harness for interacting with a popover component in tests.\n */\nexport class SkyPopoverHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-popover-trigger';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyPopoverHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyPopoverHarnessFilters,\n ): HarnessPredicate<SkyPopoverHarness> {\n return SkyPopoverHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Toggles a popover open or closed.\n */\n public async clickPopoverButton(): Promise<void> {\n await (await this.host()).click();\n }\n\n /**\n * Gets the popover content component.\n */\n public async getPopoverContent(): Promise<SkyPopoverContentHarness> {\n const content = await this.#getContent();\n if (!content) {\n throw new Error(\n 'Unable to retrieve the popover content because the popover is not open.',\n );\n }\n return content;\n }\n\n /**\n * Whether the popover is open.\n */\n public async isOpen(): Promise<boolean> {\n return !!(await this.#getContent());\n }\n\n async #getContent(): Promise<SkyPopoverContentHarness | null> {\n const popoverId = await this.#getPopoverId();\n\n if (popoverId) {\n return await this.#documentRootLocator.locatorForOptional(\n SkyPopoverContentHarness.with({ selector: `#${popoverId}` }),\n )();\n }\n\n return null;\n }\n\n async #getPopoverId(): Promise<string | null | undefined> {\n const pointerId = await (await this.host()).getAttribute('aria-controls');\n const pointerEl = await this.#documentRootLocator.locatorForOptional(\n `#${pointerId}`,\n )();\n\n return await pointerEl?.getAttribute('aria-owns');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}