@skyux/forms 14.0.0 → 14.1.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-forms-testing.mjs","sources":["../../../../../libs/components/forms/testing/src/modules/character-counter/character-counter-indicator-harness.ts","../../../../../libs/components/forms/testing/src/modules/form-error/form-error-harness.ts","../../../../../libs/components/forms/testing/src/modules/form-error/form-errors-harness.ts","../../../../../libs/components/forms/testing/src/modules/input-box/input-box-harness.ts","../../../../../libs/components/forms/testing/src/legacy/checkbox-fixture.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-label-text-label.harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-group-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-attachment/file-attachment-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-link-upload-input-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-link-upload-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/shared/provide-file-attachment-testing.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-item-harness.ts","../../../../../libs/components/forms/testing/src/modules/field-group/field-group-harness.ts","../../../../../libs/components/forms/testing/src/legacy/radio-fixture.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-harness.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-group-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-description-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-header-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-grid-harness.ts","../../../../../libs/components/forms/testing/src/modules/toggle-switch/toggle-switch-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/toggle-switch/toggle-switch-harness.ts","../../../../../libs/components/forms/testing/src/skyux-forms-testing.ts"],"sourcesContent":["import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyCharacterCounterIndicatorHarnessFilters } from './character-counter-indicator-harness-filters';\n\ntype LabelParts = {\n count: number;\n limit: number;\n};\n\n/**\n * Harness for interacting with a character counter indicator component in tests.\n */\nexport class SkyCharacterCounterIndicatorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-character-counter-indicator';\n\n #getLabel = this.locatorFor('.sky-character-count-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCharacterCounterIndicatorHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCharacterCounterIndicatorHarnessFilters,\n ): HarnessPredicate<SkyCharacterCounterIndicatorHarness> {\n return SkyCharacterCounterIndicatorHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the current character count.\n */\n public async getCharacterCount(): Promise<number> {\n return (await this.#getLabelParts()).count;\n }\n\n /**\n * Gets the character counter limit.\n */\n public async getCharacterCountLimit(): Promise<number> {\n return (await this.#getLabelParts()).limit;\n }\n\n /**\n * Indicates whether the character counter is in an error state because the current character\n * count is greater than the limit.\n */\n public async isOverLimit(): Promise<boolean> {\n return await (await this.#getLabel()).hasClass('sky-error-label');\n }\n\n async #getLabelParts(): Promise<LabelParts> {\n const label = await this.#getLabel();\n const textParts = (await label.text()).split('/');\n\n let labelParts: LabelParts | undefined;\n\n if (textParts.length === 2) {\n labelParts = {\n count: +textParts[0].trim(),\n limit: +textParts[1].trim(),\n };\n }\n\n if (labelParts && !isNaN(labelParts.count) && !isNaN(labelParts.limit)) {\n return labelParts;\n }\n\n throw new Error(\n 'The character counter indicator does not contain text in the expected format.',\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\n\nimport { SkyFormErrorHarnessFilters } from './form-error-harness.filters';\n\nexport class SkyFormErrorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-error';\n\n async #getStatusIndicator(): Promise<SkyStatusIndicatorHarness> {\n return await this.locatorFor(SkyStatusIndicatorHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorHarnessFilters,\n ): HarnessPredicate<SkyFormErrorHarness> {\n return SkyFormErrorHarness.getDataSkyIdPredicate(filters).addOption(\n 'errorName',\n filters.errorName,\n async (harness, errorName) => {\n const harnessErrorName = await harness.getErrorName();\n return await HarnessPredicate.stringMatches(\n harnessErrorName,\n errorName,\n );\n },\n );\n }\n\n /**\n * Gets the error name.\n */\n public async getErrorName(): Promise<string | null> {\n return await (await this.host()).getAttribute('data-error-name');\n }\n\n /**\n * Gets the error text.\n */\n public async getErrorText(): Promise<string | null> {\n return await (await this.#getStatusIndicator()).getText();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFormErrorHarness } from './form-error-harness';\nimport { SkyFormErrorsHarnessFilters } from './form-errors-harness.filters';\n\nexport class SkyFormErrorsHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-errors';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorsHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorsHarnessFilters,\n ): HarnessPredicate<SkyFormErrorsHarness> {\n return SkyFormErrorsHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a list of all errors fired.\n */\n public async getFormErrors(): Promise<{ errorName: string | null }[]> {\n const formErrorHarnesses = await this.locatorForAll(\n SkyFormErrorHarness.with({}),\n )();\n\n return await Promise.all(\n formErrorHarnesses.map(async (formError) => {\n return { errorName: await formError.getErrorName() };\n }),\n );\n }\n\n /**\n * Whether an error with the given name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n const formErrors = await this.getFormErrors();\n return formErrors.some((error) => {\n return error.errorName === errorName;\n });\n }\n}\n","import { HarnessPredicate, TestElement } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\nimport { SkyPopoverHarness } from '@skyux/popovers/testing';\n\nimport { SkyCharacterCounterIndicatorHarness } from '../character-counter/character-counter-indicator-harness';\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyInputBoxHarnessFilters } from './input-box-harness-filters';\n\n/**\n * Harness for interacting with an input box component in tests.\n */\nexport class SkyInputBoxHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-input-box';\n\n #getHintText = this.locatorForOptional('.sky-input-box-hint-text');\n #getLabel = this.locatorForOptional('.sky-control-label');\n #getWrapper = this.locatorFor('.sky-input-box');\n\n async #getFormError(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInputBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyInputBoxHarnessFilters,\n ): HarnessPredicate<SkyInputBoxHarness> {\n return SkyInputBoxHarness.getDataSkyIdPredicate(filters);\n }\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 character counter indicator for the input box or throws an error if\n * a character limit is not specified.\n */\n public async getCharacterCounter(): Promise<SkyCharacterCounterIndicatorHarness> {\n const characterCounter = await this.locatorForOptional(\n new HarnessPredicate(SkyCharacterCounterIndicatorHarness, {\n ancestor: '.sky-input-box-label-wrapper',\n }),\n )();\n\n if (!characterCounter) {\n throw new Error(\n 'The input box does not have a character limit specified.',\n );\n }\n\n return characterCounter;\n }\n\n /**\n * Gets a list of status indicator harnesses for errors not automatically\n * handled by input box.\n */\n public async getCustomErrors(): Promise<SkyStatusIndicatorHarness[]> {\n const errors = await this.locatorForAll(\n new HarnessPredicate(SkyStatusIndicatorHarness, {\n selector:\n 'sky-status-indicator:not(sky-form-error sky-status-indicator)',\n }),\n )();\n\n return errors;\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomFormError(\n errorName: string,\n ): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Whether the custom form error is triggered.\n */\n public async hasCustomFormError(errorName: string): Promise<boolean> {\n return await (await this.#getFormError()).hasError(errorName);\n }\n\n /**\n * Whether the required field is empty.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('required');\n }\n\n /**\n * Whether the field has more characters than allowed.\n */\n public async hasMaxLengthError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('maxlength');\n }\n\n /**\n * Whether the field has fewer characters than allowed.\n */\n public async hasMinLengthError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('minlength');\n }\n\n /**\n * Whether the field is set to an invalid email address.\n */\n public async hasEmailError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('email');\n }\n\n /**\n * Whether the field is set to an invalid URL.\n */\n public async hasUrlError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('url');\n }\n\n /**\n * Whether the field is set to an invalid date.\n */\n public async hasInvalidDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('invalidDate');\n }\n\n /**\n * Whether the field is set to an invalid minimum date.\n */\n public async hasMinDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('minDate');\n }\n\n /**\n * Whether the field is set to an invalid maximum date.\n */\n public async hasMaxDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('maxDate');\n }\n\n /**\n * Whether the field is set to an invalid phone number.\n */\n public async hasPhoneFieldError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('phone');\n }\n\n /**\n * Whether the field is set to an invalid time.\n */\n public async hasTimeError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('time');\n }\n\n /**\n * Indicates whether the input box has disabled styles applied.\n */\n public async getDisabled(): Promise<boolean> {\n const wrapper = await this.#getWrapper();\n\n return await wrapper.hasClass('sky-input-box-disabled');\n }\n\n /**\n * Gets the text for the input box label.\n */\n public async getLabelText(): Promise<string> {\n const label = await this.#getLabel();\n\n return await this.#getElementTextOrDefault(label);\n }\n\n /**\n * Gets the help popover for the input box or throws an error if\n * the help popover is not configured.\n */\n public async getHelpPopover(): Promise<SkyPopoverHarness> {\n const helpPopover = await this.locatorForOptional(\n new HarnessPredicate(SkyPopoverHarness, {\n ancestor: '.sky-control-help',\n }),\n )();\n\n if (!helpPopover) {\n throw new Error('The input box does not have a help popover configured.');\n }\n\n return helpPopover;\n }\n\n /**2\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 hint text for the input box.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return await this.#getElementTextOrDefault(hintText);\n }\n\n /**\n * Indicates whether the input box has stacked styles applied.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return await host.hasClass('sky-form-field-stacked');\n }\n\n async #getElementTextOrDefault(el: TestElement | null): Promise<string> {\n return (await el?.text())?.trim() ?? '';\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 { 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 checkbox component.\n * @internal\n * @deprecated Use `SkyCheckboxHarness` instead.\n */\nexport class SkyCheckboxFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-checkbox',\n );\n }\n\n /**\n * A flag indicating whether the checkbox is currently selected.\n */\n public get selected(): boolean {\n return this.#getCheckboxInputEl().nativeElement.checked;\n }\n\n /**\n * The checkbox's label\n */\n public get labelText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('label.sky-checkbox-wrapper')),\n );\n }\n\n /**\n * The checkbox's 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 /**\n * The checkbox's type.\n */\n public get checkboxType(): string | undefined {\n const classList = this.#getCheckboxBoxEl().nativeElement.classList;\n\n if (classList.contains('sky-switch-control-danger')) {\n return 'danger';\n }\n\n if (classList.contains('sky-switch-control-info')) {\n return 'info';\n }\n\n if (classList.contains('sky-switch-control-success')) {\n return 'success';\n }\n\n if (classList.contains('sky-switch-control-warning')) {\n return 'warning';\n }\n\n return undefined;\n }\n\n /**\n * A flag indicating whether the checkbox is currently disabled.\n */\n public get disabled(): boolean {\n return this.#getCheckboxInputEl().nativeElement.disabled;\n }\n\n /**\n * Selects the checkbox.\n */\n public select(): void {\n if (!this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n /**\n * Deselects the checkbox.\n */\n public deselect(): void {\n if (this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n #clickCheckboxLabelEl(): void {\n this.#debugEl\n .query(By.css('label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n\n #getCheckboxInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-checkbox-wrapper input'));\n }\n\n #getCheckboxBoxEl(): DebugElement {\n return this.#debugEl.query(By.css('label.sky-checkbox-wrapper span'));\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the checkbox label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a `labelText` checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelTextLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label-text-label';\n\n #getLabelContent = this.locatorForOptional('.sky-switch-label');\n\n /**\n * Gets the text content of the `labelText` checkbox label.\n */\n public async getText(): Promise<string | undefined> {\n return await (await this.#getLabelContent())?.text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\nimport { SkyCheckboxLabelHarness } from './checkbox-label-harness';\nimport { SkyCheckboxLabelTextLabelHarness } from './checkbox-label-text-label.harness';\n\n/**\n * Harness for interacting with a checkbox component in tests.\n */\nexport class SkyCheckboxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox';\n\n #getHintText = this.locatorForOptional('.sky-checkbox-hint-text');\n\n #getInput = this.locatorFor('input.sky-checkbox-input');\n\n #getLabel = this.locatorForOptional(SkyCheckboxLabelHarness);\n\n #getLabelTextLabel = this.locatorForOptional(\n SkyCheckboxLabelTextLabelHarness,\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxHarnessFilters,\n ): HarnessPredicate<SkyCheckboxHarness> {\n return SkyCheckboxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the checkbox.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\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 * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing nothing if it is already checked.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the checkbox.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the checkbox's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the checkbox's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\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 checkbox's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (labelTextLabel) {\n const text = await labelTextLabel.getText();\n const ariaLabel = await this.getAriaLabel();\n\n // if labelText is set, ariaLabel will never return null\n return text || ariaLabel!;\n } else {\n return await label?.getText();\n }\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelHidden` is only supported when setting the checkbox label via the `labelText` input.',\n );\n } else {\n return !(await labelTextLabel?.getText());\n }\n }\n\n /**\n * Gets the checkbox's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets the checkbox's name.\n */\n public async getName(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Gets the checkbox's value.\n */\n public async getValue(): Promise<string | null> {\n return await (await this.#getInput()).getProperty<string | null>('value');\n }\n\n /**\n * Whether the checkbox displays custom error.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the checkbox displays an error that it is required.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the checkbox is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the checkbox is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\n }\n\n /**\n * Whether the checkbox is required.\n */\n public async isRequired(): Promise<boolean> {\n const value = await (await this.#getInput()).getAttribute('required');\n return value !== null;\n }\n\n /**\n * Whether the checkbox is stacked.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing nothing if it is already unchecked.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\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 async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('Could not toggle the checkbox because it is disabled.');\n } else {\n await (await this.#getInput()).click();\n }\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyCheckboxGroupHeadingLevel,\n SkyCheckboxGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxGroupHarnessFilters } from './checkbox-group-harness-filters';\nimport { SkyCheckboxHarness } from './checkbox-harness';\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\n\n/**\n * Harness for interacting with a checkbox group component in tests.\n */\nexport class SkyCheckboxGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-group';\n\n #getHeading = this.locatorFor('.sky-checkbox-group-heading');\n #getHeadingWrapper = this.locatorFor('.sky-checkbox-group-legend');\n #getHintText = this.locatorForOptional('.sky-checkbox-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-checkbox-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorFor(\n 'legend h3,h4,h5,.sky-checkbox-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxGroupHarnessFilters,\n ): HarnessPredicate<SkyCheckboxGroupHarness> {\n return SkyCheckboxGroupHarness.getDataSkyIdPredicate(filters);\n }\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 a specific checkbox based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getCheckbox(\n filter: SkyCheckboxHarnessFilters,\n ): Promise<SkyCheckboxHarness> {\n return await this.locatorFor(SkyCheckboxHarness.with(filter))();\n }\n\n /**\n * Gets an array of checkboxes based on the filter criteria.\n * If no filter is provided, returns all checkboxes.\n * @param filter The optional filter criteria.\n */\n public async getCheckboxes(\n filters?: SkyCheckboxHarnessFilters,\n ): Promise<SkyCheckboxHarness[]> {\n return await this.locatorForAll(SkyCheckboxHarness.with(filters || {}))();\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 checkbox group'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.#getLegendHeading()).text();\n }\n\n /**\n * Gets the checkbox group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await (\n await this.#getHeadingWrapper()\n ).hasClass('sky-screen-reader-only');\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<\n SkyCheckboxGroupHeadingLevel | undefined\n > {\n const heading = await this.#getLegendHeading();\n const h3 = await heading.matchesSelector('h3');\n const h4 = await heading.matchesSelector('h4');\n const h5 = await heading.matchesSelector('h5');\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the checkbox group.\n */\n public async getHeadingStyle(): Promise<SkyCheckboxGroupHeadingStyle> {\n const heading = await this.#getLegendHeading();\n\n const isHeadingStyle3 = await heading.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Whether the checkbox group is required.\n */\n public async getRequired(): Promise<boolean> {\n const heading = await this.#getHeading();\n\n return await heading.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the checkbox group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading)\n );\n }\n\n /**\n * Whether all the checkboxes in a required group are unchecked.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox group has errors.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(\n SkyFormErrorsHarness.with({\n dataSkyId: 'checkbox-group-form-errors',\n }),\n )();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-checkbox-group > .sky-checkbox-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { EventData, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\n\nimport { SkyFileAttachmentHarnessFilters } from './file-attachment-harness-filters';\n\ntype TestDataTransfer = DataTransfer & { [key: string]: EventData };\n\n/**\n * Harness for interacting with a file attachment component in tests.\n */\nexport class SkyFileAttachmentHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-attachment';\n\n #getButton = this.locatorFor('button.sky-file-attachment-btn');\n #getLabel = this.locatorFor('.sky-control-label');\n #input = this.locatorFor('input[type=\"file\"]');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileAttachmentHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileAttachmentHarnessFilters,\n ): HarnessPredicate<SkyFileAttachmentHarness> {\n return SkyFileAttachmentHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the attach file button if it is visible.\n */\n public async clickAttachFileButton(): Promise<void> {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() === 'Replace file') {\n throw new Error();\n }\n return await button.click();\n } catch {\n throw new Error(\n 'Cannot click Attach file button, there is currently a file attached.',\n );\n }\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 * Clicks the replace file button in default theme.\n */\n public async clickReplaceFileButton(): Promise<void> {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() !== 'Replace file') {\n throw new Error();\n }\n return await button.click();\n } catch {\n throw new Error('Cannot click Replace file button, it is not visible.');\n }\n }\n\n /**\n * Clicks the attached file to download it.\n */\n public async clickAttachedFile(): Promise<void> {\n try {\n const file = await this.locatorFor('a')();\n return await file.click();\n } catch {\n throw new Error('Unable to find the attached file.');\n }\n }\n\n /**\n * Clicks the attached file's delete button.\n */\n public async clickAttachedFileDeleteButton(): Promise<void> {\n try {\n const deleteButton = await this.locatorFor(\n 'button.sky-file-attachment-delete',\n )();\n return await deleteButton.click();\n } catch {\n throw new Error(\n \"Unable to find attached file's delete button. Check if a file is attached.\",\n );\n }\n }\n\n /**\n * Gets the accepted file types.\n */\n public async getAcceptedTypes(): Promise<string | null> {\n return await (await this.#input()).getAttribute('accept');\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Gets the help inline popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-file-attachment-hint-text')()).text()\n ).trim();\n }\n\n /**\n * Gets the file attachment label.\n */\n public async getLabelText(): Promise<string> {\n return (await (await this.#getLabel()).text()).trim();\n }\n\n /**\n * Whether a custom error has fired.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError(errorName);\n }\n\n /**\n * Whether the wrong file type error has fired.\n */\n public async hasFileTypeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('fileType');\n }\n\n /**\n * Whether the max file size error has fired.\n */\n public async hasMaxFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('maxFileSize');\n }\n\n /**\n * Whether the min file size error has fired.\n */\n public async hasMinFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('minFileSize');\n }\n\n /**\n * Whether the required error has fired.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('required');\n }\n\n /**\n * Whether file attachment is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return (await (await this.#getButton()).getAttribute('disabled')) !== null;\n }\n\n /**\n * Whether file attachment is required.\n */\n public async isRequired(): Promise<boolean> {\n return await (\n await this.#getLabel()\n ).hasClass('sky-control-label-required');\n }\n\n /**\n * Whether file attachment has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Attaches a file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ```\n */\n public async attachFile(file: File): Promise<void> {\n return await this.#dropFile(file);\n }\n\n async #dropFile(file: File): Promise<void> {\n const attachLocation = await this.locatorFor(\n '.sky-file-attachment-upload',\n )();\n\n const dataTransfer = new DataTransfer() as TestDataTransfer;\n dataTransfer.items.add(file);\n\n return await attachLocation.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\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 { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the file drop link upload input harness.\n */\nexport class SkyFileDropLinkUploadInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = 'input.sky-form-control';\n\n /**\n * Gets the input aria-label\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.host()).getAttribute('aria-label');\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyInputBoxHarness } from '../../input-box/input-box-harness';\n\nimport { SkyFileDropLinkUploadInputHarness } from './file-drop-link-upload-input-harness';\n\n/**\n * Harness for interacting with file drop component's link upload feature in tests.\n * @internal\n */\nexport class SkyFileDropLinkUploadHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-file-drop-link';\n\n #input = this.locatorFor(SkyFileDropLinkUploadInputHarness);\n #inputBoxHarness = this.locatorFor(SkyInputBoxHarness);\n #button = this.locatorFor('button.sky-btn-primary');\n\n /**\n * Clicks the `Done` button\n */\n public async clickDoneButton(): Promise<void> {\n if (await this.#isDoneDisabled()) {\n throw new Error(\n 'Done button is disabled and cannot be clicked. Enter text to enable link upload.',\n );\n }\n return await (await this.#button()).click();\n }\n\n /**\n * Enters text into the link upload input.\n */\n public async enterText(link: string): Promise<void> {\n return await (await this.#input()).setValue(link);\n }\n\n /**\n * Gets the link upload aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#input()).getAriaLabel();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string | undefined> {\n return await (await this.#inputBoxHarness()).getHintText();\n }\n\n async #isDoneDisabled(): Promise<boolean> {\n return (await (await this.#button()).getAttribute('disabled')) !== null;\n }\n}\n","import { EventData, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\n\nimport { SkyFileDropHarnessFilters } from './file-drop-harness-filters';\nimport { SkyFileDropLinkUploadHarness } from './file-drop-link-upload-harness';\n\n/**\n * Harness for interacting with a file drop component in tests.\n */\nexport class SkyFileDropHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-drop';\n\n #getDropTarget = this.locatorFor('.sky-file-drop-target');\n #input = this.locatorFor('input[type=\"file\"]');\n #fileUploadButton = this.locatorFor('button.sky-file-drop-target');\n #label = this.locatorFor('.sky-file-drop-label-text');\n #formErrors = this.locatorForAll(SkyFormErrorsHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileDropHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileDropHarnessFilters,\n ): HarnessPredicate<SkyFileDropHarness> {\n return SkyFileDropHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the file drop target.\n */\n public async clickFileDropTarget(): Promise<void> {\n return await (await this.#fileUploadButton()).click();\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 * Clicks the link upload `Done` button'.\n */\n public async clickLinkUploadDoneButton(): Promise<void> {\n return await (await this.#getLinkUpload()).clickDoneButton();\n }\n\n /**\n * Enters text into the link upload input.\n */\n public async enterLinkUploadText(link: string): Promise<void> {\n return await (await this.#getLinkUpload()).enterText(link);\n }\n\n /**\n * Gets the accepted file types.\n */\n public async getAcceptedTypes(): Promise<string | null> {\n return await (await this.#input()).getAttribute('accept');\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Gets the aria-label for the file upload button.\n */\n public async getFileUploadAriaLabel(): Promise<string | null> {\n return await (await this.#fileUploadButton()).getAttribute('aria-label');\n }\n\n /**\n * Gets the help inline popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-file-drop-hint-text')()).text()\n ).trim();\n }\n\n /**\n * Gets the label text.\n */\n public async getLabelText(): Promise<string> {\n return (await (await this.#label()).text()).trim();\n }\n\n /**\n * Gets the link upload aria-label.\n */\n public async getLinkUploadAriaLabel(): Promise<string | null> {\n return await (await this.#getLinkUpload()).getAriaLabel();\n }\n\n /**\n * Gets the link upload hint text.\n */\n public async getLinkUploadHintText(): Promise<string | undefined> {\n return await (await this.#getLinkUpload()).getHintText();\n }\n\n /**\n * Whether a custom form error has fired.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the file type error has fired.\n */\n public async hasFileTypeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('fileType');\n }\n\n /**\n * Whether the max file size error has fired.\n */\n public async hasMaxFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('maxFileSize');\n }\n\n /**\n * Whether the min file size error has fired.\n */\n public async hasMinFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('minFileSize');\n }\n\n /**\n * Whether the required error has fired.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the validate error from the customer validation has fired.\n */\n public async hasValidateFnError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('validate');\n }\n\n /**\n * Whether label text is hidden.\n */\n public async isLabelHidden(): Promise<boolean> {\n return await (\n await this.locatorFor('legend.sky-control-label')()\n ).hasClass('sky-screen-reader-only');\n }\n\n /**\n * Whether file drop is required.\n */\n public async isRequired(): Promise<boolean> {\n return await (await this.#label()).hasClass('sky-control-label-required');\n }\n\n /**\n * Whether file drop has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Loads a single file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n public async loadFile(file: File): Promise<void> {\n await this.#dropFiles([file]);\n }\n\n /**\n * Loads multiple files.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n public async loadFiles(files: File[] | null): Promise<void> {\n return await this.#dropFiles(files);\n }\n\n async #dropFiles(files: File[] | null): Promise<void> {\n const dropTarget = await this.#getDropTarget();\n\n type TestDataTransfer = DataTransfer & { [key: string]: EventData };\n\n const dataTransfer = new DataTransfer() as TestDataTransfer;\n\n files?.forEach((file) => {\n dataTransfer.items.add(file);\n });\n\n await dropTarget.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return (await this.#formErrors())[1];\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 async #getLinkUpload(): Promise<SkyFileDropLinkUploadHarness> {\n const linkUpload = await this.locatorForOptional(\n SkyFileDropLinkUploadHarness,\n )();\n\n if (linkUpload) {\n return linkUpload;\n }\n\n throw new Error(\n 'Link upload cannot be found. Set `allowLinks` property to `true`.',\n );\n }\n}\n","import { Provider } from '@angular/core';\nimport { provideSkyFileReaderTesting } from '@skyux/core/testing';\n\n/**\n * Provides mocks for file attachment testing.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileAttachmentTesting()]\n * });\n * ```\n */\nexport function provideSkyFileAttachmentTesting(): Provider[] {\n return [provideSkyFileReaderTesting()];\n}\n","import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyFileItemHarnessFilters } from './file-item-harness-filters';\n\n/**\n * Harness for interacting with a file item component in tests.\n */\nexport class SkyFileItemHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-item';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileItemHarnessFilters,\n ): HarnessPredicate<SkyFileItemHarness> {\n return new HarnessPredicate(SkyFileItemHarness, filters).addOption(\n 'fileName',\n filters.fileName,\n async (harness, fileName) => {\n const harnessFileName = await harness.getFileName();\n return await HarnessPredicate.stringMatches(harnessFileName, fileName);\n },\n );\n }\n\n /**\n * Clicks the delete button.\n */\n public async clickDeleteButton(): Promise<void> {\n return await (await this.locatorFor('.sky-file-item-btn-delete')()).click();\n }\n\n /**\n * Gets the file name.\n */\n public async getFileName(): Promise<string> {\n return await (await this.locatorFor('.sky-file-item-name')()).text();\n }\n\n /**\n * Gets the file size.\n */\n public async getFileSize(): Promise<string> {\n const size = await (await this.locatorFor('.sky-file-item-size')()).text();\n return size.substring(1, size.length - 1);\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyFieldGroupHeadingLevel,\n SkyFieldGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFieldGroupHarnessFilters } from './field-group-harness-filters';\n\n/**\n * Harness for interacting with a field group component in tests.\n */\nexport class SkyFieldGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-field-group';\n\n #getLegend = this.locatorFor('legend');\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendHeading = this.locatorFor('legend h3,h4');\n #getHintText = this.locatorForOptional('.sky-field-group-hint-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFieldGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFieldGroupHarnessFilters,\n ): HarnessPredicate<SkyFieldGroupHarness> {\n return SkyFieldGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the field group'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.#getLegendHeading()).text();\n }\n\n /**\n * Gets the field group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await (await this.#getLegend()).hasClass('sky-screen-reader-only');\n }\n\n /**\n * Whether the field group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return await host.hasClass('sky-field-group-stacked');\n }\n\n /**\n * The semantic heading level used for the field group.\n */\n public async getHeadingLevel(): Promise<SkyFieldGroupHeadingLevel> {\n const h3 = await this.#getLegendH3();\n\n return h3 ? 3 : 4;\n }\n\n /**\n * The heading style used for the field group.\n */\n public async getHeadingStyle(): Promise<SkyFieldGroupHeadingStyle> {\n const heading = (await this.#getLegendH3()) || (await this.#getLegendH4());\n\n return (await heading?.hasClass('sky-font-heading-3')) ? 3 : 4;\n }\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 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 async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-field-group > .sky-field-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\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 radio buttons within a radio group.\n * @deprecated Use `SkyRadioHarness` instead.\n * @internal\n */\nexport class SkyRadioFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-radio-group',\n );\n }\n\n /**\n * The selected radio button value.\n */\n public get value(): string {\n const selectedRadio = this.#debugEl.query(\n By.css('sky-radio input:checked'),\n );\n const selectedValue = selectedRadio && selectedRadio.nativeElement.value;\n\n return selectedValue;\n }\n\n /**\n * Set the selected radio button value.\n */\n public set value(value: string) {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n allRadioInputs.forEach((input, index) => {\n if (input.nativeElement.value === value) {\n input.nativeElement.checked = true;\n } else {\n input.nativeElement.checked = false;\n }\n });\n }\n\n /**\n * A flag indicating if every radio button in the radio group is disabled.\n */\n public get disabled(): boolean {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n for (let i = 0; i < allRadioButtons.length; i++) {\n if (!this.#radioButtonDisabled(i)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Set the disabled value for all radio buttons.\n */\n public set disabled(value: boolean) {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n allRadioButtons.forEach((button, index) => {\n this.#setRadioButtonDisabled(index, value);\n });\n }\n\n #getAllSkyRadioButtonEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio'));\n }\n\n #getAllRadioInputEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio input'));\n }\n\n #getRadioButtonInputEl(index: number): DebugElement | undefined {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n if (allRadioInputs && allRadioInputs[index]) {\n return allRadioInputs[index];\n }\n /* istanbul ignore next */\n return;\n }\n\n #radioButtonDisabled(index: number): boolean {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n return radioButton && radioButton.nativeElement.disabled;\n }\n\n #setRadioButtonDisabled(index: number, value: boolean): void {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n /* istanbul ignore else */\n if (radioButton) {\n radioButton.nativeElement.disabled = value;\n\n this.#fixture.detectChanges();\n }\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a radio label component in tests.\n * @internal\n */\nexport class SkyRadioLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the radio label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\nimport { SkyRadioLabelHarness } from './radio-label-harness';\n\n/**\n * Harness for interacting with a radio button component in tests.\n */\nexport class SkyRadioHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio';\n\n #getHintText = this.locatorForOptional('.sky-radio-hint-text');\n\n #getInput = this.locatorFor('input.sky-radio-input');\n\n #getLabel = this.locatorForOptional(SkyRadioLabelHarness);\n\n #getLabelText = this.locatorForOptional(\n 'span.sky-switch-label.sky-radio-label-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioHarnessFilters,\n ): HarnessPredicate<SkyRadioHarness> {\n return SkyRadioHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the radio button.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\n\n /**\n * Puts the radio button in a checked state if it is currently unchecked.\n */\n public async check(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not check the radio button because it is disabled.',\n );\n } else if (!(await this.isChecked())) {\n await (await this.#getInput()).click();\n }\n }\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 * Focuses the radio button.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the radio button's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the radio button's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\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 radio button's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelHidden` is only supported when setting the radio label via the `labelText` input.',\n );\n } else {\n return !!(await labelText?.hasClass('sky-screen-reader-only'));\n }\n }\n\n /**\n * Gets the radio button's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await this.#getLabelText();\n\n if (labelText) {\n return await labelText.text();\n } else {\n return await (await this.#getLabel())?.getText();\n }\n }\n\n /**\n * Gets the radio button's name.\n */\n public async getName(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Whether the radio button is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the radio button is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the radio button is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\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 {\n SkyRadioGroupHeadingLevel,\n SkyRadioGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyRadioGroupHarnessFilters } from './radio-group-harness-filters';\nimport { SkyRadioHarness } from './radio-harness';\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\n\n/**\n * Harness for interacting with a radio group component in tests.\n */\nexport class SkyRadioGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-group';\n\n #getHeading = this.locatorFor('.sky-radio-group-legend span');\n #getHeadingWrapper = this.locatorForOptional('.sky-radio-group-legend');\n #getHintText = this.locatorForOptional('.sky-radio-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-radio-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorForOptional(\n 'legend h3,h4,h5,.sky-radio-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioGroupHarnessFilters,\n ): HarnessPredicate<SkyRadioGroupHarness> {\n return SkyRadioGroupHarness.getDataSkyIdPredicate(filters);\n }\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 custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await ((\n await this.#getHeadingWrapper()\n )?.hasClass('sky-screen-reader-only') ?? true);\n }\n\n /**\n * The semantic heading level used for the radio group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyRadioGroupHeadingLevel | undefined\n > {\n const h3 = await this.#getLegendH3();\n const h4 = await this.#getLegendH4();\n const h5 = await this.#getLegendH5();\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the radio group.\n */\n public async getHeadingStyle(): Promise<SkyRadioGroupHeadingStyle> {\n const headingOrLabel =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5()) ||\n (await this.#getLegendDefault());\n\n const isHeadingStyle3 =\n await headingOrLabel?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 =\n await headingOrLabel?.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Gets the radio group'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.#getLegendHeading())?.text() ?? '');\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 radio group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets a specific radio button based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getRadioButton(\n filter: SkyRadioHarnessFilters,\n ): Promise<SkyRadioHarness> {\n return await this.locatorFor(SkyRadioHarness.with(filter))();\n }\n\n /**\n * Gets an array of radio buttons based on the filter criteria.\n * If no filter is provided, returns all radio buttons.\n * @param filters The optional filter criteria.\n */\n public async getRadioButtons(\n filters?: SkyRadioHarnessFilters,\n ): Promise<SkyRadioHarness[]> {\n return await this.locatorForAll(SkyRadioHarness.with(filters || {}))();\n }\n\n /**\n * Whether the radio group is required.\n */\n public async getRequired(): Promise<boolean> {\n const headingWrapper = await this.#getHeading();\n\n return await headingWrapper.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the radio group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading)\n );\n }\n\n /**\n * Whether a form error with the specified name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-radio-group > .sky-radio-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with a selection box description component in tests.\n * @internal\n */\nexport class SkySelectionBoxDescriptionHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-description';\n\n /**\n * Gets the description text.\n */\n public async getText(): Promise<string> {\n return (await (await this.host()).text()).trim();\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with a selection box header component in tests.\n * @internal\n */\nexport class SkySelectionBoxHeaderHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-header';\n\n /**\n * Gets the header text.\n */\n public async getText(): Promise<string> {\n return (await (await this.host()).text()).trim();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyIconHarness } from '@skyux/icon/testing';\n\nimport { SkyCheckboxHarness } from '../checkbox/checkbox-harness';\nimport { SkyRadioHarness } from '../radio/radio-harness';\n\nimport { SkySelectionBoxDescriptionHarness } from './selection-box-description-harness';\nimport { SkySelectionBoxHarnessFilters } from './selection-box-harness-filters';\nimport { SkySelectionBoxHeaderHarness } from './selection-box-header-harness';\n\n/**\n * Harness to interact with a selection box component in tests.\n */\nexport class SkySelectionBoxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySelectionBoxHarnessFilters,\n ): HarnessPredicate<SkySelectionBoxHarness> {\n return SkySelectionBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the checkbox or radio harness for the selection box form control.\n */\n public async getControl(): Promise<SkyCheckboxHarness | SkyRadioHarness> {\n return await this.locatorFor(SkyCheckboxHarness, SkyRadioHarness)();\n }\n\n /**\n * Gets the selection box description text.\n */\n public async getDescriptionText(): Promise<string> {\n const text = await (\n await this.locatorForOptional(SkySelectionBoxDescriptionHarness)()\n )?.getText();\n return text ?? '';\n }\n\n /**\n * Gets the selection box header text.\n */\n public async getHeaderText(): Promise<string> {\n const text = await (\n await this.locatorForOptional(SkySelectionBoxHeaderHarness)()\n )?.getText();\n return text ?? '';\n }\n\n /**\n * Gets the selection box icon, if it exists.\n */\n public async getIcon(): Promise<SkyIconHarness | null> {\n return await this.locatorForOptional(SkyIconHarness)();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkySelectionBoxGridHarnessFilters } from './selection-box-grid-harness-filters';\nimport { SkySelectionBoxHarness } from './selection-box-harness';\nimport { SkySelectionBoxHarnessFilters } from './selection-box-harness-filters';\n\n/**\n * Harness for interacting with a selection box grid component in tests.\n */\nexport class SkySelectionBoxGridHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxGridHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySelectionBoxGridHarnessFilters,\n ): HarnessPredicate<SkySelectionBoxGridHarness> {\n return SkySelectionBoxGridHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a specific selection box based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSelectionBox(\n filter: SkySelectionBoxHarnessFilters,\n ): Promise<SkySelectionBoxHarness> {\n return await this.locatorFor(SkySelectionBoxHarness.with(filter))();\n }\n\n /**\n * Gets an array of selection boxes based on the filter criteria.\n * If no filter is provided, returns all selection boxes.\n * @param filters The optional filter criteria.\n */\n public async getSelectionBoxes(\n filters?: SkySelectionBoxHarnessFilters,\n ): Promise<SkySelectionBoxHarness[]> {\n return await this.locatorForAll(\n SkySelectionBoxHarness.with(filters || {}),\n )();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a toggle switch label component in tests.\n * @internal\n */\nexport class SkyToggleSwitchLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toggle-switch-label';\n\n #getLabelContent = this.locatorFor('span[skyTrim]');\n\n /**\n * Gets the text content of the toggle switch label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyToggleSwitchHarnessFilters } from './toggle-switch-harness-filters';\nimport { SkyToggleSwitchLabelHarness } from './toggle-switch-label-harness';\n\n/**\n * Harness for interacting with a toggle switch component in tests.\n */\nexport class SkyToggleSwitchHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toggle-switch';\n\n #getButton = this.locatorFor('button.sky-toggle-switch-button');\n #getLabel = this.locatorForOptional(SkyToggleSwitchLabelHarness);\n #getLabelText = this.locatorForOptional('span.sky-toggle-switch-label-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyToggleSwitchHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyToggleSwitchHarnessFilters,\n ): HarnessPredicate<SkyToggleSwitchHarness> {\n return SkyToggleSwitchHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the toggle switch.\n */\n public async blur(): Promise<void> {\n await (await this.#getButton()).blur();\n }\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 * Puts the toggle switch in a checked state.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the toggle switch.\n */\n public async focus(): Promise<void> {\n await (await this.#getButton()).focus();\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 * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const labelComponent = await this.#getLabel();\n\n if (labelComponent) {\n throw new Error(\n '`labelHidden` is only supported when setting the toggle switch label via the `labelText` input.',\n );\n } else {\n return !(await labelText?.text());\n }\n }\n\n /**\n * Gets the toggle switch's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await (await this.#getLabelText())?.text();\n const ariaLabel = await this.#getAriaLabel();\n\n return (\n labelText || ariaLabel || (await (await this.#getLabel())?.getText())\n );\n }\n\n /**\n * Whether the toggle switch is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (\n await this.#getButton()\n ).hasClass('sky-toggle-switch-checked');\n }\n\n /**\n * Whether the toggle switch is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getButton()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the toggle switch is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getButton()).isFocused();\n }\n\n /**\n * Puts the toggle switch in an unchecked state.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getAriaLabel(): Promise<string | null> {\n return await (await this.#getButton()).getAttribute('aria-label');\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 async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not toggle the toggle switch because it is disabled.',\n );\n } else {\n await (await this.#getButton()).click();\n }\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-forms-testing.mjs","sources":["../../../../../libs/components/forms/testing/src/modules/character-counter/character-counter-indicator-harness.ts","../../../../../libs/components/forms/testing/src/modules/form-error/form-error-harness.ts","../../../../../libs/components/forms/testing/src/modules/form-error/form-errors-harness.ts","../../../../../libs/components/forms/testing/src/modules/input-box/input-box-harness.ts","../../../../../libs/components/forms/testing/src/legacy/checkbox-fixture.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-label-text-label.harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-harness.ts","../../../../../libs/components/forms/testing/src/modules/checkbox/checkbox-group-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-attachment/file-attachment-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-link-upload-input-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-link-upload-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-drop-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/file-drop/file-item-harness.ts","../../../../../libs/components/forms/testing/src/modules/file-attachment/shared/provide-file-attachment-testing.ts","../../../../../libs/components/forms/testing/src/modules/field-group/field-group-harness.ts","../../../../../libs/components/forms/testing/src/legacy/radio-fixture.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-harness.ts","../../../../../libs/components/forms/testing/src/modules/radio/radio-group-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-description-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-header-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-harness.ts","../../../../../libs/components/forms/testing/src/modules/selection-box/selection-box-grid-harness.ts","../../../../../libs/components/forms/testing/src/modules/toggle-switch/toggle-switch-label-harness.ts","../../../../../libs/components/forms/testing/src/modules/toggle-switch/toggle-switch-harness.ts","../../../../../libs/components/forms/testing/src/skyux-forms-testing.ts"],"sourcesContent":["import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyCharacterCounterIndicatorHarnessFilters } from './character-counter-indicator-harness-filters';\n\ntype LabelParts = {\n count: number;\n limit: number;\n};\n\n/**\n * Harness for interacting with a character counter indicator component in tests.\n */\nexport class SkyCharacterCounterIndicatorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-character-counter-indicator';\n\n #getLabel = this.locatorFor('.sky-character-count-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCharacterCounterIndicatorHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCharacterCounterIndicatorHarnessFilters,\n ): HarnessPredicate<SkyCharacterCounterIndicatorHarness> {\n return SkyCharacterCounterIndicatorHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the current character count.\n */\n public async getCharacterCount(): Promise<number> {\n return (await this.#getLabelParts()).count;\n }\n\n /**\n * Gets the character counter limit.\n */\n public async getCharacterCountLimit(): Promise<number> {\n return (await this.#getLabelParts()).limit;\n }\n\n /**\n * Indicates whether the character counter is in an error state because the current character\n * count is greater than the limit.\n */\n public async isOverLimit(): Promise<boolean> {\n return await (await this.#getLabel()).hasClass('sky-error-label');\n }\n\n async #getLabelParts(): Promise<LabelParts> {\n const label = await this.#getLabel();\n const textParts = (await label.text()).split('/');\n\n let labelParts: LabelParts | undefined;\n\n if (textParts.length === 2) {\n labelParts = {\n count: +textParts[0].trim(),\n limit: +textParts[1].trim(),\n };\n }\n\n if (labelParts && !isNaN(labelParts.count) && !isNaN(labelParts.limit)) {\n return labelParts;\n }\n\n throw new Error(\n 'The character counter indicator does not contain text in the expected format.',\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\n\nimport { SkyFormErrorHarnessFilters } from './form-error-harness.filters';\n\nexport class SkyFormErrorHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-error';\n\n async #getStatusIndicator(): Promise<SkyStatusIndicatorHarness> {\n return await this.locatorFor(SkyStatusIndicatorHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorHarnessFilters,\n ): HarnessPredicate<SkyFormErrorHarness> {\n return SkyFormErrorHarness.getDataSkyIdPredicate(filters).addOption(\n 'errorName',\n filters.errorName,\n async (harness, errorName) => {\n const harnessErrorName = await harness.getErrorName();\n return await HarnessPredicate.stringMatches(\n harnessErrorName,\n errorName,\n );\n },\n );\n }\n\n /**\n * Gets the error name.\n */\n public async getErrorName(): Promise<string | null> {\n return await (await this.host()).getAttribute('data-error-name');\n }\n\n /**\n * Gets the error text.\n */\n public async getErrorText(): Promise<string | null> {\n return await (await this.#getStatusIndicator()).getText();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyFormErrorHarness } from './form-error-harness';\nimport { SkyFormErrorsHarnessFilters } from './form-errors-harness.filters';\n\nexport class SkyFormErrorsHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-form-errors';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFormErrorsHarness` that meets certain criteria\n */\n public static with(\n filters: SkyFormErrorsHarnessFilters,\n ): HarnessPredicate<SkyFormErrorsHarness> {\n return SkyFormErrorsHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a list of all errors fired.\n */\n public async getFormErrors(): Promise<{ errorName: string | null }[]> {\n const formErrorHarnesses = await this.locatorForAll(\n SkyFormErrorHarness.with({}),\n )();\n\n return await Promise.all(\n formErrorHarnesses.map(async (formError) => {\n return { errorName: await formError.getErrorName() };\n }),\n );\n }\n\n /**\n * Whether an error with the given name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n const formErrors = await this.getFormErrors();\n return formErrors.some((error) => {\n return error.errorName === errorName;\n });\n }\n}\n","import { HarnessPredicate, TestElement } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\nimport { SkyStatusIndicatorHarness } from '@skyux/indicators/testing';\nimport { SkyPopoverHarness } from '@skyux/popovers/testing';\n\nimport { SkyCharacterCounterIndicatorHarness } from '../character-counter/character-counter-indicator-harness';\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyInputBoxHarnessFilters } from './input-box-harness-filters';\n\n/**\n * Harness for interacting with an input box component in tests.\n */\nexport class SkyInputBoxHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-input-box';\n\n #getHintText = this.locatorForOptional('.sky-input-box-hint-text');\n #getLabel = this.locatorForOptional('.sky-control-label');\n #getWrapper = this.locatorFor('.sky-input-box');\n\n async #getFormError(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInputBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyInputBoxHarnessFilters,\n ): HarnessPredicate<SkyInputBoxHarness> {\n return SkyInputBoxHarness.getDataSkyIdPredicate(filters);\n }\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 character counter indicator for the input box or throws an error if\n * a character limit is not specified.\n */\n public async getCharacterCounter(): Promise<SkyCharacterCounterIndicatorHarness> {\n const characterCounter = await this.locatorForOptional(\n new HarnessPredicate(SkyCharacterCounterIndicatorHarness, {\n ancestor: '.sky-input-box-label-wrapper',\n }),\n )();\n\n if (!characterCounter) {\n throw new Error(\n 'The input box does not have a character limit specified.',\n );\n }\n\n return characterCounter;\n }\n\n /**\n * Gets a list of status indicator harnesses for errors not automatically\n * handled by input box.\n */\n public async getCustomErrors(): Promise<SkyStatusIndicatorHarness[]> {\n const errors = await this.locatorForAll(\n new HarnessPredicate(SkyStatusIndicatorHarness, {\n selector:\n 'sky-status-indicator:not(sky-form-error sky-status-indicator)',\n }),\n )();\n\n return errors;\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomFormError(\n errorName: string,\n ): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Whether the custom form error is triggered.\n */\n public async hasCustomFormError(errorName: string): Promise<boolean> {\n return await (await this.#getFormError()).hasError(errorName);\n }\n\n /**\n * Whether the required field is empty.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('required');\n }\n\n /**\n * Whether the field has more characters than allowed.\n */\n public async hasMaxLengthError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('maxlength');\n }\n\n /**\n * Whether the field has fewer characters than allowed.\n */\n public async hasMinLengthError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('minlength');\n }\n\n /**\n * Whether the field is set to an invalid email address.\n */\n public async hasEmailError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('email');\n }\n\n /**\n * Whether the field is set to an invalid URL.\n */\n public async hasUrlError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('url');\n }\n\n /**\n * Whether the field is set to an invalid date.\n */\n public async hasInvalidDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('invalidDate');\n }\n\n /**\n * Whether the field is set to an invalid minimum date.\n */\n public async hasMinDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('minDate');\n }\n\n /**\n * Whether the field is set to an invalid maximum date.\n */\n public async hasMaxDateError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('maxDate');\n }\n\n /**\n * Whether the field is set to an invalid phone number.\n */\n public async hasPhoneFieldError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('phone');\n }\n\n /**\n * Whether the field is set to an invalid time.\n */\n public async hasTimeError(): Promise<boolean> {\n return await (await this.#getFormError()).hasError('time');\n }\n\n /**\n * Indicates whether the input box has disabled styles applied.\n */\n public async getDisabled(): Promise<boolean> {\n const wrapper = await this.#getWrapper();\n\n return await wrapper.hasClass('sky-input-box-disabled');\n }\n\n /**\n * Gets the text for the input box label.\n */\n public async getLabelText(): Promise<string> {\n const label = await this.#getLabel();\n\n return await this.#getElementTextOrDefault(label);\n }\n\n /**\n * Gets the help popover for the input box or throws an error if\n * the help popover is not configured.\n */\n public async getHelpPopover(): Promise<SkyPopoverHarness> {\n const helpPopover = await this.locatorForOptional(\n new HarnessPredicate(SkyPopoverHarness, {\n ancestor: '.sky-control-help',\n }),\n )();\n\n if (!helpPopover) {\n throw new Error('The input box does not have a help popover configured.');\n }\n\n return helpPopover;\n }\n\n /**2\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 hint text for the input box.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return await this.#getElementTextOrDefault(hintText);\n }\n\n /**\n * Indicates whether the input box has stacked styles applied.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return await host.hasClass('sky-form-field-stacked');\n }\n\n async #getElementTextOrDefault(el: TestElement | null): Promise<string> {\n return (await el?.text())?.trim() ?? '';\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 { 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 checkbox component.\n * @internal\n * @deprecated Use `SkyCheckboxHarness` instead.\n */\nexport class SkyCheckboxFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-checkbox',\n );\n }\n\n /**\n * A flag indicating whether the checkbox is currently selected.\n */\n public get selected(): boolean {\n return this.#getCheckboxInputEl().nativeElement.checked;\n }\n\n /**\n * The checkbox's label\n */\n public get labelText(): string | undefined {\n return SkyAppTestUtility.getText(\n this.#debugEl.query(By.css('label.sky-checkbox-wrapper')),\n );\n }\n\n /**\n * The checkbox's 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 /**\n * The checkbox's type.\n */\n public get checkboxType(): string | undefined {\n const classList = this.#getCheckboxBoxEl().nativeElement.classList;\n\n if (classList.contains('sky-switch-control-danger')) {\n return 'danger';\n }\n\n if (classList.contains('sky-switch-control-info')) {\n return 'info';\n }\n\n if (classList.contains('sky-switch-control-success')) {\n return 'success';\n }\n\n if (classList.contains('sky-switch-control-warning')) {\n return 'warning';\n }\n\n return undefined;\n }\n\n /**\n * A flag indicating whether the checkbox is currently disabled.\n */\n public get disabled(): boolean {\n return this.#getCheckboxInputEl().nativeElement.disabled;\n }\n\n /**\n * Selects the checkbox.\n */\n public select(): void {\n if (!this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n /**\n * Deselects the checkbox.\n */\n public deselect(): void {\n if (this.selected) {\n this.#clickCheckboxLabelEl();\n }\n }\n\n #clickCheckboxLabelEl(): void {\n this.#debugEl\n .query(By.css('label.sky-checkbox-wrapper'))\n .nativeElement.click();\n }\n\n #getCheckboxInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-checkbox-wrapper input'));\n }\n\n #getCheckboxBoxEl(): DebugElement {\n return this.#debugEl.query(By.css('label.sky-checkbox-wrapper span'));\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the checkbox label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a `labelText` checkbox label component in tests.\n * @internal\n */\nexport class SkyCheckboxLabelTextLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-label-text-label';\n\n #getLabelContent = this.locatorForOptional('.sky-switch-label');\n\n /**\n * Gets the text content of the `labelText` checkbox label.\n */\n public async getText(): Promise<string | undefined> {\n return await (await this.#getLabelContent())?.text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\nimport { SkyCheckboxLabelHarness } from './checkbox-label-harness';\nimport { SkyCheckboxLabelTextLabelHarness } from './checkbox-label-text-label.harness';\n\n/**\n * Harness for interacting with a checkbox component in tests.\n */\nexport class SkyCheckboxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox';\n\n #getHintText = this.locatorForOptional('.sky-checkbox-hint-text');\n\n #getInput = this.locatorFor('input.sky-checkbox-input');\n\n #getLabel = this.locatorForOptional(SkyCheckboxLabelHarness);\n\n #getLabelTextLabel = this.locatorForOptional(\n SkyCheckboxLabelTextLabelHarness,\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxHarnessFilters,\n ): HarnessPredicate<SkyCheckboxHarness> {\n return SkyCheckboxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the checkbox.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\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 * Puts the checkbox in a checked state by toggling it if it is currently unchecked, or doing nothing if it is already checked.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the checkbox.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the checkbox's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the checkbox's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\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 checkbox's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (labelTextLabel) {\n const text = await labelTextLabel.getText();\n const ariaLabel = await this.getAriaLabel();\n\n // if labelText is set, ariaLabel will never return null\n return text || ariaLabel!;\n } else {\n return await label?.getText();\n }\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelTextLabel = await this.#getLabelTextLabel();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelHidden` is only supported when setting the checkbox label via the `labelText` input.',\n );\n } else {\n return !(await labelTextLabel?.getText());\n }\n }\n\n /**\n * Gets the checkbox's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets the checkbox's name.\n */\n public async getName(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Gets the checkbox's value.\n */\n public async getValue(): Promise<string | null> {\n return await (await this.#getInput()).getProperty<string | null>('value');\n }\n\n /**\n * Whether the checkbox displays custom error.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the checkbox displays an error that it is required.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the checkbox is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the checkbox is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\n }\n\n /**\n * Whether the checkbox is required.\n */\n public async isRequired(): Promise<boolean> {\n const value = await (await this.#getInput()).getAttribute('required');\n return value !== null;\n }\n\n /**\n * Whether the checkbox is stacked.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Puts the checkbox in an unchecked state by toggling it if it is currently checked, or doing nothing if it is already unchecked.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\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 async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('Could not toggle the checkbox because it is disabled.');\n } else {\n await (await this.#getInput()).click();\n }\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyCheckboxGroupHeadingLevel,\n SkyCheckboxGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyCheckboxGroupHarnessFilters } from './checkbox-group-harness-filters';\nimport { SkyCheckboxHarness } from './checkbox-harness';\nimport { SkyCheckboxHarnessFilters } from './checkbox-harness-filters';\n\n/**\n * Harness for interacting with a checkbox group component in tests.\n */\nexport class SkyCheckboxGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-checkbox-group';\n\n #getHeading = this.locatorFor('.sky-checkbox-group-heading');\n #getHeadingWrapper = this.locatorFor('.sky-checkbox-group-legend');\n #getHintText = this.locatorForOptional('.sky-checkbox-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-checkbox-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorFor(\n 'legend h3,h4,h5,.sky-checkbox-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyCheckboxGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyCheckboxGroupHarnessFilters,\n ): HarnessPredicate<SkyCheckboxGroupHarness> {\n return SkyCheckboxGroupHarness.getDataSkyIdPredicate(filters);\n }\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 a specific checkbox based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getCheckbox(\n filter: SkyCheckboxHarnessFilters,\n ): Promise<SkyCheckboxHarness> {\n return await this.locatorFor(SkyCheckboxHarness.with(filter))();\n }\n\n /**\n * Gets an array of checkboxes based on the filter criteria.\n * If no filter is provided, returns all checkboxes.\n * @param filter The optional filter criteria.\n */\n public async getCheckboxes(\n filters?: SkyCheckboxHarnessFilters,\n ): Promise<SkyCheckboxHarness[]> {\n return await this.locatorForAll(SkyCheckboxHarness.with(filters || {}))();\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 checkbox group'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.#getLegendHeading()).text();\n }\n\n /**\n * Gets the checkbox group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await (\n await this.#getHeadingWrapper()\n ).hasClass('sky-screen-reader-only');\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<\n SkyCheckboxGroupHeadingLevel | undefined\n > {\n const heading = await this.#getLegendHeading();\n const h3 = await heading.matchesSelector('h3');\n const h4 = await heading.matchesSelector('h4');\n const h5 = await heading.matchesSelector('h5');\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the checkbox group.\n */\n public async getHeadingStyle(): Promise<SkyCheckboxGroupHeadingStyle> {\n const heading = await this.#getLegendHeading();\n\n const isHeadingStyle3 = await heading.hasClass('sky-font-heading-3');\n const isHeadingStyle4 = await heading.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Whether the checkbox group is required.\n */\n public async getRequired(): Promise<boolean> {\n const heading = await this.#getHeading();\n\n return await heading.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the checkbox group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading)\n );\n }\n\n /**\n * Whether all the checkboxes in a required group are unchecked.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the checkbox group has errors.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(\n SkyFormErrorsHarness.with({\n dataSkyId: 'checkbox-group-form-errors',\n }),\n )();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-checkbox-group > .sky-checkbox-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { EventData, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\n\nimport { SkyFileAttachmentHarnessFilters } from './file-attachment-harness-filters';\n\ntype TestDataTransfer = DataTransfer & { [key: string]: EventData };\n\n/**\n * Harness for interacting with a file attachment component in tests.\n */\nexport class SkyFileAttachmentHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-attachment';\n\n #getButton = this.locatorFor('button.sky-file-attachment-btn');\n #getLabel = this.locatorFor('.sky-control-label');\n #input = this.locatorFor('input[type=\"file\"]');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileAttachmentHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileAttachmentHarnessFilters,\n ): HarnessPredicate<SkyFileAttachmentHarness> {\n return SkyFileAttachmentHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the attach file button if it is visible.\n */\n public async clickAttachFileButton(): Promise<void> {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() === 'Replace file') {\n throw new Error();\n }\n return await button.click();\n } catch {\n throw new Error(\n 'Cannot click Attach file button, there is currently a file attached.',\n );\n }\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 * Clicks the replace file button in default theme.\n */\n public async clickReplaceFileButton(): Promise<void> {\n try {\n const button = await this.#getButton();\n if ((await button.text()).trim() !== 'Replace file') {\n throw new Error();\n }\n return await button.click();\n } catch {\n throw new Error('Cannot click Replace file button, it is not visible.');\n }\n }\n\n /**\n * Clicks the attached file to download it.\n */\n public async clickAttachedFile(): Promise<void> {\n try {\n const file = await this.locatorFor('a')();\n return await file.click();\n } catch {\n throw new Error('Unable to find the attached file.');\n }\n }\n\n /**\n * Clicks the attached file's delete button.\n */\n public async clickAttachedFileDeleteButton(): Promise<void> {\n try {\n const deleteButton = await this.locatorFor(\n 'button.sky-file-attachment-delete',\n )();\n return await deleteButton.click();\n } catch {\n throw new Error(\n \"Unable to find attached file's delete button. Check if a file is attached.\",\n );\n }\n }\n\n /**\n * Gets the accepted file types.\n */\n public async getAcceptedTypes(): Promise<string | null> {\n return await (await this.#input()).getAttribute('accept');\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Gets the help inline popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-file-attachment-hint-text')()).text()\n ).trim();\n }\n\n /**\n * Gets the file attachment label.\n */\n public async getLabelText(): Promise<string> {\n return (await (await this.#getLabel()).text()).trim();\n }\n\n /**\n * Whether a custom error has fired.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError(errorName);\n }\n\n /**\n * Whether the wrong file type error has fired.\n */\n public async hasFileTypeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('fileType');\n }\n\n /**\n * Whether the max file size error has fired.\n */\n public async hasMaxFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('maxFileSize');\n }\n\n /**\n * Whether the min file size error has fired.\n */\n public async hasMinFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('minFileSize');\n }\n\n /**\n * Whether the required error has fired.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors())?.hasError('required');\n }\n\n /**\n * Whether file attachment is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return (await (await this.#getButton()).getAttribute('disabled')) !== null;\n }\n\n /**\n * Whether file attachment is required.\n */\n public async isRequired(): Promise<boolean> {\n return await (\n await this.#getLabel()\n ).hasClass('sky-control-label-required');\n }\n\n /**\n * Whether file attachment has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Attaches a file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ```\n */\n public async attachFile(file: File): Promise<void> {\n return await this.#dropFile(file);\n }\n\n async #dropFile(file: File): Promise<void> {\n const attachLocation = await this.locatorFor(\n '.sky-file-attachment-upload',\n )();\n\n const dataTransfer = new DataTransfer() as TestDataTransfer;\n dataTransfer.items.add(file);\n\n return await attachLocation.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\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 { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the file drop link upload input harness.\n */\nexport class SkyFileDropLinkUploadInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = 'input.sky-form-control';\n\n /**\n * Gets the input aria-label\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.host()).getAttribute('aria-label');\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyInputBoxHarness } from '../../input-box/input-box-harness';\n\nimport { SkyFileDropLinkUploadInputHarness } from './file-drop-link-upload-input-harness';\n\n/**\n * Harness for interacting with file drop component's link upload feature in tests.\n * @internal\n */\nexport class SkyFileDropLinkUploadHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-file-drop-link';\n\n #input = this.locatorFor(SkyFileDropLinkUploadInputHarness);\n #inputBoxHarness = this.locatorFor(SkyInputBoxHarness);\n #button = this.locatorFor('button.sky-btn-primary');\n\n /**\n * Clicks the `Done` button\n */\n public async clickDoneButton(): Promise<void> {\n if (await this.#isDoneDisabled()) {\n throw new Error(\n 'Done button is disabled and cannot be clicked. Enter text to enable link upload.',\n );\n }\n return await (await this.#button()).click();\n }\n\n /**\n * Enters text into the link upload input.\n */\n public async enterText(link: string): Promise<void> {\n return await (await this.#input()).setValue(link);\n }\n\n /**\n * Gets the link upload aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#input()).getAriaLabel();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string | undefined> {\n return await (await this.#inputBoxHarness()).getHintText();\n }\n\n async #isDoneDisabled(): Promise<boolean> {\n return (await (await this.#button()).getAttribute('disabled')) !== null;\n }\n}\n","import { EventData, HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../../form-error/form-errors-harness';\n\nimport { SkyFileDropHarnessFilters } from './file-drop-harness-filters';\nimport { SkyFileDropLinkUploadHarness } from './file-drop-link-upload-harness';\n\n/**\n * Harness for interacting with a file drop component in tests.\n */\nexport class SkyFileDropHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-drop';\n\n #getDropTarget = this.locatorFor('.sky-file-drop-target');\n #input = this.locatorFor('input[type=\"file\"]');\n #fileUploadButton = this.locatorFor('button.sky-file-drop-target');\n #label = this.locatorFor('.sky-file-drop-label-text');\n #formErrors = this.locatorForAll(SkyFormErrorsHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileDropHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileDropHarnessFilters,\n ): HarnessPredicate<SkyFileDropHarness> {\n return SkyFileDropHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the file drop target.\n */\n public async clickFileDropTarget(): Promise<void> {\n return await (await this.#fileUploadButton()).click();\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 * Clicks the link upload `Done` button'.\n */\n public async clickLinkUploadDoneButton(): Promise<void> {\n return await (await this.#getLinkUpload()).clickDoneButton();\n }\n\n /**\n * Enters text into the link upload input.\n */\n public async enterLinkUploadText(link: string): Promise<void> {\n return await (await this.#getLinkUpload()).enterText(link);\n }\n\n /**\n * Gets the accepted file types.\n */\n public async getAcceptedTypes(): Promise<string | null> {\n return await (await this.#input()).getAttribute('accept');\n }\n\n /**\n * Gets the custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Gets the aria-label for the file upload button.\n */\n public async getFileUploadAriaLabel(): Promise<string | null> {\n return await (await this.#fileUploadButton()).getAttribute('aria-label');\n }\n\n /**\n * Gets the help inline popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverContent();\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (await this.#getHelpInline()).getPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-file-drop-hint-text')()).text()\n ).trim();\n }\n\n /**\n * Gets the label text.\n */\n public async getLabelText(): Promise<string> {\n return (await (await this.#label()).text()).trim();\n }\n\n /**\n * Gets the link upload aria-label.\n */\n public async getLinkUploadAriaLabel(): Promise<string | null> {\n return await (await this.#getLinkUpload()).getAriaLabel();\n }\n\n /**\n * Gets the link upload hint text.\n */\n public async getLinkUploadHintText(): Promise<string | undefined> {\n return await (await this.#getLinkUpload()).getHintText();\n }\n\n /**\n * Whether a custom form error has fired.\n */\n public async hasCustomError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n /**\n * Whether the file type error has fired.\n */\n public async hasFileTypeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('fileType');\n }\n\n /**\n * Whether the max file size error has fired.\n */\n public async hasMaxFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('maxFileSize');\n }\n\n /**\n * Whether the min file size error has fired.\n */\n public async hasMinFileSizeError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('minFileSize');\n }\n\n /**\n * Whether the required error has fired.\n */\n public async hasRequiredError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('required');\n }\n\n /**\n * Whether the validate error from the customer validation has fired.\n */\n public async hasValidateFnError(): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError('validate');\n }\n\n /**\n * Whether label text is hidden.\n */\n public async isLabelHidden(): Promise<boolean> {\n return await (\n await this.locatorFor('legend.sky-control-label')()\n ).hasClass('sky-screen-reader-only');\n }\n\n /**\n * Whether file drop is required.\n */\n public async isRequired(): Promise<boolean> {\n return await (await this.#label()).hasClass('sky-control-label-required');\n }\n\n /**\n * Whether file drop has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Loads a single file.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n public async loadFile(file: File): Promise<void> {\n await this.#dropFiles([file]);\n }\n\n /**\n * Loads multiple files.\n * Be sure to include `provideSkyFileReaderTesting` as a provider when calling this function in tests.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileReaderTesting()]\n * });\n * ``\n */\n public async loadFiles(files: File[] | null): Promise<void> {\n return await this.#dropFiles(files);\n }\n\n async #dropFiles(files: File[] | null): Promise<void> {\n const dropTarget = await this.#getDropTarget();\n\n type TestDataTransfer = DataTransfer & { [key: string]: EventData };\n\n const dataTransfer = new DataTransfer() as TestDataTransfer;\n\n files?.forEach((file) => {\n dataTransfer.items.add(file);\n });\n\n await dropTarget.dispatchEvent('drop', {\n dataTransfer,\n });\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return (await this.#formErrors())[1];\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 async #getLinkUpload(): Promise<SkyFileDropLinkUploadHarness> {\n const linkUpload = await this.locatorForOptional(\n SkyFileDropLinkUploadHarness,\n )();\n\n if (linkUpload) {\n return linkUpload;\n }\n\n throw new Error(\n 'Link upload cannot be found. Set `allowLinks` property to `true`.',\n );\n }\n}\n","import { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyFileItemHarnessFilters } from './file-item-harness-filters';\n\n/**\n * Harness for interacting with a file item component in tests.\n */\nexport class SkyFileItemHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-file-item';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFileItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFileItemHarnessFilters,\n ): HarnessPredicate<SkyFileItemHarness> {\n return new HarnessPredicate(SkyFileItemHarness, filters).addOption(\n 'fileName',\n filters.fileName,\n async (harness, fileName) => {\n const harnessFileName = await harness.getFileName();\n return await HarnessPredicate.stringMatches(harnessFileName, fileName);\n },\n );\n }\n\n /**\n * Clicks the delete button.\n */\n public async clickDeleteButton(): Promise<void> {\n return await (await this.locatorFor('.sky-file-item-btn-delete')()).click();\n }\n\n /**\n * Gets the file name.\n */\n public async getFileName(): Promise<string> {\n return await (await this.locatorFor('.sky-file-item-name')()).text();\n }\n\n /**\n * Gets the file size.\n */\n public async getFileSize(): Promise<string> {\n const size = await (await this.locatorFor('.sky-file-item-size')()).text();\n return size.substring(1, size.length - 1);\n }\n}\n","import { Provider } from '@angular/core';\nimport { provideSkyFileReaderTesting } from '@skyux/core/testing';\n\n/**\n * Provides mocks for file attachment testing.\n * @example\n * ```typescript\n * TestBed.configureTestingModule({\n * providers: [provideSkyFileAttachmentTesting()]\n * });\n * ```\n */\nexport function provideSkyFileAttachmentTesting(): Provider[] {\n return [provideSkyFileReaderTesting()];\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyFieldGroupHeadingLevel,\n SkyFieldGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFieldGroupHarnessFilters } from './field-group-harness-filters';\n\n/**\n * Harness for interacting with a field group component in tests.\n */\nexport class SkyFieldGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-field-group';\n\n #getLegend = this.locatorFor('legend');\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendHeading = this.locatorFor('legend h3,h4');\n #getHintText = this.locatorForOptional('.sky-field-group-hint-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyFieldGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyFieldGroupHarnessFilters,\n ): HarnessPredicate<SkyFieldGroupHarness> {\n return SkyFieldGroupHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the field group'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.#getLegendHeading()).text();\n }\n\n /**\n * Gets the field group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await (await this.#getLegend()).hasClass('sky-screen-reader-only');\n }\n\n /**\n * Whether the field group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n\n return await host.hasClass('sky-field-group-stacked');\n }\n\n /**\n * The semantic heading level used for the field group.\n */\n public async getHeadingLevel(): Promise<SkyFieldGroupHeadingLevel> {\n const h3 = await this.#getLegendH3();\n\n return h3 ? 3 : 4;\n }\n\n /**\n * The heading style used for the field group.\n */\n public async getHeadingStyle(): Promise<SkyFieldGroupHeadingStyle> {\n const heading = (await this.#getLegendH3()) || (await this.#getLegendH4());\n\n return (await heading?.hasClass('sky-font-heading-3')) ? 3 : 4;\n }\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 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 async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-field-group > .sky-field-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n throw Error('No help inline found.');\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 radio buttons within a radio group.\n * @deprecated Use `SkyRadioHarness` instead.\n * @internal\n */\nexport class SkyRadioFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-radio-group',\n );\n }\n\n /**\n * The selected radio button value.\n */\n public get value(): string {\n const selectedRadio = this.#debugEl.query(\n By.css('sky-radio input:checked'),\n );\n const selectedValue = selectedRadio && selectedRadio.nativeElement.value;\n\n return selectedValue;\n }\n\n /**\n * Set the selected radio button value.\n */\n public set value(value: string) {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n allRadioInputs.forEach((input, index) => {\n if (input.nativeElement.value === value) {\n input.nativeElement.checked = true;\n } else {\n input.nativeElement.checked = false;\n }\n });\n }\n\n /**\n * A flag indicating if every radio button in the radio group is disabled.\n */\n public get disabled(): boolean {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n for (let i = 0; i < allRadioButtons.length; i++) {\n if (!this.#radioButtonDisabled(i)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Set the disabled value for all radio buttons.\n */\n public set disabled(value: boolean) {\n const allRadioButtons = this.#getAllSkyRadioButtonEls();\n\n allRadioButtons.forEach((button, index) => {\n this.#setRadioButtonDisabled(index, value);\n });\n }\n\n #getAllSkyRadioButtonEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio'));\n }\n\n #getAllRadioInputEls(): DebugElement[] {\n return this.#debugEl.queryAll(By.css('.sky-radio-group sky-radio input'));\n }\n\n #getRadioButtonInputEl(index: number): DebugElement | undefined {\n const allRadioInputs = this.#getAllRadioInputEls();\n\n if (allRadioInputs && allRadioInputs[index]) {\n return allRadioInputs[index];\n }\n /* istanbul ignore next */\n return;\n }\n\n #radioButtonDisabled(index: number): boolean {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n return radioButton && radioButton.nativeElement.disabled;\n }\n\n #setRadioButtonDisabled(index: number, value: boolean): void {\n const radioButton = this.#getRadioButtonInputEl(index);\n\n /* istanbul ignore else */\n if (radioButton) {\n radioButton.nativeElement.disabled = value;\n\n this.#fixture.detectChanges();\n }\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a radio label component in tests.\n * @internal\n */\nexport class SkyRadioLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-label';\n\n #getLabelContent = this.locatorFor('.sky-switch-label');\n\n /**\n * Gets the text content of the radio label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\nimport { SkyRadioLabelHarness } from './radio-label-harness';\n\n/**\n * Harness for interacting with a radio button component in tests.\n */\nexport class SkyRadioHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio';\n\n #getHintText = this.locatorForOptional('.sky-radio-hint-text');\n\n #getInput = this.locatorFor('input.sky-radio-input');\n\n #getLabel = this.locatorForOptional(SkyRadioLabelHarness);\n\n #getLabelText = this.locatorForOptional(\n 'span.sky-switch-label.sky-radio-label-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioHarnessFilters,\n ): HarnessPredicate<SkyRadioHarness> {\n return SkyRadioHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the radio button.\n */\n public async blur(): Promise<void> {\n await (await this.#getInput()).blur();\n }\n\n /**\n * Puts the radio button in a checked state if it is currently unchecked.\n */\n public async check(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not check the radio button because it is disabled.',\n );\n } else if (!(await this.isChecked())) {\n await (await this.#getInput()).click();\n }\n }\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 * Focuses the radio button.\n */\n public async focus(): Promise<void> {\n await (await this.#getInput()).focus();\n }\n\n /**\n * Gets the radio button's aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-label');\n }\n\n /**\n * Gets the radio button's aria-labelledby.\n */\n public async getAriaLabelledby(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('aria-labelledby');\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 radio button's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const label = await this.#getLabel();\n\n if (label) {\n throw new Error(\n '`labelHidden` is only supported when setting the radio label via the `labelText` input.',\n );\n } else {\n return !!(await labelText?.hasClass('sky-screen-reader-only'));\n }\n }\n\n /**\n * Gets the radio button's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await this.#getLabelText();\n\n if (labelText) {\n return await labelText.text();\n } else {\n return await (await this.#getLabel())?.getText();\n }\n }\n\n /**\n * Gets the radio button's name.\n */\n public async getName(): Promise<string | null> {\n return await (await this.#getInput()).getAttribute('name');\n }\n\n /**\n * Whether the radio button is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (await this.#getInput()).getProperty<boolean>('checked');\n }\n\n /**\n * Whether the radio button is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getInput()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the radio button is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getInput()).isFocused();\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 {\n SkyRadioGroupHeadingLevel,\n SkyRadioGroupHeadingStyle,\n} from '@skyux/forms';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyFormErrorHarness } from '../form-error/form-error-harness';\nimport { SkyFormErrorsHarness } from '../form-error/form-errors-harness';\n\nimport { SkyRadioGroupHarnessFilters } from './radio-group-harness-filters';\nimport { SkyRadioHarness } from './radio-harness';\nimport { SkyRadioHarnessFilters } from './radio-harness-filters';\n\n/**\n * Harness for interacting with a radio group component in tests.\n */\nexport class SkyRadioGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-radio-group';\n\n #getHeading = this.locatorFor('.sky-radio-group-legend span');\n #getHeadingWrapper = this.locatorForOptional('.sky-radio-group-legend');\n #getHintText = this.locatorForOptional('.sky-radio-group-hint-text');\n #getLegendDefault = this.locatorForOptional(\n 'legend .sky-radio-group-heading-text',\n );\n #getLegendH3 = this.locatorForOptional('legend h3');\n #getLegendH4 = this.locatorForOptional('legend h4');\n #getLegendH5 = this.locatorForOptional('legend h5');\n #getLegendHeading = this.locatorForOptional(\n 'legend h3,h4,h5,.sky-radio-group-heading-text',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRadioGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRadioGroupHarnessFilters,\n ): HarnessPredicate<SkyRadioGroupHarness> {\n return SkyRadioGroupHarness.getDataSkyIdPredicate(filters);\n }\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 custom form error.\n */\n public async getCustomError(errorName: string): Promise<SkyFormErrorHarness> {\n return await this.locatorFor(\n SkyFormErrorHarness.with({ errorName: errorName }),\n )();\n }\n\n /**\n * Whether the heading is hidden.\n */\n public async getHeadingHidden(): Promise<boolean> {\n return await ((\n await this.#getHeadingWrapper()\n )?.hasClass('sky-screen-reader-only') ?? true);\n }\n\n /**\n * The semantic heading level used for the radio group. Returns undefined if heading level is not set.\n */\n public async getHeadingLevel(): Promise<\n SkyRadioGroupHeadingLevel | undefined\n > {\n const h3 = await this.#getLegendH3();\n const h4 = await this.#getLegendH4();\n const h5 = await this.#getLegendH5();\n\n if (h3) {\n return 3;\n } else if (h4) {\n return 4;\n } else if (h5) {\n return 5;\n } else {\n return undefined;\n }\n }\n\n /**\n * The heading style used for the radio group.\n */\n public async getHeadingStyle(): Promise<SkyRadioGroupHeadingStyle> {\n const headingOrLabel =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5()) ||\n (await this.#getLegendDefault());\n\n const isHeadingStyle3 =\n await headingOrLabel?.hasClass('sky-font-heading-3');\n const isHeadingStyle4 =\n await headingOrLabel?.hasClass('sky-font-heading-4');\n\n if (isHeadingStyle3) {\n return 3;\n } else if (isHeadingStyle4) {\n return 4;\n } else {\n return 5;\n }\n }\n\n /**\n * Gets the radio group'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.#getLegendHeading())?.text() ?? '');\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 radio group's hint text.\n */\n public async getHintText(): Promise<string> {\n const hintText = await this.#getHintText();\n\n return (await hintText?.text())?.trim() ?? '';\n }\n\n /**\n * Gets a specific radio button based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getRadioButton(\n filter: SkyRadioHarnessFilters,\n ): Promise<SkyRadioHarness> {\n return await this.locatorFor(SkyRadioHarness.with(filter))();\n }\n\n /**\n * Gets an array of radio buttons based on the filter criteria.\n * If no filter is provided, returns all radio buttons.\n * @param filters The optional filter criteria.\n */\n public async getRadioButtons(\n filters?: SkyRadioHarnessFilters,\n ): Promise<SkyRadioHarness[]> {\n return await this.locatorForAll(SkyRadioHarness.with(filters || {}))();\n }\n\n /**\n * Whether the radio group is required.\n */\n public async getRequired(): Promise<boolean> {\n const headingWrapper = await this.#getHeading();\n\n return await headingWrapper.hasClass('sky-control-label-required');\n }\n\n /**\n * Whether the radio group is stacked.\n */\n public async getStacked(): Promise<boolean> {\n const host = await this.host();\n const heading =\n (await this.#getLegendH3()) ||\n (await this.#getLegendH4()) ||\n (await this.#getLegendH5());\n const label = await this.#getLegendDefault();\n\n return (\n ((await host.hasClass('sky-form-field-stacked')) && !!label) ||\n ((await host.hasClass('sky-field-group-stacked')) && !!heading)\n );\n }\n\n /**\n * Whether a form error with the specified name has fired.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (await this.#getFormErrors()).hasError(errorName);\n }\n\n async #getFormErrors(): Promise<SkyFormErrorsHarness> {\n return await this.locatorFor(SkyFormErrorsHarness)();\n }\n\n async #getHelpInline(): Promise<SkyHelpInlineHarness> {\n const harness = await this.locatorForOptional(\n SkyHelpInlineHarness.with({\n ancestor: '.sky-radio-group > .sky-radio-group-legend',\n }),\n )();\n\n if (harness) {\n return harness;\n }\n\n throw Error('No help inline found.');\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with a selection box description component in tests.\n * @internal\n */\nexport class SkySelectionBoxDescriptionHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-description';\n\n /**\n * Gets the description text.\n */\n public async getText(): Promise<string> {\n return (await (await this.host()).text()).trim();\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with a selection box header component in tests.\n * @internal\n */\nexport class SkySelectionBoxHeaderHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-header';\n\n /**\n * Gets the header text.\n */\n public async getText(): Promise<string> {\n return (await (await this.host()).text()).trim();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyIconHarness } from '@skyux/icon/testing';\n\nimport { SkyCheckboxHarness } from '../checkbox/checkbox-harness';\nimport { SkyRadioHarness } from '../radio/radio-harness';\n\nimport { SkySelectionBoxDescriptionHarness } from './selection-box-description-harness';\nimport { SkySelectionBoxHarnessFilters } from './selection-box-harness-filters';\nimport { SkySelectionBoxHeaderHarness } from './selection-box-header-harness';\n\n/**\n * Harness to interact with a selection box component in tests.\n */\nexport class SkySelectionBoxHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySelectionBoxHarnessFilters,\n ): HarnessPredicate<SkySelectionBoxHarness> {\n return SkySelectionBoxHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets the checkbox or radio harness for the selection box form control.\n */\n public async getControl(): Promise<SkyCheckboxHarness | SkyRadioHarness> {\n return await this.locatorFor(SkyCheckboxHarness, SkyRadioHarness)();\n }\n\n /**\n * Gets the selection box description text.\n */\n public async getDescriptionText(): Promise<string> {\n const text = await (\n await this.locatorForOptional(SkySelectionBoxDescriptionHarness)()\n )?.getText();\n return text ?? '';\n }\n\n /**\n * Gets the selection box header text.\n */\n public async getHeaderText(): Promise<string> {\n const text = await (\n await this.locatorForOptional(SkySelectionBoxHeaderHarness)()\n )?.getText();\n return text ?? '';\n }\n\n /**\n * Gets the selection box icon, if it exists.\n */\n public async getIcon(): Promise<SkyIconHarness | null> {\n return await this.locatorForOptional(SkyIconHarness)();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkySelectionBoxGridHarnessFilters } from './selection-box-grid-harness-filters';\nimport { SkySelectionBoxHarness } from './selection-box-harness';\nimport { SkySelectionBoxHarnessFilters } from './selection-box-harness-filters';\n\n/**\n * Harness for interacting with a selection box grid component in tests.\n */\nexport class SkySelectionBoxGridHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-selection-box-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkySelectionBoxGridHarness` that meets certain criteria.\n */\n public static with(\n filters: SkySelectionBoxGridHarnessFilters,\n ): HarnessPredicate<SkySelectionBoxGridHarness> {\n return SkySelectionBoxGridHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a specific selection box based on the filter criteria.\n * @param filter The filter criteria.\n */\n public async getSelectionBox(\n filter: SkySelectionBoxHarnessFilters,\n ): Promise<SkySelectionBoxHarness> {\n return await this.locatorFor(SkySelectionBoxHarness.with(filter))();\n }\n\n /**\n * Gets an array of selection boxes based on the filter criteria.\n * If no filter is provided, returns all selection boxes.\n * @param filters The optional filter criteria.\n */\n public async getSelectionBoxes(\n filters?: SkySelectionBoxHarnessFilters,\n ): Promise<SkySelectionBoxHarness[]> {\n return await this.locatorForAll(\n SkySelectionBoxHarness.with(filters || {}),\n )();\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\n\n/**\n * Harness for interacting with a toggle switch label component in tests.\n * @internal\n */\nexport class SkyToggleSwitchLabelHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toggle-switch-label';\n\n #getLabelContent = this.locatorFor('span[skyTrim]');\n\n /**\n * Gets the text content of the toggle switch label.\n */\n public async getText(): Promise<string> {\n return await (await this.#getLabelContent()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyHelpInlineHarness } from '@skyux/help-inline/testing';\n\nimport { SkyToggleSwitchHarnessFilters } from './toggle-switch-harness-filters';\nimport { SkyToggleSwitchLabelHarness } from './toggle-switch-label-harness';\n\n/**\n * Harness for interacting with a toggle switch component in tests.\n */\nexport class SkyToggleSwitchHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-toggle-switch';\n\n #getButton = this.locatorFor('button.sky-toggle-switch-button');\n #getLabel = this.locatorForOptional(SkyToggleSwitchLabelHarness);\n #getLabelText = this.locatorForOptional('span.sky-toggle-switch-label-text');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyToggleSwitchHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyToggleSwitchHarnessFilters,\n ): HarnessPredicate<SkyToggleSwitchHarness> {\n return SkyToggleSwitchHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Blurs the toggle switch.\n */\n public async blur(): Promise<void> {\n await (await this.#getButton()).blur();\n }\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 * Puts the toggle switch in a checked state.\n */\n public async check(): Promise<void> {\n if (!(await this.isChecked())) {\n await this.#toggle();\n }\n }\n\n /**\n * Focuses the toggle switch.\n */\n public async focus(): Promise<void> {\n await (await this.#getButton()).focus();\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 * Whether the label is hidden. Only supported when using the `labelText` input to set the label.\n */\n public async getLabelHidden(): Promise<boolean> {\n const labelText = await this.#getLabelText();\n const labelComponent = await this.#getLabel();\n\n if (labelComponent) {\n throw new Error(\n '`labelHidden` is only supported when setting the toggle switch label via the `labelText` input.',\n );\n } else {\n return !(await labelText?.text());\n }\n }\n\n /**\n * Gets the toggle switch's label text. If the label is set via `labelText` and `labelHidden` is true,\n * the text will still be returned.\n */\n public async getLabelText(): Promise<string | undefined> {\n const labelText = await (await this.#getLabelText())?.text();\n const ariaLabel = await this.#getAriaLabel();\n\n return (\n labelText || ariaLabel || (await (await this.#getLabel())?.getText())\n );\n }\n\n /**\n * Whether the toggle switch is checked.\n */\n public async isChecked(): Promise<boolean> {\n return await (\n await this.#getButton()\n ).hasClass('sky-toggle-switch-checked');\n }\n\n /**\n * Whether the toggle switch is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n const disabled = await (await this.#getButton()).getAttribute('disabled');\n return disabled !== null;\n }\n\n /**\n * Whether the toggle switch is focused.\n */\n public async isFocused(): Promise<boolean> {\n return await (await this.#getButton()).isFocused();\n }\n\n /**\n * Puts the toggle switch in an unchecked state.\n */\n public async uncheck(): Promise<void> {\n if (await this.isChecked()) {\n await this.#toggle();\n }\n }\n\n async #getAriaLabel(): Promise<string | null> {\n return await (await this.#getButton()).getAttribute('aria-label');\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 async #toggle(): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error(\n 'Could not toggle the toggle switch because it is disabled.',\n );\n } else {\n await (await this.#getButton()).click();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|