@skyux/popovers 8.2.6 → 8.3.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.
Files changed (28) hide show
  1. package/documentation.json +1447 -332
  2. package/esm2020/lib/modules/popover/popover-content.component.mjs +8 -4
  3. package/esm2020/lib/modules/popover/popover.component.mjs +4 -1
  4. package/esm2020/lib/modules/popover/popover.directive.mjs +29 -6
  5. package/esm2020/testing/popover/harness/popover-body-harness.mjs +42 -0
  6. package/esm2020/testing/popover/harness/popover-content-harness-filters.mjs +2 -0
  7. package/esm2020/testing/popover/harness/popover-content-harness.mjs +100 -0
  8. package/esm2020/testing/popover/harness/popover-harness-filters.mjs +2 -0
  9. package/esm2020/testing/popover/harness/popover-harness.mjs +56 -0
  10. package/esm2020/testing/public-api.mjs +5 -1
  11. package/fesm2015/skyux-popovers-testing.mjs +232 -2
  12. package/fesm2015/skyux-popovers-testing.mjs.map +1 -1
  13. package/fesm2015/skyux-popovers.mjs +39 -9
  14. package/fesm2015/skyux-popovers.mjs.map +1 -1
  15. package/fesm2020/skyux-popovers-testing.mjs +192 -2
  16. package/fesm2020/skyux-popovers-testing.mjs.map +1 -1
  17. package/fesm2020/skyux-popovers.mjs +39 -9
  18. package/fesm2020/skyux-popovers.mjs.map +1 -1
  19. package/lib/modules/popover/popover-content.component.d.ts +2 -0
  20. package/lib/modules/popover/popover.component.d.ts +1 -0
  21. package/lib/modules/popover/popover.directive.d.ts +12 -1
  22. package/package.json +6 -6
  23. package/testing/popover/harness/popover-body-harness.d.ts +31 -0
  24. package/testing/popover/harness/popover-content-harness-filters.d.ts +7 -0
  25. package/testing/popover/harness/popover-content-harness.d.ts +53 -0
  26. package/testing/popover/harness/popover-harness-filters.d.ts +6 -0
  27. package/testing/popover/harness/popover-harness.d.ts +31 -0
  28. package/testing/public-api.d.ts +4 -0
@@ -7,7 +7,7 @@ import { SkyAppTestUtility } from '@skyux-sdk/testing';
7
7
  import { NoopAnimationsModule } from '@angular/platform-browser/animations';
8
8
  import { SkyThemeModule } from '@skyux/theme';
9
9
  import { SkyComponentHarness, SkyOverlayHarness } from '@skyux/core/testing';
10
- import { HarnessPredicate } from '@angular/cdk/testing';
10
+ import { HarnessPredicate, ComponentHarness } from '@angular/cdk/testing';
11
11
 
12
12
  /**
13
13
  * @internal
@@ -462,9 +462,199 @@ async function _SkyDropdownHarness_getAriaControls() {
462
462
  */
463
463
  SkyDropdownHarness.hostSelector = 'sky-dropdown';
464
464
 
