@skyux/layout
Version:
This library was generated with [Nx](https://nx.dev).
1 lines • 59 kB
Source Map (JSON)
{"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/back-to-top/back-to-top-harness.ts","../../../../../libs/components/layout/testing/src/modules/box/box-harness.ts","../../../../../libs/components/layout/testing/src/modules/description-list/description-list-description-harness.ts","../../../../../libs/components/layout/testing/src/modules/description-list/description-list-term-harness.ts","../../../../../libs/components/layout/testing/src/modules/description-list/description-list-content-harness.ts","../../../../../libs/components/layout/testing/src/modules/description-list/description-list-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/modules/text-expand-repeater/text-expand-repeater-item-harness.ts","../../../../../libs/components/layout/testing/src/modules/text-expand-repeater/text-expand-repeater-harness.ts","../../../../../libs/components/layout/testing/src/modules/toolbar/toolbar-item-harness.ts","../../../../../libs/components/layout/testing/src/modules/toolbar/toolbar-view-actions-harness.ts","../../../../../libs/components/layout/testing/src/modules/toolbar/toolbar-section-harness.ts","../../../../../libs/components/layout/testing/src/modules/toolbar/toolbar-harness.ts","../../../../../libs/components/layout/testing/src/modules/action-button/action-button-harness.ts","../../../../../libs/components/layout/testing/src/modules/action-button/action-button-container-harness.ts","../../../../../libs/components/layout/testing/src/modules/inline-delete/inline-delete-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 * @deprecated Use `SkyActionButtonHarness` instead.\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 svgElement = this.#debugEl.query(By.css('sky-icon svg'));\n\n if (svgElement) {\n return svgElement.nativeElement.getAttribute('data-sky-icon');\n }\n\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 * @deprecated\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 * @deprecated\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 { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a back to top component in tests.\n */\nexport class SkyBackToTopHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-back-to-top';\n\n #getBackToTop = this.locatorFor('.sky-back-to-top button');\n\n /**\n * Clicks the back to top button.\n */\n public async clickBackToTop(): Promise<void> {\n return await (await this.#getBackToTop()).click();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\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\n/**\n * Harness for interacting with a box component in tests.\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.locatorForOptional(\n '.sky-box-header-content h2, .sky-box-header-content h3, .sky-box-header-content h4, .sky-box-header-content h5',\n );\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\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<string | undefined> {\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 = await this.#getHeading();\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 = await this.#getHeading();\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 { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a description list description component in tests.\n * @internal\n */\nexport class SkyDescriptionListDescriptionHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'dd';\n\n public async getText(): Promise<string> {\n const description = (\n await (\n await this.locatorFor('.sky-description-list-description')()\n ).text()\n ).trim();\n\n if (description === '') {\n return await (\n await this.locatorFor('.sky-description-list-default-value')()\n ).text();\n }\n return description;\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a description list term component in tests.\n * @internal\n */\nexport class SkyDescriptionListTermHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'dt';\n\n public async getText(): Promise<string> {\n return await (await this.locatorFor('span.description-list-term')()).text();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyDescriptionListDescriptionHarness } from './description-list-description-harness';\nimport { SkyDescriptionListTermHarness } from './description-list-term-harness';\n\n/**\n * Harness for interacting with a description list content component in tests.\n */\nexport class SkyDescriptionListContentHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'div.sky-description-list-content';\n\n #getDescription = this.locatorForOptional(\n SkyDescriptionListDescriptionHarness,\n );\n #getTerm = this.locatorForOptional(SkyDescriptionListTermHarness);\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getHelpInline()).click();\n }\n\n /**\n * Gets the description component text.\n */\n public async getDescriptionText(): Promise<string> {\n const description = await this.#getDescription();\n\n if (description === null) {\n throw Error('No description list description found.');\n }\n\n return await description.getText();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\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 term component text.\n */\n public async getTermText(): Promise<string> {\n const term = await this.#getTerm();\n\n if (term === null) {\n throw Error('No description list term found.');\n }\n\n return await term.getText();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(SkyHelpInlineHarness)();\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';\nimport { SkyDescriptionListModeType } from '@skyux/layout';\n\nimport { SkyDescriptionListContentHarness } from './description-list-content-harness';\nimport { SkyDescriptionListHarnessFilters } from './description-list-harness-filters';\n\n/**\n * Harness for interacting with a description list component in tests.\n */\nexport class SkyDescriptionListHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-description-list';\n\n #getListEl = this.locatorFor('.sky-description-list');\n #getContentEls = this.locatorForAll(SkyDescriptionListContentHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDescriptionListHarness` that meets certain criteria\n */\n public static with(\n filters: SkyDescriptionListHarnessFilters,\n ): HarnessPredicate<SkyDescriptionListHarness> {\n return SkyDescriptionListHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the description list content items.\n */\n public async getContent(): Promise<SkyDescriptionListContentHarness[]> {\n const items = await this.#getContentEls();\n\n if (items.length === 0) {\n throw new Error('Unable to find any description list content.');\n }\n\n return items;\n }\n\n /**\n * Gets the mode of the description list.\n */\n public async getMode(): Promise<SkyDescriptionListModeType> {\n const listEl = await this.#getListEl();\n\n const longDescription = await listEl.hasClass(\n 'sky-description-list-long-description-mode',\n );\n const horizontal = await listEl.hasClass(\n 'sky-description-list-horizontal-mode',\n );\n\n if (longDescription) {\n return 'longDescription';\n } else if (horizontal) {\n return 'horizontal';\n } else {\n return 'vertical';\n }\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","import { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness for interacting with a text expand repeater items in tests.\n */\nexport class SkyTextExpandRepeaterItemHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'li.sky-text-expand-repeater-item';\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyTextExpandRepeaterListStyleType } from '@skyux/layout';\n\nimport { SkyTextExpandRepeaterHarnessFilters } from './text-expand-repeater-harness-filters';\nimport { SkyTextExpandRepeaterItemHarness } from './text-expand-repeater-item-harness';\n\n/**\n * Harness for interacting with a text expand repeater component in tests.\n */\nexport class SkyTextExpandRepeaterHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-text-expand-repeater';\n\n #getExpandCollapseButton = this.locatorForOptional(\n '.sky-text-expand-repeater-see-more',\n );\n #getOL = this.locatorForOptional('ol.sky-text-expand-repeater-container');\n #getUL = this.locatorForOptional('ul.sky-text-expand-repeater-container');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTextExpandRepeaterHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyTextExpandRepeaterHarnessFilters,\n ): HarnessPredicate<SkyTextExpandRepeaterHarness> {\n return SkyTextExpandRepeaterHarness.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(\n 'Could not find button element. The repeater does not contain enough elements to be expandable.',\n );\n }\n\n await button.click();\n }\n\n /**\n * Gets an array of container harnesses for the repeater items.\n */\n public async getItems(): Promise<SkyTextExpandRepeaterItemHarness[]> {\n return await this.locatorForAll(SkyTextExpandRepeaterItemHarness)();\n }\n\n /**\n * Gets the list style.\n */\n public async getListStyle(): Promise<SkyTextExpandRepeaterListStyleType> {\n let list = await this.#getOL();\n if (list) {\n return 'ordered';\n } else {\n list = await this.#getUL();\n return (await list?.hasClass('sky-text-expand-repeater-list-style-none'))\n ? 'unstyled'\n : 'unordered';\n }\n }\n\n /**\n * Whether the text is expanded.\n */\n public async isExpanded(): Promise<boolean> {\n return (\n (await (\n await this.#getExpandCollapseButton()\n )?.getAttribute('aria-expanded')) === 'true'\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyToolbarItemHarnessFilters } from './toolbar-item-harness-filters';\n\n/**\n * Harness to interact with a toolbar item component in tests.\n */\nexport class SkyToolbarItemHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toolbar-item';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyToolbarItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyToolbarItemHarnessFilters,\n ): HarnessPredicate<SkyToolbarItemHarness> {\n return SkyToolbarItemHarness.getDataSkyIdPredicate(filters);\n }\n}\n","import { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with a toolbar view actions component in tests.\n */\nexport class SkyToolbarViewActionsHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toolbar-view-actions';\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyToolbarItemHarness } from './toolbar-item-harness';\nimport { SkyToolbarItemHarnessFilters } from './toolbar-item-harness-filters';\nimport { SkyToolbarSectionHarnessFilters } from './toolbar-section-harness-filters';\nimport { SkyToolbarViewActionsHarness } from './toolbar-view-actions-harness';\n\n/**\n * Harness to interact with a toolbar section component in tests.\n */\nexport class SkyToolbarSectionHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toolbar-section';\n\n #getViewActions = this.locatorForOptional(SkyToolbarViewActionsHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyToolbarSectionHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyToolbarSectionHarnessFilters,\n ): HarnessPredicate<SkyToolbarSectionHarness> {\n return SkyToolbarSectionHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a specific toolbar item based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getItem(\n filter: SkyToolbarItemHarnessFilters,\n ): Promise<SkyToolbarItemHarness> {\n return await this.locatorFor(SkyToolbarItemHarness.with(filter))();\n }\n\n /**\n * Gets an array of toolbar items based on the filter criteria.\n * If no filter is provided, returns all toolbar items.\n * @param filters The optional filter criteria.\n */\n public async getItems(\n filters?: SkyToolbarItemHarnessFilters,\n ): Promise<SkyToolbarItemHarness[]> {\n return await this.locatorForAll(\n SkyToolbarItemHarness.with(filters || {}),\n )();\n }\n\n /**\n * Gets the harness to interact with the toolbar's view actions.\n */\n public async getViewActions(): Promise<SkyToolbarViewActionsHarness> {\n const actions = await this.#getViewActions();\n\n if (actions === null) {\n throw Error('Unable to find toolbar section view actions.');\n }\n\n return actions;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyToolbarHarnessFilters } from './toolbar-harness-filters';\nimport { SkyToolbarItemHarness } from './toolbar-item-harness';\nimport { SkyToolbarItemHarnessFilters } from './toolbar-item-harness-filters';\nimport { SkyToolbarSectionHarness } from './toolbar-section-harness';\nimport { SkyToolbarSectionHarnessFilters } from './toolbar-section-harness-filters';\nimport { SkyToolbarViewActionsHarness } from './toolbar-view-actions-harness';\n\n/**\n * Harness for interacting with a toolbar component in tests.\n */\nexport class SkyToolbarHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toolbar';\n\n #getViewActions = this.locatorForOptional(SkyToolbarViewActionsHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyToolbarHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyToolbarHarnessFilters,\n ): HarnessPredicate<SkyToolbarHarness> {\n return SkyToolbarHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a specific toolbar item based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getItem(\n filter: SkyToolbarItemHarnessFilters,\n ): Promise<SkyToolbarItemHarness> {\n return await this.locatorFor(SkyToolbarItemHarness.with(filter))();\n }\n\n /**\n * Gets an array of toolbar items based on the filter criteria.\n * If no filter is provided, returns all toolbar items.\n * @param filters The optional filter criteria.\n */\n public async getItems(\n filters?: SkyToolbarItemHarnessFilters,\n ): Promise<SkyToolbarItemHarness[]> {\n return await this.locatorForAll(\n SkyToolbarItemHarness.with(filters || {}),\n )();\n }\n\n /**\n * Gets a specific toolbar section based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSection(\n filter: SkyToolbarSectionHarnessFilters,\n ): Promise<SkyToolbarSectionHarness> {\n return await this.locatorFor(SkyToolbarSectionHarness.with(filter))();\n }\n\n /**\n * Gets an array of toolbar sections based on the filter criteria.\n * If no filter is provided, returns all toolbar sections.\n * @param filters The optional filter criteria.\n */\n public async getSections(\n filters?: SkyToolbarSectionHarnessFilters,\n ): Promise<SkyToolbarSectionHarness[]> {\n return await this.locatorForAll(\n SkyToolbarSectionHarness.with(filters || {}),\n )();\n }\n\n /**\n * Gets the harness to interact with the toolbar's view actions.\n */\n public async getViewActions(): Promise<SkyToolbarViewActionsHarness> {\n const actions = await this.#getViewActions();\n\n if (actions === null) {\n throw Error('Unable to find toolbar view actions.');\n }\n\n return actions;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyIconHarness } from '@skyux/icon/testing';\n\nimport { SkyActionButtonHarnessFilters } from './action-button-harness.filters';\n\n/**\n * Harness for interacting with a action button component in tests.\n */\nexport class SkyActionButtonHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-action-button';\n\n #actionButton = this.locatorFor('.sky-action-button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyActionButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyActionButtonHarnessFilters,\n ): HarnessPredicate<SkyActionButtonHarness> {\n return SkyActionButtonHarness.getDataSkyIdPredicate(filters).addOption(\n 'header',\n filters.header,\n async (harness, header) => {\n const harnessHeaderText = await harness.getHeaderText();\n return await HarnessPredicate.stringMatches(harnessHeaderText, header);\n },\n );\n }\n\n /**\n * Clicks the action button.\n */\n public async click(): Promise<void> {\n return await (await this.#actionButton()).click();\n }\n\n /**\n * Gets the action button details text.\n */\n public async getDetailsText(): Promise<string | null> {\n const details = await this.locatorFor('sky-action-button-details')();\n return (await details.text()).trim();\n }\n\n /**\n * Gets the action button header text.\n */\n public async getHeaderText(): Promise<string | null> {\n const header = await this.locatorFor('.sky-action-button-header')();\n return (await header.text()).trim();\n }\n\n /**\n * Gets the action button icon type.\n */\n public async getIconType(): Promise<string | undefined> {\n const icon = await this.locatorFor(SkyIconHarness)();\n return await icon.getIconName();\n }\n\n /**\n * Gets the action button link.\n */\n public async getLink(): Promise<string | undefined> {\n return (await (await this.#actionButton()).getProperty('href')).trim();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyActionButtonContainerAlignItemsType } from '@skyux/layout';\n\nimport { SkyActionButtonContainerHarnessFilters } from './action-button-container-harness.filters';\nimport { SkyActionButtonHarness } from './action-button-harness';\nimport { SkyActionButtonHarnessFilters } from './action-button-harness.filters';\n\n/**\n * Harness for interacting with a action button container component in tests.\n */\nexport class SkyActionButtonContainerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-action-button-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyActionButtonContainerHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyActionButtonContainerHarnessFilters,\n ): HarnessPredicate<SkyActionButtonContainerHarness> {\n return SkyActionButtonContainerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a specific action button based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getActionButton(\n filter: SkyActionButtonHarnessFilters,\n ): Promise<SkyActionButtonHarness> {\n return await this.locatorFor(SkyActionButtonHarness.with(filter))();\n }\n\n /**\n * Gets an array of action buttons based on the filter criteria.\n * If no filter is provided, returns all action buttons.\n * @param filters The optional filter criteria.\n */\n public async getActionButtons(\n filters?: SkyActionButtonHarnessFilters,\n ): Promise<SkyActionButtonHarness[]> {\n return await this.locatorForAll(\n SkyActionButtonHarness.with(filters || {}),\n )();\n }\n\n /**\n * Gets the alignment of the buttons inside the container.\n */\n public async getAlignment(): Promise<SkyActionButtonContainerAlignItemsType> {\n return (await (\n await this.locatorFor('.sky-action-button-flex')()\n ).hasClass('sky-action-button-flex-align-left'))\n ? 'left'\n : 'center';\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyWaitHarness } from '@skyux/indicators/testing';\n\nimport { SkyInlineDeleteHarnessFilters } from './inline-delete-harness.filters';\n\n/**\n * Harness for interacting with an inline delete component in tests.\n */\nexport class SkyInlineDeleteHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-inline-delete';\n\n #getDeleteButton = this.locatorFor('button.sky-inline-delete-button');\n #getCancelButton = this.locatorFor('button.sky-btn-default');\n #waitHarness = this.locatorFor(SkyWaitHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInlineDeleteHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyInlineDeleteHarnessFilters,\n ): HarnessPredicate<SkyInlineDeleteHarness> {\n return SkyInlineDeleteHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the delete button.\n */\n public async clickDeleteButton(): Promise<void> {\n return await (await this.#getDeleteButton()).click();\n }\n\n /**\n * Clicks the cancel button.\n */\n public async clickCancelButton(): Promise<void> {\n return await (await this.#getCancelButton()).click();\n }\n\n /**\n * Whether the inline delete is pending.\n */\n public async isPending(): Promise<boolean> {\n return await (await this.#waitHarness()).isWaiting();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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