@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
@@ -0,0 +1,100 @@
1
+ var _SkyPopoverContentHarness_getBody, _SkyPopoverContentHarness_getContainer, _SkyPopoverContentHarness_getOverlay, _SkyPopoverContentHarness_getTitle;
2
+ import { __classPrivateFieldGet } from "tslib";
3
+ import { ComponentHarness, HarnessPredicate, } from '@angular/cdk/testing';
4
+ import { SkyOverlayHarness } from '@skyux/core/testing';
5
+ import { SkyPopoverBodyHarness } from './popover-body-harness';
6
+ /**
7
+ * Harness for interacting with a popover content component in tests.
8
+ */
9
+ export class SkyPopoverContentHarness extends ComponentHarness {
10
+ constructor() {
11
+ super(...arguments);
12
+ _SkyPopoverContentHarness_getBody.set(this, this.locatorFor(SkyPopoverBodyHarness));
13
+ _SkyPopoverContentHarness_getContainer.set(this, this.locatorFor('.sky-popover-container'));
14
+ _SkyPopoverContentHarness_getOverlay.set(this, this.documentRootLocatorFactory().locatorForOptional(SkyOverlayHarness));
15
+ _SkyPopoverContentHarness_getTitle.set(this, this.locatorForOptional('.sky-popover-title'));
16
+ }
17
+ /**
18
+ * Gets a `HarnessPredicate` that can be used to search for a
19
+ * `SkyPopoverContentHarness` that meets certain criteria.
20
+ */
21
+ static with(filters) {
22
+ return new HarnessPredicate(SkyPopoverContentHarness, filters);
23
+ }
24
+ /**
25
+ * Returns a child harness.
26
+ */
27
+ async queryHarness(harness) {
28
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).queryHarness(harness);
29
+ }
30
+ /**
31
+ * Returns child harnesses.
32
+ */
33
+ async queryHarnesses(harness) {
34
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).queryHarnesses(harness);
35
+ }
36
+ /**
37
+ * Returns a child test element.
38
+ */
39
+ async querySelector(selector) {
40
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).querySelector(selector);
41
+ }
42
+ /**
43
+ * Returns child test elements.
44
+ */
45
+ async querySelectorAll(selector) {
46
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).querySelectorAll(selector);
47
+ }
48
+ /**
49
+ * Gets the placement of the popover content.
50
+ */
51
+ async getPlacement() {
52
+ const container = await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getContainer, "f").call(this);
53
+ for (const placement of ['left', 'right', 'above', 'below']) {
54
+ if (await container.hasClass('sky-popover-placement-' + placement)) {
55
+ return placement;
56
+ }
57
+ }
58
+ // This should never happen because the placement input is always defined by the parent.
59
+ /* istanbul ignore next */
60
+ return '';
61
+ }
62
+ /**
63
+ * Gets the alignment of the popover content.
64
+ */
65
+ async getAlignment() {
66
+ const container = await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getContainer, "f").call(this);
67
+ for (const alignment of ['left', 'center', 'right']) {
68
+ if (await container.hasClass('sky-popover-alignment-' + alignment)) {
69
+ return alignment;
70
+ }
71
+ }
72
+ // This should never happen because the alignment input is always defined by the parent.
73
+ /* istanbul ignore next */
74
+ return '';
75
+ }
76
+ /**
77
+ * Gets the text of the popover content title.
78
+ */
79
+ async getTitleText() {
80
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getTitle, "f").call(this))?.text();
81
+ }
82
+ /**
83
+ * Gets the text of the popover content body.
84
+ */
85
+ async getBodyText() {
86
+ return (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).getText();
87
+ }
88
+ /**
89
+ * Clicks out of the popover. If `dismissOnBlur` property is set to false, then the popover does not close.
90
+ */
91
+ async clickOut() {
92
+ (await (await __classPrivateFieldGet(this, _SkyPopoverContentHarness_getOverlay, "f").call(this))?.host())?.click();
93
+ }
94
+ }
95
+ _SkyPopoverContentHarness_getBody = new WeakMap(), _SkyPopoverContentHarness_getContainer = new WeakMap(), _SkyPopoverContentHarness_getOverlay = new WeakMap(), _SkyPopoverContentHarness_getTitle = new WeakMap();
96
+ /**
97
+ * @internal
98
+ */
99
+ SkyPopoverContentHarness.hostSelector = 'sky-popover-content';
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb250ZW50LWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvdGVzdGluZy9zcmMvcG9wb3Zlci9oYXJuZXNzL3BvcG92ZXItY29udGVudC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FHakIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUcvRDs7R0FFRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUFBOUQ7O1FBTUUsNENBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDO1FBQ2xELGlEQUFnQixJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLEVBQUM7UUFDMUQsK0NBQ0UsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsRUFBQztRQUMxRSw2Q0FBWSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsRUFBQztJQWtHNUQsQ0FBQztJQWhHQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUF3QztRQUV4QyxPQUFPLElBQUksZ0JBQWdCLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FDdkIsT0FBd0I7UUFFeEIsT0FBTyxDQUFDLE1BQU0sdUJBQUEsSUFBSSx5Q0FBUyxNQUFiLElBQUksQ0FBVyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxjQUFjLENBQ3pCLE9BQXdCO1FBRXhCLE9BQU8sQ0FBQyxNQUFNLHVCQUFBLElBQUkseUNBQVMsTUFBYixJQUFJLENBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQWdCO1FBQ3pDLE9BQU8sQ0FBQyxNQUFNLHVCQUFBLElBQUkseUNBQVMsTUFBYixJQUFJLENBQVcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDNUMsT0FBTyxDQUFDLE1BQU0sdUJBQUEsSUFBSSx5Q0FBUyxNQUFiLElBQUksQ0FBVyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBTSx1QkFBQSxJQUFJLDhDQUFjLE1BQWxCLElBQUksQ0FBZ0IsQ0FBQztRQUU3QyxLQUFLLE1BQU0sU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDM0QsSUFBSSxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEdBQUcsU0FBUyxDQUFDLEVBQUU7Z0JBQ2xFLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1NBQ0Y7UUFFRCx3RkFBd0Y7UUFDeEYsMEJBQTBCO1FBQzFCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBTSx1QkFBQSxJQUFJLDhDQUFjLE1BQWxCLElBQUksQ0FBZ0IsQ0FBQztRQUU3QyxLQUFLLE1BQU0sU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNuRCxJQUFJLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsRUFBRTtnQkFDbEUsT0FBTyxTQUFTLENBQUM7YUFDbEI7U0FDRjtRQUVELHdGQUF3RjtRQUN4RiwwQkFBMEI7UUFDMUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsWUFBWTtRQUN2QixPQUFPLENBQUMsTUFBTSx1QkFBQSxJQUFJLDBDQUFVLE1BQWQsSUFBSSxDQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLENBQUMsTUFBTSx1QkFBQSxJQUFJLHlDQUFTLE1BQWIsSUFBSSxDQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsUUFBUTtRQUNuQixDQUFDLE1BQU0sQ0FBQyxNQUFNLHVCQUFBLElBQUksNENBQVksTUFBaEIsSUFBSSxDQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3RELENBQUM7OztBQTFHRDs7R0FFRztBQUNXLHFDQUFZLEdBQUcscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRIYXJuZXNzLFxuICBIYXJuZXNzUHJlZGljYXRlLFxuICBIYXJuZXNzUXVlcnksXG4gIFRlc3RFbGVtZW50LFxufSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lPdmVybGF5SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lQb3BvdmVyQm9keUhhcm5lc3MgfSBmcm9tICcuL3BvcG92ZXItYm9keS1oYXJuZXNzJztcbmltcG9ydCB7IFNreVBvcG92ZXJDb250ZW50SGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL3BvcG92ZXItY29udGVudC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBwb3BvdmVyIGNvbnRlbnQgY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5UG9wb3ZlckNvbnRlbnRIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1wb3BvdmVyLWNvbnRlbnQnO1xuXG4gICNnZXRCb2R5ID0gdGhpcy5sb2NhdG9yRm9yKFNreVBvcG92ZXJCb2R5SGFybmVzcyk7XG4gICNnZXRDb250YWluZXIgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktcG9wb3Zlci1jb250YWluZXInKTtcbiAgI2dldE92ZXJsYXkgPVxuICAgIHRoaXMuZG9jdW1lbnRSb290TG9jYXRvckZhY3RvcnkoKS5sb2NhdG9yRm9yT3B0aW9uYWwoU2t5T3ZlcmxheUhhcm5lc3MpO1xuICAjZ2V0VGl0bGUgPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnLnNreS1wb3BvdmVyLXRpdGxlJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreVBvcG92ZXJDb250ZW50SGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreVBvcG92ZXJDb250ZW50SGFybmVzc0ZpbHRlcnNcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lQb3BvdmVyQ29udGVudEhhcm5lc3M+IHtcbiAgICByZXR1cm4gbmV3IEhhcm5lc3NQcmVkaWNhdGUoU2t5UG9wb3ZlckNvbnRlbnRIYXJuZXNzLCBmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2hpbGQgaGFybmVzcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBxdWVyeUhhcm5lc3M8VCBleHRlbmRzIENvbXBvbmVudEhhcm5lc3M+KFxuICAgIGhhcm5lc3M6IEhhcm5lc3NRdWVyeTxUPlxuICApOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRCb2R5KCkpLnF1ZXJ5SGFybmVzcyhoYXJuZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNoaWxkIGhhcm5lc3Nlcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBxdWVyeUhhcm5lc3NlczxUIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcz4oXG4gICAgaGFybmVzczogSGFybmVzc1F1ZXJ5PFQ+XG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRCb2R5KCkpLnF1ZXJ5SGFybmVzc2VzKGhhcm5lc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjaGlsZCB0ZXN0IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcXVlcnlTZWxlY3RvcihzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxUZXN0RWxlbWVudCB8IG51bGw+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldEJvZHkoKSkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjaGlsZCB0ZXN0IGVsZW1lbnRzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8VGVzdEVsZW1lbnRbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0Qm9keSgpKS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHBvcG92ZXIgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRQbGFjZW1lbnQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBhd2FpdCB0aGlzLiNnZXRDb250YWluZXIoKTtcblxuICAgIGZvciAoY29uc3QgcGxhY2VtZW50IG9mIFsnbGVmdCcsICdyaWdodCcsICdhYm92ZScsICdiZWxvdyddKSB7XG4gICAgICBpZiAoYXdhaXQgY29udGFpbmVyLmhhc0NsYXNzKCdza3ktcG9wb3Zlci1wbGFjZW1lbnQtJyArIHBsYWNlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHBsYWNlbWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gYmVjYXVzZSB0aGUgcGxhY2VtZW50IGlucHV0IGlzIGFsd2F5cyBkZWZpbmVkIGJ5IHRoZSBwYXJlbnQuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYWxpZ25tZW50IG9mIHRoZSBwb3BvdmVyIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QWxpZ25tZW50KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gYXdhaXQgdGhpcy4jZ2V0Q29udGFpbmVyKCk7XG5cbiAgICBmb3IgKGNvbnN0IGFsaWdubWVudCBvZiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0J10pIHtcbiAgICAgIGlmIChhd2FpdCBjb250YWluZXIuaGFzQ2xhc3MoJ3NreS1wb3BvdmVyLWFsaWdubWVudC0nICsgYWxpZ25tZW50KSkge1xuICAgICAgICByZXR1cm4gYWxpZ25tZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHRoZSBhbGlnbm1lbnQgaW5wdXQgaXMgYWx3YXlzIGRlZmluZWQgYnkgdGhlIHBhcmVudC5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IG9mIHRoZSBwb3BvdmVyIGNvbnRlbnQgdGl0bGUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VGl0bGVUZXh0KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRUaXRsZSgpKT8udGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRleHQgb2YgdGhlIHBvcG92ZXIgY29udGVudCBib2R5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEJvZHlUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRCb2R5KCkpLmdldFRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3Mgb3V0IG9mIHRoZSBwb3BvdmVyLiBJZiBgZGlzbWlzc09uQmx1cmAgcHJvcGVydHkgaXMgc2V0IHRvIGZhbHNlLCB0aGVuIHRoZSBwb3BvdmVyIGRvZXMgbm90IGNsb3NlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrT3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIChhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0T3ZlcmxheSgpKT8uaG9zdCgpKT8uY2xpY2soKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1oYXJuZXNzLWZpbHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvcG9wb3ZlcnMvdGVzdGluZy9zcmMvcG9wb3Zlci9oYXJuZXNzL3BvcG92ZXItaGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lIYXJuZXNzRmlsdGVycyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEEgc2V0IG9mIGNyaXRlcmlhIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIGEgbGlzdCBvZiBTa3lQb3BvdmVySGFybmVzcyBpbnN0YW5jZXMuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIFNreVBvcG92ZXJIYXJuZXNzRmlsdGVycyBleHRlbmRzIFNreUhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
@@ -0,0 +1,56 @@
1
+ var _SkyPopoverHarness_instances, _SkyPopoverHarness_documentRootLocator, _SkyPopoverHarness_getContent, _SkyPopoverHarness_getPopoverId;
2
+ import { __classPrivateFieldGet } from "tslib";
3
+ import { SkyComponentHarness } from '@skyux/core/testing';
4
+ import { SkyPopoverContentHarness } from './popover-content-harness';
5
+ /**
6
+ * Harness for interacting with a popover component in tests.
7
+ */
8
+ export class SkyPopoverHarness extends SkyComponentHarness {
9
+ constructor() {
10
+ super(...arguments);
11
+ _SkyPopoverHarness_instances.add(this);
12
+ _SkyPopoverHarness_documentRootLocator.set(this, this.documentRootLocatorFactory());
13
+ }
14
+ /**
15
+ * Gets a `HarnessPredicate` that can be used to search for a
16
+ * `SkyPopoverHarness` that meets certain criteria.
17
+ */
18
+ static with(filters) {
19
+ return SkyPopoverHarness.getDataSkyIdPredicate(filters);
20
+ }
21
+ /**
22
+ * Toggles a popover open or closed.
23
+ */
24
+ async clickPopoverButton() {
25
+ (await this.host()).click();
26
+ }
27
+ /**
28
+ * Gets the popover content component.
29
+ */
30
+ async getPopoverContent() {
31
+ const content = await __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getContent).call(this);
32
+ if (!content) {
33
+ throw new Error('Unable to retrieve the popover content because the popover is not open.');
34
+ }
35
+ return content;
36
+ }
37
+ /**
38
+ * Whether the popover is open.
39
+ */
40
+ async isOpen() {
41
+ return !!(await __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getContent).call(this));
42
+ }
43
+ }
44
+ _SkyPopoverHarness_documentRootLocator = new WeakMap(), _SkyPopoverHarness_instances = new WeakSet(), _SkyPopoverHarness_getContent = async function _SkyPopoverHarness_getContent() {
45
+ const popoverId = await __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getPopoverId).call(this);
46
+ return __classPrivateFieldGet(this, _SkyPopoverHarness_documentRootLocator, "f").locatorForOptional(SkyPopoverContentHarness.with({ selector: `#${popoverId}` }))();
47
+ }, _SkyPopoverHarness_getPopoverId = async function _SkyPopoverHarness_getPopoverId() {
48
+ return ((await (await this.host()).getAttribute('data-popover-id')) ||
49
+ /* istanbul ignore next */
50
+ '');
51
+ };
52
+ /**
53
+ * @internal
54
+ */
55
+ SkyPopoverHarness.hostSelector = '.sky-popover-trigger';
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BvcG92ZXJzL3Rlc3Rpbmcvc3JjL3BvcG92ZXIvaGFybmVzcy9wb3BvdmVyLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxtQkFBbUI7SUFBMUQ7OztRQU1FLGlEQUF1QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsRUFBQztJQXNEM0QsQ0FBQztJQXBEQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFpQztRQUVqQyxPQUFPLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSx1QkFBQSxJQUFJLG1FQUFZLE1BQWhCLElBQUksQ0FBYyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUNiLHlFQUF5RSxDQUMxRSxDQUFDO1NBQ0g7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQixPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sdUJBQUEsSUFBSSxtRUFBWSxNQUFoQixJQUFJLENBQWMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7O3NJQUVELEtBQUs7SUFDSCxNQUFNLFNBQVMsR0FBRyxNQUFNLHVCQUFBLElBQUkscUVBQWMsTUFBbEIsSUFBSSxDQUFnQixDQUFDO0lBRTdDLE9BQU8sdUJBQUEsSUFBSSw4Q0FBcUIsQ0FBQyxrQkFBa0IsQ0FDakQsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUM3RCxFQUFFLENBQUM7QUFDTixDQUFDLG9DQUVELEtBQUs7SUFDSCxPQUFPLENBQ0wsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRCwwQkFBMEI7UUFDMUIsRUFBRSxDQUNILENBQUM7QUFDSixDQUFDO0FBMUREOztHQUVHO0FBQ1csOEJBQVksR0FBRyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreVBvcG92ZXJDb250ZW50SGFybmVzcyB9IGZyb20gJy4vcG9wb3Zlci1jb250ZW50LWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5UG9wb3Zlckhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9wb3BvdmVyLWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHBvcG92ZXIgY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5UG9wb3Zlckhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnLnNreS1wb3BvdmVyLXRyaWdnZXInO1xuXG4gICNkb2N1bWVudFJvb3RMb2NhdG9yID0gdGhpcy5kb2N1bWVudFJvb3RMb2NhdG9yRmFjdG9yeSgpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lQb3BvdmVySGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreVBvcG92ZXJIYXJuZXNzRmlsdGVyc1xuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreVBvcG92ZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreVBvcG92ZXJIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGEgcG9wb3ZlciBvcGVuIG9yIGNsb3NlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1BvcG92ZXJCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgKGF3YWl0IHRoaXMuaG9zdCgpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBvcG92ZXIgY29udGVudCBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0UG9wb3ZlckNvbnRlbnQoKTogUHJvbWlzZTxTa3lQb3BvdmVyQ29udGVudEhhcm5lc3M+IHtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy4jZ2V0Q29udGVudCgpO1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIHJldHJpZXZlIHRoZSBwb3BvdmVyIGNvbnRlbnQgYmVjYXVzZSB0aGUgcG9wb3ZlciBpcyBub3Qgb3Blbi4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwb3BvdmVyIGlzIG9wZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNPcGVuKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhIShhd2FpdCB0aGlzLiNnZXRDb250ZW50KCkpO1xuICB9XG5cbiAgYXN5bmMgI2dldENvbnRlbnQoKTogUHJvbWlzZTxTa3lQb3BvdmVyQ29udGVudEhhcm5lc3MgfCBudWxsPiB7XG4gICAgY29uc3QgcG9wb3ZlcklkID0gYXdhaXQgdGhpcy4jZ2V0UG9wb3ZlcklkKCk7XG5cbiAgICByZXR1cm4gdGhpcy4jZG9jdW1lbnRSb290TG9jYXRvci5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBTa3lQb3BvdmVyQ29udGVudEhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yOiBgIyR7cG9wb3ZlcklkfWAgfSlcbiAgICApKCk7XG4gIH1cblxuICBhc3luYyAjZ2V0UG9wb3ZlcklkKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChhd2FpdCAoYXdhaXQgdGhpcy5ob3N0KCkpLmdldEF0dHJpYnV0ZSgnZGF0YS1wb3BvdmVyLWlkJykpIHx8XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgJydcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -11,4 +11,8 @@ export * from './dropdown/harness/dropdown-menu-harness';
11
11
  export * from './dropdown/harness/dropdown-menu-harness.filters';