465
+ /**
466
+ * Harness for interacting with a popover body in tests.
467
+ * @internal
468
+ */
469
+ class SkyPopoverBodyHarness extends ComponentHarness {
470
+ /**
471
+ * Returns a child harness.
472
+ */
473
+ async queryHarness(harness) {
474
+ return this.locatorForOptional(harness)();
475
+ }
476
+ /**
477
+ * Returns child harnesses.
478
+ */
479
+ async queryHarnesses(harness) {
480
+ return this.locatorForAll(harness)();
481
+ }
482
+ /**
483
+ * Returns a child test element.
484
+ */
485
+ async querySelector(selector) {
486
+ return this.locatorForOptional(selector)();
487
+ }
488
+ /**
489
+ * Returns child test elements.
490
+ */
491
+ async querySelectorAll(selector) {
492
+ return this.locatorForAll(selector)();
493
+ }
494
+ /**
495
+ * Gets the text of the popover content body.
496
+ */
497
+ async getText() {
498
+ return (await this.host()).text();
499
+ }
500
+ }
501
+ /**
502
+ * @internal
503
+ */
504
+ SkyPopoverBodyHarness.hostSelector = '.sky-popover-body';
505
+
506
+ var _SkyPopoverContentHarness_getBody, _SkyPopoverContentHarness_getContainer, _SkyPopoverContentHarness_getOverlay, _SkyPopoverContentHarness_getTitle;
507
+ /**
508
+ * Harness for interacting with a popover content component in tests.
509
+ */
510
+ class SkyPopoverContentHarness extends ComponentHarness {
511
+ constructor() {
512
+ super(...arguments);
513
+ _SkyPopoverContentHarness_getBody.set(this, this.locatorFor(SkyPopoverBodyHarness));
514
+ _SkyPopoverContentHarness_getContainer.set(this, this.locatorFor('.sky-popover-container'));
515
+ _SkyPopoverContentHarness_getOverlay.set(this, this.documentRootLocatorFactory().locatorForOptional(SkyOverlayHarness));
516
+ _SkyPopoverContentHarness_getTitle.set(this, this.locatorForOptional('.sky-popover-title'));
517
+ }
518
+ /**
519
+ * Gets a `HarnessPredicate` that can be used to search for a
520
+ * `SkyPopoverContentHarness` that meets certain criteria.
521
+ */
522
+ static with(filters) {
523
+ return new HarnessPredicate(SkyPopoverContentHarness, filters);
524
+ }
525
+ /**
526
+ * Returns a child harness.
527
+ */
528
+ async queryHarness(harness) {
529
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).queryHarness(harness);
530
+ }
531
+ /**
532
+ * Returns child harnesses.
533
+ */
534
+ async queryHarnesses(harness) {
535
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).queryHarnesses(harness);
536
+ }
537
+ /**
538
+ * Returns a child test element.
539
+ */
540
+ async querySelector(selector) {
541
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).querySelector(selector);
542
+ }
543
+ /**
544
+ * Returns child test elements.
545
+ */
546
+ async querySelectorAll(selector) {
547
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).querySelectorAll(selector);
548
+ }
549
+ /**
550
+ * Gets the placement of the popover content.
551
+ */
552
+ async getPlacement() {
553
+ const container = await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getContainer, "f").call(this);
554
+ for (const placement of ['left', 'right', 'above', 'below']) {
555
+ if (await container.hasClass('sky-popover-placement-' + placement)) {
556
+ return placement;
557
+ }
558
+ }
559
+ // This should never happen because the placement input is always defined by the parent.
560
+ /* istanbul ignore next */
561
+ return '';
562
+ }
563
+ /**
564
+ * Gets the alignment of the popover content.
565
+ */
566
+ async getAlignment() {
567
+ const container = await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getContainer, "f").call(this);
568
+ for (const alignment of ['left', 'center', 'right']) {
569
+ if (await container.hasClass('sky-popover-alignment-' + alignment)) {
570
+ return alignment;
571
+ }
572
+ }
573
+ // This should never happen because the alignment input is always defined by the parent.
574
+ /* istanbul ignore next */
575
+ return '';
576
+ }
577
+ /**
578
+ * Gets the text of the popover content title.
579
+ */
580
+ async getTitleText() {
581
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getTitle, "f").call(this))?.text();
582
+ }
583
+ /**
584
+ * Gets the text of the popover content body.
585
+ */
586
+ async getBodyText() {
587
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).getText();
588
+ }
589
+ /**
590
+ * Clicks out of the popover. If `dismissOnBlur` property is set to false, then the popover does not close.
591
+ */
592
+ async clickOut() {
593
+ (await (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getOverlay, "f").call(this))?.host())?.click();
594
+ }
595
+ }
596
+ _SkyPopoverContentHarness_getBody = new WeakMap(), _SkyPopoverContentHarness_getContainer = new WeakMap(), _SkyPopoverContentHarness_getOverlay = new WeakMap(), _SkyPopoverContentHarness_getTitle = new WeakMap();
597
+ /**
598
+ * @internal
599
+ */
600
+ SkyPopoverContentHarness.hostSelector = 'sky-popover-content';
601
+
602
+ var _SkyPopoverHarness_instances, _SkyPopoverHarness_documentRootLocator, _SkyPopoverHarness_getContent, _SkyPopoverHarness_getPopoverId;
603
+ /**
604
+ * Harness for interacting with a popover component in tests.
605
+ */
606
+ class SkyPopoverHarness extends SkyComponentHarness {
607
+ constructor() {
608
+ super(...arguments);
609
+ _SkyPopoverHarness_instances.add(this);
610
+ _SkyPopoverHarness_documentRootLocator.set(this, this.documentRootLocatorFactory());
611
+ }
612
+ /**
613
+ * Gets a `HarnessPredicate` that can be used to search for a
614
+ * `SkyPopoverHarness` that meets certain criteria.
615
+ */
616
+ static with(filters) {
617
+ return SkyPopoverHarness.getDataSkyIdPredicate(filters);
618
+ }
619
+ /**
620
+ * Toggles a popover open or closed.
621
+ */
622
+ async clickPopoverButton() {
623
+ (await this.host()).click();
624
+ }
625
+ /**
626
+ * Gets the popover content component.
627
+ */
628
+ async getPopoverContent() {
629
+ const content = await __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getContent).call(this);
630
+ if (!content) {
631
+ throw new Error('Unable to retrieve the popover content because the popover is not open.');
632
+ }
633
+ return content;
634
+ }
635
+ /**
636
+ * Whether the popover is open.
637
+ */
638
+ async isOpen() {
639
+ return !!(await __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getContent).call(this));
640
+ }
641
+ }
642
+ _SkyPopoverHarness_documentRootLocator = new WeakMap(), _SkyPopoverHarness_instances = new WeakSet(), _SkyPopoverHarness_getContent = async function _SkyPopoverHarness_getContent() {
643
+ const popoverId = await __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getPopoverId).call(this);
644
+ return __classPrivateFieldGet(this, _SkyPopoverHarness_documentRootLocator, "f").locatorForOptional(SkyPopoverContentHarness.with({ selector: `#${popoverId}` }))();
645
+ }, _SkyPopoverHarness_getPopoverId = async function _SkyPopoverHarness_getPopoverId() {
646
+ return ((await (await this.host()).getAttribute('data-popover-id')) ||
647
+ /* istanbul ignore next */
648
+ '');
649
+ };
650
+ /**
651
+ * @internal
652
+ */
653
+ SkyPopoverHarness.hostSelector = '.sky-popover-trigger';
654
+
465
655
  /**
466
656
  * Generated bundle index. Do not edit.
467
657
  */
