@angular/material
Version:
Angular Material
1 lines • 33.1 kB
Source Map (JSON)
{"version":3,"file":"chips-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-avatar-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-remove-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-option-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-listbox-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-edit-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-row-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-grid-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/chips/testing/chip-set-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipAvatarHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip avatar in tests. */\nexport class MatChipAvatarHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-avatar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip avatar with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipAvatarHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipAvatarHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip edit button in tests. */\nexport class MatChipEditHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-edit';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip edit with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipEditHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipEditHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Clicks the edit button. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipRemoveHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a standard Material chip remove button in tests. */\nexport class MatChipRemoveHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-remove';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip remove with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipRemoveHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipRemoveHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Clicks the remove button. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {MatChipAvatarHarness} from './chip-avatar-harness';\nimport {\n ChipAvatarHarnessFilters,\n ChipEditHarnessFilters,\n ChipHarnessFilters,\n ChipRemoveHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipEditHarness} from './chip-edit-harness';\nimport {MatChipRemoveHarness} from './chip-remove-harness';\n\n/** Harness for interacting with a mat-chip in tests. */\nexport class MatChipHarness extends ContentContainerComponentHarness {\n protected _primaryAction = this.locatorFor('.mdc-evolution-chip__action--primary');\n\n static hostSelector = '.mat-mdc-basic-chip, .mat-mdc-chip';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('text', options.text, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getText(), label);\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Gets a promise for the text content the option. */\n async getText(): Promise<string> {\n return (await this.host()).text({\n exclude: '.mat-mdc-chip-avatar, .mat-mdc-chip-trailing-icon, .mat-icon',\n });\n }\n\n /** Whether the chip is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-disabled');\n }\n\n /** Delete a chip from the set. */\n async remove(): Promise<void> {\n const hostEl = await this.host();\n await hostEl.sendKeys(TestKey.DELETE);\n }\n\n /**\n * Gets the edit button inside of a chip.\n * @param filter Optionally filters which chips are included.\n */\n async geEditButton(filter: ChipEditHarnessFilters = {}): Promise<MatChipEditHarness> {\n return this.locatorFor(MatChipEditHarness.with(filter))();\n }\n\n /**\n * Gets the remove button inside of a chip.\n * @param filter Optionally filters which chips are included.\n */\n async getRemoveButton(filter: ChipRemoveHarnessFilters = {}): Promise<MatChipRemoveHarness> {\n return this.locatorFor(MatChipRemoveHarness.with(filter))();\n }\n\n /**\n * Gets the avatar inside a chip.\n * @param filter Optionally filters which avatars are included.\n */\n async getAvatar(filter: ChipAvatarHarnessFilters = {}): Promise<MatChipAvatarHarness | null> {\n return this.locatorForOptional(MatChipAvatarHarness.with(filter))();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ChipInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a grid's chip input in tests. */\nexport class MatChipInputHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip input with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, async (harness, value) => {\n return (await harness.getValue()) === value;\n })\n .addOption('placeholder', options.placeholder, async (harness, placeholder) => {\n return (await harness.getPlaceholder()) === placeholder;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n });\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n const disabled = await host.getAttribute('disabled');\n\n if (disabled !== null) {\n return coerceBooleanProperty(disabled);\n }\n\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is never undefined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Sends a chip separator key to the input element. */\n async sendSeparatorKey(key: TestKey | string): Promise<void> {\n const inputEl = await this.host();\n return inputEl.sendKeys(key);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipOptionHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-option in tests. */\nexport class MatChipOptionHarness extends MatChipHarness {\n static override hostSelector = '.mat-mdc-chip-option';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip option with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static override with<T extends MatChipHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipOptionHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(MatChipOptionHarness, options)\n .addOption('text', options.text, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getText(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n ) as unknown as HarnessPredicate<T>;\n }\n\n /** Whether the chip is selected. */\n async isSelected(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-selected');\n }\n\n /** Selects the given chip. Only applies if it's selectable. */\n async select(): Promise<void> {\n if (!(await this.isSelected())) {\n await this.toggle();\n }\n }\n\n /** Deselects the given chip. Only applies if it's selectable. */\n async deselect(): Promise<void> {\n if (await this.isSelected()) {\n await this.toggle();\n }\n }\n\n /** Toggles the selected state of the given chip. */\n async toggle(): Promise<void> {\n return (await this._primaryAction()).click();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n parallel,\n} from '@angular/cdk/testing';\nimport {ChipListboxHarnessFilters, ChipOptionHarnessFilters} from './chip-harness-filters';\nimport {MatChipOptionHarness} from './chip-option-harness';\n\n/** Harness for interacting with a mat-chip-listbox in tests. */\nexport class MatChipListboxHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-listbox';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip listbox with specific\n * attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipListboxHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipListboxHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /** Gets whether the chip listbox is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the chip listbox is required. */\n async isRequired(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-required')) === 'true';\n }\n\n /** Gets whether the chip listbox is in multi selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-multiselectable')) === 'true';\n }\n\n /** Gets whether the orientation of the chip list. */\n async getOrientation(): Promise<'horizontal' | 'vertical'> {\n const orientation = await (await this.host()).getAttribute('aria-orientation');\n return orientation === 'vertical' ? 'vertical' : 'horizontal';\n }\n\n /**\n * Gets the list of chips inside the chip list.\n * @param filter Optionally filters which chips are included.\n */\n async getChips(filter: ChipOptionHarnessFilters = {}): Promise<MatChipOptionHarness[]> {\n return this.locatorForAll(MatChipOptionHarness.with(filter))();\n }\n\n /**\n * Selects a chip inside the chip list.\n * @param filter An optional filter to apply to the child chips.\n * All the chips matching the filter will be selected.\n */\n async selectChips(filter: ChipOptionHarnessFilters = {}): Promise<void> {\n const chips = await this.getChips(filter);\n if (!chips.length) {\n throw Error(`Cannot find chip matching filter ${JSON.stringify(filter)}`);\n }\n await parallel(() => chips.map(chip => chip.select()));\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with an editable chip's input in tests. */\nexport class MatChipEditInputHarness extends ComponentHarness {\n static hostSelector = '.mat-chip-edit-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip edit input with specific\n * attributes.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipEditInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipEditInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Sets the value of the input. */\n async setValue(value: string): Promise<void> {\n const host = await this.host();\n return host.setContenteditableValue(value);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {TestKey} from '@angular/cdk/testing';\nimport {MatChipEditInputHarness} from './chip-edit-input-harness';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipEditInputHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-row in tests. */\nexport class MatChipRowHarness extends MatChipHarness {\n static override hostSelector = '.mat-mdc-chip-row';\n\n /** Whether the chip is editable. */\n async isEditable(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-editable');\n }\n\n /** Whether the chip is currently being edited. */\n async isEditing(): Promise<boolean> {\n return (await this.host()).hasClass('mat-mdc-chip-editing');\n }\n\n /** Sets the chip row into an editing state, if it is editable. */\n async startEditing(): Promise<void> {\n if (!(await this.isEditable())) {\n throw new Error('Cannot begin editing a chip that is not editable.');\n }\n return (await this.host()).dispatchEvent('dblclick');\n }\n\n /** Stops editing the chip, if it was in the editing state. */\n async finishEditing(): Promise<void> {\n if (await this.isEditing()) {\n await (await this.host()).sendKeys(TestKey.ENTER);\n }\n }\n\n /** Gets the edit input inside the chip row. */\n async getEditInput(filter: ChipEditInputHarnessFilters = {}): Promise<MatChipEditInputHarness> {\n return this.locatorFor(MatChipEditInputHarness.with(filter))();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {\n ChipGridHarnessFilters,\n ChipInputHarnessFilters,\n ChipRowHarnessFilters,\n} from './chip-harness-filters';\nimport {MatChipInputHarness} from './chip-input-harness';\nimport {MatChipRowHarness} from './chip-row-harness';\n\n/** Harness for interacting with a mat-chip-grid in tests. */\nexport class MatChipGridHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip grid with specific attributes.\n * @param options Options for filtering which chip grid instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipGridHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipGridHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n },\n );\n }\n\n /** Gets whether the chip grid is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the chip grid is required. */\n async isRequired(): Promise<boolean> {\n return await (await this.host()).hasClass('mat-mdc-chip-list-required');\n }\n\n /** Gets whether the chip grid is invalid. */\n async isInvalid(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-invalid')) === 'true';\n }\n\n /** Gets promise of the harnesses for the chip rows. */\n getRows(filter: ChipRowHarnessFilters = {}): Promise<MatChipRowHarness[]> {\n return this.locatorForAll(MatChipRowHarness.with(filter))();\n }\n\n /** Gets promise of the chip text input harness. */\n getInput(filter: ChipInputHarnessFilters = {}): Promise<MatChipInputHarness | null> {\n return this.locatorFor(MatChipInputHarness.with(filter))();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarnessConstructor,\n ComponentHarness,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatChipHarness} from './chip-harness';\nimport {ChipHarnessFilters, ChipSetHarnessFilters} from './chip-harness-filters';\n\n/** Harness for interacting with a mat-chip-set in tests. */\nexport class MatChipSetHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-chip-set';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a chip set with specific attributes.\n * @param options Options for filtering which chip set instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatChipSetHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ChipSetHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Gets promise of the harnesses for the chips. */\n async getChips(filter: ChipHarnessFilters = {}): Promise<MatChipHarness[]> {\n return await this.locatorForAll(MatChipHarness.with(filter))();\n }\n}\n"],"names":["MatChipAvatarHarness","ComponentHarness","hostSelector","with","options","HarnessPredicate","MatChipEditHarness","click","host","MatChipRemoveHarness","MatChipHarness","ContentContainerComponentHarness","_primaryAction","locatorFor","addOption","text","harness","label","stringMatches","getText","disabled","isDisabled","exclude","hasClass","remove","hostEl","sendKeys","TestKey","DELETE","geEditButton","filter","getRemoveButton","getAvatar","locatorForOptional","MatChipInputHarness","value","getValue","placeholder","getPlaceholder","getAttribute","coerceBooleanProperty","isRequired","getProperty","focus","blur","isFocused","setValue","newValue","inputEl","clear","sendSeparatorKey","key","MatChipOptionHarness","selected","isSelected","select","toggle","deselect","MatChipListboxHarness","isMultiple","getOrientation","orientation","getChips","locatorForAll","selectChips","chips","length","Error","JSON","stringify","parallel","map","chip","MatChipEditInputHarness","setContenteditableValue","MatChipRowHarness","isEditable","isEditing","startEditing","dispatchEvent","finishEditing","ENTER","getEditInput","MatChipGridHarness","isInvalid","getRows","getInput","MatChipSetHarness"],"mappings":"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"}