12
12
  export * from './dropdown/harness/dropdown-item-harness';
13
13
  export * from './dropdown/harness/dropdown-item-harness.filters';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wb3BvdmVycy90ZXN0aW5nL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0RBQWtELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL2Ryb3Bkb3duLXRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24vZHJvcGRvd24tZml4dHVyZSc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL3BvcG92ZXJzLWZpeHR1cmUtZHJvcGRvd24nO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi9wb3BvdmVycy1maXh0dXJlLWRyb3Bkb3duLWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi9wb3BvdmVycy1maXh0dXJlLWRyb3Bkb3duLW1lbnUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci10ZXN0aW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXIvcG9wb3Zlci1maXh0dXJlJztcblxuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi9oYXJuZXNzL2Ryb3Bkb3duLWhhcm5lc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi9oYXJuZXNzL2Ryb3Bkb3duLWhhcm5lc3MuZmlsdGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL2hhcm5lc3MvZHJvcGRvd24tbWVudS1oYXJuZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24vaGFybmVzcy9kcm9wZG93bi1tZW51LWhhcm5lc3MuZmlsdGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL2hhcm5lc3MvZHJvcGRvd24taXRlbS1oYXJuZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24vaGFybmVzcy9kcm9wZG93bi1pdGVtLWhhcm5lc3MuZmlsdGVycyc7XG4iXX0=