468
658
 
469
- export { SkyDropdownFixture, SkyDropdownHarness, SkyDropdownItemHarness, SkyDropdownMenuHarness, SkyDropdownTestingModule, SkyPopoverFixture, SkyPopoverTestingModule };
659
+ export { SkyDropdownFixture, SkyDropdownHarness, SkyDropdownItemHarness, SkyDropdownMenuHarness, SkyDropdownTestingModule, SkyPopoverContentHarness, SkyPopoverFixture, SkyPopoverHarness, SkyPopoverTestingModule };
470
660
  //# sourceMappingURL=skyux-popovers-testing.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-popovers-testing.mjs","sources":["../../../../../libs/components/popovers/testing/src/dropdown/dropdown-testing.module.ts","../../../../../libs/components/popovers/testing/src/dropdown/dropdown-fixture.ts","../../../../../libs/components/popovers/testing/src/popover/popover-testing.module.ts","../../../../../libs/components/popovers/testing/src/popover/popover-fixture.ts","../../../../../libs/components/popovers/testing/src/dropdown/harness/dropdown-item-harness.ts","../../../../../libs/components/popovers/testing/src/dropdown/harness/dropdown-menu-harness.ts","../../../../../libs/components/popovers/testing/src/dropdown/harness/dropdown-harness.ts","../../../../../libs/components/popovers/testing/src/skyux-popovers-testing.ts"],"sourcesContent":["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 { 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<unknown> {\n this.#buttonDebugElement.nativeElement.click();\n this.#fixture.detectChanges();\n return this.#fixture.whenStable();\n }\n\n /**\n * Click the dropdown item at the provided index.\n */\n public async clickDropdownItem(index: number): Promise<unknown> {\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 return 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 { 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 { 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 { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDropdownItemHarnessFilters } from './dropdown-item-harness.filters';\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 * `SkyAutocompleteHarness` 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 HarnessPredicate.stringMatches(await harness.getText(), text)\n )\n .addOption('ariaRole', filters.ariaRole, async (harness, ariaRole) =>\n HarnessPredicate.stringMatches(await harness.getAriaRole(), 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 this.#getItem()).getAttribute('role');\n }\n\n /**\n * Gets the menu item text.\n */\n public async getText(): Promise<string | null> {\n return (await this.#getItem()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness, SkyOverlayHarness } 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 dropdown menu in tests.\n */\nexport class SkyDropdownMenuHarness extends SkyComponentHarness {\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. If `dismissOnBlur` property is set to false, then the dropdown menu does not close.\n */\n public async clickOut(): Promise<void> {\n (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 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 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\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('.sky-dropdown-button');\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 this.#getDropdownButton()).click();\n }\n\n /**\n * Gets the aria-label value.\n */\n public async getAriaLabel(): Promise<string | null> {\n return (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 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 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 this.#getDropdownButton()).getAttribute('aria-controls');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skyux-popovers-testing.mjs","sources":["../../../../../libs/components/popovers/testing/src/dropdown/dropdown-testing.module.ts","../../../../../libs/components/popovers/testing/src/dropdown/dropdown-fixture.ts","../../../../../libs/components/popovers/testing/src/popover/popover-testing.module.ts","../../../../../libs/components/popovers/testing/src/popover/popover-fixture.ts","../../../../../libs/components/popovers/testing/src/dropdown/harness/dropdown-item-harness.ts","../../../../../libs/components/popovers/testing/src/dropdown/harness/dropdown-menu-harness.ts","../../../../../libs/components/popovers/testing/src/dropdown/harness/dropdown-harness.ts","../../../../../libs/components/popovers/testing/src/popover/harness/popover-body-harness.ts","../../../../../libs/components/popovers/testing/src/popover/harness/popover-content-harness.ts","../../../../../libs/components/popovers/testing/src/popover/harness/popover-harness.ts","../../../../../libs/components/popovers/testing/src/skyux-popovers-testing.ts"],"sourcesContent":["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 { 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<unknown> {\n this.#buttonDebugElement.nativeElement.click();\n this.#fixture.detectChanges();\n return this.#fixture.whenStable();\n }\n\n /**\n * Click the dropdown item at the provided index.\n */\n public async clickDropdownItem(index: number): Promise<unknown> {\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 return 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 { 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 { 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 { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDropdownItemHarnessFilters } from './dropdown-item-harness.filters';\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 * `SkyAutocompleteHarness` 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 HarnessPredicate.stringMatches(await harness.getText(), text)\n )\n .addOption('ariaRole', filters.ariaRole, async (harness, ariaRole) =>\n HarnessPredicate.stringMatches(await harness.getAriaRole(), 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 this.#getItem()).getAttribute('role');\n }\n\n /**\n * Gets the menu item text.\n */\n public async getText(): Promise<string | null> {\n return (await this.#getItem()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness, SkyOverlayHarness } 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 dropdown menu in tests.\n */\nexport class SkyDropdownMenuHarness extends SkyComponentHarness {\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. If `dismissOnBlur` property is set to false, then the dropdown menu does not close.\n */\n public async clickOut(): Promise<void> {\n (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 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 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\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('.sky-dropdown-button');\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 this.#getDropdownButton()).click();\n }\n\n /**\n * Gets the aria-label value.\n */\n public async getAriaLabel(): Promise<string | null> {\n return (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 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 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 this.#getDropdownButton()).getAttribute('aria-controls');\n }\n}\n","import {\n ComponentHarness,\n HarnessQuery,\n TestElement,\n} from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a popover body in tests.\n * @internal\n */\nexport class SkyPopoverBodyHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-popover-body';\n\n /**\n * Returns a child harness.\n */\n public async queryHarness<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T | null> {\n return this.locatorForOptional(harness)();\n }\n\n /**\n * Returns child harnesses.\n */\n public async queryHarnesses<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T[]> {\n return this.locatorForAll(harness)();\n }\n\n /**\n * Returns a child test element.\n */\n public async querySelector(selector: string): Promise<TestElement | null> {\n return this.locatorForOptional(selector)();\n }\n\n /**\n * Returns child test elements.\n */\n public async querySelectorAll(selector: string): Promise<TestElement[]> {\n return this.locatorForAll(selector)();\n }\n\n /**\n * Gets the text of the popover content body.\n */\n public async getText(): Promise<string> {\n return (await this.host()).text();\n }\n}\n","import {\n ComponentHarness,\n HarnessPredicate,\n HarnessQuery,\n TestElement,\n} from '@angular/cdk/testing';\nimport { SkyOverlayHarness } 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 ComponentHarness {\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 * Returns a child harness.\n */\n public async queryHarness<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T | null> {\n return (await this.#getBody()).queryHarness(harness);\n }\n\n /**\n * Returns child harnesses.\n */\n public async queryHarnesses<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T[]> {\n return (await this.#getBody()).queryHarnesses(harness);\n }\n\n /**\n * Returns a child test element.\n */\n public async querySelector(selector: string): Promise<TestElement | null> {\n return (await this.#getBody()).querySelector(selector);\n }\n\n /**\n * Returns child test elements.\n */\n public async querySelectorAll(selector: string): Promise<TestElement[]> {\n return (await this.#getBody()).querySelectorAll(selector);\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 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 this.#getBody()).getText();\n }\n\n /**\n * Clicks out of the popover. If `dismissOnBlur` property is set to false, then the popover does not close.\n */\n public async clickOut(): Promise<void> {\n (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 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 return this.#documentRootLocator.locatorForOptional(\n SkyPopoverContentHarness.with({ selector: `#${popoverId}` })\n )();\n }\n\n async #getPopoverId(): Promise<string> {\n return (\n (await (await this.host()).getAttribute('data-popover-id')) ||\n /* istanbul ignore next */\n ''\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, inject, ChangeDetectorRef, ElementRef, TemplateRef, ViewChild, EventEmitter, Optional, Output, ContentChildren, Injectable, ViewContainerRef, Inject, Directive } from '@angular/core';
