import { __awaiter } from 'tslib'; import { ContentContainerComponentHarness, HarnessPredicate, ComponentHarness } from '@angular/cdk/testing'; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** Harness for interacting with a standard mat-expansion-panel in tests. */ class MatExpansionPanelHarness extends ContentContainerComponentHarness { constructor() { super(...arguments); this._header = this.locatorFor(".mat-expansion-panel-header" /* HEADER */); this._title = this.locatorForOptional(".mat-expansion-panel-header-title" /* TITLE */); this._description = this.locatorForOptional(".mat-expansion-panel-header-description" /* DESCRIPTION */); this._expansionIndicator = this.locatorForOptional('.mat-expansion-indicator'); this._content = this.locatorFor(".mat-expansion-panel-content" /* CONTENT */); } /** * Gets a `HarnessPredicate` that can be used to search for an expansion-panel * with specific attributes. * @param options Options for narrowing the search: * - `title` finds an expansion-panel with a specific title text. * - `description` finds an expansion-panel with a specific description text. * - `expanded` finds an expansion-panel that is currently expanded. * - `disabled` finds an expansion-panel that is disabled. * @return a `HarnessPredicate` configured with the given options. */ static with(options = {}) { return new HarnessPredicate(MatExpansionPanelHarness, options) .addOption('title', options.title, (harness, title) => HarnessPredicate.stringMatches(harness.getTitle(), title)) .addOption('description', options.description, (harness, description) => HarnessPredicate.stringMatches(harness.getDescription(), description)) .addOption('content', options.content, (harness, content) => HarnessPredicate.stringMatches(harness.getTextContent(), content)) .addOption('expanded', options.expanded, (harness, expanded) => __awaiter(this, void 0, void 0, function* () { return (yield harness.isExpanded()) === expanded; })) .addOption('disabled', options.disabled, (harness, disabled) => __awaiter(this, void 0, void 0, function* () { return (yield harness.isDisabled()) === disabled; })); } /** Whether the panel is expanded. */ isExpanded() { return __awaiter(this, void 0, void 0, function* () { return (yield this.host()).hasClass('mat-expanded'); }); } /** * Gets the title text of the panel. * @returns Title text or `null` if no title is set up. */ getTitle() { return __awaiter(this, void 0, void 0, function* () { const titleEl = yield this._title(); return titleEl ? titleEl.text() : null; }); } /** * Gets the description text of the panel. * @returns Description text or `null` if no description is set up. */ getDescription() { return __awaiter(this, void 0, void 0, function* () { const descriptionEl = yield this._description(); return descriptionEl ? descriptionEl.text() : null; }); } /** Whether the panel is disabled. */ isDisabled() { return __awaiter(this, void 0, void 0, function* () { return (yield (yield this._header()).getAttribute('aria-disabled')) === 'true'; }); } /** * Toggles the expanded state of the panel by clicking on the panel * header. This method will not work if the panel is disabled. */ toggle() { return __awaiter(this, void 0, void 0, function* () { yield (yield this._header()).click(); }); } /** Expands the expansion panel if collapsed. */ expand() { return __awaiter(this, void 0, void 0, function* () { if (!(yield this.isExpanded())) { yield this.toggle(); } }); } /** Collapses the expansion panel if expanded. */ collapse() { return __awaiter(this, void 0, void 0, function* () { if (yield this.isExpanded()) { yield this.toggle(); } }); } /** Gets the text content of the panel. */ getTextContent() { return __awaiter(this, void 0, void 0, function* () { return (yield this._content()).text(); }); } /** * Gets a `HarnessLoader` that can be used to load harnesses for * components within the panel's content area. * @deprecated Use either `getChildLoader(MatExpansionPanelSection.CONTENT)`, `getHarness` or * `getAllHarnesses` instead. * @breaking-change 12.0.0 */ getHarnessLoaderForContent() { return __awaiter(this, void 0, void 0, function* () { return this.getChildLoader(".mat-expansion-panel-content" /* CONTENT */); }); } /** Focuses the panel. */ focus() { return __awaiter(this, void 0, void 0, function* () { return (yield this._header()).focus(); }); } /** Blurs the panel. */ blur() { return __awaiter(this, void 0, void 0, function* () { return (yield this._header()).blur(); }); } /** Whether the panel is focused. */ isFocused() { return __awaiter(this, void 0, void 0, function* () { return (yield this._header()).isFocused(); }); } /** Whether the panel has a toggle indicator displayed. */ hasToggleIndicator() { return __awaiter(this, void 0, void 0, function* () { return (yield this._expansionIndicator()) !== null; }); } /** Gets the position of the toggle indicator. */ getToggleIndicatorPosition() { return __awaiter(this, void 0, void 0, function* () { // By default the expansion indicator will show "after" the panel header content. if (yield (yield this._header()).hasClass('mat-expansion-toggle-indicator-before')) { return 'before'; } return 'after'; }); } } MatExpansionPanelHarness.hostSelector = '.mat-expansion-panel'; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** Harness for interacting with a standard mat-accordion in tests. */ class MatAccordionHarness extends ComponentHarness { /** * Gets a `HarnessPredicate` that can be used to search for an accordion * with specific attributes. * @param options Options for narrowing the search. * @return a `HarnessPredicate` configured with the given options. */ static with(options = {}) { return new HarnessPredicate(MatAccordionHarness, options); } /** Gets all expansion panels which are part of the accordion. */ getExpansionPanels(filter = {}) { return __awaiter(this, void 0, void 0, function* () { return this.locatorForAll(MatExpansionPanelHarness.with(filter))(); }); } /** Whether the accordion allows multiple expanded panels simultaneously. */ isMulti() { return __awaiter(this, void 0, void 0, function* () { return (yield this.host()).hasClass('mat-accordion-multi'); }); } } MatAccordionHarness.hostSelector = '.mat-accordion'; /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ export { MatAccordionHarness, MatExpansionPanelHarness }; //# sourceMappingURL=testing.js.map