14
+ export * from './popover/harness/popover-content-harness';
15
+ export * from './popover/harness/popover-content-harness-filters';
16
+ export * from './popover/harness/popover-harness';
17
+ export * from './popover/harness/popover-harness-filters';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wb3BvdmVycy90ZXN0aW5nL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0RBQWtELENBQUM7QUFFakUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24vZHJvcGRvd24tdGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi9kcm9wZG93bi1maXh0dXJlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24vcG9wb3ZlcnMtZml4dHVyZS1kcm9wZG93bic7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL3BvcG92ZXJzLWZpeHR1cmUtZHJvcGRvd24taXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL3BvcG92ZXJzLWZpeHR1cmUtZHJvcGRvd24tbWVudSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci9wb3BvdmVyLXRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci9wb3BvdmVyLWZpeHR1cmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL2hhcm5lc3MvZHJvcGRvd24taGFybmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duL2hhcm5lc3MvZHJvcGRvd24taGFybmVzcy5maWx0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24vaGFybmVzcy9kcm9wZG93bi1tZW51LWhhcm5lc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi9oYXJuZXNzL2Ryb3Bkb3duLW1lbnUtaGFybmVzcy5maWx0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcGRvd24vaGFybmVzcy9kcm9wZG93bi1pdGVtLWhhcm5lc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi9oYXJuZXNzL2Ryb3Bkb3duLWl0ZW0taGFybmVzcy5maWx0ZXJzJztcblxuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyL2hhcm5lc3MvcG9wb3Zlci1jb250ZW50LWhhcm5lc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyL2hhcm5lc3MvcG9wb3Zlci1jb250ZW50LWhhcm5lc3MtZmlsdGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXIvaGFybmVzcy9wb3BvdmVyLWhhcm5lc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyL2hhcm5lc3MvcG9wb3Zlci1oYXJuZXNzLWZpbHRlcnMnO1xuIl19
@@ -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
@@ -501,9 +501,239 @@ _SkyDropdownHarness_documentRootLocator = new WeakMap(), _SkyDropdownHarness_get
501
501
  */