4
+ import { NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, inject, ChangeDetectorRef, ElementRef, TemplateRef, ViewChild, EventEmitter, Optional, Output, ContentChildren, Injectable, ViewContainerRef, HostBinding, Inject, Directive } from '@angular/core';
5
5
  import * as i1$1 from '@skyux/core';
6
6
  import { SkyAffixService, SkyOverlayService, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAffixModule, SkyOverlayModule } from '@skyux/core';
7
7
  import * as i2 from '@skyux/indicators';
@@ -555,7 +555,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
555
555
  }] } });
556
556
 
557
557
  var _SkyDropdownMenuComponent_instances, _SkyDropdownMenuComponent_ngUnsubscribe, _SkyDropdownMenuComponent__ariaRole, _SkyDropdownMenuComponent__menuIndex, _SkyDropdownMenuComponent__useNativeFocus, _SkyDropdownMenuComponent_changeDetector, _SkyDropdownMenuComponent_elementRef, _SkyDropdownMenuComponent_dropdownComponent, _SkyDropdownMenuComponent_resetItemsActiveState, _SkyDropdownMenuComponent_focusItem, _SkyDropdownMenuComponent_getItemByIndex, _SkyDropdownMenuComponent_selectItemByEventTarget, _SkyDropdownMenuComponent_sendMessage, _SkyDropdownMenuComponent_addEventListeners, _SkyDropdownMenuComponent_hasFocusableItems;
