{"version":3,"file":"skyux-lookup-testing.mjs","sources":["../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-input-harness.ts","../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/autocomplete/autocomplete-harness.ts","../../../../../libs/components/lookup/testing/src/modules/country-field/country-field-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/country-field/country-field-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-selections-list-harness.ts","../../../../../libs/components/lookup/testing/src/modules/search/search-harness.ts","../../../../../libs/components/lookup/testing/src/modules/selection-modal/selection-modal-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-show-more-picker-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-selection-harness.ts","../../../../../libs/components/lookup/testing/src/modules/selection-modal/selection-modal-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/modules/lookup/lookup-show-more-picker-search-result-harness.ts","../../../../../libs/components/lookup/testing/src/legacy/search/search-fixture.ts","../../../../../libs/components/lookup/testing/src/legacy/search/search-testing.module.ts","../../../../../libs/components/lookup/testing/src/skyux-lookup-testing.ts"],"sourcesContent":["import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the autocomplete input harness.\n */\nexport class SkyAutocompleteInputHarness extends SkyInputHarness {\n  /**\n   * @internal\n   */\n  public static hostSelector = '[skyAutocomplete]';\n\n  /**\n   * Returns the value of the input's `aria-controls` attribute.\n   */\n  public async getAriaControls(): Promise<string | null> {\n    return await (await this.host()).getAttribute('aria-controls');\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteSearchResultHarnessFilters } from './autocomplete-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyAutocompleteSearchResultHarness extends SkyQueryableComponentHarness {\n  /**\n   * @internal\n   */\n  public static hostSelector = '.sky-autocomplete-result';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkyAutocompleteSearchResultHarness` that meets certain criteria.\n   */\n  public static with(\n    filters: SkyAutocompleteSearchResultHarnessFilters,\n  ): HarnessPredicate<SkyAutocompleteSearchResultHarness> {\n    return new HarnessPredicate(\n      SkyAutocompleteSearchResultHarness,\n      filters,\n    ).addOption(\n      'textContent',\n      filters.text,\n      async (harness, text) =>\n        await HarnessPredicate.stringMatches(await harness.getText(), text),\n    );\n  }\n\n  /**\n   * Returns the value of the search result's descriptor property.\n   * This value is set by the autocomplete's `descriptorProperty` input.\n   */\n  public async getDescriptorValue(): Promise<string> {\n    return (await (\n      await this.host()\n    ).getAttribute('data-descriptor-value')) as string;\n  }\n\n  /**\n   * Selects the search result.\n   */\n  public async select(): Promise<void> {\n    await (await this.host()).click();\n  }\n\n  /**\n   * Returns the text of the search result.\n   */\n  public async getText(): Promise<string> {\n    return await (await this.host()).text();\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness, SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarnessFilters } from './autocomplete-harness-filters';\nimport { SkyAutocompleteInputHarness } from './autocomplete-input-harness';\nimport { SkyAutocompleteSearchResultHarness } from './autocomplete-search-result-harness';\nimport { SkyAutocompleteSearchResultHarnessFilters } from './autocomplete-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete component in tests.\n */\nexport class SkyAutocompleteHarness extends SkyComponentHarness {\n  /**\n   * @internal\n   */\n  public static hostSelector = 'sky-autocomplete';\n\n  #documentRootLocator = this.documentRootLocatorFactory();\n  #getAutocomplete = this.locatorFor('.sky-autocomplete');\n  #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkyAutocompleteHarness` that meets certain criteria.\n   */\n  public static with(\n    filters: SkyAutocompleteHarnessFilters,\n  ): HarnessPredicate<SkyAutocompleteHarness> {\n    return SkyAutocompleteHarness.getDataSkyIdPredicate(filters);\n  }\n\n  /**\n   * Blurs the autocomplete input.\n   * @deprecated Call `await (await autocomplete.getControl()).blur()` instead.\n   */\n  public async blur(): Promise<void> {\n    await (await this.#getInput()).blur();\n  }\n\n  /**\n   * Clears the autocomplete input value.\n   * @deprecated Call `await (await autocomplete.getControl()).clear()` instead.\n   */\n  public async clear(): Promise<void> {\n    await (await this.#getInput()).clear();\n  }\n\n  /**\n   * Enters text into the autocomplete input.\n   * @deprecated Call `await (await autocomplete.getControl()).setValue()` instead.\n   */\n  public async enterText(value: string): Promise<void> {\n    await (await this.#getInput()).setValue(value);\n  }\n\n  /**\n   * Focuses the autocomplete input.\n   * @deprecated Call `await (await autocomplete.getControl()).focus()` instead.\n   */\n  public async focus(): Promise<void> {\n    await (await this.#getInput()).focus();\n  }\n\n  /**\n   * Gets the autocomplete `aria-labelledby` value.\n   */\n  public async getAriaLabelledby(): Promise<string | null> {\n    return await (\n      await this.#getAutocomplete()\n    ).getAttribute('aria-labelledby');\n  }\n\n  /**\n   * Gets the autocomplete input harness.\n   */\n  public async getControl(): Promise<SkyAutocompleteInputHarness> {\n    return await this.#getInput();\n  }\n\n  /**\n   * Gets a specific autocomplete search result based on the filter criteria.\n   * @param filter The filter criteria.\n   */\n  public async getSearchResult(\n    filter: SkyAutocompleteSearchResultHarnessFilters,\n  ): Promise<SkyAutocompleteSearchResultHarness> {\n    const overlay = await this.#getOverlay();\n\n    if (!overlay) {\n      throw new Error(\n        'Unable to retrieve search result. The autocomplete is closed.',\n      );\n    }\n\n    return await overlay.queryHarness(\n      SkyAutocompleteSearchResultHarness.with(filter),\n    );\n  }\n\n  /**\n   * Gets an array of autocomplete search results based on the filter criteria.\n   * If no filter is provided, returns all autocomplete search results.\n   * @param filters The optional filter criteria.\n   */\n  public async getSearchResults(\n    filters?: SkyAutocompleteSearchResultHarnessFilters,\n  ): Promise<SkyAutocompleteSearchResultHarness[]> {\n    const overlay = await this.#getOverlay();\n\n    if (!overlay) {\n      throw new Error(\n        'Unable to retrieve search results. The autocomplete is closed.',\n      );\n    }\n\n    return await overlay.queryHarnesses(\n      SkyAutocompleteSearchResultHarness.with(filters || {}),\n    );\n  }\n\n  /**\n   * Returns the text content for each autocomplete search result.\n   */\n  public async getSearchResultsText(\n    filters?: SkyAutocompleteSearchResultHarnessFilters,\n  ): Promise<string[]> {\n    const harnesses = await this.getSearchResults(filters);\n\n    const text: string[] = [];\n    for (const harness of harnesses) {\n      text.push(await harness.getText());\n    }\n\n    return text;\n  }\n\n  /**\n   * Gets the value of the autocomplete input.\n   * @deprecated Call `await (await autocomplete.getControl()).getValue()` instead.\n   */\n  public async getValue(): Promise<string> {\n    return await (await this.#getInput()).getValue();\n  }\n\n  /**\n   * Gets the text displayed when no search results are found.\n   */\n  public async getNoResultsFoundText(): Promise<string> {\n    const overlay = await this.#getOverlay();\n\n    if (!overlay) {\n      throw new Error(\n        'Cannot find \"no results found\" text as the dropdown is closed.',\n      );\n    }\n\n    try {\n      const noResultFoundText = await overlay.querySelector(\n        '.sky-autocomplete-no-results',\n      );\n      return (await noResultFoundText.text()).trim();\n    } catch {\n      throw new Error(\n        'Cannot find \"no results found\" text because there are search results.',\n      );\n    }\n  }\n\n  /**\n   * Whether the autocomplete input is disabled.\n   * @deprecated Call `await (await autocomplete.getControl()).isDisabled()` instead.\n   */\n  public async isDisabled(): Promise<boolean> {\n    return await (await this.#getInput()).isDisabled();\n  }\n\n  /**\n   * Whether the autocomplete input is focused.\n   * @deprecated Call `await (await autocomplete.getControl()).isFocused()` instead.\n   */\n  public async isFocused(): Promise<boolean> {\n    return await (await this.#getInput()).isFocused();\n  }\n\n  /**\n   * Whether the autocomplete is open.\n   */\n  public async isOpen(): Promise<boolean> {\n    const overlay = await this.#getOverlay();\n    return !!overlay;\n  }\n\n  /**\n   * Selects a search result.\n   */\n  public async selectSearchResult(\n    filters: SkyAutocompleteSearchResultHarnessFilters,\n  ): Promise<void> {\n    const results = await this.getSearchResults(filters);\n    if (results && results.length > 0) {\n      await results[0].select();\n    }\n  }\n\n  /**\n   * Clicks the \"Add\" button in the autocomplete search results panel.\n   * (The \"Add\" functionality is not included in the public API\n   * of a \"vanilla\" autocomplete component, so this method is protected\n   * to prevent consumers of the autocomplete harness from calling it.\n   * The lookup harness, which extends the autocomplete harness, may\n   * still access this feature, however.)\n   * @internal\n   */\n  protected async clickAddButton(): Promise<void> {\n    const overlay = await this.#getOverlay();\n    if (!overlay) {\n      throw new Error(\n        'Unable to find the \"Add\" button. The autocomplete is closed.',\n      );\n    }\n\n    const button = await overlay.querySelectorOrNull(\n      'button.sky-autocomplete-action-add',\n    );\n\n    if (!button) {\n      throw new Error(\n        'The \"Add\" button cannot be clicked because it does not exist.',\n      );\n    }\n\n    await button.click();\n  }\n\n  /**\n   * Clicks the \"Show more\" button.\n   * (The \"Show more\" functionality is not included in the public API\n   * of a \"vanilla\" autocomplete component, so this method is protected\n   * to prevent consumers of the autocomplete harness from calling it.\n   * The lookup harness, which extends the autocomplete harness, may\n   * still access this feature, however.)\n   * @internal\n   */\n  protected async clickShowMoreButton(): Promise<void> {\n    const overlay = await this.#getOverlay();\n\n    if (!overlay) {\n      throw new Error(\n        'Unable to find the \"Show more\" button. ' +\n          'The autocomplete is closed.',\n      );\n    }\n\n    const button = await overlay.querySelectorOrNull(\n      'button.sky-autocomplete-action-more',\n    );\n\n    if (!button) {\n      throw new Error(\n        'The \"Show more\" button cannot be clicked because it does not exist.',\n      );\n    }\n\n    await button.click();\n  }\n\n  async #getOverlay(): Promise<SkyOverlayHarness | null> {\n    const overlayId = await (await this.#getInput()).getAriaControls();\n\n    return overlayId\n      ? await this.#documentRootLocator.locatorForOptional(\n          SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n        )()\n      : null;\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyAutocompleteSearchResultHarness } from '../autocomplete/autocomplete-search-result-harness';\n\nimport { SkyCountryFieldSearchResultHarnessFilters } from './country-field-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyCountryFieldSearchResultHarness extends SkyAutocompleteSearchResultHarness {\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkyCountryFieldSearchResultHarness` that meets certain criteria.\n   */\n  public static override with(\n    filters: SkyCountryFieldSearchResultHarnessFilters,\n  ): HarnessPredicate<SkyCountryFieldSearchResultHarness> {\n    return new HarnessPredicate(\n      SkyCountryFieldSearchResultHarness,\n      filters,\n    ).addOption('textContent', filters.text, async (harness, text) => {\n      const searchResultText = await harness.getText();\n      return await HarnessPredicate.stringMatches(searchResultText, text);\n    });\n  }\n\n  /**\n   * Returns the value of the search result's descriptor property.\n   * This is not needed by country field because it is always set to the country name,\n   * and the method is marked internal to prevent it from being documented publicly.\n   * @internal\n   */\n  public override async getDescriptorValue(): Promise<string> {\n    return await super.getDescriptorValue();\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';\nimport { SkyAutocompleteInputHarness } from '../autocomplete/autocomplete-input-harness';\n\nimport { SkyCountryFieldHarnessFilters } from './country-field-harness-filters';\nimport { SkyCountryFieldSearchResultHarness } from './country-field-search-result-harness';\nimport { SkyCountryFieldSearchResultHarnessFilters } from './country-field-search-result-harness-filters';\n\n/**\n * Harness for interacting with a country field component in tests.\n */\nexport class SkyCountryFieldHarness extends SkyAutocompleteHarness {\n  /**\n   * Finds a standard country field component, or a country field component that is wrapped by an input box component.\n   * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-country-field`\n   * element is removed from the DOM.\n   * @internal\n   */\n  public static override hostSelector =\n    'sky-country-field,.sky-country-field-container';\n\n  #documentRootLocator = this.documentRootLocatorFactory();\n\n  #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkyCountryFieldHarness` that meets certain criteria.\n   * These filters only work for standalone country fields.\n   * For country fields wrapped inside `sky-input-box`, place filters\n   * on the input box instead, and query the country field using a `SkyInputBoxHarness`.\n   * For the input box implementation, see the code example.\n   */\n  public static override with(\n    filters: SkyCountryFieldHarnessFilters,\n  ): HarnessPredicate<SkyCountryFieldHarness> {\n    return SkyCountryFieldHarness.getDataSkyIdPredicate(filters);\n  }\n\n  /**\n   * Blurs the country field input.\n   * @deprecated Call `await (await countryField.getControl()).blur()` instead.\n   */\n  public override async blur(): Promise<void> {\n    return await (await super.getControl()).blur();\n  }\n\n  /**\n   * Clears the country field input value.\n   * @deprecated Call `await (await countryField.getControl()).clear()` instead.\n   */\n  public override async clear(): Promise<void> {\n    return await (await super.getControl()).clear();\n  }\n\n  /**\n   * Enters text into the country field input.\n   * @deprecated Call `await (await countryField.getControl()).setValue()` instead.\n   */\n  public override async enterText(value: string): Promise<void> {\n    return await (await super.getControl()).setValue(value);\n  }\n\n  /**\n   * Focuses the country field input.\n   * @deprecated Call `await (await countryField.getControl()).focus()` instead.\n   */\n  public override async focus(): Promise<void> {\n    return await (await super.getControl()).focus();\n  }\n\n  /**\n   * Gets the country field  `aria-labelledby` value.\n   * This is not needed for country field because the id is generated internally,\n   * and the method is marked internal to prevent it from being documented publicly.\n   * @internal\n   */\n  /* istanbul ignore next */\n  public override async getAriaLabelledby(): Promise<string | null> {\n    return await super.getAriaLabelledby();\n  }\n\n  /**\n   * Gets a specific country field search result based on the filter criteria.\n   * @param filter The filter criteria.\n   */\n  public override async getSearchResult(\n    filter: SkyCountryFieldSearchResultHarnessFilters,\n  ): Promise<SkyCountryFieldSearchResultHarness> {\n    const overlay = await this.#getOverlay();\n\n    if (!overlay) {\n      throw new Error(\n        'Unable to retrieve search result. The country field is closed.',\n      );\n    }\n\n    return await overlay.queryHarness(\n      SkyCountryFieldSearchResultHarness.with(filter),\n    );\n  }\n\n  /**\n   * Gets an array of country field search results based on the filter criteria.\n   * If no filter is provided, returns all country field search results.\n   * @param filters The optional filter criteria.\n   */\n  public override async getSearchResults(\n    filters?: SkyCountryFieldSearchResultHarnessFilters,\n  ): Promise<SkyCountryFieldSearchResultHarness[]> {\n    const overlay = await this.#getOverlay();\n\n    if (!overlay) {\n      throw new Error(\n        'Unable to retrieve search results. The country field is closed.',\n      );\n    }\n\n    return await overlay.queryHarnesses(\n      SkyCountryFieldSearchResultHarness.with(filters || {}),\n    );\n  }\n\n  /**\n   * Returns the text content for each country field search result.\n   */\n  public override async getSearchResultsText(\n    filters?: SkyCountryFieldSearchResultHarnessFilters,\n  ): Promise<string[]> {\n    const harnesses = await this.getSearchResults(filters);\n\n    const text: string[] = [];\n    for (const harness of harnesses) {\n      text.push(await harness.getText());\n    }\n\n    return text;\n  }\n\n  /**\n   * Gets the value of the country field input.\n   * @deprecated Call `await (await countryField.getControl()).getValue()` instead.\n   */\n  public override async getValue(): Promise<string> {\n    return await (await super.getControl()).getValue();\n  }\n\n  /**\n   * Gets the text displayed when no search results are found.\n   * For a country field, this is always the default text and the method\n   * is marked internal to prevent it from being documented publicly.\n   * @internal\n   */\n  /* istanbul ignore next */\n  public override async getNoResultsFoundText(): Promise<string> {\n    return await super.getNoResultsFoundText();\n  }\n\n  /**\n   * Whether the country field input is disabled.\n   * @deprecated Call `await (await countryField.getControl()).isDisabled()` instead.\n   */\n  public override async isDisabled(): Promise<boolean> {\n    return await (await super.getControl()).isDisabled();\n  }\n\n  /**\n   * Whether the country field input is focused.\n   * @deprecated Call `await (await countryField.getControl()).isFocused()` instead.\n   */\n  public override async isFocused(): Promise<boolean> {\n    return await (await super.getControl()).isFocused();\n  }\n\n  /**\n   * Whether the country field is open.\n   */\n  public override async isOpen(): Promise<boolean> {\n    return await super.isOpen();\n  }\n\n  /**\n   * Selects a search result.\n   */\n  public override async selectSearchResult(\n    filters: SkyCountryFieldSearchResultHarnessFilters,\n  ): Promise<void> {\n    return await super.selectSearchResult(filters);\n  }\n\n  async #getOverlay(): Promise<SkyOverlayHarness | null> {\n    const overlayId = await (await this.#getInput()).getAriaControls();\n\n    return overlayId\n      ? await this.#documentRootLocator.locatorForOptional(\n          SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n        )()\n      : null;\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkyAutocompleteSearchResultHarness } from '../autocomplete/autocomplete-search-result-harness';\n\nimport { SkyLookupSearchResultHarnessFilters } from './lookup-search-result-harness-filters';\n\n/**\n * Harness for interacting with an autocomplete search result in tests.\n */\nexport class SkyLookupSearchResultHarness extends SkyAutocompleteSearchResultHarness {\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkyLookupSearchResultHarness` that meets certain criteria.\n   */\n  public static override with(\n    filters: SkyLookupSearchResultHarnessFilters,\n  ): HarnessPredicate<SkyLookupSearchResultHarness> {\n    return new HarnessPredicate(\n      SkyLookupSearchResultHarness,\n      filters,\n    ).addOption('textContent', filters.text, async (harness, text) => {\n      const searchResultText = await harness.getText();\n      return await HarnessPredicate.stringMatches(searchResultText, text);\n    });\n  }\n\n  /**\n   * Returns the value of the search result's descriptor property.\n   */\n  public override async getDescriptorValue(): Promise<string> {\n    return await super.getDescriptorValue();\n  }\n}\n","import { SkyTokensHarness } from '@skyux/indicators/testing';\n\nimport { SkyLookupSelectionHarness } from './lookup-selection-harness';\n\n/**\n * Harness for interacting with multiselect lookup selections in tests.\n * @internal\n */\nexport class SkyLookupSelectionsListHarness extends SkyTokensHarness {\n  /**\n   * Gets a list of selections.\n   */\n  public async getSelections(): Promise<SkyLookupSelectionHarness[]> {\n    return await super.getTokens();\n  }\n\n  /**\n   * Dismisses the selections in the list.\n   */\n  public async dismissSelections(): Promise<void> {\n    await super.dismissTokens();\n  }\n\n  /**\n   * Gets the text content of all selections in the list.\n   */\n  public async getSelectionsText(): Promise<string[]> {\n    return await super.getTokensText();\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkySearchHarnessFilters } from './search-harness-filters';\n\n/**\n * Harness for interacting with a search component in tests.\n */\nexport class SkySearchHarness extends SkyComponentHarness {\n  /**\n   * @internal\n   */\n  public static hostSelector = 'sky-search';\n\n  #getInput = this.locatorFor('input.sky-search-input');\n\n  #getClearButton = this.locatorFor('button.sky-search-btn-clear');\n  #getDismissButton = this.locatorForOptional('button.sky-search-btn-dismiss');\n  #getSubmitButton = this.locatorFor('button.sky-search-btn-apply');\n  #getOpenButton = this.locatorFor('button.sky-search-btn-open');\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkySearchHarness` that meets certain criteria.\n   */\n  public static with(\n    filters: SkySearchHarnessFilters,\n  ): HarnessPredicate<SkySearchHarness> {\n    return this.getDataSkyIdPredicate(filters);\n  }\n\n  /**\n   * Blurs the search input.\n   */\n  public async blur(): Promise<void> {\n    await this.#assertIsExpanded('Failed to blur the search input.');\n\n    await (await this.#getInput()).blur();\n  }\n\n  /**\n   * Clears the search input.\n   */\n  public async clear(): Promise<void> {\n    await this.#assertIsExpanded('Failed to clear the search input.');\n\n    const input = await this.#getInput();\n    await input.focus();\n    await input.clear();\n    await this.clickSubmitButton();\n  }\n\n  /**\n   * Clicks the search input clear button.\n   */\n  public async clickClearButton(): Promise<void> {\n    await this.#assertIsExpanded('Failed to click clear button.');\n    await (await this.#getClearButton()).click();\n  }\n\n  /**\n   * Clicks search dismiss button to collapse search back to a button.\n   */\n  public async clickDismissSearchButton(): Promise<void> {\n    const button = await this.#getDismissButton();\n\n    if (!button) {\n      throw new Error(\n        'Cannot find dismiss search button. Is a collapsed search open?',\n      );\n    }\n\n    await button.click();\n  }\n\n  /**\n   * Clicks the search icon button that opens search input when it is collapsed.\n   */\n  public async clickOpenSearchButton(): Promise<void> {\n    const button = await this.#getOpenButton();\n\n    if (!(await this.isCollapsed())) {\n      throw new Error(\n        'Cannot click search open button as search is not collapsed',\n      );\n    }\n\n    await button.click();\n  }\n\n  /**\n   * Clicks the search submit button.\n   */\n  public async clickSubmitButton(): Promise<void> {\n    await this.#assertIsExpanded('Failed to click the submit button.');\n    await (await this.#getSubmitButton()).click();\n  }\n\n  /**\n   * Enters text into the search input and performs a search.\n   */\n  public async enterText(value: string): Promise<void> {\n    await this.#assertIsExpanded('Failed to enter text into the search input.');\n\n    const input = await this.#getInput();\n    await input.clear();\n    await input.focus();\n    await input.sendKeys(value);\n    await this.clickSubmitButton();\n  }\n\n  /**\n   * Focuses the search input.\n   */\n  public async focus(): Promise<void> {\n    await this.#assertIsExpanded('Failed to focus the search input.');\n\n    await (await this.#getInput()).focus();\n  }\n\n  /**\n   * Gets the search input'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 search'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 value of the input's placeholder attribute.\n   */\n  public async getPlaceholderText(): Promise<string | null> {\n    await this.#assertIsExpanded('Failed to get the placeholder text.');\n\n    return await (await this.#getInput()).getAttribute('placeholder');\n  }\n\n  /**\n   * Gets the value of the search input.\n   */\n  public async getValue(): Promise<string> {\n    await this.#assertIsExpanded(\n      'Failed to get the value of the search input.',\n    );\n\n    return await (await this.#getInput()).getProperty('value');\n  }\n\n  /**\n   * Whether the search input is collapsed.\n   */\n  public async isCollapsed(): Promise<boolean> {\n    return (\n      (await (await this.#getOpenButton()).getAttribute('hidden')) === null\n    );\n  }\n\n  /**\n   * Whether the search input 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 search input is focused.\n   */\n  public async isFocused(): Promise<boolean> {\n    await this.#assertIsExpanded(\n      'Failed to get the search input focus status.',\n    );\n\n    return await (await this.#getInput()).isFocused();\n  }\n\n  async #assertIsExpanded(errorMessage: string): Promise<void> {\n    if (await this.isCollapsed()) {\n      throw new Error(`${errorMessage} Search is collapsed.`);\n    }\n  }\n}\n","import { ComponentHarness } from '@angular/cdk/testing';\nimport { SkyCheckboxHarness } from '@skyux/forms/testing';\nimport {\n  SkyInfiniteScrollHarness,\n  SkyRepeaterItemHarness,\n} from '@skyux/lists/testing';\n\nimport { SkySearchHarness } from '../search/search-harness';\n\nimport { SkySelectionModalSearchResultHarness } from './selection-modal-search-result-harness';\nimport { SkySelectionModalSearchResultHarnessFilters } from './selection-modal-search-result-harness-filters';\n\n/**\n * Harness for interacting with a selection modal in tests.\n */\nexport class SkySelectionModalHarness extends ComponentHarness {\n  /**\n   * @internal\n   */\n  public static hostSelector = '.sky-lookup-show-more-modal';\n\n  #getCancelButton = this.locatorFor('button.sky-lookup-show-more-modal-close');\n\n  #getClearAllButton = this.locatorForOptional(\n    'button.sky-lookup-show-more-modal-clear-all-btn',\n  );\n\n  #getCheckboxHarness = this.locatorFor(SkyCheckboxHarness);\n\n  #getInfiniteScroll = this.locatorFor(SkyInfiniteScrollHarness);\n\n  #getSaveButton = this.locatorFor('button.sky-lookup-show-more-modal-save');\n\n  #getSearchHarness = this.locatorFor(SkySearchHarness);\n\n  #getSelectAllButton = this.locatorForOptional(\n    'button.sky-lookup-show-more-modal-select-all-btn',\n  );\n\n  #getAddButton = this.locatorForOptional(\n    'button.sky-lookup-show-more-modal-add',\n  );\n\n  /**\n   * Clears the text of the search input.\n   */\n  public async clearSearchText(): Promise<void> {\n    await (await this.#getSearchHarness()).clear();\n  }\n\n  /**\n   * Enters text into the search input and performs a search.\n   */\n  public async enterSearchText(value: string): Promise<void> {\n    await (await this.#getSearchHarness()).enterText(value);\n  }\n\n  /**\n   * Gets the search input's aria-label.\n   */\n  public async getSearchAriaLabel(): Promise<string | null> {\n    return await (await this.#getSearchHarness()).getAriaLabel();\n  }\n\n  /**\n   * Selects multiple search results based on a set of criteria.\n   */\n  public async selectSearchResult(\n    filters?: SkySelectionModalSearchResultHarnessFilters,\n  ): Promise<void> {\n    const harnesses = await this.getSearchResults(filters);\n\n    if (await this.isMultiselect()) {\n      for (const harness of harnesses) {\n        await harness.select();\n      }\n    } else {\n      // Click on the item directly because we've added a custom click event in the picker's template.\n      await (await harnesses[0].host()).click();\n    }\n  }\n\n  /**\n   * Saves any selections made and closes the modal.\n   */\n  public async saveAndClose(): Promise<void> {\n    await (await this.#getSaveButton()).click();\n  }\n\n  /**\n   *\n   * Gets the save button's aria-label.\n   */\n  public async getSaveButtonAriaLabel(): Promise<string | null> {\n    return await (await this.#getSaveButton()).getAttribute('aria-label');\n  }\n\n  /**\n   * Closes the picker without saving any selections made.\n   */\n  public async cancel(): Promise<void> {\n    await (await this.#getCancelButton()).click();\n  }\n\n  /**\n   * Gets a specific search result based on the filter criteria.\n   * @param filter The filter criteria.\n   */\n  public async getSearchResult(\n    filter: SkySelectionModalSearchResultHarnessFilters,\n  ): Promise<SkySelectionModalSearchResultHarness> {\n    const pickerId = (await (await this.host()).getAttribute('id')) as string;\n\n    return await this.locatorFor(\n      SkyRepeaterItemHarness.with({\n        ...filter,\n        ancestor: `#${pickerId}`,\n      }),\n    )();\n  }\n\n  /**\n   * Gets an array of search results based on the filter criteria.\n   * If no filter is provided, returns all search results.\n   * @param filters The optional filter criteria.\n   */\n  public async getSearchResults(\n    filters?: SkySelectionModalSearchResultHarnessFilters,\n  ): Promise<SkySelectionModalSearchResultHarness[]> {\n    const pickerId = (await (await this.host()).getAttribute('id')) as string;\n\n    return await this.locatorForAll(\n      SkyRepeaterItemHarness.with({\n        ...(filters || {}),\n        ancestor: `#${pickerId}`,\n      }),\n    )();\n  }\n\n  /**\n   * Clears all selections made.\n   */\n  public async clearAll(): Promise<void> {\n    const button = await this.#getClearAllButton();\n    if (!button) {\n      throw new Error(\n        'Could not clear all selections because the \"Clear all\" button could not be found.',\n      );\n    }\n\n    await button.click();\n  }\n\n  /**\n   *\n   * Gets the clear all button's aria-label.\n   */\n  public async getClearAllButtonAriaLabel(): Promise<string | null> {\n    const button = await this.#getClearAllButton();\n\n    if (!button) {\n      throw new Error(\n        'Could not get the aria-label for the clear all button because the \"Clear all\" button could not be found.',\n      );\n    }\n\n    return await button.getAttribute('aria-label');\n  }\n\n  /**\n   * Whether the selection modal is configured to allow multiple selections.\n   */\n  public async isMultiselect(): Promise<boolean> {\n    return !(await (\n      await this.host()\n    ).hasClass('sky-lookup-show-more-modal-single'));\n  }\n\n  /**\n   * Selects all search results.\n   */\n  public async selectAll(): Promise<void> {\n    const button = await this.#getSelectAllButton();\n    if (!button) {\n      throw new Error(\n        'Could not select all selections because the \"Select all\" button could not be found.',\n      );\n    }\n\n    await button.click();\n  }\n\n  /**\n   *\n   * Gets the select all button's aria-label.\n   */\n  public async getSelectAllButtonAriaLabel(): Promise<string | null> {\n    const button = await this.#getSelectAllButton();\n\n    if (!button) {\n      throw new Error(\n        'Could not get the aria-label for the select all button because the \"Select all\" button could not be found.',\n      );\n    }\n\n    return await button.getAttribute('aria-label');\n  }\n\n  /**\n   * Loads more results in the picker.\n   */\n  public async loadMore(): Promise<void> {\n    await (await this.#getInfiniteScroll()).loadMore();\n  }\n\n  /**\n   * Whether the selection modal is configured to show the add button.\n   */\n  public async hasAddButton(): Promise<boolean> {\n    const button = await this.#getAddButton();\n    return !!button;\n  }\n\n  /**\n   * Clicks the add button.\n   */\n  public async clickAddButton(): Promise<void> {\n    const button = await this.#getAddButton();\n    if (!button) {\n      throw new Error(\n        'Could not click the add button because the button could not be found.',\n      );\n    }\n\n    await button.click();\n  }\n\n  /**\n   * Gets the \"Only show selected\" checkbox's aria-label\n   */\n  public async getOnlyShowSelectedAriaLabel(): Promise<string | null> {\n    try {\n      const label = await (await this.#getCheckboxHarness()).getAriaLabel();\n\n      return label;\n    } catch {\n      throw new Error(\n        'Could not get the \"Show only selected items\" checkbox because it could not be found.',\n      );\n    }\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\n\nimport { SkySelectionModalHarness } from '../selection-modal/selection-modal-harness';\n\nimport { SkyLookupShowMorePickerHarnessFilters } from './lookup-show-more-picker-harness-filters';\nimport { SkyLookupShowMorePickerSearchResultHarness } from './lookup-show-more-picker-search-result-harness';\nimport { SkyLookupShowMorePickerSearchResultHarnessFilters } from './lookup-show-more-picker-search-result-harness-filters';\n\n/**\n * Harness for interacting with a lookup's \"Show more\" picker in tests.\n */\nexport class SkyLookupShowMorePickerHarness extends SkySelectionModalHarness {\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkyLookupShowMorePickerHarness` that meets certain criteria.\n   */\n  public static with(\n    filters: SkyLookupShowMorePickerHarnessFilters,\n  ): HarnessPredicate<SkyLookupShowMorePickerHarness> {\n    return new HarnessPredicate(SkyLookupShowMorePickerHarness, filters);\n  }\n\n  /**\n   * Selects multiple search results based on a set of criteria.\n   */\n  public override async selectSearchResult(\n    filters?: SkyLookupShowMorePickerSearchResultHarnessFilters,\n  ): Promise<void> {\n    await super.selectSearchResult(filters);\n  }\n\n  /**\n   * Gets a list of search results.\n   */\n  public override async getSearchResults(\n    filters?: SkyLookupShowMorePickerSearchResultHarnessFilters,\n  ): Promise<SkyLookupShowMorePickerSearchResultHarness[]> {\n    return await super.getSearchResults(filters);\n  }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyOverlayHarness } from '@skyux/core/testing';\n\nimport { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';\nimport { SkyAutocompleteInputHarness } from '../autocomplete/autocomplete-input-harness';\n\nimport { SkyLookupHarnessFilters } from './lookup-harness-filters';\nimport { SkyLookupSearchResultHarness } from './lookup-search-result-harness';\nimport { SkyLookupSearchResultHarnessFilters } from './lookup-search-result-harness-filters';\nimport { SkyLookupSelectionHarness } from './lookup-selection-harness';\nimport { SkyLookupSelectionsListHarness } from './lookup-selections-list-harness';\nimport { SkyLookupShowMorePickerHarness } from './lookup-show-more-picker-harness';\n\n/**\n * Harness for interacting with a lookup component in tests.\n */\nexport class SkyLookupHarness extends SkyAutocompleteHarness {\n  /**\n   * Finds a standard lookup component, or a lookup component that is wrapped by an input box component.\n   * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-lookup`\n   * element is removed from the DOM.\n   * @internal\n   */\n  public static override hostSelector = 'sky-lookup,.sky-input-box';\n\n  #documentRootLocator = this.documentRootLocatorFactory();\n\n  #getAutocompleteHarness = this.locatorFor(SkyAutocompleteHarness);\n\n  #getInput = this.locatorFor(SkyAutocompleteInputHarness);\n\n  #getSelectionsListHarness = this.locatorFor(SkyLookupSelectionsListHarness);\n\n  #getWrapper = this.locatorFor('.sky-lookup');\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a\n   * `SkyLookupHarness` that meets certain criteria.\n   *\n   * These filters only work for standalone lookups. For lookups\n   * wrapped inside `sky-input-box`, place filters on the input box\n   * instead and query the datepicker using a `SkyInputBoxHarness`.\n   * For the input box implementation, see the code example.\n   */\n  public static override with(\n    filters: SkyLookupHarnessFilters,\n  ): HarnessPredicate<SkyLookupHarness> {\n    return SkyLookupHarness.getDataSkyIdPredicate(filters);\n  }\n\n  /**\n   * Blurs the lookup input.\n   * @deprecated Call `await (await lookup.getControl()).blur()` instead.\n   */\n  public override async blur(): Promise<void> {\n    await (await super.getControl()).blur();\n  }\n\n  /**\n   * Clears the lookup input value.\n   * @deprecated Call `await (await lookup.getControl()).clear()` instead.\n   */\n  public override async clear(): Promise<void> {\n    await (await super.getControl()).clear();\n  }\n\n  /**\n   * Clicks the \"Add\" button on the search results panel.\n   */\n  public override async clickAddButton(): Promise<void> {\n    await (await super.getControl()).focus();\n    await super.clickAddButton();\n  }\n\n  /**\n   * Clicks the \"Show more\" button on the search results panel.\n   */\n  public override async clickShowMoreButton(): Promise<void> {\n    await (await super.getControl()).focus();\n    await super.clickShowMoreButton();\n  }\n\n  /**\n   * Dismisses the selections made with a multiselect lookup.\n   */\n  public async dismissSelections(): Promise<void> {\n    await (await this.#getSelectionsListHarness()).dismissSelections();\n  }\n\n  /**\n   * Enters text into the lookup input.\n   * @deprecated Call `await (await lookup.getControl()).setValue()` instead.\n   */\n  public override async enterText(value: string): Promise<void> {\n    await (await super.getControl()).setValue(value);\n  }\n\n  /**\n   * Focuses the lookup input.\n   * @deprecated Call `await (await lookup.getControl()).focus()` instead.\n   */\n  public override async focus(): Promise<void> {\n    await (await super.getControl()).focus();\n  }\n\n  /**\n   * Gets the lookup `aria-labelledby` value.\n   * @deprecated Don't use this property. It returns a value from a deprecated input that lookup no longer uses.\n   */\n  public override async getAriaLabelledby(): Promise<string | null> {\n    return await super.getAriaLabelledby();\n  }\n\n  /**\n   * Gets a specific lookup search result based on the filter criteria.\n   * @param filters The filter criteria.\n   */\n  public override async getSearchResult(\n    filters: SkyLookupSearchResultHarnessFilters,\n  ): Promise<SkyLookupSearchResultHarness> {\n    const overlay = await this.#getOverlay();\n    if (!overlay) {\n      throw new Error(\n        'Unable to retrieve search result. The lookup is closed.',\n      );\n    }\n    return await overlay.queryHarness(\n      SkyLookupSearchResultHarness.with(filters),\n    );\n  }\n\n  /**\n   * Gets an array of lookup search results based on the filter criteria.\n   * If no filter is provided, returns all lookup search results.\n   * @param filters The optional filter criteria.\n   */\n  public override async getSearchResults(\n    filters?: SkyLookupSearchResultHarnessFilters,\n  ): Promise<SkyLookupSearchResultHarness[]> {\n    const overlay = await this.#getOverlay();\n\n    if (!overlay) {\n      throw new Error(\n        'Unable to retrieve search results. The lookup is closed.',\n      );\n    }\n\n    return await overlay.queryHarnesses(\n      SkyLookupSearchResultHarness.with(filters || {}),\n    );\n  }\n\n  /**\n   * Returns the text content for each lookup search result.\n   */\n  public override async getSearchResultsText(\n    filters?: SkyLookupSearchResultHarnessFilters,\n  ): Promise<string[]> {\n    const harnesses = await this.getSearchResults(filters);\n\n    const text: string[] = [];\n    for (const harness of harnesses) {\n      text.push(await harness.getText());\n    }\n\n    return text;\n  }\n\n  /**\n   * Gets the \"Show more\" picker harness.\n   */\n  public async getShowMorePicker(): Promise<SkyLookupShowMorePickerHarness> {\n    const pickerId = await (\n      await (await this.#getAutocompleteHarness()).host()\n    ).getAttribute('data-sky-lookup-show-more-picker-id');\n\n    const defaultPicker = await this.#documentRootLocator.locatorForOptional(\n      SkyLookupShowMorePickerHarness.with({ selector: `#${pickerId}` }),\n    )();\n\n    if (!defaultPicker) {\n      throw new Error(\n        'Cannot get the \"Show more\" picker because it is not open.',\n      );\n    }\n\n    return defaultPicker;\n  }\n\n  /**\n   * Gets a list of selections made with a multiselect lookup.\n   */\n  public async getSelections(): Promise<SkyLookupSelectionHarness[]> {\n    return await (await this.#getSelectionsListHarness()).getSelections();\n  }\n\n  /**\n   * Gets the text content of all selections made with a multiselect lookup.\n   */\n  public async getSelectionsText(): Promise<string[]> {\n    return await (await this.#getSelectionsListHarness()).getSelectionsText();\n  }\n\n  /**\n   * Gets the value of the lookup input.\n   * @deprecated Call `await (await lookup.getControl()).getValue()` instead.\n   */\n  public override async getValue(): Promise<string> {\n    return await (await super.getControl()).getValue();\n  }\n\n  /**\n   * Whether the lookup input is disabled.\n   * @deprecated Call `await (await lookup.getControl()).isDisabled()` instead.\n   */\n  public override async isDisabled(): Promise<boolean> {\n    return await (await super.getControl()).isDisabled();\n  }\n\n  /**\n   * Whether the lookup input is focused.\n   * @deprecated Call `await (await lookup.getControl()).isFocused()` instead.\n   */\n  public override async isFocused(): Promise<boolean> {\n    return await (await super.getControl()).isFocused();\n  }\n\n  /**\n   * Whether the lookup allows for multiple selections.\n   */\n  public async isMultiselect(): Promise<boolean> {\n    return !(await (await this.#getWrapper()).hasClass('sky-lookup-single'));\n  }\n\n  /**\n   * Whether the lookup is open.\n   */\n  public override async isOpen(): Promise<boolean> {\n    return await super.isOpen();\n  }\n\n  /**\n   * Selects a search result.\n   */\n  public override async selectSearchResult(\n    filters: SkyLookupSearchResultHarnessFilters,\n  ): Promise<void> {\n    await super.selectSearchResult(filters);\n  }\n\n  async #getOverlay(): Promise<SkyOverlayHarness | null> {\n    const overlayId = await (await this.#getInput()).getAriaControls();\n\n    return overlayId\n      ? await this.#documentRootLocator.locatorForOptional(\n          SkyOverlayHarness.with({ selector: `#${overlayId}` }),\n        )()\n      : null;\n  }\n}\n","import { SkyTokenHarness } from '@skyux/indicators/testing';\n\n/**\n * Harness for interacting with a multiselect lookup selection in tests.\n */\nexport class SkyLookupSelectionHarness extends SkyTokenHarness {}\n","import { SkyRepeaterItemHarness } from '@skyux/lists/testing';\n\n/**\n * Harness for interacting with a selection modal's search results in tests.\n */\nexport class SkySelectionModalSearchResultHarness extends SkyRepeaterItemHarness {}\n","import { SkySelectionModalSearchResultHarness } from '../selection-modal/selection-modal-search-result-harness';\n\n/**\n * Harness for interacting with a lookup's \"Show more\" picker search results in tests.\n */\nexport class SkyLookupShowMorePickerSearchResultHarness extends SkySelectionModalSearchResultHarness {}\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 search component.\n * @deprecated Use `SkySearchHarness` instead.\n * @internal\n */\nexport class SkySearchFixture {\n  /**\n   * Gets the search's current text.\n   */\n  public get searchText(): string {\n    return this.#getInputEl().nativeElement.value;\n  }\n\n  /**\n   * Gets the search's current placeholder text.\n   */\n  public get placeholderText(): string {\n    return this.#getInputEl().nativeElement.placeholder;\n  }\n\n  #debugEl: DebugElement;\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n    this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n      fixture,\n      skyTestId,\n      'sky-search',\n    );\n  }\n\n  /**\n   * Applies the specified search text, invoking the search.\n   * @param searchText The search text to apply.  If none is specified, the search's\n   * current search text will be applied.\n   */\n  public apply(searchText?: string): void {\n    if (searchText) {\n      SkyAppTestUtility.setInputValue(\n        this.#getInputEl().nativeElement,\n        searchText,\n      );\n    }\n\n    const btnEl = this.#getApplyBtnEl();\n\n    btnEl.triggerEventHandler('click', {});\n  }\n\n  /**\n   * Clears the current search text. If there is no search text or the search text is\n   * not currently applied, an error is thrown.\n   */\n  public clear(): void {\n    const clearEl = this.#debugEl.query(By.css('.sky-input-group-clear'));\n\n    if (!SkyAppTestUtility.isVisible(clearEl)) {\n      throw new Error(\n        'There currently is no search text or the current search text has not been applied, ' +\n          'so the clear button is not visible.',\n      );\n    }\n\n    const btnEl = this.#getClearBtnEl();\n\n    btnEl.triggerEventHandler('click', {});\n  }\n\n  #getApplyBtnEl(): DebugElement {\n    return this.#debugEl.query(By.css('.sky-search-btn-apply'));\n  }\n\n  #getClearBtnEl(): DebugElement {\n    return this.#debugEl.query(By.css('.sky-search-btn-clear'));\n  }\n\n  #getInputEl(): DebugElement {\n    return this.#debugEl.query(By.css('.sky-search-input'));\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { provideNoopSkyAnimations } from '@skyux/core';\nimport { SkySearchModule } from '@skyux/lookup';\n\n/**\n * @internal\n */\n@NgModule({\n  exports: [SkySearchModule],\n  providers: [provideNoopSkyAnimations()],\n})\nexport class SkySearchTestingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}