{"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/expansion/testing/expansion-harness.ts","../../../../../../../src/material/expansion/testing/accordion-harness.ts","../../../../../../../src/material/expansion/testing/public-api.ts","../../../../../../../src/material/expansion/testing/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  ContentContainerComponentHarness,\n  HarnessLoader,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Selectors for the various `mat-expansion-panel` sections that may contain user content. */\nexport const enum MatExpansionPanelSection {\n  HEADER = '.mat-expansion-panel-header',\n  TITLE = '.mat-expansion-panel-header-title',\n  DESCRIPTION = '.mat-expansion-panel-header-description',\n  CONTENT = '.mat-expansion-panel-content',\n}\n\n/** Harness for interacting with a standard mat-expansion-panel in tests. */\nexport class MatExpansionPanelHarness extends ContentContainerComponentHarness<MatExpansionPanelSection> {\n  static hostSelector = '.mat-expansion-panel';\n\n  private _header = this.locatorFor(MatExpansionPanelSection.HEADER);\n  private _title = this.locatorForOptional(MatExpansionPanelSection.TITLE);\n  private _description = this.locatorForOptional(MatExpansionPanelSection.DESCRIPTION);\n  private _expansionIndicator = this.locatorForOptional('.mat-expansion-indicator');\n  private _content = this.locatorFor(MatExpansionPanelSection.CONTENT);\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for an expansion-panel\n   * with specific attributes.\n   * @param options Options for narrowing the search:\n   *   - `title` finds an expansion-panel with a specific title text.\n   *   - `description` finds an expansion-panel with a specific description text.\n   *   - `expanded` finds an expansion-panel that is currently expanded.\n   *   - `disabled` finds an expansion-panel that is disabled.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(\n    options: ExpansionPanelHarnessFilters = {},\n  ): HarnessPredicate<MatExpansionPanelHarness> {\n    return new HarnessPredicate(MatExpansionPanelHarness, options)\n      .addOption('title', options.title, (harness, title) =>\n        HarnessPredicate.stringMatches(harness.getTitle(), title),\n      )\n      .addOption('description', options.description, (harness, description) =>\n        HarnessPredicate.stringMatches(harness.getDescription(), description),\n      )\n      .addOption('content', options.content, (harness, content) =>\n        HarnessPredicate.stringMatches(harness.getTextContent(), content),\n      )\n      .addOption(\n        'expanded',\n        options.expanded,\n        async (harness, expanded) => (await harness.isExpanded()) === expanded,\n      )\n      .addOption(\n        'disabled',\n        options.disabled,\n        async (harness, disabled) => (await harness.isDisabled()) === disabled,\n      );\n  }\n\n  /** Whether the panel is expanded. */\n  async isExpanded(): Promise<boolean> {\n    return (await this.host()).hasClass('mat-expanded');\n  }\n\n  /**\n   * Gets the title text of the panel.\n   * @returns Title text or `null` if no title is set up.\n   */\n  async getTitle(): Promise<string | null> {\n    const titleEl = await this._title();\n    return titleEl ? titleEl.text() : null;\n  }\n\n  /**\n   * Gets the description text of the panel.\n   * @returns Description text or `null` if no description is set up.\n   */\n  async getDescription(): Promise<string | null> {\n    const descriptionEl = await this._description();\n    return descriptionEl ? descriptionEl.text() : null;\n  }\n\n  /** Whether the panel is disabled. */\n  async isDisabled(): Promise<boolean> {\n    return (await (await this._header()).getAttribute('aria-disabled')) === 'true';\n  }\n\n  /**\n   * Toggles the expanded state of the panel by clicking on the panel\n   * header. This method will not work if the panel is disabled.\n   */\n  async toggle(): Promise<void> {\n    await (await this._header()).click();\n  }\n\n  /** Expands the expansion panel if collapsed. */\n  async expand(): Promise<void> {\n    if (!(await this.isExpanded())) {\n      await this.toggle();\n    }\n  }\n\n  /** Collapses the expansion panel if expanded. */\n  async collapse(): Promise<void> {\n    if (await this.isExpanded()) {\n      await this.toggle();\n    }\n  }\n\n  /** Gets the text content of the panel. */\n  async getTextContent(): Promise<string> {\n    return (await this._content()).text();\n  }\n\n  /**\n   * Gets a `HarnessLoader` that can be used to load harnesses for\n   * components within the panel's content area.\n   * @deprecated Use either `getChildLoader(MatExpansionPanelSection.CONTENT)`, `getHarness` or\n   *    `getAllHarnesses` instead.\n   * @breaking-change 12.0.0\n   */\n  async getHarnessLoaderForContent(): Promise<HarnessLoader> {\n    return this.getChildLoader(MatExpansionPanelSection.CONTENT);\n  }\n\n  /** Focuses the panel. */\n  async focus(): Promise<void> {\n    return (await this._header()).focus();\n  }\n\n  /** Blurs the panel. */\n  async blur(): Promise<void> {\n    return (await this._header()).blur();\n  }\n\n  /** Whether the panel is focused. */\n  async isFocused(): Promise<boolean> {\n    return (await this._header()).isFocused();\n  }\n\n  /** Whether the panel has a toggle indicator displayed. */\n  async hasToggleIndicator(): Promise<boolean> {\n    return (await this._expansionIndicator()) !== null;\n  }\n\n  /** Gets the position of the toggle indicator. */\n  async getToggleIndicatorPosition(): Promise<'before' | 'after'> {\n    // By default the expansion indicator will show \"after\" the panel header content.\n    if (await (await this._header()).hasClass('mat-expansion-toggle-indicator-before')) {\n      return 'before';\n    }\n    return 'after';\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatExpansionPanelHarness} from './expansion-harness';\nimport {AccordionHarnessFilters, ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Harness for interacting with a standard mat-accordion in tests. */\nexport class MatAccordionHarness extends ComponentHarness {\n  static hostSelector = '.mat-accordion';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for an accordion\n   * with specific attributes.\n   * @param options Options for narrowing the search.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: AccordionHarnessFilters = {}): HarnessPredicate<MatAccordionHarness> {\n    return new HarnessPredicate(MatAccordionHarness, options);\n  }\n\n  /** Gets all expansion panels which are part of the accordion. */\n  async getExpansionPanels(\n    filter: ExpansionPanelHarnessFilters = {},\n  ): Promise<MatExpansionPanelHarness[]> {\n    return this.locatorForAll(MatExpansionPanelHarness.with(filter))();\n  }\n\n  /** Whether the accordion allows multiple expanded panels simultaneously. */\n  async isMulti(): Promise<boolean> {\n    return (await this.host()).hasClass('mat-accordion-multi');\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './accordion-harness';\nexport * from './expansion-harness';\nexport * from './expansion-harness-filters';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}