558
- let nextId = 0;
558
+ let nextId$1 = 0;
559
559
  /**
560
560
  * Creates a menu that contains dropdown menu items.
561
561
  *
@@ -611,7 +611,7 @@ class SkyDropdownMenuComponent {
611
611
  * @internal
612
612
  */
613
613
  this.menuChanges = new EventEmitter();
614
- this.dropdownMenuId = `sky-dropdown-menu-${++nextId}`;
614
+ this.dropdownMenuId = `sky-dropdown-menu-${++nextId$1}`;
615
615
  _SkyDropdownMenuComponent_ngUnsubscribe.set(this, new Subject());
616
616
  _SkyDropdownMenuComponent__ariaRole.set(this, 'menu');
617
617
  _SkyDropdownMenuComponent__menuIndex.set(this, 0);
@@ -1126,6 +1126,7 @@ class SkyPopoverContentComponent {
1126
1126
  this.dismissOnBlur = config.dismissOnBlur;
1127
1127
  this.enableAnimations = config.enableAnimations;
1128
1128
  this.horizontalAlignment = config.horizontalAlignment;
1129
+ this.popoverId = config.id;
1129
1130
  this.placement = config.placement;
1130
1131
  this.popoverTitle = config.popoverTitle;
1131
1132
  this.popoverType = config.popoverType;
@@ -1253,13 +1254,16 @@ _SkyPopoverContentComponent_caller = new WeakMap(), _SkyPopoverContentComponent_
1253
1254
  });
1254
1255
  };
