@skyux/layout 11.26.0 → 11.28.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.
- package/documentation.json +2155 -1043
- package/esm2022/lib/modules/action-button/action-button-adapter-service.mjs +4 -4
- package/esm2022/lib/modules/action-button/action-button-container.component.mjs +4 -4
- package/esm2022/lib/modules/action-button/action-button-details.component.mjs +4 -4
- package/esm2022/lib/modules/action-button/action-button-header.component.mjs +4 -4
- package/esm2022/lib/modules/action-button/action-button-icon.component.mjs +4 -4
- package/esm2022/lib/modules/action-button/action-button.component.mjs +4 -4
- package/esm2022/lib/modules/action-button/action-button.module.mjs +5 -5
- package/esm2022/lib/modules/back-to-top/back-to-top-adapter.service.mjs +4 -4
- package/esm2022/lib/modules/back-to-top/back-to-top.component.mjs +4 -4
- package/esm2022/lib/modules/back-to-top/back-to-top.directive.mjs +4 -4
- package/esm2022/lib/modules/back-to-top/back-to-top.module.mjs +5 -5
- package/esm2022/lib/modules/box/box-content.component.mjs +4 -4
- package/esm2022/lib/modules/box/box-controls.component.mjs +4 -4
- package/esm2022/lib/modules/box/box-header.component.mjs +5 -5
- package/esm2022/lib/modules/box/box.component.mjs +4 -4
- package/esm2022/lib/modules/box/box.module.mjs +5 -5
- package/esm2022/lib/modules/card/card-actions.component.mjs +4 -4
- package/esm2022/lib/modules/card/card-content.component.mjs +4 -4
- package/esm2022/lib/modules/card/card-title.component.mjs +4 -4
- package/esm2022/lib/modules/card/card.component.mjs +4 -4
- package/esm2022/lib/modules/card/card.module.mjs +5 -5
- package/esm2022/lib/modules/definition-list/definition-list-content.component.mjs +4 -4
- package/esm2022/lib/modules/definition-list/definition-list-heading.component.mjs +4 -4
- package/esm2022/lib/modules/definition-list/definition-list-label.component.mjs +4 -4
- package/esm2022/lib/modules/definition-list/definition-list-value.component.mjs +4 -4
- package/esm2022/lib/modules/definition-list/definition-list.component.mjs +4 -4
- package/esm2022/lib/modules/definition-list/definition-list.module.mjs +5 -5
- package/esm2022/lib/modules/definition-list/definition-list.service.mjs +4 -4
- package/esm2022/lib/modules/description-list/description-list-adapter-service.mjs +4 -4
- package/esm2022/lib/modules/description-list/description-list-content.component.mjs +4 -4
- package/esm2022/lib/modules/description-list/description-list-description.component.mjs +4 -4
- package/esm2022/lib/modules/description-list/description-list-term.component.mjs +4 -4
- package/esm2022/lib/modules/description-list/description-list.component.mjs +4 -4
- package/esm2022/lib/modules/description-list/description-list.module.mjs +5 -5
- package/esm2022/lib/modules/description-list/description-list.service.mjs +4 -4
- package/esm2022/lib/modules/fluid-grid/column.component.mjs +4 -4
- package/esm2022/lib/modules/fluid-grid/fluid-grid.component.mjs +4 -4
- package/esm2022/lib/modules/fluid-grid/fluid-grid.module.mjs +5 -5
- package/esm2022/lib/modules/fluid-grid/row.component.mjs +4 -4
- package/esm2022/lib/modules/format/format.component.mjs +4 -4
- package/esm2022/lib/modules/format/format.module.mjs +5 -5
- package/esm2022/lib/modules/inline-delete/inline-delete-adapter.service.mjs +4 -4
- package/esm2022/lib/modules/inline-delete/inline-delete.component.mjs +4 -4
- package/esm2022/lib/modules/inline-delete/inline-delete.module.mjs +5 -5
- package/esm2022/lib/modules/page/page-theme-adapter.service.mjs +4 -4
- package/esm2022/lib/modules/page/page.component.mjs +4 -4
- package/esm2022/lib/modules/page/page.module.mjs +5 -5
- package/esm2022/lib/modules/page-summary/page-summary-adapter.service.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary-alert.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary-content.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary-image.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary-key-info.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary-status.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary-subtitle.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary-title.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary.component.mjs +4 -4
- package/esm2022/lib/modules/page-summary/page-summary.module.mjs +5 -5
- package/esm2022/lib/modules/shared/sky-layout-resources.module.mjs +5 -5
- package/esm2022/lib/modules/text-expand/text-expand-adapter.service.mjs +4 -4
- package/esm2022/lib/modules/text-expand/text-expand-modal.component.mjs +4 -4
- package/esm2022/lib/modules/text-expand/text-expand.component.mjs +4 -4
- package/esm2022/lib/modules/text-expand/text-expand.module.mjs +5 -5
- package/esm2022/lib/modules/text-expand-repeater/text-expand-repeater-adapter.service.mjs +4 -4
- package/esm2022/lib/modules/text-expand-repeater/text-expand-repeater.component.mjs +4 -4
- package/esm2022/lib/modules/text-expand-repeater/text-expand-repeater.module.mjs +5 -5
- package/esm2022/lib/modules/toolbar/toolbar-item.component.mjs +4 -4
- package/esm2022/lib/modules/toolbar/toolbar-section.component.mjs +4 -4
- package/esm2022/lib/modules/toolbar/toolbar-view-actions.component.mjs +4 -4
- package/esm2022/lib/modules/toolbar/toolbar.component.mjs +4 -4
- package/esm2022/lib/modules/toolbar/toolbar.module.mjs +5 -5
- package/esm2022/testing/modules/text-expand/text-expand-harness-filters.mjs +2 -0
- package/esm2022/testing/modules/text-expand/text-expand-harness.mjs +69 -0
- package/esm2022/testing/modules/text-expand/text-expand-modal-harness.mjs +33 -0
- package/esm2022/testing/public-api.mjs +3 -1
- package/fesm2022/skyux-layout-testing.mjs +101 -1
- package/fesm2022/skyux-layout-testing.mjs.map +1 -1
- package/fesm2022/skyux-layout.mjs +226 -226
- package/fesm2022/skyux-layout.mjs.map +1 -1
- package/package.json +18 -18
- package/testing/modules/text-expand/text-expand-harness-filters.d.ts +7 -0
- package/testing/modules/text-expand/text-expand-harness.d.ts +39 -0
- package/testing/modules/text-expand/text-expand-modal-harness.d.ts +23 -0
- package/testing/public-api.d.ts +3 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
import { SkyTextExpandModalHarness } from './text-expand-modal-harness';
|
|
3
|
+
/**
|
|
4
|
+
* Harness for interacting with a text expand component in tests.
|
|
5
|
+
*/
|
|
6
|
+
export class SkyTextExpandHarness extends SkyComponentHarness {
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
static { this.hostSelector = 'sky-text-expand'; }
|
|
11
|
+
#documentRootLocator = this.documentRootLocatorFactory();
|
|
12
|
+
#getExpandCollapseButton = this.locatorForOptional('.sky-text-expand-see-more');
|
|
13
|
+
#getText = this.locatorFor('.sky-text-expand-text');
|
|
14
|
+
/**
|
|
15
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
16
|
+
* `SkyTextExpandHarness` that meets certain criteria.
|
|
17
|
+
*/
|
|
18
|
+
static with(filters) {
|
|
19
|
+
return SkyTextExpandHarness.getDataSkyIdPredicate(filters);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Clicks the button element that expands or collapses text.
|
|
23
|
+
*/
|
|
24
|
+
async clickExpandCollapseButton() {
|
|
25
|
+
const button = await this.#getExpandCollapseButton();
|
|
26
|
+
if (button === null) {
|
|
27
|
+
throw Error('Could not find button element.');
|
|
28
|
+
}
|
|
29
|
+
await button.click();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets the harness to interact with the modal expanded view.
|
|
33
|
+
*/
|
|
34
|
+
async getExpandedViewModal() {
|
|
35
|
+
const modal = await this.#documentRootLocator.locatorForOptional(SkyTextExpandModalHarness)();
|
|
36
|
+
if (modal === null) {
|
|
37
|
+
throw Error('Could not find text expand modal.');
|
|
38
|
+
}
|
|
39
|
+
return modal;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets the text content of the text expand.
|
|
43
|
+
*/
|
|
44
|
+
async getText() {
|
|
45
|
+
return await (await this.#getText()).text();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Whether the text will expand to a modal.
|
|
49
|
+
*/
|
|
50
|
+
async textExpandsToModal() {
|
|
51
|
+
return ((await (await this.#getExpandCollapseButton())?.getAttribute('aria-haspopup')) !== null);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Whether the text is expanded.
|
|
55
|
+
*/
|
|
56
|
+
async isExpanded() {
|
|
57
|
+
if (await this.textExpandsToModal()) {
|
|
58
|
+
try {
|
|
59
|
+
await this.getExpandedViewModal();
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return ((await (await this.#getExpandCollapseButton())?.getAttribute('aria-expanded')) === 'true');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sYXlvdXQvdGVzdGluZy9zcmMvbW9kdWxlcy90ZXh0LWV4cGFuZC90ZXh0LWV4cGFuZC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG1CQUFtQjtJQUMzRDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsaUJBQWlCLENBQUM7SUFFL0Msb0JBQW9CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDekQsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUNoRCwyQkFBMkIsQ0FDNUIsQ0FBQztJQUNGLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFcEQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FBb0M7UUFFcEMsT0FBTyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMseUJBQXlCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFckQsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsTUFBTSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLG9CQUFvQjtRQUMvQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FDOUQseUJBQXlCLENBQzFCLEVBQUUsQ0FBQztRQUVKLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25CLE1BQU0sS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLE9BQU8sQ0FDTCxDQUFDLE1BQU0sQ0FDTCxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUN0QyxFQUFFLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxVQUFVO1FBQ3JCLElBQUksTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sQ0FDTCxDQUFDLE1BQU0sQ0FDTCxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUN0QyxFQUFFLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FDN0MsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5Q29tcG9uZW50SGFybmVzcyB9IGZyb20gJ0Bza3l1eC9jb3JlL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RXhwYW5kSGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL3RleHQtZXhwYW5kLWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lUZXh0RXhwYW5kTW9kYWxIYXJuZXNzIH0gZnJvbSAnLi90ZXh0LWV4cGFuZC1tb2RhbC1oYXJuZXNzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgdGV4dCBleHBhbmQgY29tcG9uZW50IGluIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgU2t5VGV4dEV4cGFuZEhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LXRleHQtZXhwYW5kJztcblxuICAjZG9jdW1lbnRSb290TG9jYXRvciA9IHRoaXMuZG9jdW1lbnRSb290TG9jYXRvckZhY3RvcnkoKTtcbiAgI2dldEV4cGFuZENvbGxhcHNlQnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgJy5za3ktdGV4dC1leHBhbmQtc2VlLW1vcmUnLFxuICApO1xuICAjZ2V0VGV4dCA9IHRoaXMubG9jYXRvckZvcignLnNreS10ZXh0LWV4cGFuZC10ZXh0Jyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreVRleHRFeHBhbmRIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5VGV4dEV4cGFuZEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreVRleHRFeHBhbmRIYXJuZXNzPiB7XG4gICAgcmV0dXJuIFNreVRleHRFeHBhbmRIYXJuZXNzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGJ1dHRvbiBlbGVtZW50IHRoYXQgZXhwYW5kcyBvciBjb2xsYXBzZXMgdGV4dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja0V4cGFuZENvbGxhcHNlQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuI2dldEV4cGFuZENvbGxhcHNlQnV0dG9uKCk7XG5cbiAgICBpZiAoYnV0dG9uID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBFcnJvcignQ291bGQgbm90IGZpbmQgYnV0dG9uIGVsZW1lbnQuJyk7XG4gICAgfVxuXG4gICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGFybmVzcyB0byBpbnRlcmFjdCB3aXRoIHRoZSBtb2RhbCBleHBhbmRlZCB2aWV3LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEV4cGFuZGVkVmlld01vZGFsKCk6IFByb21pc2U8U2t5VGV4dEV4cGFuZE1vZGFsSGFybmVzcz4ge1xuICAgIGNvbnN0IG1vZGFsID0gYXdhaXQgdGhpcy4jZG9jdW1lbnRSb290TG9jYXRvci5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBTa3lUZXh0RXhwYW5kTW9kYWxIYXJuZXNzLFxuICAgICkoKTtcblxuICAgIGlmIChtb2RhbCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRleHQgZXhwYW5kIG1vZGFsLicpO1xuICAgIH1cblxuICAgIHJldHVybiBtb2RhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIHRleHQgZXhwYW5kLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldFRleHQoKSkudGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRleHQgd2lsbCBleHBhbmQgdG8gYSBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB0ZXh0RXhwYW5kc1RvTW9kYWwoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChhd2FpdCAoXG4gICAgICAgIGF3YWl0IHRoaXMuI2dldEV4cGFuZENvbGxhcHNlQnV0dG9uKClcbiAgICAgICk/LmdldEF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcpKSAhPT0gbnVsbFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGV4dCBpcyBleHBhbmRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0V4cGFuZGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmIChhd2FpdCB0aGlzLnRleHRFeHBhbmRzVG9Nb2RhbCgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmdldEV4cGFuZGVkVmlld01vZGFsKCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgKGF3YWl0IChcbiAgICAgICAgYXdhaXQgdGhpcy4jZ2V0RXhwYW5kQ29sbGFwc2VCdXR0b24oKVxuICAgICAgKT8uZ2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykpID09PSAndHJ1ZSdcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ComponentHarness } from '@angular/cdk/testing';
|
|
2
|
+
/**
|
|
3
|
+
* Harness for interacting with a text expand modal component in tests.
|
|
4
|
+
*/
|
|
5
|
+
export class SkyTextExpandModalHarness extends ComponentHarness {
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
static { this.hostSelector = 'sky-text-expand-modal'; }
|
|
10
|
+
#getCloseButton = this.locatorFor('sky-modal-footer button.sky-btn');
|
|
11
|
+
#getHeader = this.locatorFor('sky-modal-header');
|
|
12
|
+
#getText = this.locatorFor('sky-modal-content.sky-text-expand-modal-content');
|
|
13
|
+
/**
|
|
14
|
+
* Clicks the modal close button.
|
|
15
|
+
*/
|
|
16
|
+
async clickCloseButton() {
|
|
17
|
+
const button = await this.#getCloseButton();
|
|
18
|
+
await button.click();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Gets the modal title.
|
|
22
|
+
*/
|
|
23
|
+
async getExpandModalTitle() {
|
|
24
|
+
return await (await this.#getHeader()).text();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets the expanded text in the modal.
|
|
28
|
+
*/
|
|
29
|
+
async getText() {
|
|
30
|
+
return await (await this.#getText()).text();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1leHBhbmQtbW9kYWwtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sYXlvdXQvdGVzdGluZy9zcmMvbW9kdWxlcy90ZXh0LWV4cGFuZC90ZXh0LWV4cGFuZC1tb2RhbC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGdCQUFnQjtJQUM3RDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsdUJBQXVCLENBQUM7SUFFckQsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNyRSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7SUFFOUU7O09BRUc7SUFDSSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTVDLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxtQkFBbUI7UUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBTztRQUNsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSB0ZXh0IGV4cGFuZCBtb2RhbCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lUZXh0RXhwYW5kTW9kYWxIYXJuZXNzIGV4dGVuZHMgQ29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS10ZXh0LWV4cGFuZC1tb2RhbCc7XG5cbiAgI2dldENsb3NlQnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCdza3ktbW9kYWwtZm9vdGVyIGJ1dHRvbi5za3ktYnRuJyk7XG4gICNnZXRIZWFkZXIgPSB0aGlzLmxvY2F0b3JGb3IoJ3NreS1tb2RhbC1oZWFkZXInKTtcbiAgI2dldFRleHQgPSB0aGlzLmxvY2F0b3JGb3IoJ3NreS1tb2RhbC1jb250ZW50LnNreS10ZXh0LWV4cGFuZC1tb2RhbC1jb250ZW50Jyk7XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgbW9kYWwgY2xvc2UgYnV0dG9uLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrQ2xvc2VCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYnV0dG9uID0gYXdhaXQgdGhpcy4jZ2V0Q2xvc2VCdXR0b24oKTtcblxuICAgIGF3YWl0IGJ1dHRvbi5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1vZGFsIHRpdGxlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEV4cGFuZE1vZGFsVGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldEhlYWRlcigpKS50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZXhwYW5kZWQgdGV4dCBpbiB0aGUgbW9kYWwuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0VGV4dCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0VGV4dCgpKS50ZXh0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,4 +5,6 @@ export { SkyBoxHarness } from './modules/box/box-harness';
|
|
|
5
5
|
export { SkyColumnHarness } from './modules/fluid-grid/column-harness';
|
|
6
6
|
export { SkyFluidGridHarness } from './modules/fluid-grid/fluid-grid-harness';
|
|
7
7
|
export { SkyRowHarness } from './modules/fluid-grid/row-harness';
|
|
8
|
-
|
|
8
|
+
export { SkyTextExpandHarness } from './modules/text-expand/text-expand-harness';
|
|
9
|
+
export { SkyTextExpandModalHarness } from './modules/text-expand/text-expand-modal-harness';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sYXlvdXQvdGVzdGluZy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUdqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNreUFjdGlvbkJ1dHRvbkZpeHR1cmUgfSBmcm9tICcuL2xlZ2FjeS9hY3Rpb24tYnV0dG9uLWZpeHR1cmUnO1xuZXhwb3J0IHsgU2t5Q2FyZEZpeHR1cmUgfSBmcm9tICcuL2xlZ2FjeS9jYXJkLWZpeHR1cmUnO1xuZXhwb3J0IHsgU2t5UGFnZVN1bW1hcnlGaXh0dXJlIH0gZnJvbSAnLi9sZWdhY3kvcGFnZS1zdW1tYXJ5LWZpeHR1cmUnO1xuXG5leHBvcnQgeyBTa3lCb3hIYXJuZXNzIH0gZnJvbSAnLi9tb2R1bGVzL2JveC9ib3gtaGFybmVzcyc7XG5leHBvcnQgeyBTa3lCb3hIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vbW9kdWxlcy9ib3gvYm94LWhhcm5lc3MuZmlsdGVycyc7XG5cbmV4cG9ydCB7IFNreUNvbHVtbkhhcm5lc3MgfSBmcm9tICcuL21vZHVsZXMvZmx1aWQtZ3JpZC9jb2x1bW4taGFybmVzcyc7XG5leHBvcnQgeyBTa3lDb2x1bW5IYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vbW9kdWxlcy9mbHVpZC1ncmlkL2NvbHVtbi1oYXJuZXNzLWZpbHRlcnMnO1xuZXhwb3J0IHsgU2t5Rmx1aWRHcmlkSGFybmVzcyB9IGZyb20gJy4vbW9kdWxlcy9mbHVpZC1ncmlkL2ZsdWlkLWdyaWQtaGFybmVzcyc7XG5leHBvcnQgeyBTa3lGbHVpZEdyaWRIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vbW9kdWxlcy9mbHVpZC1ncmlkL2ZsdWlkLWdyaWQtaGFybmVzcy1maWx0ZXJzJztcbmV4cG9ydCB7IFNreVJvd0hhcm5lc3MgfSBmcm9tICcuL21vZHVsZXMvZmx1aWQtZ3JpZC9yb3ctaGFybmVzcyc7XG5leHBvcnQgeyBTa3lSb3dIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vbW9kdWxlcy9mbHVpZC1ncmlkL3Jvdy1oYXJuZXNzLWZpbHRlcnMnO1xuXG5leHBvcnQgeyBTa3lUZXh0RXhwYW5kSGFybmVzcyB9IGZyb20gJy4vbW9kdWxlcy90ZXh0LWV4cGFuZC90ZXh0LWV4cGFuZC1oYXJuZXNzJztcbmV4cG9ydCB7IFNreVRleHRFeHBhbmRIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vbW9kdWxlcy90ZXh0LWV4cGFuZC90ZXh0LWV4cGFuZC1oYXJuZXNzLWZpbHRlcnMnO1xuZXhwb3J0IHsgU2t5VGV4dEV4cGFuZE1vZGFsSGFybmVzcyB9IGZyb20gJy4vbW9kdWxlcy90ZXh0LWV4cGFuZC90ZXh0LWV4cGFuZC1tb2RhbC1oYXJuZXNzJztcbiJdfQ==
|
|
@@ -2,6 +2,7 @@ import { By } from '@angular/platform-browser';
|
|
|
2
2
|
import { SkyAppTestUtility } from '@skyux-sdk/testing';
|
|
3
3
|
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
4
4
|
import { SkyHelpInlineHarness } from '@skyux/help-inline/testing';
|
|
5
|
+
import { ComponentHarness } from '@angular/cdk/testing';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Allows interaction with a SKY UX action button component.
|
|
@@ -389,9 +390,108 @@ class SkyFluidGridHarness extends SkyComponentHarness {
|
|
|
389
390
|
}
|
|
390
391
|
}
|
|
391
392
|
|
|
393
|
+
/**
|
|
394
|
+
* Harness for interacting with a text expand modal component in tests.
|
|
395
|
+
*/
|
|
396
|
+
class SkyTextExpandModalHarness extends ComponentHarness {
|
|
397
|
+
/**
|
|
398
|
+
* @internal
|
|
399
|
+
*/
|
|
400
|
+
static { this.hostSelector = 'sky-text-expand-modal'; }
|
|
401
|
+
#getCloseButton = this.locatorFor('sky-modal-footer button.sky-btn');
|
|
402
|
+
#getHeader = this.locatorFor('sky-modal-header');
|
|
403
|
+
#getText = this.locatorFor('sky-modal-content.sky-text-expand-modal-content');
|
|
404
|
+
/**
|
|
405
|
+
* Clicks the modal close button.
|
|
406
|
+
*/
|
|
407
|
+
async clickCloseButton() {
|
|
408
|
+
const button = await this.#getCloseButton();
|
|
409
|
+
await button.click();
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Gets the modal title.
|
|
413
|
+
*/
|
|
414
|
+
async getExpandModalTitle() {
|
|
415
|
+
return await (await this.#getHeader()).text();
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Gets the expanded text in the modal.
|
|
419
|
+
*/
|
|
420
|
+
async getText() {
|
|
421
|
+
return await (await this.#getText()).text();
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Harness for interacting with a text expand component in tests.
|
|
427
|
+
*/
|
|
428
|
+
class SkyTextExpandHarness extends SkyComponentHarness {
|
|
429
|
+
/**
|
|
430
|
+
* @internal
|
|
431
|
+
*/
|
|
432
|
+
static { this.hostSelector = 'sky-text-expand'; }
|
|
433
|
+
#documentRootLocator = this.documentRootLocatorFactory();
|
|
434
|
+
#getExpandCollapseButton = this.locatorForOptional('.sky-text-expand-see-more');
|
|
435
|
+
#getText = this.locatorFor('.sky-text-expand-text');
|
|
436
|
+
/**
|
|
437
|
+
* Gets a `HarnessPredicate` that can be used to search for a
|
|
438
|
+
* `SkyTextExpandHarness` that meets certain criteria.
|
|
439
|
+
*/
|
|
440
|
+
static with(filters) {
|
|
441
|
+
return SkyTextExpandHarness.getDataSkyIdPredicate(filters);
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Clicks the button element that expands or collapses text.
|
|
445
|
+
*/
|
|
446
|
+
async clickExpandCollapseButton() {
|
|
447
|
+
const button = await this.#getExpandCollapseButton();
|
|
448
|
+
if (button === null) {
|
|
449
|
+
throw Error('Could not find button element.');
|
|
450
|
+
}
|
|
451
|
+
await button.click();
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Gets the harness to interact with the modal expanded view.
|
|
455
|
+
*/
|
|
456
|
+
async getExpandedViewModal() {
|
|
457
|
+
const modal = await this.#documentRootLocator.locatorForOptional(SkyTextExpandModalHarness)();
|
|
458
|
+
if (modal === null) {
|
|
459
|
+
throw Error('Could not find text expand modal.');
|
|
460
|
+
}
|
|
461
|
+
return modal;
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Gets the text content of the text expand.
|
|
465
|
+
*/
|
|
466
|
+
async getText() {
|
|
467
|
+
return await (await this.#getText()).text();
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Whether the text will expand to a modal.
|
|
471
|
+
*/
|
|
472
|
+
async textExpandsToModal() {
|
|
473
|
+
return ((await (await this.#getExpandCollapseButton())?.getAttribute('aria-haspopup')) !== null);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Whether the text is expanded.
|
|
477
|
+
*/
|
|
478
|
+
async isExpanded() {
|
|
479
|
+
if (await this.textExpandsToModal()) {
|
|
480
|
+
try {
|
|
481
|
+
await this.getExpandedViewModal();
|
|
482
|
+
return true;
|
|
483
|
+
}
|
|
484
|
+
catch {
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
return ((await (await this.#getExpandCollapseButton())?.getAttribute('aria-expanded')) === 'true');
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
392
492
|
/**
|
|
393
493
|
* Generated bundle index. Do not edit.
|
|
394
494
|
*/
|
|
395
495
|
|
|
396
|
-
export { SkyActionButtonFixture, SkyBoxHarness, SkyCardFixture, SkyColumnHarness, SkyFluidGridHarness, SkyPageSummaryFixture, SkyRowHarness };
|
|
496
|
+
export { SkyActionButtonFixture, SkyBoxHarness, SkyCardFixture, SkyColumnHarness, SkyFluidGridHarness, SkyPageSummaryFixture, SkyRowHarness, SkyTextExpandHarness, SkyTextExpandModalHarness };
|
|
397
497
|
//# sourceMappingURL=skyux-layout-testing.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-layout-testing.mjs","sources":["../../../../../libs/components/layout/testing/src/legacy/action-button-fixture.ts","../../../../../libs/components/layout/testing/src/legacy/card-fixture.ts","../../../../../libs/components/layout/testing/src/legacy/page-summary-fixture.ts","../../../../../libs/components/layout/testing/src/modules/box/box-harness.ts","../../../../../libs/components/layout/testing/src/modules/fluid-grid/column-harness.ts","../../../../../libs/components/layout/testing/src/modules/fluid-grid/row-harness.ts","../../../../../libs/components/layout/testing/src/modules/fluid-grid/fluid-grid-harness.ts","../../../../../libs/components/layout/testing/src/skyux-layout-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX action button component.\n * @internal\n */\nexport class SkyActionButtonFixture {\n /**\n * The action button's current header text.\n */\n public get headerText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('.sky-action-button-header')),\n );\n }\n\n /**\n * The action button's current details text.\n */\n public get detailsText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('sky-action-button-details')),\n );\n }\n\n /**\n * The action button's current icon type.\n */\n public get iconType(): string | undefined {\n const classList = this.#debugEl.query(By.css('.fa.sky-icon')).nativeElement\n .classList;\n\n for (let i = 0, n = classList.length; i < n; i++) {\n const cls = classList.item(i);\n\n if (cls.indexOf('fa-') === 0) {\n return cls.substr(3);\n }\n }\n /* istanbul ignore next */\n return undefined;\n }\n\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-action-button',\n );\n }\n\n /**\n * Clicks the action button.\n */\n public actionClick(): void {\n this.#debugEl\n .query(By.css('.sky-action-button'))\n .triggerEventHandler('click', {});\n }\n}\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\n/**\n * Allows interaction with a SKY UX avatar component.\n * @internal\n */\nexport class SkyCardFixture {\n /**\n * The card's current title.\n */\n public get titleText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('sky-card-title')),\n );\n }\n\n /**\n * The card's current content text.\n */\n public get contentText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('sky-card-content')),\n );\n }\n\n /**\n * A flag indicating whether the user can select the card.\n */\n public get selectable(): boolean {\n return !!this.#debugEl.query(By.css('.sky-card-check'));\n }\n\n /**\n * A flag indicating whether the card is currently selected. If the card\n * is not selectable, an error is thrown.\n */\n public get selected(): boolean {\n if (this.selectable) {\n return this.#getCheckInputEl().nativeElement.checked;\n }\n\n throw new Error('The card is not selectable.');\n }\n\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-card',\n );\n }\n\n /**\n * Selects the card.\n */\n public select(): void {\n if (!this.selected) {\n this.#clickCheckLabelEl();\n }\n }\n\n /**\n * Deselects the card.\n */\n public deselect(): void {\n if (this.selected) {\n this.#clickCheckLabelEl();\n }\n }\n\n #clickCheckLabelEl(): void {\n this.#debugEl\n .query(By.css('.sky-card-check label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n\n #getCheckInputEl(): DebugElement {\n return this.#debugEl.query(\n By.css('.sky-card-check .sky-checkbox-wrapper input'),\n );\n }\n}\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\n/**\n * Allows interaction with a SKY UX page summary component.\n * @internal\n */\nexport class SkyPageSummaryFixture {\n /**\n * The page summary's current title text.\n */\n public get titleText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(\n By.css('sky-page-summary-title .sky-page-summary-title'),\n ),\n );\n }\n\n /**\n * The page summary's current subtitle text.\n */\n public get subtitleText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(\n By.css('sky-page-summary-subtitle .sky-page-summary-subtitle'),\n ),\n );\n }\n\n /**\n * The page summary's current content text.\n */\n public get contentText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(\n By.css('sky-page-summary-content .sky-page-summary-content'),\n ),\n );\n }\n\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-page-summary',\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { TemplateRef } from '@angular/core';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyBoxHeadingLevel, SkyBoxHeadingStyle } from '@skyux/layout';\n\nimport { SkyBoxHarnessFilters } from './box-harness.filters';\n\nexport class SkyBoxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-box';\n\n #getBox = this.locatorFor('.sky-box');\n #getHeading = this.locatorFor('.sky-box-header-content');\n #getH2 = this.locatorForOptional('.sky-box-header-content h2');\n #getH3 = this.locatorForOptional('.sky-box-header-content h3');\n #getH4 = this.locatorForOptional('.sky-box-header-content h4');\n #getH5 = this.locatorForOptional('.sky-box-header-content h5');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyBoxHarness` that meets certain criteria\n */\n public static with(\n filters: SkyBoxHarnessFilters,\n ): HarnessPredicate<SkyBoxHarness> {\n return SkyBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<\n TemplateRef<unknown> | string | undefined\n > {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the box's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await (await this.#getHeading()).text();\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n const heading =\n (await this.#getH2()) ||\n (await this.#getH3()) ||\n (await this.#getH4()) ||\n (await this.#getH5());\n return (await heading?.hasClass('sky-screen-reader-only')) ?? false;\n }\n\n /**\n * The semantic heading level used for the checkbox group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<SkyBoxHeadingLevel | undefined> {\n return (await this.#getH2())\n ? 2\n : (await this.#getH3())\n ? 3\n : (await this.#getH4())\n ? 4\n : 5;\n }\n\n /**\n * The heading style used for the checkbox group.\n */\n public async getHeadingStyle(): Promise<SkyBoxHeadingStyle> {\n const heading =\n (await this.#getH2()) ||\n (await this.#getH3()) ||\n (await this.#getH4()) ||\n (await this.#getH5());\n\n const isHeadingStyle2 = await heading?.hasClass('sky-font-heading-2');\n const isHeadingStyle3 = await heading?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading?.hasClass('sky-font-heading-4');\n\n return isHeadingStyle2 ? 2 : isHeadingStyle3 ? 3 : isHeadingStyle4 ? 4 : 5;\n }\n\n /**\n * Gets the aria-label property of the box\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getBox()).getAttribute('aria-label');\n }\n\n /**\n * Gets the aria-labelledby property of the box\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getBox()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the aria-role property of the box\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.#getBox()).getAttribute('role');\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-box-header-content',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyColumnHarnessFilters } from './column-harness-filters';\n\nconst sizes = ['xs', 'sm', 'md', 'lg'];\n\n/**\n * Harness for interacting with a fluid grid column component in tests.\n */\nexport class SkyColumnHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-column';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyColumnHarness` that meets certain criteria\n */\n public static with(\n filters: SkyColumnHarnessFilters,\n ): HarnessPredicate<SkyColumnHarness> {\n return SkyColumnHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the size of the column in an XSmall responsive context.\n */\n public async getXSmallSize(): Promise<number> {\n return await this.#getColumnSize(0);\n }\n\n /**\n * Gets the size of the column in a Small responsive context.\n */\n public async getSmallSize(): Promise<number> {\n return await this.#getColumnSize(1);\n }\n\n /**\n * Gets the size of the column in a Medium responsive context.\n */\n public async getMediumSize(): Promise<number> {\n return await this.#getColumnSize(2);\n }\n\n /**\n * Gets the size of the column in a Large responsive context.\n */\n public async getLargeSize(): Promise<number> {\n return await this.#getColumnSize(3);\n }\n\n async #getColumnSize(index: number): Promise<number> {\n const size = sizes[index];\n\n const result = await this.#getColumnClass(size);\n\n /* istanbul ignore if */\n if (!result && !index) {\n throw Error('No column sizes found.');\n }\n\n return result || (await this.#getColumnSize(index - 1));\n }\n\n async #getColumnClass(size: string): Promise<number> {\n const host = await this.host();\n\n for (let i = 12; i; i--) {\n if (await host.hasClass(`sky-column-${size}-${i}`)) {\n return i;\n }\n }\n\n return 0;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyColumnHarness } from './column-harness';\nimport { SkyRowHarnessFilters } from './row-harness-filters';\n\n/**\n * Harness for interacting with a fluid grid column component in tests.\n */\nexport class SkyRowHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-row';\n\n #getRow = this.locatorFor('.sky-row');\n #getColumns = this.locatorForAll(SkyColumnHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRowHarness` that meets certain criteria\n */\n public static with(\n filters: SkyRowHarnessFilters,\n ): HarnessPredicate<SkyRowHarness> {\n return SkyRowHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets all of the columns in the row.\n */\n public async getColumns(): Promise<SkyColumnHarness[]> {\n return await this.#getColumns();\n }\n\n /**\n * Gets the ordering of the columns in the row.\n * @returns `normal` | `reverse`\n */\n public async getColumnOrder(): Promise<string> {\n const row = await this.#getRow();\n\n return (await row.hasClass('sky-row-reverse')) ? 'reverse' : 'normal';\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFluidGridHarnessFilters } from './fluid-grid-harness-filters';\nimport { SkyRowHarness } from './row-harness';\n\n/**\n * Harness for interacting with a fluid grid component in tests.\n */\nexport class SkyFluidGridHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-fluid-grid';\n\n #getGrid = this.locatorFor('.sky-fluid-grid');\n #getRows = this.locatorForAll(SkyRowHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFluidGridHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFluidGridHarnessFilters,\n ): HarnessPredicate<SkyFluidGridHarness> {\n return SkyFluidGridHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the gutter size for the grid.\n */\n public async getGutterSize(): Promise<string> {\n const grid = await this.#getGrid();\n\n const small = await grid.hasClass('sky-fluid-grid-gutter-size-small');\n const medium = await grid.hasClass('sky-fluid-grid-gutter-size-medium');\n\n if (small) {\n return 'small';\n } else if (medium) {\n return 'medium';\n } else {\n return 'large';\n }\n }\n\n /**\n * Gets all of the rows in the grid.\n */\n public async getRows(): Promise<SkyRowHarness[]> {\n return await this.#getRows();\n }\n\n /**\n * Whether the fluid grid has margin enabled.\n */\n public async hasMargin(): Promise<boolean> {\n return !(await (\n await this.#getGrid()\n ).hasClass('sky-fluid-grid-no-margin'));\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-layout-testing.mjs","sources":["../../../../../libs/components/layout/testing/src/legacy/action-button-fixture.ts","../../../../../libs/components/layout/testing/src/legacy/card-fixture.ts","../../../../../libs/components/layout/testing/src/legacy/page-summary-fixture.ts","../../../../../libs/components/layout/testing/src/modules/box/box-harness.ts","../../../../../libs/components/layout/testing/src/modules/fluid-grid/column-harness.ts","../../../../../libs/components/layout/testing/src/modules/fluid-grid/row-harness.ts","../../../../../libs/components/layout/testing/src/modules/fluid-grid/fluid-grid-harness.ts","../../../../../libs/components/layout/testing/src/modules/text-expand/text-expand-modal-harness.ts","../../../../../libs/components/layout/testing/src/modules/text-expand/text-expand-harness.ts","../../../../../libs/components/layout/testing/src/skyux-layout-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX action button component.\n * @internal\n */\nexport class SkyActionButtonFixture {\n /**\n * The action button's current header text.\n */\n public get headerText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('.sky-action-button-header')),\n );\n }\n\n /**\n * The action button's current details text.\n */\n public get detailsText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('sky-action-button-details')),\n );\n }\n\n /**\n * The action button's current icon type.\n */\n public get iconType(): string | undefined {\n const classList = this.#debugEl.query(By.css('.fa.sky-icon')).nativeElement\n .classList;\n\n for (let i = 0, n = classList.length; i < n; i++) {\n const cls = classList.item(i);\n\n if (cls.indexOf('fa-') === 0) {\n return cls.substr(3);\n }\n }\n /* istanbul ignore next */\n return undefined;\n }\n\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-action-button',\n );\n }\n\n /**\n * Clicks the action button.\n */\n public actionClick(): void {\n this.#debugEl\n .query(By.css('.sky-action-button'))\n .triggerEventHandler('click', {});\n }\n}\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\n/**\n * Allows interaction with a SKY UX avatar component.\n * @internal\n */\nexport class SkyCardFixture {\n /**\n * The card's current title.\n */\n public get titleText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('sky-card-title')),\n );\n }\n\n /**\n * The card's current content text.\n */\n public get contentText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('sky-card-content')),\n );\n }\n\n /**\n * A flag indicating whether the user can select the card.\n */\n public get selectable(): boolean {\n return !!this.#debugEl.query(By.css('.sky-card-check'));\n }\n\n /**\n * A flag indicating whether the card is currently selected. If the card\n * is not selectable, an error is thrown.\n */\n public get selected(): boolean {\n if (this.selectable) {\n return this.#getCheckInputEl().nativeElement.checked;\n }\n\n throw new Error('The card is not selectable.');\n }\n\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-card',\n );\n }\n\n /**\n * Selects the card.\n */\n public select(): void {\n if (!this.selected) {\n this.#clickCheckLabelEl();\n }\n }\n\n /**\n * Deselects the card.\n */\n public deselect(): void {\n if (this.selected) {\n this.#clickCheckLabelEl();\n }\n }\n\n #clickCheckLabelEl(): void {\n this.#debugEl\n .query(By.css('.sky-card-check label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n\n #getCheckInputEl(): DebugElement {\n return this.#debugEl.query(\n By.css('.sky-card-check .sky-checkbox-wrapper input'),\n );\n }\n}\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\n/**\n * Allows interaction with a SKY UX page summary component.\n * @internal\n */\nexport class SkyPageSummaryFixture {\n /**\n * The page summary's current title text.\n */\n public get titleText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(\n By.css('sky-page-summary-title .sky-page-summary-title'),\n ),\n );\n }\n\n /**\n * The page summary's current subtitle text.\n */\n public get subtitleText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(\n By.css('sky-page-summary-subtitle .sky-page-summary-subtitle'),\n ),\n );\n }\n\n /**\n * The page summary's current content text.\n */\n public get contentText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(\n By.css('sky-page-summary-content .sky-page-summary-content'),\n ),\n );\n }\n\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-page-summary',\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { TemplateRef } from '@angular/core';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyBoxHeadingLevel, SkyBoxHeadingStyle } from '@skyux/layout';\n\nimport { SkyBoxHarnessFilters } from './box-harness.filters';\n\nexport class SkyBoxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-box';\n\n #getBox = this.locatorFor('.sky-box');\n #getHeading = this.locatorFor('.sky-box-header-content');\n #getH2 = this.locatorForOptional('.sky-box-header-content h2');\n #getH3 = this.locatorForOptional('.sky-box-header-content h3');\n #getH4 = this.locatorForOptional('.sky-box-header-content h4');\n #getH5 = this.locatorForOptional('.sky-box-header-content h5');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyBoxHarness` that meets certain criteria\n */\n public static with(\n filters: SkyBoxHarnessFilters,\n ): HarnessPredicate<SkyBoxHarness> {\n return SkyBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n return await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<\n TemplateRef<unknown> | string | undefined\n > {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the box's heading text. If `headingHidden` is true,\n * the text will still be returned.\n */\n public async getHeadingText(): Promise<string | undefined> {\n return await (await this.#getHeading()).text();\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n const heading =\n (await this.#getH2()) ||\n (await this.#getH3()) ||\n (await this.#getH4()) ||\n (await this.#getH5());\n return (await heading?.hasClass('sky-screen-reader-only')) ?? false;\n }\n\n /**\n * The semantic heading level used for the checkbox group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<SkyBoxHeadingLevel | undefined> {\n return (await this.#getH2())\n ? 2\n : (await this.#getH3())\n ? 3\n : (await this.#getH4())\n ? 4\n : 5;\n }\n\n /**\n * The heading style used for the checkbox group.\n */\n public async getHeadingStyle(): Promise<SkyBoxHeadingStyle> {\n const heading =\n (await this.#getH2()) ||\n (await this.#getH3()) ||\n (await this.#getH4()) ||\n (await this.#getH5());\n\n const isHeadingStyle2 = await heading?.hasClass('sky-font-heading-2');\n const isHeadingStyle3 = await heading?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading?.hasClass('sky-font-heading-4');\n\n return isHeadingStyle2 ? 2 : isHeadingStyle3 ? 3 : isHeadingStyle4 ? 4 : 5;\n }\n\n /**\n * Gets the aria-label property of the box\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getBox()).getAttribute('aria-label');\n }\n\n /**\n * Gets the aria-labelledby property of the box\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getBox()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the aria-role property of the box\n */\n public async getAriaRole(): Promise<string | null> {\n return await (await this.#getBox()).getAttribute('role');\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-box-header-content',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyColumnHarnessFilters } from './column-harness-filters';\n\nconst sizes = ['xs', 'sm', 'md', 'lg'];\n\n/**\n * Harness for interacting with a fluid grid column component in tests.\n */\nexport class SkyColumnHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-column';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyColumnHarness` that meets certain criteria\n */\n public static with(\n filters: SkyColumnHarnessFilters,\n ): HarnessPredicate<SkyColumnHarness> {\n return SkyColumnHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the size of the column in an XSmall responsive context.\n */\n public async getXSmallSize(): Promise<number> {\n return await this.#getColumnSize(0);\n }\n\n /**\n * Gets the size of the column in a Small responsive context.\n */\n public async getSmallSize(): Promise<number> {\n return await this.#getColumnSize(1);\n }\n\n /**\n * Gets the size of the column in a Medium responsive context.\n */\n public async getMediumSize(): Promise<number> {\n return await this.#getColumnSize(2);\n }\n\n /**\n * Gets the size of the column in a Large responsive context.\n */\n public async getLargeSize(): Promise<number> {\n return await this.#getColumnSize(3);\n }\n\n async #getColumnSize(index: number): Promise<number> {\n const size = sizes[index];\n\n const result = await this.#getColumnClass(size);\n\n /* istanbul ignore if */\n if (!result && !index) {\n throw Error('No column sizes found.');\n }\n\n return result || (await this.#getColumnSize(index - 1));\n }\n\n async #getColumnClass(size: string): Promise<number> {\n const host = await this.host();\n\n for (let i = 12; i; i--) {\n if (await host.hasClass(`sky-column-${size}-${i}`)) {\n return i;\n }\n }\n\n return 0;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyColumnHarness } from './column-harness';\nimport { SkyRowHarnessFilters } from './row-harness-filters';\n\n/**\n * Harness for interacting with a fluid grid column component in tests.\n */\nexport class SkyRowHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-row';\n\n #getRow = this.locatorFor('.sky-row');\n #getColumns = this.locatorForAll(SkyColumnHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRowHarness` that meets certain criteria\n */\n public static with(\n filters: SkyRowHarnessFilters,\n ): HarnessPredicate<SkyRowHarness> {\n return SkyRowHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets all of the columns in the row.\n */\n public async getColumns(): Promise<SkyColumnHarness[]> {\n return await this.#getColumns();\n }\n\n /**\n * Gets the ordering of the columns in the row.\n * @returns `normal` | `reverse`\n */\n public async getColumnOrder(): Promise<string> {\n const row = await this.#getRow();\n\n return (await row.hasClass('sky-row-reverse')) ? 'reverse' : 'normal';\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFluidGridHarnessFilters } from './fluid-grid-harness-filters';\nimport { SkyRowHarness } from './row-harness';\n\n/**\n * Harness for interacting with a fluid grid component in tests.\n */\nexport class SkyFluidGridHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-fluid-grid';\n\n #getGrid = this.locatorFor('.sky-fluid-grid');\n #getRows = this.locatorForAll(SkyRowHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFluidGridHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFluidGridHarnessFilters,\n ): HarnessPredicate<SkyFluidGridHarness> {\n return SkyFluidGridHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the gutter size for the grid.\n */\n public async getGutterSize(): Promise<string> {\n const grid = await this.#getGrid();\n\n const small = await grid.hasClass('sky-fluid-grid-gutter-size-small');\n const medium = await grid.hasClass('sky-fluid-grid-gutter-size-medium');\n\n if (small) {\n return 'small';\n } else if (medium) {\n return 'medium';\n } else {\n return 'large';\n }\n }\n\n /**\n * Gets all of the rows in the grid.\n */\n public async getRows(): Promise<SkyRowHarness[]> {\n return await this.#getRows();\n }\n\n /**\n * Whether the fluid grid has margin enabled.\n */\n public async hasMargin(): Promise<boolean> {\n return !(await (\n await this.#getGrid()\n ).hasClass('sky-fluid-grid-no-margin'));\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a text expand modal component in tests.\n */\nexport class SkyTextExpandModalHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-text-expand-modal';\n\n #getCloseButton = this.locatorFor('sky-modal-footer button.sky-btn');\n #getHeader = this.locatorFor('sky-modal-header');\n #getText = this.locatorFor('sky-modal-content.sky-text-expand-modal-content');\n\n /**\n * Clicks the modal close button.\n */\n public async clickCloseButton(): Promise<void> {\n const button = await this.#getCloseButton();\n\n await button.click();\n }\n\n /**\n * Gets the modal title.\n */\n public async getExpandModalTitle(): Promise<string> {\n return await (await this.#getHeader()).text();\n }\n\n /**\n * Gets the expanded text in the modal.\n */\n public async getText(): Promise<string> {\n return await (await this.#getText()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyTextExpandHarnessFilters } from './text-expand-harness-filters';\nimport { SkyTextExpandModalHarness } from './text-expand-modal-harness';\n\n/**\n * Harness for interacting with a text expand component in tests.\n */\nexport class SkyTextExpandHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-text-expand';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n #getExpandCollapseButton = this.locatorForOptional(\n '.sky-text-expand-see-more',\n );\n #getText = this.locatorFor('.sky-text-expand-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTextExpandHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyTextExpandHarnessFilters,\n ): HarnessPredicate<SkyTextExpandHarness> {\n return SkyTextExpandHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the button element that expands or collapses text.\n */\n public async clickExpandCollapseButton(): Promise<void> {\n const button = await this.#getExpandCollapseButton();\n\n if (button === null) {\n throw Error('Could not find button element.');\n }\n\n await button.click();\n }\n\n /**\n * Gets the harness to interact with the modal expanded view.\n */\n public async getExpandedViewModal(): Promise<SkyTextExpandModalHarness> {\n const modal = await this.#documentRootLocator.locatorForOptional(\n SkyTextExpandModalHarness,\n )();\n\n if (modal === null) {\n throw Error('Could not find text expand modal.');\n }\n\n return modal;\n }\n\n /**\n * Gets the text content of the text expand.\n */\n public async getText(): Promise<string> {\n return await (await this.#getText()).text();\n }\n\n /**\n * Whether the text will expand to a modal.\n */\n public async textExpandsToModal(): Promise<boolean> {\n return (\n (await (\n await this.#getExpandCollapseButton()\n )?.getAttribute('aria-haspopup')) !== null\n );\n }\n\n /**\n * Whether the text is expanded.\n */\n public async isExpanded(): Promise<boolean> {\n if (await this.textExpandsToModal()) {\n try {\n await this.getExpandedViewModal();\n return true;\n } catch {\n return false;\n }\n }\n\n return (\n (await (\n await this.#getExpandCollapseButton()\n )?.getAttribute('aria-expanded')) === 'true'\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|