502
502
  SkyDropdownHarness.hostSelector = 'sky-dropdown';
503
503
 
504
+ /**
505
+ * Harness for interacting with a popover body in tests.
506
+ * @internal
507
+ */
508
+ class SkyPopoverBodyHarness extends ComponentHarness {
509
+ /**
510
+ * Returns a child harness.
511
+ */
512
+ queryHarness(harness) {
513
+ return __awaiter(this, void 0, void 0, function* () {
514
+ return this.locatorForOptional(harness)();
515
+ });
516
+ }
517
+ /**
518
+ * Returns child harnesses.
519
+ */
520
+ queryHarnesses(harness) {
521
+ return __awaiter(this, void 0, void 0, function* () {
522
+ return this.locatorForAll(harness)();
523
+ });
524
+ }
525
+ /**
526
+ * Returns a child test element.
527
+ */
528
+ querySelector(selector) {
529
+ return __awaiter(this, void 0, void 0, function* () {
530
+ return this.locatorForOptional(selector)();
531
+ });
532
+ }
533
+ /**
534
+ * Returns child test elements.
535
+ */
536
+ querySelectorAll(selector) {
537
+ return __awaiter(this, void 0, void 0, function* () {
538
+ return this.locatorForAll(selector)();
539
+ });
540
+ }
541
+ /**
542
+ * Gets the text of the popover content body.
543
+ */
544
+ getText() {
545
+ return __awaiter(this, void 0, void 0, function* () {
546
+ return (yield this.host()).text();
547
+ });
548
+ }
549
+ }
550
+ /**
551
+ * @internal
552
+ */
553
+ SkyPopoverBodyHarness.hostSelector = '.sky-popover-body';
554
+
555
+ var _SkyPopoverContentHarness_getBody, _SkyPopoverContentHarness_getContainer, _SkyPopoverContentHarness_getOverlay, _SkyPopoverContentHarness_getTitle;
556
+ /**
557
+ * Harness for interacting with a popover content component in tests.
558
+ */
559
+ class SkyPopoverContentHarness extends ComponentHarness {
560
+ constructor() {
561
+ super(...arguments);
562
+ _SkyPopoverContentHarness_getBody.set(this, this.locatorFor(SkyPopoverBodyHarness));
563
+ _SkyPopoverContentHarness_getContainer.set(this, this.locatorFor('.sky-popover-container'));
564
+ _SkyPopoverContentHarness_getOverlay.set(this, this.documentRootLocatorFactory().locatorForOptional(SkyOverlayHarness));
565
+ _SkyPopoverContentHarness_getTitle.set(this, this.locatorForOptional('.sky-popover-title'));
566
+ }
567
+ /**
568
+ * Gets a `HarnessPredicate` that can be used to search for a
569
+ * `SkyPopoverContentHarness` that meets certain criteria.
570
+ */
571
+ static with(filters) {
572
+ return new HarnessPredicate(SkyPopoverContentHarness, filters);
573
+ }
574
+ /**
575
+ * Returns a child harness.
576
+ */
577
+ queryHarness(harness) {
578
+ return __awaiter(this, void 0, void 0, function* () {
579
+ return (yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).queryHarness(harness);
580
+ });
581
+ }
582
+ /**
583
+ * Returns child harnesses.
584
+ */
585
+ queryHarnesses(harness) {
586
+ return __awaiter(this, void 0, void 0, function* () {
587
+ return (yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).queryHarnesses(harness);
588
+ });
589
+ }
590
+ /**
591
+ * Returns a child test element.
592
+ */
593
+ querySelector(selector) {
594
+ return __awaiter(this, void 0, void 0, function* () {
595
+ return (yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).querySelector(selector);
596
+ });
597
+ }
598
+ /**
599
+ * Returns child test elements.
600
+ */
601
+ querySelectorAll(selector) {
602
+ return __awaiter(this, void 0, void 0, function* () {
603
+ return (yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).querySelectorAll(selector);
604
+ });
605
+ }
606
+ /**
607
+ * Gets the placement of the popover content.
608
+ */
609
+ getPlacement() {
610
+ return __awaiter(this, void 0, void 0, function* () {
611
+ const container = yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getContainer, "f").call(this);
612
+ for (const placement of ['left', 'right', 'above', 'below']) {
613
+ if (yield container.hasClass('sky-popover-placement-' + placement)) {
614
+ return placement;
615
+ }
616
+ }
617
+ // This should never happen because the placement input is always defined by the parent.
618
+ /* istanbul ignore next */
619
+ return '';
620
+ });
621
+ }
622
+ /**
623
+ * Gets the alignment of the popover content.
624
+ */
625
+ getAlignment() {
626
+ return __awaiter(this, void 0, void 0, function* () {
627
+ const container = yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getContainer, "f").call(this);
628
+ for (const alignment of ['left', 'center', 'right']) {
629
+ if (yield container.hasClass('sky-popover-alignment-' + alignment)) {
630
+ return alignment;
631
+ }
632
+ }
633
+ // This should never happen because the alignment input is always defined by the parent.
634
+ /* istanbul ignore next */
635
+ return '';
636
+ });
637
+ }
638
+ /**
639
+ * Gets the text of the popover content title.
640
+ */
641
+ getTitleText() {
642
+ var _a;
643
+ return __awaiter(this, void 0, void 0, function* () {
644
+ return (_a = (yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getTitle, "f").call(this))) === null || _a === void 0 ? void 0 : _a.text();
645
+ });
646
+ }
647
+ /**
648
+ * Gets the text of the popover content body.
649
+ */
650
+ getBodyText() {
651
+ return __awaiter(this, void 0, void 0, function* () {
652
+ return (yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getBody, "f").call(this)).getText();
653
+ });
654
+ }
655
+ /**
656
+ * Clicks out of the popover. If `dismissOnBlur` property is set to false, then the popover does not close.
657
+ */
658
+ clickOut() {
659
+ var _a, _b;
660
+ return __awaiter(this, void 0, void 0, function* () {
661
+ (_b = (yield ((_a = (yield __classPrivateFieldGet(this, _SkyPopoverContentHarness_getOverlay, "f").call(this))) === null || _a === void 0 ? void 0 : _a.host()))) === null || _b === void 0 ? void 0 : _b.click();
662
+ });
663
+ }
664
+ }
665
+ _SkyPopoverContentHarness_getBody = new WeakMap(), _SkyPopoverContentHarness_getContainer = new WeakMap(), _SkyPopoverContentHarness_getOverlay = new WeakMap(), _SkyPopoverContentHarness_getTitle = new WeakMap();
666
+ /**
667
+ * @internal
668
+ */
669
+ SkyPopoverContentHarness.hostSelector = 'sky-popover-content';
670
+
671
+ var _SkyPopoverHarness_instances, _SkyPopoverHarness_documentRootLocator, _SkyPopoverHarness_getContent, _SkyPopoverHarness_getPopoverId;
672
+ /**
673
+ * Harness for interacting with a popover component in tests.
674
+ */
675
+ class SkyPopoverHarness extends SkyComponentHarness {
676
+ constructor() {
677
+ super(...arguments);
678
+ _SkyPopoverHarness_instances.add(this);
679
+ _SkyPopoverHarness_documentRootLocator.set(this, this.documentRootLocatorFactory());
680
+ }
681
+ /**
682
+ * Gets a `HarnessPredicate` that can be used to search for a
683
+ * `SkyPopoverHarness` that meets certain criteria.
684
+ */
685
+ static with(filters) {
686
+ return SkyPopoverHarness.getDataSkyIdPredicate(filters);
687
+ }
688
+ /**
689
+ * Toggles a popover open or closed.
690
+ */
691
+ clickPopoverButton() {
692
+ return __awaiter(this, void 0, void 0, function* () {
693
+ (yield this.host()).click();
694
+ });
695
+ }
696
+ /**
697
+ * Gets the popover content component.
698
+ */
699
+ getPopoverContent() {
700
+ return __awaiter(this, void 0, void 0, function* () {
701
+ const content = yield __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getContent).call(this);
702
+ if (!content) {
703
+ throw new Error('Unable to retrieve the popover content because the popover is not open.');
704
+ }
705
+ return content;
706
+ });
707
+ }
708
+ /**
709
+ * Whether the popover is open.
710
+ */
711
+ isOpen() {
712
+ return __awaiter(this, void 0, void 0, function* () {
713
+ return !!(yield __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getContent).call(this));
714
+ });
715
+ }
716
+ }
717
+ _SkyPopoverHarness_documentRootLocator = new WeakMap(), _SkyPopoverHarness_instances = new WeakSet(), _SkyPopoverHarness_getContent = function _SkyPopoverHarness_getContent() {
718
+ return __awaiter(this, void 0, void 0, function* () {
719
+ const popoverId = yield __classPrivateFieldGet(this, _SkyPopoverHarness_instances, "m", _SkyPopoverHarness_getPopoverId).call(this);
720
+ return __classPrivateFieldGet(this, _SkyPopoverHarness_documentRootLocator, "f").locatorForOptional(SkyPopoverContentHarness.with({ selector: `#${popoverId}` }))();
721
+ });
722
+ }, _SkyPopoverHarness_getPopoverId = function _SkyPopoverHarness_getPopoverId() {
723
+ return __awaiter(this, void 0, void 0, function* () {
724
+ return ((yield (yield this.host()).getAttribute('data-popover-id')) ||
725
+ /* istanbul ignore next */
726
+ '');
727
+ });
728
+ };
729
+ /**
730
+ * @internal
731
+ */
732
+ SkyPopoverHarness.hostSelector = '.sky-popover-trigger';
733
+
504
734
  /**
505
735
  * Generated bundle index. Do not edit.
506
736
  */
507
737
 
508
- export { SkyDropdownFixture, SkyDropdownHarness, SkyDropdownItemHarness, SkyDropdownMenuHarness, SkyDropdownTestingModule, SkyPopoverFixture, SkyPopoverTestingModule };
738
+ export { SkyDropdownFixture, SkyDropdownHarness, SkyDropdownItemHarness, SkyDropdownMenuHarness, SkyDropdownTestingModule, SkyPopoverContentHarness, SkyPopoverFixture, SkyPopoverHarness, SkyPopoverTestingModule };
509
739
  //# 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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"}