1255
1256
  SkyPopoverContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPopoverContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1$1.SkyAffixService }, { token: i1$1.SkyCoreAdapterService }, { token: SkyPopoverAdapterService }, { token: SkyPopoverContext }, { token: i4.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1256
- SkyPopoverContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyPopoverContentComponent, selector: "sky-popover-content", providers: [SkyPopoverAdapterService], viewQueries: [{ propertyName: "arrowRef", first: true, predicate: ["arrowRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "contentTarget", first: true, predicate: ["contentTarget"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-font-heading-4': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n", styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], animations: [skyPopoverAnimation] });
1257
+ SkyPopoverContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyPopoverContentComponent, selector: "sky-popover-content", host: { properties: { "[attr.id]": "this.popoverId" } }, providers: [SkyPopoverAdapterService], viewQueries: [{ propertyName: "arrowRef", first: true, predicate: ["arrowRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "contentTarget", first: true, predicate: ["contentTarget"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-font-heading-4': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n", styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], animations: [skyPopoverAnimation] });
1257
1258
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPopoverContentComponent, decorators: [{
1258
1259
  type: Component,
1259
1260
  args: [{ selector: 'sky-popover-content', animations: [skyPopoverAnimation], providers: [SkyPopoverAdapterService], template: "<div\n class=\"sky-popover-container sky-popover-max-height\"\n [@.disabled]=\"!enableAnimations\"\n [@skyPopoverAnimation]=\"animationState\"\n [class.sky-popover-hidden]=\"!placement\"\n [ngClass]=\"[\n 'sky-popover-alignment-' + horizontalAlignment,\n 'sky-popover-placement-' + placement,\n 'sky-popover-' + popoverType\n ]\"\n (@skyPopoverAnimation.done)=\"onAnimationEvent($event)\"\n (@skyPopoverAnimation.start)=\"onAnimationEvent($event)\"\n #popoverRef\n>\n <div\n class=\"sky-popover\"\n tabindex=\"-1\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n >\n <header\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-header\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg sky-margin-stacked-lg': 'modern'\n }\"\n >\n <h1\n *ngIf=\"popoverTitle\"\n class=\"sky-popover-title\"\n [skyThemeClass]=\"{\n 'sky-font-heading-4': 'default',\n 'sky-font-emphasized': 'modern'\n }\"\n >\n {{ popoverTitle }}\n </h1>\n </header>\n <div\n class=\"sky-popover-body\"\n [skyThemeClass]=\"{\n 'sky-padding-even-default': 'default',\n 'sky-padding-even-lg': 'modern'\n }\"\n >\n <ng-container #contentTarget></ng-container>\n </div>\n <span\n aria-hidden=\"true\"\n class=\"sky-popover-arrow\"\n [style.left.px]=\"arrowLeft\"\n [style.top.px]=\"arrowTop\"\n #arrowRef\n ></span>\n </div>\n</div>\n", styles: [".sky-popover-container{position:fixed;min-width:276px;max-width:276px}.sky-popover-container.sky-popover-hidden{visibility:hidden;opacity:0;pointer-events:none!important}.sky-popover-container.sky-popover-hidden *{pointer-events:none!important}.sky-popover-container.sky-popover-static .sky-popover-arrow{position:absolute}.sky-popover-container:focus{outline:none}@media (max-width: 276px){.sky-popover-container{max-width:100%;min-width:auto}}.sky-popover{background-color:#fff}.sky-popover-header{padding-bottom:0}.sky-popover-header+.sky-popover-body{padding-top:2px}.sky-popover-title{margin:0}.sky-popover-arrow{width:0;height:0;position:fixed;border:10px solid transparent}.sky-popover-placement-above{padding-bottom:10px}.sky-popover-placement-above .sky-popover{border-bottom:10px solid #00b4f1}.sky-popover-placement-above .sky-popover-arrow{border-bottom:0;border-top-color:#00b4f1;bottom:0;left:50%;margin-left:-10px}.sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044}.sky-popover-placement-below{padding-top:10px}.sky-popover-placement-below .sky-popover{border-top:10px solid #00b4f1}.sky-popover-placement-below .sky-popover-arrow{border-top:0;border-bottom-color:#00b4f1;top:0;left:50%;margin-left:-10px}.sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044}.sky-popover-placement-right{padding-left:10px}.sky-popover-placement-right .sky-popover{border-left:10px solid #00b4f1}.sky-popover-placement-right .sky-popover-arrow{border-left:0;border-right-color:#00b4f1;left:0;top:50%;margin-top:-10px}.sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-right-color:#ef4044}.sky-popover-placement-left{padding-right:10px}.sky-popover-placement-left .sky-popover{border-right:10px solid #00b4f1}.sky-popover-placement-left .sky-popover-arrow{border-right:0;border-left-color:#00b4f1;right:0;top:50%;margin-top:-10px}.sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-left-color:#ef4044}.sky-popover-placement-above.sky-popover-alignment-left .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-left .sky-popover-arrow{left:40px;right:auto}.sky-popover-placement-above.sky-popover-alignment-right .sky-popover-arrow,.sky-popover-placement-below.sky-popover-alignment-right .sky-popover-arrow{left:auto;right:40px}.sky-popover-max-height .sky-popover{overflow-y:auto;overflow-x:hidden;min-height:35px;max-height:calc(50vh - 50px)}:host-context(.sky-theme-modern) .sky-popover{border-radius:6px}:host-context(.sky-theme-modern) .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-above{padding-bottom:10px}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-below{padding-top:10px}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-right{padding-left:10px}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}:host-context(.sky-theme-modern) .sky-popover-placement-left{padding-right:10px}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}:host-context(.sky-theme-modern) .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover{border-radius:6px}.sky-theme-modern .sky-popover-arrow{transform:rotate(45deg);border-color:transparent}.sky-theme-modern .sky-popover-placement-above{padding-bottom:10px}.sky-theme-modern .sky-popover-placement-above .sky-popover{border-bottom:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-above .sky-popover-arrow{bottom:1px;border-radius:0 0 3px;border-bottom:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover{border-bottom-color:#ef4044}.sky-theme-modern .sky-popover-placement-above.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-right-color:#ef4044;border-top-color:transparent;border-left-color:transparent}.sky-theme-modern .sky-popover-placement-below{padding-top:10px}.sky-theme-modern .sky-popover-placement-below .sky-popover{border-top:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-below .sky-popover-arrow{top:1px;border-radius:3px 0 0;border-top:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover{border-top-color:#ef4044}.sky-theme-modern .sky-popover-placement-below.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-left-color:#ef4044;border-bottom-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-right{padding-left:10px}.sky-theme-modern .sky-popover-placement-right .sky-popover{border-left:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-right .sky-popover-arrow{left:1px;border-radius:0 0 0 3px;border-bottom:solid 10px #00b4f1;border-left:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover{border-left-color:#ef4044}.sky-theme-modern .sky-popover-placement-right.sky-popover-danger .sky-popover-arrow{border-bottom-color:#ef4044;border-left-color:#ef4044;border-top-color:transparent;border-right-color:transparent}.sky-theme-modern .sky-popover-placement-left{padding-right:10px}.sky-theme-modern .sky-popover-placement-left .sky-popover{border-right:6px solid #00b4f1}.sky-theme-modern .sky-popover-placement-left .sky-popover-arrow{right:1px;border-radius:0 3px 0 0;border-top:solid 10px #00b4f1;border-right:solid 10px #00b4f1}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover{border-right-color:#ef4044}.sky-theme-modern .sky-popover-placement-left.sky-popover-danger .sky-popover-arrow{border-top-color:#ef4044;border-right-color:#ef4044;border-bottom-color:transparent;border-left-color:transparent}\n"] }]
1260
1261
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1$1.SkyAffixService }, { type: i1$1.SkyCoreAdapterService }, { type: SkyPopoverAdapterService }, { type: SkyPopoverContext }, { type: i4.SkyThemeService, decorators: [{
1261
1262
  type: Optional
1262
- }] }]; }, propDecorators: { arrowRef: [{
1263
+ }] }]; }, propDecorators: { popoverId: [{
1264
+ type: HostBinding,
1265
+ args: ['[attr.id]']
1266
+ }], arrowRef: [{
1263
1267
  type: ViewChild,
1264
1268
  args: ['arrowRef', {
1265
1269
  read: ElementRef,
@@ -1280,6 +1284,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1280
1284
  }] } });
1281
1285
 
1282
1286
  var _SkyPopoverComponent_instances, _SkyPopoverComponent_contentRef, _SkyPopoverComponent_isMarkedForCloseOnMouseLeave, _SkyPopoverComponent_ngUnsubscribe, _SkyPopoverComponent_overlay, _SkyPopoverComponent__alignment, _SkyPopoverComponent__dismissOnBlur, _SkyPopoverComponent__placement, _SkyPopoverComponent__popoverType, _SkyPopoverComponent_overlayService, _SkyPopoverComponent_zIndex, _SkyPopoverComponent_setupOverlay;
1287
+ let nextId = 0;
1283
1288
  class SkyPopoverComponent {
1284
1289
  /**
1285
1290
  * The horizontal alignment of the popover in relation to the trigger element.
@@ -1346,6 +1351,7 @@ class SkyPopoverComponent {
1346
1351
  */
1347
1352
  this.enableAnimations = true;
1348
1353
  this.isMouseEnter = false;
1354
+ this.popoverId = `sky-popover-${nextId++}`;
1349
1355
  _SkyPopoverComponent_contentRef.set(this, void 0);
1350
1356
  _SkyPopoverComponent_isMarkedForCloseOnMouseLeave.set(this, false);
1351
1357
  _SkyPopoverComponent_ngUnsubscribe.set(this, new Subject());
@@ -1385,6 +1391,7 @@ class SkyPopoverComponent {
1385
1391
  dismissOnBlur: this.dismissOnBlur,
1386
1392
  enableAnimations: this.enableAnimations,
1387
1393
  horizontalAlignment: this.alignment,
1394
+ id: this.popoverId,
1388
1395
  isStatic: false,
1389
1396
  placement: this.placement,
1390
1397
  popoverTitle: this.popoverTitle,
@@ -1524,8 +1531,19 @@ var SkyPopoverMessageType;
1524
1531
  SkyPopoverMessageType[SkyPopoverMessageType["Focus"] = 3] = "Focus";
1525
1532
  })(SkyPopoverMessageType || (SkyPopoverMessageType = {}));
1526
1533
 
1527
- var _SkyPopoverDirective_instances, _SkyPopoverDirective__skyPopoverMessageStream, _SkyPopoverDirective_messageStreamSub, _SkyPopoverDirective_ngUnsubscribe, _SkyPopoverDirective__trigger, _SkyPopoverDirective_elementRef, _SkyPopoverDirective_positionPopover, _SkyPopoverDirective_closePopover, _SkyPopoverDirective_closePopoverOrMarkForClose, _SkyPopoverDirective_addEventListeners, _SkyPopoverDirective_removeEventListeners, _SkyPopoverDirective_handleIncomingMessages, _SkyPopoverDirective_sendMessage, _SkyPopoverDirective_subscribeMessageStream, _SkyPopoverDirective_unsubscribeMessageStream;
1534
+ var _SkyPopoverDirective_instances, _SkyPopoverDirective__skyPopoverMessageStream, _SkyPopoverDirective_messageStreamSub, _SkyPopoverDirective_ngUnsubscribe, _SkyPopoverDirective__popover, _SkyPopoverDirective__trigger, _SkyPopoverDirective_elementRef, _SkyPopoverDirective_positionPopover, _SkyPopoverDirective_closePopover, _SkyPopoverDirective_closePopoverOrMarkForClose, _SkyPopoverDirective_addEventListeners, _SkyPopoverDirective_removeEventListeners, _SkyPopoverDirective_handleIncomingMessages, _SkyPopoverDirective_sendMessage, _SkyPopoverDirective_subscribeMessageStream, _SkyPopoverDirective_unsubscribeMessageStream;
1528
1535
  class SkyPopoverDirective {
1536
+ /**
1537
+ * The popover component to display. Add this directive to the trigger element that opens the popover.
1538
+ * @required
1539
+ */
1540
+ set skyPopover(value) {
1541
+ this.popoverId = value?.popoverId;
1542
+ __classPrivateFieldSet(this, _SkyPopoverDirective__popover, value, "f");
1543
+ }
1544
+ get skyPopover() {
1545
+ return __classPrivateFieldGet(this, _SkyPopoverDirective__popover, "f");
1546
+ }
1529
1547
  /**
1530
1548
  * The RxJS `Subject` to send commands to the popover that respect the `SkyPopoverMessage` type.
1531
1549
  */
@@ -1547,9 +1565,15 @@ class SkyPopoverDirective {
1547
1565
  }
1548
1566
  constructor(elementRef) {
1549
1567
  _SkyPopoverDirective_instances.add(this);
1568
+ /**
1569
+ * Appends the `sky-popover-trigger` class to the trigger element.
1570
+ * @internal
1571
+ */
1572
+ this.directiveClass = 'sky-popover-trigger';
1550
1573
  _SkyPopoverDirective__skyPopoverMessageStream.set(this, new Subject());
1551
1574
  _SkyPopoverDirective_messageStreamSub.set(this, void 0);
1552
1575
  _SkyPopoverDirective_ngUnsubscribe.set(this, new Subject());
1576
+ _SkyPopoverDirective__popover.set(this, void 0);
1553
1577
  _SkyPopoverDirective__trigger.set(this, 'click');
1554
1578
  _SkyPopoverDirective_elementRef.set(this, void 0);
1555
1579
  __classPrivateFieldSet(this, _SkyPopoverDirective_elementRef, elementRef, "f");
@@ -1570,7 +1594,7 @@ class SkyPopoverDirective {
1570
1594
  __classPrivateFieldGet(this, _SkyPopoverDirective_instances, "m", _SkyPopoverDirective_sendMessage).call(this, SkyPopoverMessageType.Open);
1571
1595
  }
1572
1596
  }
1573
- _SkyPopoverDirective__skyPopoverMessageStream = new WeakMap(), _SkyPopoverDirective_messageStreamSub = new WeakMap(), _SkyPopoverDirective_ngUnsubscribe = new WeakMap(), _SkyPopoverDirective__trigger = new WeakMap(), _SkyPopoverDirective_elementRef = new WeakMap(), _SkyPopoverDirective_instances = new WeakSet(), _SkyPopoverDirective_positionPopover = function _SkyPopoverDirective_positionPopover() {
1597
+ _SkyPopoverDirective__skyPopoverMessageStream = new WeakMap(), _SkyPopoverDirective_messageStreamSub = new WeakMap(), _SkyPopoverDirective_ngUnsubscribe = new WeakMap(), _SkyPopoverDirective__popover = new WeakMap(), _SkyPopoverDirective__trigger = new WeakMap(), _SkyPopoverDirective_elementRef = new WeakMap(), _SkyPopoverDirective_instances = new WeakSet(), _SkyPopoverDirective_positionPopover = function _SkyPopoverDirective_positionPopover() {
1574
1598
  this.skyPopover?.positionNextTo(__classPrivateFieldGet(this, _SkyPopoverDirective_elementRef, "f"), this.skyPopoverPlacement, this.skyPopoverAlignment);
1575
1599
  }, _SkyPopoverDirective_closePopover = function _SkyPopoverDirective_closePopover() {
1576
1600
  this.skyPopover?.close();
@@ -1686,13 +1710,19 @@ _SkyPopoverDirective__skyPopoverMessageStream = new WeakMap(), _SkyPopoverDirect
1686
1710
  }
1687
1711
  };
1688
1712
  SkyPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPopoverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1689
- SkyPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SkyPopoverDirective, selector: "[skyPopover]", inputs: { skyPopover: "skyPopover", skyPopoverAlignment: "skyPopoverAlignment", skyPopoverMessageStream: "skyPopoverMessageStream", skyPopoverPlacement: "skyPopoverPlacement", skyPopoverTrigger: "skyPopoverTrigger" }, ngImport: i0 });
1713
+ SkyPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SkyPopoverDirective, selector: "[skyPopover]", inputs: { skyPopover: "skyPopover", skyPopoverAlignment: "skyPopoverAlignment", skyPopoverMessageStream: "skyPopoverMessageStream", skyPopoverPlacement: "skyPopoverPlacement", skyPopoverTrigger: "skyPopoverTrigger" }, host: { properties: { "class": "this.directiveClass", "[attr.data-popover-id]": "this.popoverId" } }, ngImport: i0 });
1690
1714
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPopoverDirective, decorators: [{
1691
1715
  type: Directive,
1692
1716
  args: [{
1693
1717
  selector: '[skyPopover]',
1694
1718
  }]
1695
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { skyPopover: [{
1719
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { directiveClass: [{
1720
+ type: HostBinding,
1721
+ args: ['class']
1722
+ }], popoverId: [{
1723
+ type: HostBinding,
1724
+ args: ['[attr.data-popover-id]']
1725
+ }], skyPopover: [{
1696
1726
  type: Input
1697
1727
  }], skyPopoverAlignment: [{
1698
1728
  type: Input