{"version":3,"file":"skyux-lookup.mjs","sources":["../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-resources.module.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-input.directive.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/shared/sky-lookup-string-utils.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-default-search-function.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/types/autocomplete-message-type.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.ts","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.component.html","../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete.module.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/clone-country-data.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/types/country-field-context-token.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.ts","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.html","../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.module.ts","../../../../../libs/components/lookup/src/lib/modules/search/search-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.ts","../../../../../libs/components/lookup/src/lib/modules/search/search.component.html","../../../../../libs/components/lookup/src/lib/modules/search/search.module.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal-item-selected.pipe.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/types/selection-modal-context.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/selection-modal/types/selection-modal-instance.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-autocomplete-adapter.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-native-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-show-more-modal.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.html","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.module.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-select-mode.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/types/lookup-show-more-custom-picker-context.ts","../../../../../libs/components/lookup/src/lib/modules/selection-modal/selection-modal.module.ts","../../../../../libs/components/lookup/src/skyux-lookup.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-lookup' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n  SkyI18nModule,\n  SkyLibResources,\n  SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n  'EN-US': {\n    skyux_autocomplete_add: { message: 'New' },\n    skyux_autocomplete_multiple_results: { message: '{0} results available.' },\n    skyux_autocomplete_no_results: { message: 'No matches found' },\n    skyux_autocomplete_one_result: { message: 'One result available.' },\n    skyux_autocomplete_show_all: { message: 'Show all' },\n    skyux_autocomplete_show_all_count: { message: 'Show all {0}' },\n    skyux_autocomplete_show_matches_count: { message: 'Show matches ({0})' },\n    skyux_country_field_dropdown_hint_text: {\n      message: 'Type to search for a country',\n    },\n    skyux_country_field_search_placeholder: { message: 'Search for a country' },\n    skyux_lookup_search_button_show_more: {\n      message: 'Show all search results',\n    },\n    skyux_lookup_show_more_add: { message: 'New' },\n    skyux_lookup_show_more_add_button_aria_label: { message: 'Add {0}' },\n    skyux_lookup_show_more_displayed_items_updated: {\n      message: 'Showing {1} items, with {0} selected.',\n    },\n    skyux_lookup_show_more_select_all_button_aria_label: {\n      message: 'Select all {0}',\n    },\n    skyux_lookup_show_more_select_all_button_title: { message: 'Select all' },\n    skyux_lookup_show_more_clear_all_button_aria_label: {\n      message: 'Clear all selected {0}',\n    },\n    skyux_lookup_show_more_clear_all_button_title: { message: 'Clear all' },\n    skyux_lookup_show_more_show_selected_option_title: {\n      message: 'Show only selected {0}',\n    },\n    skyux_lookup_show_more_cancel: { message: 'Cancel' },\n    skyux_lookup_show_more_modal_title: { message: 'Select {0}' },\n    skyux_lookup_show_more_no_results: { message: 'No matches found' },\n    skyux_lookup_show_more_select: { message: 'Select' },\n    skyux_lookup_show_more_select_context: { message: 'Select {0}' },\n    skyux_lookup_tokens_summary: { message: '{0} items selected' },\n    skyux_search_aria_label_descriptor: { message: 'Search {0}' },\n    skyux_search_dismiss: { message: 'Dismiss search' },\n    skyux_search_label: { message: 'Search items' },\n    skyux_search_open: { message: 'Open search' },\n    skyux_search_placeholder: { message: 'Find in this list' },\n  },\n  'FR-CA': {\n    skyux_autocomplete_add: { message: 'Nouveau' },\n    skyux_autocomplete_multiple_results: {\n      message: '{0} résultats disponibles.',\n    },\n    skyux_autocomplete_no_results: { message: 'Aucune correspondance trouvée' },\n    skyux_autocomplete_one_result: { message: 'Un résultat disponible.' },\n    skyux_autocomplete_show_all: { message: 'Afficher tout' },\n    skyux_autocomplete_show_all_count: { message: 'Afficher tout {0}' },\n    skyux_autocomplete_show_matches_count: {\n      message: 'Afficher les correspondances ({0})',\n    },\n    skyux_country_field_dropdown_hint_text: { message: 'Recherchez un pays' },\n    skyux_country_field_search_placeholder: { message: 'Rechercher un pays' },\n    skyux_lookup_search_button_show_more: {\n      message: 'Afficher tous les résultats de la recherche',\n    },\n    skyux_lookup_show_more_add: { message: 'Nouveau' },\n    skyux_lookup_show_more_add_button_aria_label: { message: 'Ajouter {0}' },\n    skyux_lookup_show_more_displayed_items_updated: {\n      message: '{1} éléments affichés, avec {0} sélectionné(s).',\n    },\n    skyux_lookup_show_more_select_all_button_aria_label: {\n      message: 'Sélectionner tout {0}',\n    },\n    skyux_lookup_show_more_select_all_button_title: {\n      message: 'Sélectionner tout',\n    },\n    skyux_lookup_show_more_clear_all_button_aria_label: {\n      message: 'Supprimer tous les éléments sélectionnés {0}',\n    },\n    skyux_lookup_show_more_clear_all_button_title: { message: 'Effacer tout' },\n    skyux_lookup_show_more_show_selected_option_title: {\n      message: 'Montrer seulement ce qui est sélectionné {0}',\n    },\n    skyux_lookup_show_more_cancel: { message: 'Annuler' },\n    skyux_lookup_show_more_modal_title: { message: 'Sélectionner {0}' },\n    skyux_lookup_show_more_no_results: {\n      message: 'Aucune correspondance trouvée',\n    },\n    skyux_lookup_show_more_select: { message: 'Sélectionner' },\n    skyux_lookup_show_more_select_context: { message: 'Sélectionner {0}' },\n    skyux_lookup_tokens_summary: { message: '{0} articles sélectionnés' },\n    skyux_search_aria_label_descriptor: { message: 'Rechercher {0}' },\n    skyux_search_dismiss: { message: 'Omettre la recherche' },\n    skyux_search_label: { message: 'Rechercher des articles' },\n    skyux_search_open: { message: 'Ouvrir la recherche' },\n    skyux_search_placeholder: { message: 'Trouver dans cette liste' },\n  },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n  exports: [SkyI18nModule],\n})\nexport class SkyLookupResourcesModule {}\n","import {\n  Directive,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputTextChange } from './types/autocomplete-input-text-change';\n\nconst SKY_AUTOCOMPLETE_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n  multi: true,\n};\n\nconst SKY_AUTOCOMPLETE_VALIDATOR = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => SkyAutocompleteInputDirective),\n  multi: true,\n};\n\n@Directive({\n  selector: 'input[skyAutocomplete], textarea[skyAutocomplete]',\n  providers: [SKY_AUTOCOMPLETE_VALUE_ACCESSOR, SKY_AUTOCOMPLETE_VALIDATOR],\n  standalone: false,\n})\nexport class SkyAutocompleteInputDirective\n  implements OnInit, OnDestroy, ControlValueAccessor, Validator\n{\n  /**\n   * The value for the `autocomplete` attribute on the form input.\n   * @default \"off\"\n   * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n   */\n  @Input()\n  public set autocompleteAttribute(value: string | undefined) {\n    if (!value) {\n      this.#_autocompleteAttribute = 'off';\n    } else {\n      this.#_autocompleteAttribute = value;\n    }\n\n    this.#renderer.setAttribute(\n      this.#elementRef.nativeElement,\n      'autocomplete',\n      this.#_autocompleteAttribute,\n    );\n  }\n\n  public get autocompleteAttribute(): string {\n    return this.#_autocompleteAttribute || 'off';\n  }\n\n  /**\n   * Whether to disable the autocomplete field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   * @default false\n   */\n  @Input()\n  public set disabled(value: boolean | undefined) {\n    this.#_disabled = value ?? false;\n    this.#renderer.setProperty(\n      this.#elementRef.nativeElement,\n      'disabled',\n      value,\n    );\n  }\n\n  public get disabled(): boolean {\n    return this.#_disabled;\n  }\n\n  public get blur(): Observable<void> {\n    return this.#blurObs;\n  }\n\n  public get displayWith(): string {\n    return this.#_displayWith;\n  }\n\n  public set displayWith(value: string) {\n    this.#_displayWith = value;\n    this.inputTextValue = this.#getValueByKey();\n  }\n\n  public get focus(): Observable<void> {\n    return this.#focusObs;\n  }\n\n  public get inputTextValue(): string {\n    return this.#elementRef.nativeElement.value;\n  }\n\n  public set inputTextValue(value: string) {\n    this.#elementRef.nativeElement.value = value || '';\n  }\n\n  public get textChanges(): Observable<SkyAutocompleteInputTextChange> {\n    return this.#textChangesObs;\n  }\n\n  public get value(): any {\n    return this.#_value;\n  }\n\n  public set value(value: any) {\n    const isNewValue = value !== this.#_value;\n\n    /* istanbul ignore else */\n    if (isNewValue) {\n      this.#_value = value;\n      this.inputTextValue = this.#getValueByKey();\n      this.onChange(this.#_value);\n\n      // Do not mark the field as \"dirty\"\n      // if the field has been initialized with a value.\n      if (this.#isFirstChange && this.#control) {\n        this.#control.markAsPristine();\n      }\n\n      if (this.#isFirstChange && this.#_value) {\n        this.#isFirstChange = false;\n      }\n    }\n  }\n\n  #blur: Subject<void>;\n\n  #blurObs: Observable<void>;\n\n  #control: AbstractControl | undefined;\n\n  readonly #elementRef = inject(ElementRef);\n\n  #focus: Subject<void>;\n\n  #focusObs: Observable<void>;\n\n  #isFirstChange = true;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  readonly #renderer = inject(Renderer2);\n\n  #textChanges: Subject<SkyAutocompleteInputTextChange>;\n\n  #textChangesObs: Observable<SkyAutocompleteInputTextChange>;\n\n  #_autocompleteAttribute: string | undefined;\n\n  #_disabled = false;\n\n  #_displayWith = '';\n\n  #_value: any;\n\n  constructor() {\n    this.#blur = new Subject<void>();\n    this.#focus = new Subject<void>();\n    this.#textChanges = new Subject<SkyAutocompleteInputTextChange>();\n\n    this.#blurObs = this.#blur.asObservable();\n    this.#focusObs = this.#focus.asObservable();\n    this.#textChangesObs = this.#textChanges.asObservable();\n  }\n\n  public ngOnInit(): void {\n    const element = this.#elementRef.nativeElement;\n\n    this.#setAttributes(this.#elementRef);\n\n    observableFromEvent(element, 'input')\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        if (!this.disabled) {\n          this.#textChanges.next({\n            value: this.#elementRef.nativeElement.value,\n          });\n        }\n      });\n\n    observableFromEvent(element, 'blur')\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        if (!this.disabled) {\n          this.#blur.next();\n        }\n      });\n\n    observableFromEvent(element, 'focus')\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        if (!this.disabled) {\n          this.#focus.next();\n        }\n      });\n\n    observableFromEvent(element, 'change')\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        /* istanbul ignore else */\n        if (!this.disabled) {\n          this.#isFirstChange = false;\n        }\n      });\n  }\n\n  public ngOnDestroy(): void {\n    this.#blur.complete();\n    this.#textChanges.complete();\n\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public writeValue(value: any): void {\n    this.value = value;\n  }\n\n  public registerOnChange(fn: (value: any) => void): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  public registerOnValidatorChange(fn: () => void): void {\n    this.onValidatorChange = fn;\n  }\n\n  public restoreInputTextValueToPreviousState(): void {\n    const modelValue = this.#getValueByKey();\n\n    // If the search field contains text, make sure that the value\n    // matches the selected descriptor key.\n    if (this.inputTextValue !== modelValue) {\n      this.inputTextValue = modelValue;\n    }\n\n    this.onTouched();\n  }\n\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    if (!this.#control) {\n      this.#control = control;\n    }\n    return null;\n  }\n\n  // See: https://www.w3.org/TR/wai-aria-practices/#kbd_focus_activedescendant\n  public setActiveDescendant(descendantId: string | null): void {\n    if (descendantId) {\n      this.#renderer.setAttribute(\n        this.#elementRef.nativeElement,\n        'aria-activedescendant',\n        descendantId,\n      );\n    } else {\n      this.#renderer.removeAttribute(\n        this.#elementRef.nativeElement,\n        'aria-activedescendant',\n      );\n    }\n  }\n\n  /**\n   * Used to connect the input to the overlay.\n   */\n  public setAriaControls(overlayId: string | null): void {\n    if (overlayId) {\n      this.#renderer.setAttribute(\n        this.#elementRef.nativeElement,\n        'aria-controls',\n        overlayId,\n      );\n    } else {\n      this.#renderer.removeAttribute(\n        this.#elementRef.nativeElement,\n        'aria-controls',\n      );\n    }\n  }\n\n  // Angular automatically constructs these methods.\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  public onChange(value: any): void {}\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  public onTouched(): void {}\n  // istanbul ignore next\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  public onValidatorChange = (): void => {};\n\n  #setAttributes(elementRef: ElementRef): void {\n    const element = elementRef.nativeElement;\n\n    this.#renderer.setAttribute(\n      element,\n      'autocomplete',\n      this.autocompleteAttribute,\n    );\n    this.#renderer.setAttribute(element, 'autocapitalize', 'none');\n    this.#renderer.setAttribute(element, 'autocorrect', 'off');\n    this.#renderer.setAttribute(element, 'spellcheck', 'false');\n    this.#renderer.addClass(element, 'sky-form-control');\n  }\n\n  #getValueByKey(): string {\n    return this.value ? this.value[this.displayWith] : '';\n  }\n}\n","import { EventEmitter, Pipe, PipeTransform } from '@angular/core';\n\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'skyAutocompleteSearchAsyncDisabled',\n  standalone: false,\n})\nexport class SkyAutocompleteSearchAsyncDisabledPipe implements PipeTransform {\n  public transform(\n    searchAsync: EventEmitter<SkyAutocompleteSearchAsyncArgs>,\n    searchAsyncDisabled: boolean | undefined,\n  ): boolean {\n    return searchAsyncDisabled || searchAsync.observers.length === 0;\n  }\n}\n","/**\n * Removes diacritical characters from strings and replaces them with their normalized equivalent.\n * For example: è becomes e, Å becomes A.\n */\nexport function normalizeDiacritics(value: string): string {\n  return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n","import {\n  ElementRef,\n  Injectable,\n  Renderer2,\n  RendererFactory2,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyOverlayInstance } from '@skyux/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyAutocompleteAdapterService {\n  #coreAdapterService: SkyCoreAdapterService;\n\n  #renderer: Renderer2;\n\n  constructor(\n    coreAdapterService: SkyCoreAdapterService,\n    rendererFactory: RendererFactory2,\n  ) {\n    this.#coreAdapterService = coreAdapterService;\n    this.#renderer = rendererFactory.createRenderer(undefined, null);\n  }\n\n  /**\n   * Adds the className for the provided element.\n   */\n  public addCSSClass(element: HTMLElement, className: string): void {\n    /* Sanity check */\n    /* istanbul ignore else */\n    if (element) {\n      this.#renderer.addClass(element, className);\n    }\n  }\n\n  public getOverlayFocusableElements(\n    overlay: SkyOverlayInstance,\n  ): HTMLElement[] {\n    return this.#coreAdapterService.getFocusableChildren(\n      /* Sanity check - calling function also has null check */\n      /* istanbul ignore next */\n      overlay?.componentRef.location.nativeElement,\n      { ignoreTabIndex: true },\n    );\n  }\n\n  /**\n   * Removes the className for the provided element.\n   */\n  public removeCSSClass(element: HTMLElement, className: string): void {\n    /* Sanity check */\n    /* istanbul ignore else */\n    if (element) {\n      this.#renderer.removeClass(element, className);\n    }\n  }\n\n  public setDropdownWidth(\n    elementRef: ElementRef,\n    dropdownRef: ElementRef,\n    isInputBox: boolean,\n  ): void {\n    // `setTimeout` ensures that the input box size is correct when grabbing the width. When the input is initially focused a parent's `overflow-y: auto` value can cause the width to be incorrect during initial rendering.\n    setTimeout(() => {\n      const parentElement = isInputBox\n        ? elementRef.nativeElement.closest('.sky-input-box')\n        : elementRef.nativeElement;\n      if (parentElement) {\n        const width = parentElement.getBoundingClientRect().width;\n        this.#renderer.setStyle(\n          dropdownRef.nativeElement,\n          'width',\n          `${width}px`,\n        );\n      }\n    });\n  }\n\n  /**\n   * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n   */\n  public setTabIndex(element: HTMLElement, tabIndex: number): void {\n    element.tabIndex = tabIndex;\n  }\n}\n","import { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteDefaultSearchFunctionOptions } from './types/autocomplete-default-search-function-options';\nimport { SkyAutocompleteSearchArgs } from './types/autocomplete-search-args';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSearchFunctionResponse } from './types/autocomplete-search-function-response';\n\nexport function skyAutocompleteDefaultSearchFunction(\n  options: SkyAutocompleteDefaultSearchFunctionOptions,\n): SkyAutocompleteSearchFunction {\n  const filterData = function (\n    searchText: string,\n    data: any[],\n    args?: SkyAutocompleteSearchArgs,\n  ): any[] {\n    return data.filter((item: any) => {\n      if (!options.searchFilters || !options.searchFilters.length) {\n        return true;\n      }\n\n      // Find the first failing filter (we can skip the others if one fails).\n      const failedFilter = options.searchFilters.find(\n        (filter: SkyAutocompleteSearchFunctionFilter) => {\n          return !filter.call({}, searchText, item, args);\n        },\n      );\n\n      return failedFilter === undefined;\n    });\n  };\n\n  const search = function (\n    searchText: string,\n    data: any[],\n    args?: SkyAutocompleteSearchArgs,\n  ): SkyAutocompleteSearchFunctionResponse {\n    const results: any[] = [];\n\n    const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n\n    const filteredData = filterData(searchText, data, args);\n\n    /* Autocomplete can now send empty text, return all filtered data in that scenario */\n    if (searchText === '') {\n      return filteredData;\n    }\n\n    for (let i = 0, n = filteredData.length; i < n; i++) {\n      const result = filteredData[i];\n      const isMatch = options.propertiesToSearch.find((property: string) => {\n        let value = (result[property] || '').toString();\n        value = normalizeDiacritics(value).toUpperCase();\n        return value.indexOf(searchTextNormalized) > -1;\n      });\n\n      if (isMatch) {\n        results.push(result);\n      }\n    }\n\n    return results;\n  };\n\n  return search;\n}\n","/**\n * @internal\n */\nexport enum SkyAutocompleteMessageType {\n  /**\n   * Closes the dropdown.\n   */\n  CloseDropdown = 0,\n\n  /**\n   * Repositions the dropdown.\n   */\n  RepositionDropdown = 1,\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EnvironmentInjector,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  TemplateRef,\n  ViewChild,\n  booleanAttribute,\n  inject,\n  input,\n} from '@angular/core';\nimport {\n  SKY_STACKING_CONTEXT,\n  SkyAffixAutoFitContext,\n  SkyAffixService,\n  SkyAffixer,\n  SkyLiveAnnouncerService,\n  SkyOverlayInstance,\n  SkyOverlayService,\n  SkyStackingContext,\n} from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport {\n  BehaviorSubject,\n  Observable,\n  Subject,\n  Subscription,\n  from,\n  fromEvent as observableFromEvent,\n  of,\n} from 'rxjs';\nimport {\n  debounceTime,\n  delay,\n  map,\n  startWith,\n  switchMap,\n  take,\n  takeUntil,\n} from 'rxjs/operators';\n\nimport { normalizeDiacritics } from '../shared/sky-lookup-string-utils';\n\nimport { SkyAutocompleteAdapterService } from './autocomplete-adapter.service';\nimport { skyAutocompleteDefaultSearchFunction } from './autocomplete-default-search-function';\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from './types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from './types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from './types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchAsyncResult } from './types/autocomplete-search-async-result';\nimport { SkyAutocompleteSearchFunction } from './types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from './types/autocomplete-search-function-filter';\nimport { SkyAutocompleteSelectionChange } from './types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from './types/autocomplete-show-more-args';\n\n/**\n * @internal\n */\ninterface SkyAutocompleteSearchResult {\n  elementId: string;\n  data: any;\n}\n\nlet uniqueId = 0;\n\n@Component({\n  selector: 'sky-autocomplete',\n  templateUrl: './autocomplete.component.html',\n  styleUrls: ['./autocomplete.component.scss'],\n  providers: [SkyAutocompleteAdapterService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyAutocompleteComponent implements OnDestroy, AfterViewInit {\n  //#region public_api\n\n  /**\n   * The HTML element ID of the element that labels\n   * the autocomplete text input. This sets the input's `aria-labelledby` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n   */\n  @Input()\n  public ariaLabelledBy: string | undefined;\n  /**\n   * The static data source for the autocomplete component to search\n   * when users enter text. For a dynamic data source, such as an array that\n   * changes due to server calls, use `search` or `searchAsync` instead.\n   * You can specify static data, such as an array of objects,\n   * or you can pull data from a database.\n   */\n  @Input()\n  public set data(value: any[] | undefined) {\n    this.#_data = value ?? [];\n  }\n\n  public get data(): any[] {\n    return this.#_data;\n  }\n\n  /**\n   * How many milliseconds to wait before searching while users\n   * enter text in the autocomplete field.\n   * @default 0\n   */\n  @Input()\n  public set debounceTime(value: number | undefined) {\n    this.#_debounceTime = value ?? 0;\n  }\n\n  public get debounceTime(): number {\n    return this.#_debounceTime;\n  }\n\n  /**\n   * The object property to display in the text input after users\n   * select an item in the dropdown list.\n   * @default \"name\"\n   */\n  @Input()\n  public set descriptorProperty(value: string | undefined) {\n    this.#_descriptorProperty = value || 'name';\n  }\n\n  public get descriptorProperty(): string {\n    return this.#_descriptorProperty;\n  }\n\n  /**\n   * Hint text to show in the dropdown\n   * @internal\n   */\n  @Input()\n  public dropdownHintText: string | undefined;\n\n  /**\n   * @internal\n   * Whether to display a button in the dropdown that opens a picker where users can view all options.\n   */\n  @Input()\n  public set enableShowMore(value: boolean | undefined) {\n    this.#_enableShowMore = !!value;\n    this.#updateIsResultsVisible();\n  }\n  public get enableShowMore(): boolean {\n    return this.#_enableShowMore;\n  }\n\n  /**\n   * The observable of `SkyAutocompleteMessage` that can close the dropdown.\n   * @internal\n   */\n  @Input()\n  public set messageStream(value: Subject<SkyAutocompleteMessage> | undefined) {\n    this.#_messageStream = value ?? new Subject<SkyAutocompleteMessage>();\n    this.#initMessageStream();\n  }\n\n  public get messageStream(): Subject<SkyAutocompleteMessage> {\n    return this.#_messageStream;\n  }\n\n  /**\n   * @internal\n   */\n  @Input()\n  public wrapperClass: string | undefined;\n\n  /**\n   * The object properties to search.\n   * @default [\"name\"]\n   * @deprecated We recommend against using this property. To search specific properties, use the `searchAsync` event instead.\n   */\n  @Input()\n  public set propertiesToSearch(value: string[] | undefined) {\n    this.#_propertiesToSearch = value ?? ['name'];\n\n    this.#updateDefaultSearchOptions();\n  }\n\n  public get propertiesToSearch(): string[] {\n    return this.#_propertiesToSearch;\n  }\n\n  /**\n   * The function that dynamically manages the data to display in search results when users\n   * change the text in the autocomplete field. The search function must return\n   * an array or a promise of an array. The `search` property is particularly\n   * useful when the data source does not live in the source code.\n   * @deprecated We recommend against using this property. To call a remote data source, use the `searchAsync` event instead.\n   */\n  @Input()\n  public set search(value: SkyAutocompleteSearchFunction | undefined) {\n    this.#_search = value;\n    this.searchOrDefault =\n      value ||\n      skyAutocompleteDefaultSearchFunction({\n        propertiesToSearch: this.propertiesToSearch,\n        searchFilters: this.searchFilters,\n      });\n  }\n\n  public get search(): SkyAutocompleteSearchFunction | undefined {\n    return this.#_search;\n  }\n\n  /**\n   * The template that formats each search result in the dropdown list.\n   * The autocomplete component injects search result values into the template\n   * as `item` variables that reference all of the object properties of the search results.\n   */\n  @Input()\n  public searchResultTemplate: TemplateRef<unknown> | undefined;\n\n  /**\n   * The minimum number of characters that users must enter before\n   * the autocomplete component searches the data source and displays search\n   * results in the dropdown list. Can be set to `0` to trigger `searchAsync` on focus\n   * or return all items if using the `data` input.\n   * @default 1\n   */\n  @Input()\n  public set searchTextMinimumCharacters(value: number | undefined) {\n    if (value !== undefined && value >= 0) {\n      this.#_searchTextMinimumCharacters = value;\n    } else {\n      this.#_searchTextMinimumCharacters = 1;\n    }\n  }\n\n  public get searchTextMinimumCharacters(): number {\n    return this.#_searchTextMinimumCharacters;\n  }\n\n  /**\n   * The array of functions to call against each search result. This filters\n   * the search results when using the `data` input and the default search function.\n   *  When the `search` property specifies a custom search function, you must\n   * manually apply filters inside that function. The function must return `true`\n   * or `false` for each result to indicate whether to display it in the dropdown list.\n   *\n   * @deprecated We recommend against using this property. To filter results, use the `searchAsync` event instead.\n   */\n  @Input()\n  public set searchFilters(\n    value: SkyAutocompleteSearchFunctionFilter[] | undefined,\n  ) {\n    this.#_searchFilters = value;\n\n    this.#updateDefaultSearchOptions();\n  }\n\n  public get searchFilters():\n    | SkyAutocompleteSearchFunctionFilter[]\n    | undefined {\n    return this.#_searchFilters;\n  }\n\n  /**\n   * The maximum number of search results to display in the dropdown list.\n   * By default, the component displays all matching results.\n   */\n  @Input()\n  public set searchResultsLimit(value: number | undefined) {\n    this.#_searchResultsLimit = value || 0;\n  }\n\n  public get searchResultsLimit(): number {\n    return this.#_searchResultsLimit;\n  }\n\n  /**\n   * @internal\n   * Whether to display a button that lets users add options to the data source.\n   * @default false\n   */\n  @Input()\n  public set showAddButton(value: boolean | undefined) {\n    this.#_showAddButton = !!value;\n    this.#updateIsResultsVisible();\n  }\n  public get showAddButton(): boolean {\n    return this.#_showAddButton;\n  }\n\n  /**\n   * The text to display when no search results are found.\n   * @default \"No matches found\"\n   */\n  @Input()\n  public noResultsFoundText: string | undefined;\n\n  /**\n   * @internal\n   * Allows async search to be disabled even when a listener is specified for\n   * the `searchAsync` output.\n   * @default false\n   */\n  @Input()\n  public searchAsyncDisabled: boolean | undefined = false;\n\n  /**\n   * When using `searchAsync`, allows the user to specify arbitrary\n   * values not in the search results. This only works in combination\n   * with `searchAsync`.\n   * @default false\n   */\n  public allowAnyValue = input(false, { transform: booleanAttribute });\n\n  /**\n   * Highlights the search text in each search result. Set this to `false`\n   * when your search returns results that aren't exact text matches, such as\n   * returning \"Bob\" for \"Robert.\"\n   * @default true\n   */\n  public highlightSearchText = input(true, { transform: booleanAttribute });\n\n  /**\n   * @internal\n   * Fires when users select the button to add options to the data source.\n   */\n  @Output()\n  public addClick = new EventEmitter<void>();\n\n  /**\n   * @internal\n   * Fires when users select the button to view all options.\n   */\n  @Output()\n  public showMoreClick = new EventEmitter<SkyAutocompleteShowMoreArgs>();\n\n  /**\n   * Fires when users select items in the dropdown list.\n   */\n  @Output()\n  public selectionChange = new EventEmitter<SkyAutocompleteSelectionChange>();\n\n  /**\n   * Fires when users enter new search information and allows results to be\n   * returned via an observable.\n   */\n  @Output()\n  public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n  /**\n   * @internal\n   */\n  @Output()\n  public openChange = new EventEmitter<boolean>();\n\n  //#endregion\n\n  //#region template_properties\n\n  public get searchResults(): SkyAutocompleteSearchResult[] {\n    return this.#_searchResults || [];\n  }\n\n  public set searchResults(value: SkyAutocompleteSearchResult[]) {\n    this.#_searchResults = value;\n  }\n\n  public get highlightText(): string[] {\n    return this.#_highlightText || [];\n  }\n\n  public set highlightText(value: string[]) {\n    this.#_highlightText = value;\n  }\n\n  public isOpen = false;\n\n  public resultsListId: string;\n\n  public resultsWrapperId: string;\n\n  public searchText = '';\n\n  public get showActionsArea(): boolean {\n    return !!this.showAddButton || !!this.enableShowMore;\n  }\n\n  public isSearchingAsync = false;\n\n  public searchResultsCount: number | undefined;\n\n  //#endregion\n\n  @ContentChild(SkyAutocompleteInputDirective)\n  public set inputDirective(\n    directive: SkyAutocompleteInputDirective | undefined,\n  ) {\n    if (!directive) {\n      throw Error(\n        [\n          'The SkyAutocompleteComponent requires a ContentChild input or',\n          'textarea bound with the SkyAutocomplete directive. For example:',\n          '`<input type=\"text\" skyAutocomplete>`.',\n        ].join(' '),\n      );\n    }\n\n    if (this.#_inputDirective !== directive) {\n      // Unsubscribe from old subscriptions on any previous input directive\n      this.#inputDirectiveUnsubscribe.next();\n\n      this.#_inputDirective = directive;\n\n      this.#_inputDirective.displayWith = this.descriptorProperty;\n\n      this.#_inputDirective.textChanges\n        .pipe(\n          takeUntil(this.#inputDirectiveUnsubscribe),\n          debounceTime(this.debounceTime),\n          switchMap((change) => {\n            this.isSearchingAsync = true;\n            return of(change);\n          }),\n        )\n        .subscribe((change) => {\n          this.#searchTextChanged(change.value);\n        });\n\n      // We delay this listener by 25ms to give things watching the value time to respond (such as the search button).\n      this.#_inputDirective.blur\n        .pipe(delay(25), takeUntil(this.#inputDirectiveUnsubscribe))\n        .subscribe(() => {\n          directive.restoreInputTextValueToPreviousState();\n          this.#closeDropdown();\n          this.#cancelCurrentSearch();\n          directive.onTouched();\n          this.#hasFocus = false;\n          this.#liveAnnounceService.clear();\n        });\n\n      this.#_inputDirective.focus\n        .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n        .subscribe(() => {\n          this.#hasFocus = true;\n          if (this.showActionsArea || this.dropdownHintText) {\n            this.#openDropdown();\n          }\n          if (this.searchTextMinimumCharacters === 0) {\n            this.isSearchingAsync = true;\n            this.#searchTextChanged('');\n          }\n        });\n    }\n  }\n\n  public get inputDirective(): SkyAutocompleteInputDirective | undefined {\n    return this.#_inputDirective;\n  }\n\n  @ViewChild('resultsTemplateRef', { read: TemplateRef })\n  public resultsTemplateRef: TemplateRef<unknown> | undefined;\n\n  @ViewChild('resultsRef', { read: ElementRef })\n  public set resultsRef(value: ElementRef | undefined) {\n    if (value) {\n      this.#_resultsRef = value;\n      this.#destroyAffixer();\n      this.#createAffixer();\n    }\n  }\n\n  public get resultsRef(): ElementRef | undefined {\n    return this.#_resultsRef;\n  }\n\n  public searchOrDefault: SkyAutocompleteSearchFunction;\n\n  protected isResultsVisible: Observable<boolean>;\n\n  /**\n   * Index that indicates which descendant of the overlay currently has focus.\n   */\n  #activeElementIndex = -1;\n\n  #adapterService: SkyAutocompleteAdapterService;\n\n  #affixer: SkyAffixer | undefined;\n\n  #affixService: SkyAffixService;\n\n  #changeDetector: ChangeDetectorRef;\n\n  #elementRef: ElementRef;\n\n  readonly #environmentInjector = inject(EnvironmentInjector);\n\n  readonly #liveAnnounceService = inject(SkyLiveAnnouncerService);\n\n  readonly #libResourceService = inject(SkyLibResourcesService);\n\n  #hasFocus = false;\n\n  #inputBoxHostSvc: SkyInputBoxHostService | undefined;\n\n  #inputDirectiveUnsubscribe = new Subject<void>();\n\n  #messageStreamSub: Subscription | undefined;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #overlay: SkyOverlayInstance | undefined;\n\n  #overlayService: SkyOverlayService;\n\n  /**\n   * Elements within the autocomplete dropdown that are focusable.\n   * These are typically the search results and action buttons, but could also be\n   * elements provided in the consumer's own template.\n   */\n  #overlayFocusableElements: HTMLElement[] = [];\n\n  #currentSearchSub: Subscription | undefined;\n\n  #isResultsVisible = new BehaviorSubject<boolean>(false);\n\n  #zIndex: Observable<number> | undefined;\n\n  #_data: any[] = [];\n\n  #_debounceTime = 0;\n\n  #_descriptorProperty = 'name';\n\n  #_enableShowMore = false;\n\n  #_highlightText: string[] | undefined;\n\n  #_inputDirective: SkyAutocompleteInputDirective | undefined;\n\n  #_messageStream = new Subject<SkyAutocompleteMessage>();\n\n  #_propertiesToSearch = ['name'];\n\n  #_resultsRef: ElementRef | undefined;\n\n  #_search: SkyAutocompleteSearchFunction | undefined;\n\n  #_searchFilters: SkyAutocompleteSearchFunctionFilter[] | undefined;\n\n  #_searchResults: SkyAutocompleteSearchResult[] | undefined;\n\n  #_searchResultsLimit = 0;\n\n  #_searchTextMinimumCharacters = 1;\n\n  #_showAddButton = false;\n\n  constructor(\n    changeDetector: ChangeDetectorRef,\n    elementRef: ElementRef,\n    affixService: SkyAffixService,\n    adapterService: SkyAutocompleteAdapterService,\n    overlayService: SkyOverlayService,\n    @Optional() inputBoxHostSvc?: SkyInputBoxHostService,\n    @Optional()\n    @Inject(SKY_STACKING_CONTEXT)\n    stackingContext?: SkyStackingContext,\n  ) {\n    this.#changeDetector = changeDetector;\n    this.#elementRef = elementRef;\n    this.#affixService = affixService;\n    this.#adapterService = adapterService;\n    this.#overlayService = overlayService;\n    this.#inputBoxHostSvc = inputBoxHostSvc;\n    this.#zIndex = stackingContext?.zIndex;\n\n    this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n      propertiesToSearch: ['name'],\n      searchFilters: undefined,\n    });\n\n    const id = ++uniqueId;\n    this.resultsListId = `sky-autocomplete-list-${id}`;\n    this.resultsWrapperId = `sky-autocomplete-wrapper-${id}`;\n    this.isResultsVisible = this.#isResultsVisible.asObservable();\n  }\n\n  public ngAfterViewInit(): void {\n    this.#addInputEventListeners();\n  }\n\n  public ngOnDestroy(): void {\n    this.#cancelCurrentSearch();\n    this.#inputDirectiveUnsubscribe.next();\n    this.#inputDirectiveUnsubscribe.complete();\n    this.#isResultsVisible.complete();\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n    this.#destroyAffixer();\n    this.#destroyOverlay();\n    this.openChange.complete();\n  }\n\n  public addButtonClicked(): void {\n    this.addClick.emit();\n    if (this.inputDirective) {\n      this.inputDirective.restoreInputTextValueToPreviousState();\n    }\n    this.#closeDropdown();\n  }\n\n  public handleKeydown(event: KeyboardEvent): void {\n    /* Sanity check */\n    /* istanbul ignore else */\n    if (event.key) {\n      const key = event.key.toLowerCase();\n      const activeElement = this.#getActiveElement();\n      const activeElementId = activeElement?.id;\n      const targetIsSearchResult = this.searchResults.find(\n        (r) => r.elementId === activeElementId,\n      );\n\n      switch (key) {\n        case 'enter':\n          if (targetIsSearchResult) {\n            this.#selectSearchResultById(activeElementId);\n\n            if (!this.showActionsArea && !this.dropdownHintText) {\n              this.#closeDropdown();\n            } else {\n              this.#resetSearch();\n            }\n          } else {\n            if (activeElement) {\n              activeElement.dispatchEvent(new MouseEvent('click'));\n            }\n          }\n\n          event.preventDefault();\n          event.stopPropagation();\n          break;\n\n        case 'tab':\n          if (targetIsSearchResult) {\n            this.#selectSearchResultById(activeElementId);\n          } else {\n            if (this.inputDirective) {\n              this.inputDirective.restoreInputTextValueToPreviousState();\n            }\n          }\n\n          this.#closeDropdown();\n          break;\n\n        case 'escape':\n          this.#closeDropdown();\n          break;\n\n        case 'arrowdown':\n        case 'down':\n          this.#removeFocusedClass();\n          if (\n            this.#activeElementIndex ===\n              this.#overlayFocusableElements.length - 1 ||\n            this.#activeElementIndex === -1\n          ) {\n            this.#activeElementIndex = 0;\n          } else {\n            this.#activeElementIndex = this.#activeElementIndex + 1;\n          }\n          this.#addFocusedClass();\n          this.#changeDetector.markForCheck();\n          event.preventDefault();\n          event.stopPropagation();\n          break;\n\n        case 'arrowup':\n        case 'up':\n          this.#removeFocusedClass();\n          if (this.#activeElementIndex <= 0) {\n            this.#activeElementIndex =\n              this.#overlayFocusableElements.length - 1;\n          } else {\n            this.#activeElementIndex = this.#activeElementIndex - 1;\n          }\n          this.#addFocusedClass();\n          this.#changeDetector.markForCheck();\n          event.preventDefault();\n          event.stopPropagation();\n          break;\n      }\n    }\n  }\n\n  #announceResults(): void {\n    this.#libResourceService\n      .getStrings({\n        noResults: 'skyux_autocomplete_no_results',\n        singleCountResult: 'skyux_autocomplete_one_result',\n        multipleCountResults: [\n          'skyux_autocomplete_multiple_results',\n          this.searchResultsCount,\n        ],\n      })\n      .pipe(take(1))\n      .subscribe((localizedStrings) => {\n        let announcementString = '';\n        if (this.searchResultsCount && this.searchResultsCount > 0) {\n          announcementString =\n            this.searchResultsCount === 1\n              ? localizedStrings.singleCountResult\n              : localizedStrings.multipleCountResults;\n          this.#liveAnnounceService.announce(announcementString);\n        } else if (this.searchResultsCount === 0) {\n          this.#liveAnnounceService.announce(localizedStrings.noResults);\n        }\n      });\n  }\n\n  public moreButtonClicked(): void {\n    this.showMoreClick.emit({ inputValue: this.searchText });\n    if (this.inputDirective) {\n      this.inputDirective.restoreInputTextValueToPreviousState();\n    }\n    this.#closeDropdown();\n  }\n\n  public onResultClick(id: string, event: MouseEvent): void {\n    this.#selectSearchResultById(id);\n\n    if (!this.showActionsArea && !this.dropdownHintText) {\n      this.#closeDropdown();\n    } else {\n      this.#resetSearch();\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  public onResultMouseMove(id: number): void {\n    if (id !== this.#activeElementIndex) {\n      this.#removeFocusedClass();\n      this.#activeElementIndex = id;\n      this.#addFocusedClass();\n      this.#changeDetector.markForCheck();\n    }\n  }\n\n  public isElementFocused(ref: HTMLElement): boolean {\n    return ref === this.#overlayFocusableElements[this.#activeElementIndex];\n  }\n\n  #searchTextChanged(searchText: string | undefined): void {\n    // reaffix the dropdown during searching when the wait shrinks it.\n    if (this.isOpen) {\n      setTimeout(() => {\n        if (this.#affixer) {\n          this.#affixer.reaffix();\n        }\n      });\n    }\n    if (this.#hasFocus) {\n      this.#openDropdown();\n      if (!searchText?.trim() && this.searchTextMinimumCharacters !== 0) {\n        this.#handleEmptySearchText();\n        return;\n      }\n\n      const trimmedSearchText = searchText?.trim() || '';\n      const isLongEnough =\n        trimmedSearchText.length >= this.searchTextMinimumCharacters;\n      const isDifferent =\n        searchText !== this.searchText ||\n        (this.searchText === '' && this.searchTextMinimumCharacters === 0);\n\n      this.searchText = trimmedSearchText.trim();\n      this.#updateIsResultsVisible();\n\n      if (isLongEnough && isDifferent) {\n        this.#performSearchAndUpdateResults();\n      } else {\n        this.isSearchingAsync = false;\n        this.#changeDetector.markForCheck();\n      }\n    } else {\n      this.isSearchingAsync = false;\n    }\n  }\n\n  #handleEmptySearchText(): void {\n    // Emit selectionChange if value has been cleared.\n    if (this.inputDirective && this.inputDirective.value) {\n      this.inputDirective.value = undefined;\n      this.selectionChange.emit({ selectedItem: undefined });\n    }\n\n    if (!this.showActionsArea && !this.dropdownHintText) {\n      this.#closeDropdown();\n    } else {\n      this.#resetSearch();\n    }\n\n    this.isSearchingAsync = false;\n    this.#changeDetector.markForCheck();\n  }\n\n  #performSearchAndUpdateResults(): void {\n    this.#cancelCurrentSearch();\n\n    this.#currentSearchSub = this.#performSearch().subscribe({\n      next: (result) => {\n        const items = (\n          result?.items as Record<string, unknown>[] | undefined\n        )?.filter((item) => {\n          return item && this.descriptorProperty in item;\n        });\n\n        this.searchResults =\n          items?.map((r, i) => {\n            const result: SkyAutocompleteSearchResult = {\n              elementId: `${this.resultsListId}-item-${i}`,\n              data: r,\n            };\n            return result;\n          }) || [];\n\n        this.searchResultsCount = result?.totalCount || 0;\n\n        this.#displayResultsDropdown();\n      },\n      complete: () => {\n        this.isSearchingAsync = false;\n        this.#changeDetector.markForCheck();\n      },\n    });\n  }\n\n  #displayResultsDropdown(): void {\n    this.highlightText = this.#getHighlightText(this.searchText);\n    this.#removeFocusedClass();\n    this.#removeActiveDescendant();\n    if (this.searchResults.length > 0) {\n      this.#activeElementIndex = 0;\n    } else {\n      this.#activeElementIndex = -1;\n    }\n\n    this.#updateIsResultsVisible();\n    this.#changeDetector.markForCheck();\n\n    // Safety check\n    /* istanbul ignore else */\n    if (this.isOpen) {\n      // Let the results populate in the DOM before recalculating placement.\n      setTimeout(() => {\n        if (this.#affixer) {\n          this.#affixer.reaffix();\n          this.#changeDetector.detectChanges();\n          this.#initOverlayFocusableElements();\n        }\n      });\n    } else {\n      this.#openDropdown();\n      this.#changeDetector.markForCheck();\n    }\n  }\n\n  #performSearch(): Observable<SkyAutocompleteSearchAsyncResult | undefined> {\n    if (!this.searchAsyncDisabled && this.searchAsync.observers.length > 0) {\n      const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n        displayType: 'popover',\n        offset: 0,\n        searchText: this.searchText,\n      };\n\n      this.searchAsync.emit(searchAsyncArgs);\n\n      return this.allowAnyValue()\n        ? this.#combineSearchTextWithResult(searchAsyncArgs)\n        : searchAsyncArgs.result?.pipe(take(1)) || of(undefined);\n    }\n\n    const result = this.searchOrDefault(this.searchText, this.data, {\n      context: 'popover',\n    });\n\n    if (result instanceof Array) {\n      return of({ items: result, totalCount: result.length });\n    }\n\n    return from(result).pipe(\n      map((items) => {\n        return { items, totalCount: items.length };\n      }),\n    );\n  }\n\n  #combineSearchTextWithResult(\n    searchAsyncArgs: SkyAutocompleteSearchAsyncArgs,\n  ): Observable<SkyAutocompleteSearchAsyncResult> {\n    const searchTextItem = { [this.descriptorProperty]: this.searchText };\n    const searchTextResult = { items: [searchTextItem], totalCount: 1 };\n\n    if (searchAsyncArgs.result) {\n      return searchAsyncArgs.result.pipe(\n        take(1),\n        map((result) => {\n          if (\n            (result.items as Record<string, string>[]).some(\n              (item) => item[this.descriptorProperty] === this.searchText,\n            )\n          ) {\n            return result;\n          }\n\n          // Include a result for the current search text as the first option\n          // if no exact match is found in the results.\n          return { ...result, items: [searchTextItem, ...result.items] };\n        }),\n        // Display the current search text immediately while async results load.\n        startWith<SkyAutocompleteSearchAsyncResult>(searchTextResult),\n      );\n    }\n\n    return of(searchTextResult);\n  }\n\n  #cancelCurrentSearch(): void {\n    if (this.#currentSearchSub) {\n      this.#currentSearchSub.unsubscribe();\n      this.#currentSearchSub = undefined;\n    }\n  }\n\n  /**\n   * Returns the text to highlight based on exact matches, case-insensitive matches, and matches for corresponding diacritical characters (a will match à).\n   */\n  #getHighlightText(searchText: string): string[] {\n    if (this.highlightSearchText()) {\n      const normalizedSearchText = normalizeDiacritics(searchText)\n        .toLocaleUpperCase()\n        .trim();\n      if (!normalizedSearchText) {\n        return [];\n      }\n\n      let matchesToHighlight: string[] = [];\n      for (let i = 0, n = this.searchResults.length; i < n; i++) {\n        const value = this.searchResults[i].data[this.descriptorProperty]\n          .toString()\n          .toLocaleUpperCase() as string;\n        const normalizedDataValue = normalizeDiacritics(value);\n\n        let offset = 0;\n        let index: number;\n        while (\n          (index = normalizedDataValue.indexOf(normalizedSearchText, offset)) >\n          -1\n        ) {\n          const matchedString = value.slice(index, index + searchText.length);\n          offset = index + searchText.length;\n          matchesToHighlight = matchesToHighlight.concat(matchedString);\n        }\n      }\n\n      // Remove any duplicates from the array.\n      return [...new Set(matchesToHighlight)];\n    }\n\n    return [];\n  }\n\n  #selectSearchResultById(id: string): void {\n    const result = this.searchResults.find((r) => r.elementId === id);\n    /* istanbul ignore else */\n    if (result) {\n      const data = result.data;\n      this.searchText = data[this.descriptorProperty];\n      if (this.inputDirective) {\n        this.inputDirective.value = data;\n      }\n      this.selectionChange.emit({ selectedItem: data });\n    }\n  }\n\n  #openDropdown(): void {\n    if (!this.#overlay && this.resultsTemplateRef) {\n      const overlay = this.#overlayService.create({\n        enableClose: false,\n        enablePointerEvents: true,\n        environmentInjector: this.#environmentInjector,\n        wrapperClass: this.wrapperClass,\n      });\n\n      if (this.#zIndex) {\n        this.#zIndex.pipe(takeUntil(overlay.closed)).subscribe((zIndex) => {\n          overlay.componentRef.instance.zIndex = zIndex.toString(10);\n        });\n      }\n\n      overlay.attachTemplate(this.resultsTemplateRef);\n\n      this.#overlay = overlay;\n      this.isOpen = true;\n      this.#updateIsResultsVisible();\n      this.#changeDetector.markForCheck();\n      this.#updateAriaControls();\n      this.#initOverlayFocusableElements();\n      this.#announceResults();\n      this.openChange.emit(true);\n    }\n  }\n\n  #closeDropdown(): void {\n    this.#resetSearch();\n    this.isOpen = false;\n    this.#destroyOverlay();\n    this.#removeActiveDescendant();\n    this.#updateAriaControls();\n    this.#changeDetector.markForCheck();\n    this.openChange.emit(false);\n  }\n\n  #setActiveDescendant(): void {\n    const activeElement =\n      this.#overlayFocusableElements[this.#activeElementIndex];\n    /* Sanity check */\n    /* istanbul ignore else */\n    if (activeElement && this.inputDirective) {\n      this.inputDirective.setActiveDescendant(activeElement.id);\n    }\n  }\n\n  #removeActiveDescendant(): void {\n    if (this.inputDirective) {\n      this.inputDirective.setActiveDescendant(null);\n    }\n  }\n\n  #updateAriaControls(): void {\n    if (this.inputDirective) {\n      this.inputDirective.setAriaControls(this.#overlay?.id || null);\n    }\n  }\n\n  #resetSearch(): void {\n    this.searchResults = [];\n    this.searchText = '';\n    this.highlightText = [];\n    this.#removeFocusedClass();\n    this.#activeElementIndex = -1;\n    this.searchResultsCount = undefined;\n    this.#removeActiveDescendant();\n    this.#initOverlayFocusableElements();\n    this.#updateIsResultsVisible();\n    this.#changeDetector.markForCheck();\n  }\n\n  #addInputEventListeners(): void {\n    const element = this.#elementRef.nativeElement;\n\n    observableFromEvent<KeyboardEvent>(element, 'keydown')\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((event) => {\n        this.handleKeydown(event);\n      });\n\n    observableFromEvent(window, 'resize')\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe(() => {\n        /* istanbul ignore else */\n        if (this.isOpen && this.resultsRef) {\n          this.#adapterService.setDropdownWidth(\n            this.#elementRef,\n            this.resultsRef,\n            !!this.#inputBoxHostSvc,\n          );\n        }\n      });\n  }\n\n  #destroyOverlay(): void {\n    if (this.#overlay) {\n      this.#overlayService.close(this.#overlay);\n      this.#overlay = undefined;\n    }\n  }\n\n  #createAffixer(): void {\n    /* Sanity check */\n    /* istanbul ignore else */\n    if (!this.#affixer && this.resultsRef) {\n      const affixer = this.#affixService.createAffixer(this.resultsRef);\n\n      this.#adapterService.setDropdownWidth(\n        this.#elementRef,\n        this.resultsRef,\n        !!this.#inputBoxHostSvc,\n      );\n\n      affixer.affixTo(this.#elementRef.nativeElement, {\n        autoFitContext: SkyAffixAutoFitContext.Viewport,\n        enableAutoFit: true,\n        isSticky: true,\n        placement: 'below',\n        horizontalAlignment: 'left',\n      });\n\n      this.#affixer = affixer;\n    }\n  }\n\n  #destroyAffixer(): void {\n    if (this.#affixer) {\n      this.#affixer.destroy();\n      this.#affixer = undefined;\n    }\n  }\n\n  #initMessageStream(): void {\n    if (this.#messageStreamSub) {\n      this.#messageStreamSub.unsubscribe();\n      this.#messageStreamSub = undefined;\n    }\n\n    this.#messageStreamSub = this.messageStream\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((message) => {\n        switch (message.type) {\n          case SkyAutocompleteMessageType.CloseDropdown:\n            this.#closeDropdown();\n            break;\n          case SkyAutocompleteMessageType.RepositionDropdown:\n            // Settimeout waits for changes in DOM (e.g., tokens being removed)\n            setTimeout(() => {\n              /* istanbul ignore else */\n              if (this.#affixer) {\n                this.#affixer.reaffix();\n              }\n            });\n            break;\n        }\n      });\n  }\n\n  #initOverlayFocusableElements(): void {\n    // Wait for dropdown elements to render.\n    setTimeout(() => {\n      if (this.#overlay) {\n        this.#overlayFocusableElements =\n          this.#adapterService.getOverlayFocusableElements(this.#overlay);\n        this.#overlayFocusableElements.forEach((el) => {\n          this.#adapterService.setTabIndex(el, -1);\n        });\n        this.#addFocusedClass();\n        this.#announceResults();\n      }\n    });\n  }\n\n  #getActiveElement(): HTMLElement {\n    return this.#overlayFocusableElements[this.#activeElementIndex];\n  }\n\n  #removeFocusedClass(): void {\n    if (this.#activeElementIndex > -1) {\n      this.#adapterService.removeCSSClass(\n        this.#overlayFocusableElements[this.#activeElementIndex],\n        'sky-autocomplete-descendant-focus',\n      );\n    }\n  }\n\n  #addFocusedClass(): void {\n    if (this.#activeElementIndex > -1) {\n      this.#adapterService.addCSSClass(\n        this.#overlayFocusableElements[this.#activeElementIndex],\n        'sky-autocomplete-descendant-focus',\n      );\n      this.#setActiveDescendant();\n    }\n  }\n\n  #updateDefaultSearchOptions(): void {\n    // Reset default search if it is what is being used.\n    if (this.search !== this.searchOrDefault) {\n      this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n        propertiesToSearch: this.propertiesToSearch,\n        searchFilters: this.searchFilters,\n      });\n    }\n  }\n\n  #updateIsResultsVisible(): void {\n    const isResultsVisible =\n      (!!this.searchText || this.searchTextMinimumCharacters === 0) &&\n      (!this.showActionsArea || this.searchResults.length > 0);\n    if (isResultsVisible !== this.#isResultsVisible.getValue()) {\n      this.#isResultsVisible.next(isResultsVisible);\n    }\n  }\n}\n","<div\n  aria-autocomplete=\"list\"\n  aria-haspopup=\"listbox\"\n  class=\"sky-autocomplete\"\n  role=\"combobox\"\n  [attr.aria-expanded]=\"\n    isOpen &&\n    (showActionsArea || dropdownHintText || (isResultsVisible | async))\n  \"\n  [attr.aria-labelledby]=\"ariaLabelledBy\"\n  [attr.aria-controls]=\"\n    isOpen &&\n    (showActionsArea || dropdownHintText || (isResultsVisible | async))\n      ? resultsListId\n      : null\n  \"\n  [attr.id]=\"resultsWrapperId\"\n>\n  <ng-content />\n</div>\n\n<ng-template #resultsTemplateRef>\n  <!-- We do not want the blur to fire here so that the dropdown does not close. This is why we are preventing the mousedown default. -->\n  <div\n    #resultsRef\n    class=\"sky-autocomplete-results-container\"\n    [attr.id]=\"resultsListId\"\n    [skyThemeClass]=\"{ 'sky-shadow': 'default', 'sky-elevation-4': 'modern' }\"\n    (mousedown)=\"$event.preventDefault()\"\n    (keydown)=\"handleKeydown($event)\"\n  >\n    @if (isSearchingAsync && !allowAnyValue()) {\n      <div class=\"sky-autocomplete-results-waiting\">\n        <sky-wait [isWaiting]=\"true\" />\n      </div>\n    } @else {\n      @if (isResultsVisible | async) {\n        <div\n          class=\"sky-autocomplete-results\"\n          role=\"listbox\"\n          [attr.aria-labelledby]=\"ariaLabelledBy\"\n        >\n          @for (result of searchResults; track result.data; let i = $index) {\n            @if (\n              (!searchResultsLimit || i < searchResultsLimit) &&\n              !(enableShowMore && i >= 5)\n            ) {\n              <div\n                #searchResultEl\n                class=\"sky-autocomplete-result\"\n                role=\"option\"\n                tabindex=\"0\"\n                [attr.aria-selected]=\"isElementFocused(searchResultEl)\"\n                [attr.data-descriptor-value]=\"result.data[descriptorProperty]\"\n                [attr.id]=\"result.elementId\"\n                [skyHighlight]=\"highlightText\"\n                (click)=\"onResultClick(result.elementId, $event)\"\n                (mousemove)=\"onResultMouseMove(i)\"\n              >\n                <ng-container\n                  *ngTemplateOutlet=\"\n                    searchResultTemplate || defaultSearchResultTemplate;\n                    context: { item: result.data }\n                  \"\n                />\n              </div>\n            }\n          }\n          @if (isSearchingAsync && allowAnyValue()) {\n            <div class=\"sky-autocomplete-results-waiting\">\n              <sky-wait [isWaiting]=\"true\" />\n            </div>\n          }\n          @if (searchResults.length === 0) {\n            <div class=\"sky-font-deemphasized sky-autocomplete-no-results\">\n              {{\n                noResultsFoundText ||\n                  ('skyux_autocomplete_no_results' | skyLibResources)\n              }}\n            </div>\n          }\n        </div>\n      } @else if (dropdownHintText) {\n        <div class=\"sky-autocomplete-dropdown-hint-text sky-font-deemphasized\">\n          {{ dropdownHintText }}\n        </div>\n      }\n      @if (showActionsArea) {\n        <div class=\"sky-autocomplete-actions\">\n          @if (\n            enableShowMore &&\n            (searchTextMinimumCharacters === 0 ||\n              !searchText ||\n              searchResults.length > 0)\n          ) {\n            <button\n              class=\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\"\n              type=\"button\"\n              (click)=\"moreButtonClicked()\"\n            >\n              @if (\n                !(\n                  searchAsync\n                  | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled\n                ) &&\n                searchResults.length === 0 &&\n                !searchText &&\n                searchTextMinimumCharacters !== 0\n              ) {\n                {{ 'skyux_autocomplete_show_all' | skyLibResources }}\n              }\n              @if (\n                ((searchAsync\n                  | skyAutocompleteSearchAsyncDisabled: searchAsyncDisabled) ||\n                  (searchTextMinimumCharacters === 0 &&\n                    searchResultsCount !== undefined &&\n                    searchResultsCount > 0)) &&\n                !searchText\n              ) {\n                {{\n                  'skyux_autocomplete_show_all_count'\n                    | skyLibResources\n                      : (searchResultsCount === undefined\n                          ? data.length\n                          : (searchResultsCount\n                            | skyNumeric: { truncate: false }))\n                }}\n              }\n              @if (searchText) {\n                {{\n                  'skyux_autocomplete_show_matches_count'\n                    | skyLibResources\n                      : (searchResultsCount === undefined\n                          ? data.length\n                          : (searchResultsCount\n                            | skyNumeric: { truncate: false }))\n                }}\n              }\n            </button>\n          }\n          @if (\n            (searchText || searchTextMinimumCharacters === 0) &&\n            searchResults.length === 0\n          ) {\n            <div\n              class=\"sky-font-deemphasized sky-autocomplete-actions-no-results\"\n            >\n              {{\n                noResultsFoundText ||\n                  ('skyux_autocomplete_no_results' | skyLibResources)\n              }}\n            </div>\n          }\n          @if (showAddButton) {\n            <button\n              #addButtonEl\n              class=\"sky-autocomplete-action sky-autocomplete-action-add sky-btn sky-btn-link\"\n              tabindex=\"0\"\n              type=\"button\"\n              [class.focused]=\"isElementFocused(addButtonEl)\"\n              (click)=\"addButtonClicked()\"\n            >\n              <sky-icon iconName=\"add\" />\n              {{ 'skyux_autocomplete_add' | skyLibResources }}\n            </button>\n          }\n        </div>\n      }\n    }\n  </div>\n</ng-template>\n\n<ng-template #defaultSearchResultTemplate let-item=\"item\">\n  {{ item[descriptorProperty] }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule, SkyIdModule, SkyNumericModule } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTextHighlightModule, SkyWaitModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyAutocompleteInputDirective } from './autocomplete-input.directive';\nimport { SkyAutocompleteSearchAsyncDisabledPipe } from './autocomplete-search-async-disabled.pipe';\nimport { SkyAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n  declarations: [\n    SkyAutocompleteComponent,\n    SkyAutocompleteInputDirective,\n    SkyAutocompleteSearchAsyncDisabledPipe,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    SkyAffixModule,\n    SkyTextHighlightModule,\n    SkyIconModule,\n    SkyIdModule,\n    SkyLookupResourcesModule,\n    SkyNumericModule,\n    SkyThemeModule,\n    SkyWaitModule,\n  ],\n  exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n})\nexport class SkyAutocompleteModule {}\n","import { type Country } from 'intl-tel-input/data';\n\nimport type { SkyCountryFieldCountry } from './types/country';\n\n/**\n * Clone the country data for each component instance to avoid overwriting\n * the global country data.\n */\nexport function cloneCountryData(data: Country[]): SkyCountryFieldCountry[] {\n  const clone = [...data];\n\n  return clone.map((country) => {\n    const mapped: SkyCountryFieldCountry = {\n      iso2: country.iso2,\n      dialCode: country.dialCode,\n      name: country.name,\n      priority: country.priority,\n    };\n\n    if (country.areaCodes) {\n      mapped.areaCodes = [...country.areaCodes];\n    }\n\n    return mapped;\n  });\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { SkyCountryFieldContext } from './country-field-context';\n\n/**\n * @internal\n */\nexport const SKY_COUNTRY_FIELD_CONTEXT =\n  new InjectionToken<SkyCountryFieldContext>('SkyCountryFieldContext');\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ViewEncapsulation,\n  forwardRef,\n  inject,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NgControl,\n  NgModel,\n  UntypedFormControl,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\nimport { SkyInputBoxHostService } from '@skyux/forms';\n\nimport intlTelInput from 'intl-tel-input';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\n\nimport { cloneCountryData } from './clone-country-data';\nimport { SkyCountryFieldCountry } from './types/country';\nimport { SkyCountryFieldContext } from './types/country-field-context';\nimport { SKY_COUNTRY_FIELD_CONTEXT } from './types/country-field-context-token';\n\nconst DEFAULT_COUNTRY_CODE = 'us';\n\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => SkyCountryFieldComponent),\n  multi: true,\n};\n\nlet uniqueId = 0;\n\n@Component({\n  selector: 'sky-country-field',\n  templateUrl: './country-field.component.html',\n  styleUrls: ['./country-field.component.scss'],\n  providers: [SKY_COUNTRY_FIELD_VALIDATOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class SkyCountryFieldComponent\n  implements ControlValueAccessor, OnDestroy, OnInit, Validator\n{\n  /**\n   * The value for the HTML `autocomplete` attribute on the form input.\n   * @default 'off'\n   * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n   */\n  @Input()\n  public autocompleteAttribute: string | undefined;\n\n  /**\n   * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n   * country code for the default country.\n   * When search results include the default country, it appears at the top of the list.\n   * @default \"us\"\n   */\n  @Input()\n  public set defaultCountry(value: string | undefined) {\n    if (!value) {\n      value = DEFAULT_COUNTRY_CODE;\n    }\n\n    if (value !== this.#_defaultCountry) {\n      this.#_defaultCountry = value.toLowerCase();\n\n      this.#defaultCountryData = this.countries.find(\n        (country) => country.iso2 === this.#_defaultCountry,\n      );\n\n      this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n    }\n  }\n\n  public get defaultCountry(): string | undefined {\n    return this.#_defaultCountry;\n  }\n\n  /**\n   * Whether to disable the country field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   * @default false\n   */\n  @Input()\n  public set disabled(isDisabled: boolean | undefined) {\n    this.#_disabled = isDisabled ?? false;\n\n    if (isDisabled) {\n      this.countrySearchFormControl.disable();\n    } else {\n      this.countrySearchFormControl.enable();\n    }\n\n    this.#changeDetector.markForCheck();\n  }\n\n  public get disabled(): boolean {\n    return this.#_disabled;\n  }\n\n  /**\n   * The [International Organization for Standardization Alpha 2](https://www.nationsonline.org/oneworld/country_code_list.htm)\n   * country codes for the countries that users can select. By default, all countries are available.\n   */\n  @Input()\n  public set supportedCountryISOs(value: string[] | undefined) {\n    // Ensure all values are the same case.\n    if (Array.isArray(value)) {\n      value = value.map((v) => v.toLowerCase());\n    }\n\n    this.#_supportedCountryISOs = value;\n    this.#setupCountries();\n  }\n\n  public get supportedCountryISOs(): string[] {\n    return this.#_supportedCountryISOs || [];\n  }\n\n  /**\n   * Fires when the selected country changes.\n   */\n  @Output()\n  public selectedCountryChange: EventEmitter<SkyCountryFieldCountry> =\n    new EventEmitter<SkyCountryFieldCountry>();\n\n  /**\n   * Fires when the country field is focused out.\n   * @internal\n   */\n  // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n  @Output()\n  public countryFieldFocusout: EventEmitter<FocusEvent> =\n    new EventEmitter<FocusEvent>();\n\n  public countries: SkyCountryFieldCountry[] = [];\n\n  public countrySearchFormControl: UntypedFormControl;\n\n  public searchTextMinimumCharacters = 2;\n\n  @ViewChild(SkyAutocompleteInputDirective)\n  public countrySearchAutocompleteDirective:\n    | SkyAutocompleteInputDirective\n    | undefined;\n\n  public set selectedCountry(newCountry: SkyCountryFieldCountry | undefined) {\n    if (!this.#countriesAreEqual(this.selectedCountry, newCountry)) {\n      const newCountryIso = newCountry?.iso2;\n      if (newCountryIso) {\n        const isoCountry = this.countries.find(\n          (country) => country.iso2 === newCountryIso,\n        );\n\n        if (isoCountry) {\n          newCountry = isoCountry;\n        }\n      }\n\n      this.#_selectedCountry = newCountry;\n\n      this.#sortCountriesWithSelectedAndDefault(newCountry);\n\n      this.#internalFormChange = true;\n      this.countrySearchFormControl.setValue(this.selectedCountry);\n\n      if (!this.#isInitialChange) {\n        this.onChange(newCountry);\n        this.onTouched();\n\n        this.selectedCountryChange.emit(newCountry);\n      } else if (this.#ngControl?.control) {\n        // Do not mark the field as \"dirty\"\n        // if the field has been initialized with a value.\n        this.#ngControl.control.markAsPristine();\n      }\n\n      this.#isInitialChange = false;\n\n      /**\n       * The if statement is complex. The control type check ensures that\n       * we only watch for the initial time through this function on reactive forms. However,\n       * template forms will send through `null` and then `undefined` on empty initialization\n       * so we have to check for when the non-null pass through happens.\n       */\n    } else if (!(this.#ngControl instanceof NgModel) || newCountry !== null) {\n      this.#isInitialChange = false;\n    }\n  }\n\n  public get selectedCountry(): SkyCountryFieldCountry | undefined {\n    return this.#_selectedCountry;\n  }\n\n  public context: SkyCountryFieldContext | null = inject(\n    SKY_COUNTRY_FIELD_CONTEXT,\n    {\n      optional: true,\n    },\n  );\n\n  public inputId: string;\n  protected ariaDescribedBy: Observable<string | undefined> | undefined;\n\n  @ViewChild('inputTemplateRef', {\n    read: TemplateRef,\n    static: true,\n  })\n  public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n  #changeDetector: ChangeDetectorRef;\n\n  #defaultCountryData: SkyCountryFieldCountry | undefined;\n\n  #injector: Injector;\n\n  #internalFormChange = false;\n\n  #isInitialChange = true;\n\n  #ngControl: NgControl | null = null;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #_defaultCountry: string | undefined;\n\n  #_disabled = false;\n\n  #_selectedCountry: SkyCountryFieldCountry | undefined;\n\n  #_supportedCountryISOs: string[] | undefined;\n\n  constructor(\n    changeDetector: ChangeDetectorRef,\n    injector: Injector,\n    @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n  ) {\n    this.#changeDetector = changeDetector;\n    this.#injector = injector;\n\n    this.inputId = `sky-country-field-input-${uniqueId++}`;\n\n    this.#setupCountries();\n\n    this.countrySearchFormControl = new UntypedFormControl();\n  }\n\n  /**\n   * Angular lifecycle hook for when the component is initialized\n   * @internal\n   */\n  public ngOnInit(): void {\n    this.#updateInputBox();\n\n    this.#ngControl = this.#injector.get<NgControl | null>(\n      NgControl as unknown as Type<NgControl>,\n      null,\n    );\n\n    if (this.#ngControl) {\n      this.#ngControl.valueAccessor = this;\n    } else {\n      /**\n       * The initial change boolean is to determine if the form is setting the value. When no form\n       * is present we don't want to ignore the first change.\n       */\n      this.#isInitialChange = false;\n    }\n\n    if (!this.defaultCountry) {\n      this.defaultCountry = DEFAULT_COUNTRY_CODE;\n    }\n\n    this.countrySearchFormControl.valueChanges\n      .pipe(takeUntil(this.#ngUnsubscribe))\n      .subscribe((newValue) => {\n        if (newValue && !this.#internalFormChange) {\n          this.selectedCountry = newValue;\n        }\n      });\n    this.#changeDetector.markForCheck();\n  }\n\n  /**\n   * Angular lifecycle hook for when the component is destructed.\n   * @internal\n   */\n  public ngOnDestroy(): void {\n    this.selectedCountryChange.complete();\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  /**\n   * Sets the component's touched value when the autocomplete is blurred\n   * @internal\n   */\n  public onAutocompleteBlur(): void {\n    this.onTouched();\n  }\n\n  /**\n   * Sets the country to validate against based on the county's iso2 code.\n   * @param newCountry The International Organization for Standardization's two-letter code\n   * for the default country.\n   * @internal\n   */\n  public onCountrySelected(newCountry: SkyAutocompleteSelectionChange): void {\n    if (newCountry.selectedItem) {\n      this.writeValue(\n        this.countries.find(\n          (countryInfo) => countryInfo.iso2 === newCountry.selectedItem.iso2,\n        ),\n      );\n    } else {\n      this.writeValue(undefined);\n    }\n  }\n\n  /**\n   * Called when the Autocomplete textarea loses focus\n   * @internal\n   */\n  public onAutocompleteFocusout(e: FocusEvent): void {\n    this.countryFieldFocusout.emit(e);\n  }\n\n  // Angular automatically constructs these methods.\n  // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n  public onChange = (value: SkyCountryFieldCountry | undefined): void => {};\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  public onTouched = (): void => {};\n\n  public registerOnChange(\n    fn: (value: SkyCountryFieldCountry | undefined) => void,\n  ): void {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  // Allows Angular to disable the input.\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n\n  public validate(control: AbstractControl): ValidationErrors | null {\n    if (control.value) {\n      if (\n        (this.supportedCountryISOs &&\n          this.supportedCountryISOs.length > 0 &&\n          this.supportedCountryISOs.indexOf(control.value.iso2) < 0) ||\n        !this.countries.find((country) => country.iso2 === control.value.iso2)\n      ) {\n        return { unsupportedCountry: true };\n      }\n    }\n\n    return null;\n  }\n\n  public writeValue(value: SkyCountryFieldCountry | undefined): void {\n    this.selectedCountry = value;\n    this.#changeDetector.markForCheck();\n  }\n\n  protected onFocus($event: FocusEvent): void {\n    ($event.target as HTMLTextAreaElement).select();\n  }\n\n  #countriesAreEqual(\n    country1: SkyCountryFieldCountry | undefined,\n    country2: SkyCountryFieldCountry | undefined,\n  ): boolean {\n    if (country1 && country2) {\n      return country1.iso2 === country2.iso2;\n    }\n\n    // NOTE: We are doing this in  this way because template forms will send through `null`\n    // and then `undefined` on empty initialization. These are functionally equivalent but will\n    // not pass a standard triple equals check.\n    return !country1 && !country2;\n  }\n\n  #countriesEqual(\n    a: SkyCountryFieldCountry,\n    b: SkyCountryFieldCountry,\n  ): boolean {\n    return a.iso2 === b.iso2 && a.name === b.name;\n  }\n\n  #setupCountries(): void {\n    this.countries = cloneCountryData(intlTelInput.getCountryData());\n\n    /* istanbul ignore else */\n    if (!this.context?.inPhoneField) {\n      /**\n       * The library we get the country data from includes extra phone properties.\n       * We want to remove these unless we are in a phone field\n       */\n      this.countries.forEach((country) => {\n        delete country.dialCode;\n        delete country.areaCodes;\n        delete country.priority;\n      });\n    }\n\n    this.#sortCountriesWithSelectedAndDefault(this.selectedCountry);\n\n    if (this.supportedCountryISOs && this.supportedCountryISOs.length > 0) {\n      this.countries = this.countries.filter(\n        (country: SkyCountryFieldCountry) => {\n          return this.supportedCountryISOs.indexOf(country.iso2) >= 0;\n        },\n      );\n    }\n  }\n\n  #sortCountriesWithSelectedAndDefault(\n    selectedCountry: SkyCountryFieldCountry | undefined,\n  ): void {\n    let selectedCountryIndex: number;\n    let selectedCountryData: SkyCountryFieldCountry;\n\n    const sortedNewCountries = this.countries.sort((a, b) => {\n      if (\n        ((this.#defaultCountryData &&\n          this.#countriesEqual(a, this.#defaultCountryData)) ||\n          (a.name && b.name && a.name < b.name)) &&\n        (!this.#defaultCountryData ||\n          !this.#countriesEqual(this.#defaultCountryData, b))\n      ) {\n        return -1;\n      } else {\n        return 1;\n      }\n    });\n\n    if (selectedCountry) {\n      // Note: We are looking up this data here to ensure we are using the official data from the\n      // library and not the data provided by the user on initialization of the component\n      const foundCountry = this.countries.find(\n        (country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase(),\n      );\n\n      if (foundCountry) {\n        selectedCountryData = foundCountry;\n        selectedCountryIndex = this.countries.indexOf(selectedCountryData);\n\n        if (selectedCountryIndex >= 0) {\n          this.countries.splice(selectedCountryIndex, 1);\n          sortedNewCountries.splice(0, 0, selectedCountryData);\n        }\n      }\n    }\n\n    this.countries = sortedNewCountries;\n  }\n\n  #updateInputBox(): void {\n    if (this.inputBoxHostSvc && this.inputTemplateRef) {\n      this.inputId = this.inputBoxHostSvc.controlId;\n      this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n\n      this.inputBoxHostSvc.populate({\n        inputTemplate: this.inputTemplateRef,\n      });\n    }\n  }\n}\n","@if (!inputBoxHostSvc) {\n  <ng-container *ngTemplateOutlet=\"inputTemplateRef\" />\n}\n\n<ng-template #inputTemplateRef>\n  <span\n    class=\"sky-country-field-container\"\n    [ngClass]=\"{\n      'sky-country-field-disabled': disabled\n    }\"\n  >\n    <sky-autocomplete\n      [ariaLabelledBy]=\"inputBoxHostSvc?.labelId ?? inputId\"\n      [data]=\"countries\"\n      [dropdownHintText]=\"\n        'skyux_country_field_dropdown_hint_text' | skyLibResources\n      \"\n      [propertiesToSearch]=\"['name', 'iso2']\"\n      [searchResultTemplate]=\"countrySearchResultTemplate\"\n      [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n      (selectionChange)=\"onCountrySelected($event)\"\n    >\n      <div class=\"sky-country-field-input\">\n        <!-- The check for label text on the aria-label is to allow for backwards compatibility while also respecting label text functionality. -->\n        <textarea\n          class=\"sky-form-control\"\n          name=\"selectedCountry\"\n          rows=\"1\"\n          skyAutocomplete\n          [attr.aria-describedby]=\"ariaDescribedBy | async\"\n          [attr.aria-label]=\"\n            context?.inPhoneField\n              ? ('skyux_country_field_dropdown_hint_text' | skyLibResources)\n              : inputBoxHostSvc?.labelText\n                ? undefined\n                : ('skyux_country_field_dropdown_hint_text' | skyLibResources)\n          \"\n          [attr.id]=\"inputId\"\n          [autocompleteAttribute]=\"autocompleteAttribute\"\n          [formControl]=\"countrySearchFormControl\"\n          (blur)=\"onAutocompleteBlur()\"\n          (focus)=\"onFocus($event)\"\n          (focusout)=\"onAutocompleteFocusout($event)\"\n        ></textarea>\n      </div>\n    </sky-autocomplete>\n  </span>\n</ng-template>\n\n<ng-template #countrySearchResultTemplate let-item=\"item\">\n  <div class=\"sky-country-field-search-result-flag\">\n    <div [ngClass]=\"'iti__flag iti__' + item.iso2.toLowerCase()\"></div>\n  </div>\n  <div class=\"sky-country-field-search-result-info\">\n    {{ item.name }}\n    @if (context?.inPhoneField) {\n      <span\n        class=\"sky-font-deemphasized sky-country-field-search-result-dial-code\"\n      >\n        {{ item.dialCode }}\n      </span>\n    }\n  </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyCountryFieldComponent } from './country-field.component';\n\n@NgModule({\n  declarations: [SkyCountryFieldComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    SkyAutocompleteModule,\n    SkyIconModule,\n    SkyLookupResourcesModule,\n    SkyThemeModule,\n  ],\n  exports: [SkyCountryFieldComponent],\n})\nexport class SkyCountryFieldModule {}\n","import { ElementRef, Injectable, Renderer2 } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkySearchAdapterService {\n  #renderer: Renderer2;\n\n  constructor(renderer: Renderer2) {\n    this.#renderer = renderer;\n  }\n\n  public selectInput(searchEl: ElementRef): void {\n    this.#getInputEl(searchEl).select();\n  }\n\n  public focusInput(searchEl: ElementRef): void {\n    this.#getInputEl(searchEl).focus();\n  }\n\n  public startInputAnimation(searchEl: ElementRef): void {\n    const buttonWidth = this.#getSearchOpenButtonEl(searchEl).clientWidth;\n    const offsetWidth = this.#getSearchContainerEl(searchEl).offsetLeft;\n    const minWidth = buttonWidth + offsetWidth;\n\n    this.#getInputContainerEl(searchEl).style.minWidth =\n      minWidth.toString() + 'px';\n\n    this.#renderer.setStyle(\n      this.#getInputContainerEl(searchEl),\n      'min-width',\n      minWidth.toString() + 'px',\n    );\n  }\n\n  public endInputAnimation(searchEl: ElementRef): void {\n    this.#renderer.setStyle(\n      this.#getInputContainerEl(searchEl),\n      'min-width',\n      '',\n    );\n  }\n\n  #getInputContainerEl(searchEl: ElementRef): HTMLElement {\n    return searchEl.nativeElement.querySelector('.sky-search-input-container');\n  }\n\n  #getSearchOpenButtonEl(searchEl: ElementRef): HTMLElement {\n    return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n  }\n\n  #getSearchContainerEl(searchEl: ElementRef): HTMLElement {\n    return searchEl.nativeElement.querySelector('.sky-search-container');\n  }\n\n  #getInputEl(searchEl: ElementRef): HTMLInputElement {\n    return searchEl.nativeElement.querySelector('input');\n  }\n}\n","import {\n  AnimationEvent,\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n  inject,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n  SkyBreakpoint,\n  SkyContentInfo,\n  SkyContentInfoProvider,\n  SkyMediaQueryService,\n} from '@skyux/core';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { SkySearchAdapterService } from './search-adapter.service';\n\nconst INPUT_SHOWN_STATE = 'inputShown';\nconst INPUT_HIDDEN_STATE = 'inputHidden';\nconst EXPAND_MODE_RESPONSIVE = 'responsive';\nconst EXPAND_MODE_FIT = 'fit';\nconst EXPAND_MODE_NONE = 'none';\n\n@Component({\n  selector: 'sky-search',\n  templateUrl: './search.component.html',\n  styleUrls: ['./search.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger('inputState', [\n      state(\n        INPUT_HIDDEN_STATE,\n        style({\n          opacity: 0,\n          width: 0,\n        }),\n      ),\n      state(\n        INPUT_SHOWN_STATE,\n        style({\n          opacity: 1,\n          width: '100%',\n        }),\n      ),\n      transition('* <=> *', animate('150ms')),\n    ]),\n  ],\n  providers: [SkySearchAdapterService],\n  standalone: false,\n})\nexport class SkySearchComponent implements OnDestroy, OnInit, OnChanges {\n  /**\n   * The ARIA label for the search input. This sets the search input's `aria-label` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * Use a context-sensitive label, such as \"Search constituents.\" Context is especially important when multiple search inputs are in close proximity.\n   * In toolbars, search inputs use the `listDescriptor` to provide context, and the ARIA label defaults to \"Search <listDescriptor>.\"\n   * If the box includes a visible label, use `ariaLabelledBy` instead.\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   */\n  @Input()\n  public ariaLabel: string | undefined;\n\n  /**\n   * The HTML element ID of the element that labels\n   * the search. This sets the search's `aria-labelledby` attribute to provide a text equivalent for screen readers\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the box does not include a visible label, use `ariaLabel` instead.\n   * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n   */\n  @Input()\n  public ariaLabelledBy: string | undefined;\n\n  /**\n   * Fires when the search text is applied.\n   */\n  @Output()\n  public searchApply = new EventEmitter<string>();\n\n  /**\n   * Fires when the search text is changed.\n   */\n  @Output()\n  public searchChange = new EventEmitter<string>();\n\n  /**\n   * Fires when the search text is cleared.\n   */\n  @Output()\n  public searchClear = new EventEmitter<void>();\n\n  /**\n   * Default search criteria for the input.\n   */\n  @Input()\n  public searchText: string | undefined;\n\n  /**\n   * The expand mode for the search input. The valid options\n   * include `\"responsive\"` to collapse the search input into a button on\n   * mobile devices, `\"none\"` to *not* collapse the search input on mobile\n   * devices, and `\"fit\"` to extend the search input to fit the width of its container.\n   * @default \"responsive\"\n   */\n  @Input()\n  public set expandMode(value: string | undefined) {\n    this.#_expandMode = value ?? EXPAND_MODE_RESPONSIVE;\n  }\n\n  public get expandMode(): string {\n    return this.#_expandMode;\n  }\n\n  /**\n   * How many milliseconds to wait before searching after users enter text in the search input.\n   * @default 0\n   */\n  @Input()\n  public set debounceTime(value: number | undefined) {\n    this.#_debounceTime = value ?? 0;\n    this.#setupSearchChangedEvent();\n  }\n\n  public get debounceTime(): number {\n    return this.#_debounceTime;\n  }\n\n  /**\n   * Whether to disable the search.\n   * @default false\n   */\n  @Input()\n  public set disabled(value: boolean | undefined) {\n    this.#_disabled = value ?? false;\n  }\n\n  public get disabled(): boolean {\n    return this.#_disabled;\n  }\n\n  /**\n   * Placeholder text to display in the search input until users\n   * enter search criteria.\n   * @default \"Find in this list\"\n   */\n  @Input()\n  public placeholderText: string | undefined;\n\n  public clearButtonShown = false;\n\n  public dismissButtonShown = false;\n\n  public inputAnimate: string = INPUT_SHOWN_STATE;\n\n  public isCollapsible = true;\n\n  public isFullWidth = false;\n\n  public mobileSearchShown = false;\n\n  public searchButtonShown = false;\n\n  protected contentInfoObs: Observable<SkyContentInfo> | undefined;\n\n  #changeRef: ChangeDetectorRef;\n\n  #contentInfoProvider = inject(SkyContentInfoProvider, { optional: true });\n\n  #elRef: ElementRef;\n\n  #manualFocus = false;\n\n  #searchAdapter: SkySearchAdapterService;\n\n  #searchUpdated = new Subject<string>();\n\n  #searchUpdatedSub: Subscription | undefined;\n\n  #_debounceTime = 0;\n\n  #_disabled = false;\n\n  #_expandMode = EXPAND_MODE_RESPONSIVE;\n\n  readonly #destroyRef = inject(DestroyRef);\n  readonly #mediaQuerySvc = inject(SkyMediaQueryService);\n  readonly #breakpoint = toSignal(this.#mediaQuerySvc.breakpointChange);\n\n  constructor(\n    elRef: ElementRef,\n    searchAdapter: SkySearchAdapterService,\n    changeRef: ChangeDetectorRef,\n  ) {\n    this.#elRef = elRef;\n    this.#searchAdapter = searchAdapter;\n    this.#changeRef = changeRef;\n\n    this.contentInfoObs = this.#contentInfoProvider?.getInfo();\n  }\n\n  public ngOnInit(): void {\n    if (this.#searchShouldCollapse()) {\n      this.#mediaQuerySvc.breakpointChange\n        .pipe(takeUntilDestroyed(this.#destroyRef))\n        .subscribe((breakpoint) => {\n          this.#mediaQueryCallback(breakpoint);\n        });\n    }\n\n    this.#setupSearchChangedEvent();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (this.#expandModeBindingChanged(changes)) {\n      switch (this.expandMode) {\n        case EXPAND_MODE_NONE:\n          this.isCollapsible = false;\n          this.isFullWidth = false;\n          break;\n        case EXPAND_MODE_FIT:\n          this.isCollapsible = false;\n          this.isFullWidth = true;\n          break;\n        default:\n          this.isCollapsible = true;\n          this.isFullWidth = false;\n          break;\n      }\n    }\n\n    if (this.#searchBindingChanged(changes)) {\n      this.#searchUpdated.next(this.searchText ?? '');\n      this.clearButtonShown = !!(this.searchText && this.searchText !== '');\n      if (this.#shouldOpenInput()) {\n        this.inputAnimate = INPUT_SHOWN_STATE;\n      }\n    }\n    this.#changeRef.detectChanges();\n  }\n\n  public clearSearchText(): void {\n    this.searchText = '';\n    this.clearButtonShown = false;\n\n    this.#searchAdapter.focusInput(this.#elRef);\n    this.#searchUpdated.next(this.searchText);\n\n    this.searchApply.emit(this.searchText);\n\n    this.searchClear.emit();\n  }\n\n  public enterPress(\n    event: KeyboardEvent,\n    searchText: string | undefined,\n  ): void {\n    if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n      this.applySearchText(searchText);\n    }\n  }\n\n  public applySearchText(searchText: string | undefined): void {\n    // Double check that search text is defined before attempting to trim off whitespace\n    if (searchText) {\n      searchText = searchText.trim();\n    }\n\n    if (searchText !== this.searchText) {\n      this.searchText = searchText;\n    }\n    this.clearButtonShown = !!(searchText && searchText !== '');\n    if (searchText && searchText !== '') {\n      this.#searchAdapter.selectInput(this.#elRef);\n    }\n\n    this.searchApply.emit(searchText);\n  }\n\n  public searchTextChanged(searchText: string): void {\n    this.searchText = searchText;\n    this.#searchUpdated.next(searchText);\n  }\n\n  public toggleSearchInput(showInput: boolean): void {\n    if (this.#searchShouldCollapse()) {\n      this.#manualFocus = true;\n      if (showInput) {\n        this.inputAnimate = INPUT_SHOWN_STATE;\n      } else {\n        this.inputAnimate = INPUT_HIDDEN_STATE;\n      }\n    }\n  }\n\n  public inputAnimationStart(event: AnimationEvent): void {\n    if (this.#searchShouldCollapse()) {\n      this.#searchAdapter.startInputAnimation(this.#elRef);\n\n      if (event.toState === INPUT_SHOWN_STATE && this.#breakpoint() === 'xs') {\n        this.mobileSearchShown = true;\n        this.searchButtonShown = false;\n      }\n    }\n  }\n\n  public inputAnimationEnd(event: AnimationEvent): void {\n    if (this.#searchShouldCollapse()) {\n      this.#searchAdapter.endInputAnimation(this.#elRef);\n\n      const breakpoint = this.#breakpoint();\n\n      this.searchButtonShown =\n        event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs';\n\n      if (\n        (event.toState === INPUT_HIDDEN_STATE && breakpoint === 'xs') ||\n        breakpoint !== 'xs'\n      ) {\n        this.mobileSearchShown = false;\n      }\n\n      setTimeout(() => {\n        if (this.#manualFocus && !this.searchButtonShown) {\n          this.#searchAdapter.focusInput(this.#elRef);\n          this.#manualFocus = false;\n        }\n      });\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.#searchUpdated.complete();\n    this.#searchUpdatedSub?.unsubscribe();\n  }\n\n  #searchBindingChanged(changes: SimpleChanges): boolean {\n    return (\n      changes['searchText'] &&\n      changes['searchText'].previousValue !== changes['searchText'].currentValue\n    );\n  }\n\n  #expandModeBindingChanged(changes: SimpleChanges): boolean {\n    return (\n      changes['expandMode'] &&\n      changes['expandMode'].previousValue !== changes['expandMode'].currentValue\n    );\n  }\n\n  #shouldOpenInput(): boolean {\n    return (\n      this.searchText !== '' &&\n      this.#breakpoint() === 'xs' &&\n      this.#searchShouldCollapse()\n    );\n  }\n\n  #mediaQueryCallback(breakpoint: SkyBreakpoint): void {\n    if (this.#searchShouldCollapse()) {\n      if (breakpoint === 'xs') {\n        this.inputAnimate = INPUT_HIDDEN_STATE;\n      } else if (this.inputAnimate !== INPUT_SHOWN_STATE) {\n        this.inputAnimate = INPUT_SHOWN_STATE;\n      } else {\n        this.mobileSearchShown = false;\n      }\n    }\n    this.#changeRef.markForCheck();\n  }\n\n  #searchShouldCollapse(): boolean {\n    return (\n      (this.isCollapsible || this.isCollapsible === undefined) &&\n      this.isFullWidth !== true\n    );\n  }\n\n  #setupSearchChangedEvent(): void {\n    this.#searchUpdatedSub?.unsubscribe();\n\n    this.#searchUpdatedSub = this.#searchUpdated\n      .pipe(debounceTime(this.debounceTime), distinctUntilChanged())\n      .subscribe((value) => {\n        this.searchChange.emit(value);\n      });\n  }\n}\n","<div class=\"sky-search-container\">\n  <div class=\"sky-search-button-container\">\n    <button\n      class=\"sky-btn sky-btn-default sky-btn-icon sky-search-btn-open\"\n      type=\"button\"\n      [attr.aria-label]=\"'skyux_search_open' | skyLibResources\"\n      [hidden]=\"!searchButtonShown\"\n      [ngClass]=\"{ 'sky-search-btn-open-applied': clearButtonShown }\"\n      (click)=\"toggleSearchInput(true)\"\n    >\n      <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n    </button>\n  </div>\n  <div\n    class=\"sky-search-dismiss-container\"\n    [hidden]=\"searchButtonShown\"\n    [ngClass]=\"{\n      'sky-search-dismiss-absolute': mobileSearchShown || isFullWidth\n    }\"\n  >\n    <div class=\"sky-search-item-input\">\n      <div\n        class=\"sky-search-input-container\"\n        [@inputState]=\"inputAnimate\"\n        [ngClass]=\"{\n          'sky-search-input-container-has-value': searchText?.trim()\n        }\"\n        (@inputState.start)=\"inputAnimationStart($event)\"\n        (@inputState.done)=\"inputAnimationEnd($event)\"\n      >\n        <sky-input-box [disabled]=\"disabled\">\n          <input\n            #searchInput=\"skyId\"\n            class=\"sky-form-control sky-search-input sky-rounded-corners\"\n            type=\"text\"\n            skyId\n            [attr.aria-label]=\"\n              ariaLabelledBy\n                ? undefined\n                : ariaLabel ||\n                  ((contentInfoObs | async)?.descriptor?.type === 'text'\n                    ? ('skyux_search_aria_label_descriptor'\n                      | skyLibResources\n                        : (contentInfoObs | async)?.descriptor?.value)\n                    : ('skyux_search_label' | skyLibResources))\n            \"\n            [attr.aria-labelledby]=\"ariaLabelledBy\"\n            [attr.placeholder]=\"\n              placeholderText || ('skyux_search_placeholder' | skyLibResources)\n            \"\n            [disabled]=\"disabled\"\n            [ngModel]=\"searchText\"\n            (keyup)=\"enterPress($event, searchText)\"\n            (ngModelChange)=\"searchTextChanged($event)\"\n          />\n          <span\n            class=\"sky-input-group-btn sky-input-group-clear sky-input-box-btn-inset\"\n            [hidden]=\"!clearButtonShown\"\n          >\n            <button\n              aria-hidden=\"true\"\n              class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-clear\"\n              tabindex=\"-1\"\n              type=\"button\"\n              [disabled]=\"disabled\"\n              (click)=\"clearSearchText()\"\n            >\n              <sky-icon iconName=\"close\" />\n            </button>\n          </span>\n          <span\n            *skyThemeIf=\"'default'\"\n            class=\"sky-input-group-btn sky-input-box-btn-inset\"\n          >\n            <button\n              class=\"sky-btn sky-btn-default sky-search-btn sky-search-btn-apply\"\n              type=\"button\"\n              [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\n              [disabled]=\"disabled\"\n              (click)=\"applySearchText(searchText)\"\n            >\n              <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n            </button>\n          </span>\n          <div\n            *skyThemeIf=\"'modern'\"\n            aria-hidden=\"true\"\n            class=\"sky-input-group-icon sky-input-box-icon-inset-left\"\n          >\n            <ng-container *ngTemplateOutlet=\"searchIconTemplate\" />\n          </div>\n        </sky-input-box>\n      </div>\n    </div>\n    <div class=\"sky-search-item-dismiss\">\n      @if (mobileSearchShown) {\n        <button\n          class=\"sky-btn sky-search-btn-dismiss\"\n          type=\"button\"\n          [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n          [skyThemeClass]=\"{\n            'sky-btn-icon-borderless': 'modern'\n          }\"\n          (click)=\"toggleSearchInput(false)\"\n        >\n          <sky-icon *skyThemeIf=\"'default'\" iconName=\"chevron-left\" />\n          <sky-icon *skyThemeIf=\"'modern'\" iconName=\"chevron-double-left\" />\n        </button>\n      }\n    </div>\n  </div>\n</div>\n\n<ng-template #searchIconTemplate>\n  <sky-icon iconName=\"search\" />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyInputBoxModule } from '@skyux/forms';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySearchComponent } from './search.component';\n\n@NgModule({\n  declarations: [SkySearchComponent],\n  imports: [\n    CommonModule,\n    SkyInputBoxModule,\n    SkyLookupResourcesModule,\n    FormsModule,\n    SkyIconModule,\n    SkyThemeModule,\n    SkyIdModule,\n  ],\n  exports: [SkySearchComponent],\n})\nexport class SkySearchModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @internal\n */\n@Pipe({\n  name: 'skySelectionModalItemSelected',\n})\nexport class SkySelectionModalItemSelectedPipe implements PipeTransform {\n  public transform(id: unknown, selectedIdMap: Map<unknown, unknown>): boolean {\n    return selectedIdMap.has(id);\n  }\n}\n","import { SkyAutocompleteSearchAsyncFunction } from '../../autocomplete/types/autocomplete-search-async-function';\nimport { SkyLookupSelectModeType } from '../../lookup/types/lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from '../../lookup/types/lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the selection modal. These values are provided by the selection modal service.\n */\nexport class SkySelectionModalContext {\n  public descriptorProperty: string;\n\n  public idProperty: string;\n\n  public initialSearch: string;\n\n  public initialValue: unknown[];\n\n  public searchAsync: SkyAutocompleteSearchAsyncFunction;\n\n  public selectionDescriptor: string;\n\n  public selectMode: SkyLookupSelectModeType;\n\n  public showAddButton: boolean;\n\n  public userConfig: SkyLookupShowMoreNativePickerConfig;\n\n  constructor(\n    descriptorProperty: string,\n    idProperty: string,\n    initialSearch: string,\n    initialValue: unknown[],\n    searchAsync: SkyAutocompleteSearchAsyncFunction,\n    selectMode: SkyLookupSelectModeType,\n    selectionDescriptor: string,\n    showAddButton: boolean,\n    userConfig: SkyLookupShowMoreNativePickerConfig,\n  ) {\n    this.descriptorProperty = descriptorProperty;\n    this.idProperty = idProperty;\n    this.initialSearch = initialSearch;\n    this.initialValue = initialValue;\n    this.searchAsync = searchAsync;\n    this.selectMode = selectMode;\n    this.selectionDescriptor = selectionDescriptor;\n    this.showAddButton = showAddButton;\n    this.userConfig = userConfig;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n  inject,\n} from '@angular/core';\nimport {\n  SkyIdService,\n  SkyLiveAnnouncerService,\n  SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyWaitModule } from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkySelectionModalItemSelectedPipe } from './selection-modal-item-selected.pipe';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalSearchResult } from './types/selection-modal-search-result';\n\n/**\n * @internal\n */\n@Component({\n  selector: 'sky-selection-modal',\n  templateUrl: './selection-modal.component.html',\n  styleUrls: ['./selection-modal.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    SkyCheckboxModule,\n    SkyIconModule,\n    SkyInfiniteScrollModule,\n    SkyLookupResourcesModule,\n    SkyModalModule,\n    SkyRepeaterModule,\n    SkySearchModule,\n    SkySelectionModalItemSelectedPipe,\n    SkyThemeModule,\n    SkyToolbarModule,\n    SkyWaitModule,\n    SkyViewkeeperModule,\n  ],\n})\nexport class SkySelectionModalComponent implements OnInit, OnDestroy {\n  /**\n   * @internal\n   * Fires when users select the button to add new options to the list.\n   */\n  public addClick = new Subject<void>();\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public displayedItems: any[] = [];\n\n  public hasMoreItems = false;\n\n  /**\n   * Used to associate this modal with its owning lookup component.\n   */\n  public id: string;\n\n  public isLoadingMore = false;\n\n  public isSearching = false;\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public items: any[] = [];\n\n  public onlyShowSelected = false;\n\n  public repeaterItemTemplate: TemplateRef<unknown> | null = null;\n\n  public searchText: string | undefined;\n\n  public selectedIdMap = new Map<unknown, unknown>();\n\n  #continuationData: unknown;\n\n  #currentSearchSub: Subscription | undefined;\n\n  #ngUnsubscribe = new Subject<void>();\n\n  #offset = 0;\n\n  protected readonly context = inject(SkySelectionModalContext);\n  protected readonly modalInstance = inject(SkyModalInstance);\n  readonly #changeDetector = inject(ChangeDetectorRef);\n  readonly #idSvc = inject(SkyIdService);\n  readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n  readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n  constructor() {\n    this.id = this.#idSvc.generateId();\n  }\n\n  public ngOnInit(): void {\n    this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n    this.searchText = this.context.initialSearch;\n\n    this.#createInitialSelectedItemsMap();\n    this.#loadSearchResults();\n  }\n\n  public ngOnDestroy(): void {\n    this.#cancelCurrentSearch();\n\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public addButtonClicked(): void {\n    this.addClick.next();\n  }\n\n  public clearAll(): void {\n    this.selectedIdMap = new Map(this.selectedIdMap);\n\n    // Only deselect items that have been loaded; items that would be loaded\n    // after an infinite scroll event should remain selected.\n    for (const item of this.items) {\n      this.selectedIdMap.delete(item[this.context.idProperty]);\n    }\n\n    this.updateDisplayedItems();\n\n    this.#changeDetector.markForCheck();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public itemClick(selectedItem: any): void {\n    if (this.context.selectMode === 'single') {\n      this.onItemSelect(!selectedItem.selected, selectedItem);\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public addItem(itemToAdd: any): void {\n    // Add the selected item, then perform the search again in case the\n    // newly-added item should be displayed as a search results.\n    this.#offset = 0;\n    this.onItemSelect(true, itemToAdd);\n    this.#loadSearchResults();\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n    const itemId = itemToSelect[this.context.idProperty];\n\n    // Create a new Map so the pipe transform will execute on the next\n    // change detection cycle.\n    this.selectedIdMap = new Map(this.selectedIdMap);\n\n    if (this.context.selectMode === 'single') {\n      if (newSelectState) {\n        this.selectedIdMap.clear();\n        this.selectedIdMap.set(itemId, itemToSelect);\n      }\n    } else {\n      if (newSelectState) {\n        this.selectedIdMap.set(itemId, itemToSelect);\n      } else {\n        this.selectedIdMap.delete(itemId);\n      }\n    }\n\n    this.updateDisplayedItems();\n  }\n\n  public searchApplied(searchText: string): void {\n    this.#offset = 0;\n    this.searchText = searchText;\n\n    this.#loadSearchResults();\n  }\n\n  public selectAll(): void {\n    this.selectedIdMap = new Map();\n\n    for (const item of this.items) {\n      this.selectedIdMap.set(item[this.context.idProperty], item);\n    }\n\n    this.updateDisplayedItems();\n  }\n\n  public infiniteScrollEnd(): void {\n    this.#cancelCurrentSearch();\n\n    /* Sanity check - else case would only happen if this was called directly */\n    /* istanbul ignore else */\n    if (this.hasMoreItems) {\n      this.isLoadingMore = true;\n\n      this.#performSearch((result) => {\n        this.items = this.items.concat(result.items);\n\n        this.updateDisplayedItems();\n\n        this.isLoadingMore = false;\n      });\n    }\n  }\n\n  public save(): void {\n    const selectedItems = Array.from(\n      this.selectedIdMap.values(),\n      (itemData, index) => ({\n        index,\n        itemData,\n      }),\n    ).sort((a, b) => {\n      return this.items.indexOf(a.itemData) < this.items.indexOf(b.itemData)\n        ? -1\n        : 1;\n    });\n\n    this.modalInstance.save(selectedItems);\n  }\n\n  public updateDisplayedItems(): void {\n    const selectedItems = this.items.filter((item) =>\n      this.selectedIdMap.has(item[this.context.idProperty]),\n    );\n\n    if (this.onlyShowSelected) {\n      if (!this.searchText) {\n        this.displayedItems = Array.from(this.selectedIdMap.values());\n      } else {\n        this.displayedItems = selectedItems;\n      }\n    } else {\n      this.displayedItems = this.items;\n    }\n\n    setTimeout(() => {\n      this.#announceSelectionState(\n        selectedItems.length,\n        this.displayedItems.length,\n      );\n      this.#changeDetector.markForCheck();\n    });\n  }\n\n  #loadSearchResults(): void {\n    this.#cancelCurrentSearch();\n\n    this.isSearching = true;\n\n    this.#performSearch((result) => {\n      this.isSearching = false;\n      this.items = result.items;\n    });\n\n    this.#changeDetector.markForCheck();\n  }\n\n  #createInitialSelectedItemsMap(): void {\n    this.selectedIdMap = new Map(\n      this.context.initialValue.map((item) => [\n        (item as Record<string, unknown>)[this.context.idProperty],\n        item,\n      ]),\n    );\n  }\n\n  #performSearch(\n    processResults: (result: SkySelectionModalSearchResult) => void,\n  ): void {\n    this.#currentSearchSub = this.context\n      .searchAsync({\n        displayType: 'modal',\n        offset: this.#offset,\n        searchText: this.searchText || '',\n        continuationData: this.#continuationData,\n      })\n      .pipe(take(1))\n      .subscribe((result) => {\n        processResults(result);\n\n        this.#continuationData = result.continuationData;\n        this.hasMoreItems = result.hasMore || false;\n        this.#offset = this.items.length;\n\n        this.updateDisplayedItems();\n\n        this.#changeDetector.markForCheck();\n      });\n  }\n\n  #cancelCurrentSearch(): void {\n    if (this.#currentSearchSub) {\n      this.#currentSearchSub.unsubscribe();\n      this.#currentSearchSub = undefined;\n      this.isLoadingMore = false;\n      this.isSearching = false;\n    }\n  }\n\n  #announceSelectionState(\n    selectedItemCount: number,\n    displayedItemCount: number,\n  ): void {\n    this.#resourcesSvc\n      .getString(\n        'skyux_lookup_show_more_displayed_items_updated',\n        selectedItemCount.toString(),\n        displayedItemCount.toString(),\n      )\n      .pipe(take(1))\n      .subscribe((resourceString) => {\n        this.#liveAnnouncerSvc.announce(resourceString);\n      });\n  }\n}\n","<sky-modal\n  class=\"sky-lookup-show-more-modal\"\n  [attr.id]=\"id\"\n  [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n  <sky-modal-header>\n    @if (context.userConfig?.title) {\n      {{ context.userConfig.title }}\n    } @else {\n      {{\n        'skyux_lookup_show_more_modal_title'\n          | skyLibResources: context.selectionDescriptor\n      }}\n    }\n  </sky-modal-header>\n  <sky-modal-content\n    [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n  >\n    <sky-wait [isWaiting]=\"isSearching\" />\n    <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n      <sky-toolbar\n        class=\"sky-lookup-show-more-modal-toolbar\"\n        [listDescriptor]=\"context.selectionDescriptor\"\n      >\n        <sky-toolbar-section>\n          <sky-toolbar-item>\n            <sky-search\n              [debounceTime]=\"250\"\n              [searchText]=\"searchText\"\n              (searchApply)=\"searchApplied($event)\"\n            />\n          </sky-toolbar-item>\n          <sky-toolbar-view-actions>\n            @if (context.showAddButton) {\n              <button\n                type=\"button\"\n                class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n                [attr.aria-label]=\"\n                  'skyux_lookup_show_more_add_button_aria_label'\n                    | skyLibResources: context.selectionDescriptor\n                \"\n                (click)=\"addButtonClicked()\"\n              >\n                <sky-icon iconName=\"add\" />\n                {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n              </button>\n            }\n          </sky-toolbar-view-actions>\n        </sky-toolbar-section>\n      </sky-toolbar>\n      @if (context.selectMode === 'multiple') {\n        <sky-toolbar class=\"sky-lookup-show-more-modal-multiselect-toolbar\">\n          <sky-toolbar-section>\n            <sky-toolbar-item>\n              <button\n                class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n                type=\"button\"\n                [attr.aria-label]=\"\n                  'skyux_lookup_show_more_select_all_button_aria_label'\n                    | skyLibResources: context.selectionDescriptor\n                \"\n                (click)=\"selectAll()\"\n              >\n                {{\n                  'skyux_lookup_show_more_select_all_button_title'\n                    | skyLibResources\n                }}\n              </button>\n            </sky-toolbar-item>\n            <sky-toolbar-item>\n              <button\n                class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n                type=\"button\"\n                [attr.aria-label]=\"\n                  'skyux_lookup_show_more_clear_all_button_aria_label'\n                    | skyLibResources: context.selectionDescriptor\n                \"\n                (click)=\"clearAll()\"\n              >\n                {{\n                  'skyux_lookup_show_more_clear_all_button_title'\n                    | skyLibResources\n                }}\n              </button>\n            </sky-toolbar-item>\n            <sky-toolbar-view-actions>\n              <sky-checkbox\n                [labelText]=\"\n                  'skyux_lookup_show_more_show_selected_option_title'\n                    | skyLibResources: context.selectionDescriptor\n                \"\n                [(checked)]=\"onlyShowSelected\"\n                (change)=\"updateDisplayedItems()\"\n              />\n            </sky-toolbar-view-actions>\n          </sky-toolbar-section>\n        </sky-toolbar>\n      }\n    </div>\n    @if (!isSearching && displayedItems.length === 0) {\n      <div class=\"sky-font-deemphasized sky-lookup-show-more-no-results\">\n        {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n      </div>\n    }\n    <sky-repeater\n      class=\"sky-lookup-show-more-repeater\"\n      expandMode=\"none\"\n      [ngClass]=\"{ 'hover-rows': context.selectMode === 'single' }\"\n    >\n      @for (item of displayedItems; track item) {\n        <sky-repeater-item\n          #repeaterItem\n          [isSelected]=\"\n            item[context.idProperty]\n              | skySelectionModalItemSelected: selectedIdMap\n          \"\n          [itemName]=\"item[context.descriptorProperty]\"\n          [selectable]=\"context.selectMode === 'multiple'\"\n          (click)=\"itemClick(item)\"\n          (keyup.enter)=\"itemClick(item)\"\n          (isSelectedChange)=\"onItemSelect($event, item)\"\n        >\n          <sky-repeater-item-content>\n            <ng-container\n              *ngTemplateOutlet=\"\n                repeaterItemTemplate ?? defaultItemTemplate;\n                context: {\n                  item: item,\n                  checkboxId:\n                    context.selectMode === 'multiple'\n                      ? 'sky-checkbox-' +\n                        repeaterItem.contentId +\n                        '-item-checkbox-input'\n                      : undefined\n                }\n              \"\n            />\n          </sky-repeater-item-content>\n        </sky-repeater-item>\n      }\n    </sky-repeater>\n    <sky-infinite-scroll\n      [enabled]=\"hasMoreItems && (!onlyShowSelected || !!searchText)\"\n      [loading]=\"isLoadingMore\"\n      (scrollEnd)=\"infiniteScrollEnd()\"\n    />\n  </sky-modal-content>\n  <sky-modal-footer>\n    <button\n      class=\"sky-btn sky-btn-primary sky-lookup-show-more-modal-save\"\n      type=\"button\"\n      [attr.aria-label]=\"\n        'skyux_lookup_show_more_select_context'\n          | skyLibResources: context.selectionDescriptor\n      \"\n      [disabled]=\"isSearching\"\n      [skyThemeClass]=\"{\n        'sky-margin-inline-compact': 'default'\n      }\"\n      (click)=\"save()\"\n    >\n      {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n    </button>\n    <button\n      class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n      type=\"button\"\n      (click)=\"modalInstance.close()\"\n    >\n      {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n    </button>\n  </sky-modal-footer>\n</sky-modal>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-checkboxId=\"checkboxId\">\n  @if (checkboxId) {\n    <label class=\"selection-modal-item-label\" [attr.for]=\"checkboxId\">{{\n      item[context.descriptorProperty]\n    }}</label>\n  } @else {\n    {{ item[context.descriptorProperty] }}\n  }\n</ng-template>\n","import { Observable, Subject } from 'rxjs';\n\nimport { SkySelectionModalCloseArgs } from './selection-modal-close-args';\n\n/**\n * Represents an instance of a selection modal.\n */\nexport class SkySelectionModalInstance {\n  /**\n   * An event that the selection modal instance emits when it closes.\n   * It emits a `SkySelectionModalCloseArgs` object with a `selectedItems` property that includes\n   * items selected by users on close or save and a `reason` property that indicates\n   * whether the selection modal was saved or closed without saving.\n   * The `reason` property accepts `\"cancel\"`, `\"close\"`, and `\"save\"`.\n   */\n  public get closed(): Observable<SkySelectionModalCloseArgs> {\n    return this.#closedObs;\n  }\n\n  /**\n   * @internal\n   */\n  public get itemAdded(): Observable<unknown> {\n    return this.#itemAddedObs;\n  }\n\n  /**\n   * @internal\n   */\n  public id: string;\n\n  #closed = new Subject<SkySelectionModalCloseArgs>();\n  #closedObs: Observable<SkySelectionModalCloseArgs>;\n  #itemAdded = new Subject<unknown>();\n  #itemAddedObs: Observable<unknown>;\n\n  constructor(id: string) {\n    this.id = id;\n\n    this.#closedObs = this.#closed.asObservable();\n    this.#itemAddedObs = this.#itemAdded.asObservable();\n  }\n\n  /**\n   * @internal\n   */\n  public close(args: SkySelectionModalCloseArgs): void {\n    this.#closed.next(args);\n    this.#closed.complete();\n  }\n\n  /**\n   * @internal\n   */\n  public addItem(itemToAdd: unknown): void {\n    this.#itemAdded.next(itemToAdd);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { SkyModalService } from '@skyux/modals';\n\nimport { Observable } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteSearchAsyncResult } from '../autocomplete/types/autocomplete-search-async-result';\n\nimport { SkySelectionModalComponent } from './selection-modal.component';\nimport { SkySelectionModalAddClickEventArgs } from './types/selection-modal-add-click-event-args';\nimport { SkySelectionModalCloseArgs } from './types/selection-modal-close-args';\nimport { SkySelectionModalContext } from './types/selection-modal-context';\nimport { SkySelectionModalInstance } from './types/selection-modal-instance';\nimport { SkySelectionModalOpenArgs } from './types/selection-modal-open-args';\n\n/**\n * Displays a modal for selecting one or more values.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class SkySelectionModalService {\n  #modalSvc: SkyModalService;\n\n  constructor(modalSvc: SkyModalService) {\n    this.#modalSvc = modalSvc;\n  }\n\n  /**\n   * Opens the selection modal.\n   * @param args Parameters for the selection modal.\n   */\n  public open(args: SkySelectionModalOpenArgs): SkySelectionModalInstance {\n    const initialValue = args.value;\n\n    const context = new SkySelectionModalContext(\n      args.descriptorProperty,\n      args.idProperty,\n      args.initialSearch || '',\n      initialValue || [],\n      (searchArgs) => {\n        return args.searchAsync({\n          offset: searchArgs.offset,\n          searchText: searchArgs.searchText,\n          continuationData: searchArgs.continuationData,\n        }) as Observable<SkyAutocompleteSearchAsyncResult>;\n      },\n      args.selectMode,\n      args.selectionDescriptor ||\n        (args.selectMode === 'single' ? 'item' : 'items'),\n      args.showAddButton || false,\n      {\n        itemTemplate: args.itemTemplate,\n        title: args.title,\n      },\n    );\n\n    const modalInstance = this.#modalSvc.open(SkySelectionModalComponent, {\n      providers: [\n        {\n          provide: SkySelectionModalContext,\n          useValue: context,\n        },\n      ],\n      size: 'large',\n      wrapperClass: args.wrapperClass,\n    });\n\n    const instance = new SkySelectionModalInstance(\n      modalInstance.componentInstance.id,\n    );\n\n    instance.itemAdded\n      .pipe(takeUntil(modalInstance.closed))\n      .subscribe((item) => {\n        modalInstance.componentInstance.addItem(item);\n      });\n\n    modalInstance.closed.subscribe((modalCloseArgs) => {\n      let closeArgs: SkySelectionModalCloseArgs;\n\n      switch (modalCloseArgs.reason) {\n        case 'save':\n          closeArgs = {\n            reason: 'save',\n            selectedItems: modalCloseArgs.data.map(\n              (item: { itemData: unknown }) => item.itemData,\n            ),\n          };\n          break;\n        case 'cancel':\n          closeArgs = { reason: 'cancel' };\n          break;\n        default:\n          closeArgs = { reason: 'close' };\n      }\n\n      instance.close(closeArgs);\n    });\n\n    const selectionModal = modalInstance.componentInstance;\n\n    selectionModal.addClick\n      .pipe(takeUntil(modalInstance.closed))\n      .subscribe(() => {\n        if (args.addClick) {\n          const addArgs: SkySelectionModalAddClickEventArgs = {\n            itemAdded(args) {\n              selectionModal.addItem(args.item);\n            },\n          };\n\n          args.addClick(addArgs);\n        }\n      });\n\n    return instance;\n  }\n}\n","import { ElementRef, Injectable } from '@angular/core';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyLookupAdapterService {\n  public focusInput(elRef: ElementRef): void {\n    const inputEl: HTMLElement =\n      elRef.nativeElement.querySelector('.sky-lookup-input');\n\n    /* Sanity check */\n    /* istanbul ignore else */\n    if (inputEl) {\n      inputEl.focus();\n    }\n  }\n}\n","import {\n  Directive,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n} from '@angular/core';\n\nimport { skyAutocompleteDefaultSearchFunction } from '../autocomplete/autocomplete-default-search-function';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSearchFunction } from '../autocomplete/types/autocomplete-search-function';\nimport { SkyAutocompleteSearchFunctionFilter } from '../autocomplete/types/autocomplete-search-function-filter';\n\n/**\n * @internal\n */\n@Directive()\nexport class SkyLookupAutocompleteAdapter {\n  /**\n   * How many milliseconds to wait before searching while users\n   * enter text in the lookup field.\n   * @default 0\n   */\n  @Input()\n  public debounceTime: number | undefined;\n\n  /**\n   * The object property to display in the text input after users\n   * select an item in the dropdown list.\n   * @default \"name\"\n   */\n  @Input()\n  public set descriptorProperty(value: string | undefined) {\n    this.#_descriptorProperty = value || 'name';\n  }\n\n  public get descriptorProperty(): string {\n    return this.#_descriptorProperty;\n  }\n\n  /**\n   * The array of object properties to search when utilizing the `data` property and the built-in search function.\n   * @default [\"name\"]\n   * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n   */\n  @Input()\n  public set propertiesToSearch(value: string[] | undefined) {\n    this.#_propertiesToSearch = value ?? ['name'];\n\n    this.#updateDefaultSearchOptions();\n  }\n\n  public get propertiesToSearch(): string[] {\n    return this.#_propertiesToSearch;\n  }\n\n  /**\n   * The function that dynamically manages the data to display in search results when users\n   * change the text in the lookup field. The search function must return\n   * an array or a promise of an array. The `search` property is particularly\n   * useful when the data source does not live in the source code.\n   * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n   */\n  @Input()\n  public set search(value: SkyAutocompleteSearchFunction | undefined) {\n    this.#_search = value;\n    this.searchOrDefault =\n      value ||\n      skyAutocompleteDefaultSearchFunction({\n        propertiesToSearch: this.propertiesToSearch,\n        searchFilters: this.searchFilters,\n      });\n  }\n\n  public get search(): SkyAutocompleteSearchFunction | undefined {\n    return this.#_search;\n  }\n\n  /**\n   * The template that formats each option in the dropdown list. The lookup component\n   * injects values into the template as `item` variables that reference all of the object\n   * properties of the search results.\n   */\n  @Input()\n  public searchResultTemplate: TemplateRef<unknown> | undefined;\n\n  /**\n   * The minimum number of characters that users must enter before\n   * the lookup component searches the data source and displays search results\n   * in the dropdown list.\n   * @default 1\n   */\n  @Input()\n  public searchTextMinimumCharacters: number | undefined;\n\n  /**\n   * The array of functions to call against each search result in order\n   * to filter the search results when using the `data` input and the default search function. When\n   * using a custom search function via the `search` property filters must be\n   * applied manually inside that function. The function must return `true` or\n   * `false` for each result to indicate whether to display it in the dropdown list.\n   * @deprecated Use the `searchAsync` event emitter and callback instead to provide searched data to the lookup component.\n   */\n  @Input()\n  public set searchFilters(\n    value: SkyAutocompleteSearchFunctionFilter[] | undefined,\n  ) {\n    this.#_searchFilters = value;\n\n    this.#updateDefaultSearchOptions();\n  }\n\n  public get searchFilters():\n    | SkyAutocompleteSearchFunctionFilter[]\n    | undefined {\n    return this.#_searchFilters;\n  }\n\n  /**\n   * The maximum number of search results to display in the dropdown\n   * list. By default, the lookup component displays all matching results.\n   * This property has no effect on the results in the \"Show more\" picker.\n   */\n  @Input()\n  public searchResultsLimit: number | undefined;\n\n  /**\n   * Fires when users enter new search information and allows results to be\n   * returned via an observable. The event is also fired\n   * when the \"Show more\" picker is opened without search text.\n   */\n  @Output()\n  public searchAsync = new EventEmitter<SkyAutocompleteSearchAsyncArgs>();\n\n  public searchOrDefault = skyAutocompleteDefaultSearchFunction({\n    propertiesToSearch: ['name'],\n    searchFilters: undefined,\n  });\n\n  #_descriptorProperty = 'name';\n\n  #_propertiesToSearch = ['name'];\n\n  #_search: SkyAutocompleteSearchFunction | undefined;\n\n  #_searchFilters: SkyAutocompleteSearchFunctionFilter[] | undefined;\n\n  #updateDefaultSearchOptions(): void {\n    // Reset default search if it is what is being used.\n    if (this.search !== this.searchOrDefault) {\n      this.searchOrDefault = skyAutocompleteDefaultSearchFunction({\n        propertiesToSearch: this.propertiesToSearch,\n        searchFilters: this.searchFilters,\n      });\n    }\n  }\n}\n","import { SkyAutocompleteSearchFunction } from '../../autocomplete/types/autocomplete-search-function';\n\nimport { SkyLookupSelectModeType } from './lookup-select-mode-type';\nimport { SkyLookupShowMoreNativePickerConfig } from './lookup-show-more-native-picker-config';\n\n/**\n * @internal\n * Context for the show more native picker. These values are provided by the lookup component.\n */\nexport class SkyLookupShowMoreNativePickerContext {\n  public descriptorProperty: string;\n\n  public initialSearch: string;\n\n  public initialValue: any[];\n\n  public items: any[];\n\n  public search: SkyAutocompleteSearchFunction;\n\n  public selectMode: SkyLookupSelectModeType;\n\n  public showAddButton: boolean;\n\n  public userConfig: SkyLookupShowMoreNativePickerConfig;\n\n  constructor(\n    descriptorProperty: string,\n    initialSearch: string,\n    initialValue: any[],\n    items: any[],\n    search: SkyAutocompleteSearchFunction,\n    selectMode: SkyLookupSelectModeType,\n    showAddButton: boolean,\n    userConfig: SkyLookupShowMoreNativePickerConfig,\n  ) {\n    this.descriptorProperty = descriptorProperty;\n    this.initialSearch = initialSearch;\n    this.initialValue = initialValue;\n    this.items = items;\n    this.search = search;\n    this.selectMode = selectMode;\n    this.showAddButton = showAddButton;\n    this.userConfig = userConfig;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  OnDestroy,\n  TemplateRef,\n  inject,\n} from '@angular/core';\nimport {\n  SkyIdService,\n  SkyLiveAnnouncerService,\n  SkyViewkeeperModule,\n} from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalInstance, SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { Subject, take } from 'rxjs';\n\nimport { SkySearchModule } from '../search/search.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n/**\n * @internal\n * Internal component to implement the native picker.\n */\n@Component({\n  selector: 'sky-lookup-show-more-modal',\n  templateUrl: './lookup-show-more-modal.component.html',\n  styleUrls: ['./lookup-show-more-modal.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    SkyCheckboxModule,\n    SkyIconModule,\n    SkyInfiniteScrollModule,\n    SkyLookupResourcesModule,\n    SkyModalModule,\n    SkyRepeaterModule,\n    SkySearchModule,\n    SkyThemeModule,\n    SkyToolbarModule,\n    SkyViewkeeperModule,\n  ],\n})\nexport class SkyLookupShowMoreModalComponent\n  implements AfterViewInit, OnDestroy\n{\n  /**\n   * @internal\n   * Fires when users select the button to add new options to the list.\n   */\n  public addClick = new Subject<void>();\n\n  /**\n   * Used to associate this modal with its owning lookup component.\n   */\n  public id: string;\n\n  public items: any[] = [];\n\n  public itemsLoading = false;\n\n  public dataManagerConfig = {\n    sortOptions: [\n      {\n        id: 'az',\n        label: 'Alphabetical (A - Z)',\n        descending: false,\n        propertyName: 'name',\n      },\n      {\n        id: 'za',\n        label: 'Alphabetical (Z - A)',\n        descending: true,\n        propertyName: 'name',\n      },\n    ],\n  };\n\n  public displayedItems: any[] = [];\n\n  public itemsHaveMore = false;\n\n  public onlyShowSelected = false;\n\n  public repeaterItemTemplate: TemplateRef<unknown> | null = null;\n\n  public searchText = '';\n\n  public selectedItems: { index: number; itemData: any }[] = [];\n\n  #itemIndex = 0;\n  #ngUnsubscribe = new Subject<void>();\n\n  protected readonly modalInstance = inject(SkyModalInstance);\n  protected readonly context = inject(SkyLookupShowMoreNativePickerContext);\n  readonly #changeDetector = inject(ChangeDetectorRef);\n  readonly #idSvc = inject(SkyIdService);\n  readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n  readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n  constructor() {\n    this.id = this.#idSvc.generateId();\n  }\n\n  public ngAfterViewInit(): void {\n    this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n    this.searchText = this.context.initialSearch;\n    void this.addItems();\n  }\n\n  public ngOnDestroy(): void {\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n  }\n\n  public addButtonClicked(): void {\n    this.addClick.next();\n  }\n\n  public async addItems(): Promise<void> {\n    this.itemsLoading = true;\n    if (!this.items || this.items.length === 0) {\n      const selectedItems: any[] = this.selectedItems.slice();\n\n      this.items = this.context.items.map((item) => {\n        return {\n          value: item,\n          selected: false,\n        };\n      });\n\n      this.items.forEach((item) => {\n        const isInitialValue: boolean =\n          this.context.initialValue === item.value;\n\n        const initialIsArray: boolean = Array.isArray(\n          this.context.initialValue,\n        );\n        const initialValueContainsItem: boolean =\n          this.context.initialValue.findIndex(\n            (initialItem: any) => initialItem === item.value,\n          ) >= 0;\n\n        if (isInitialValue || (initialIsArray && initialValueContainsItem)) {\n          item.selected = true;\n          const itemIndex = this.items.indexOf(item);\n          if (\n            selectedItems.findIndex(\n              (selectedItem) => selectedItem.index === itemIndex,\n            ) < 0\n          ) {\n            selectedItems.push({ index: itemIndex, itemData: item.value });\n          }\n        }\n      });\n\n      this.selectedItems = selectedItems;\n      await this.updateDataState();\n      this.#changeDetector.markForCheck();\n    }\n\n    // if onlyShowSelected is checked, then only iterate through the initial selection\n    const items = this.onlyShowSelected\n      ? this.items.filter((item) => item.selected)\n      : this.items;\n\n    this.#itemIndex = this.#itemIndex + 10;\n\n    const searchedItems = await this.searchItems(items);\n\n    this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n\n    if (this.#itemIndex > searchedItems.length) {\n      this.itemsHaveMore = false;\n    } else {\n      this.itemsHaveMore = true;\n    }\n    this.itemsLoading = false;\n\n    this.#announceSelectionState(\n      this.selectedItems.length,\n      this.displayedItems.length,\n    );\n\n    this.#changeDetector.markForCheck();\n  }\n\n  public async clearAll(): Promise<void> {\n    this.displayedItems.forEach((item) => {\n      if (item.selected) {\n        item.selected = false;\n      }\n    });\n    this.selectedItems = [];\n    await this.updateDataState();\n    this.#changeDetector.markForCheck();\n  }\n\n  public itemClick(selectedItem: any): void {\n    if (this.context.selectMode === 'single') {\n      void this.onItemSelect(!selectedItem.selected, selectedItem);\n    }\n  }\n\n  public onItemSelect(newSelectState: boolean, itemToSelect: any): void {\n    const items = this.items;\n\n    if (this.context.selectMode === 'single') {\n      /* Sanity check - single select mode should only alow for a `true` select state */\n      /* istanbul ignore else */\n      if (newSelectState) {\n        itemToSelect.selected = true;\n        items.forEach((item) => {\n          if (item.value !== itemToSelect.value) {\n            item.selected = false;\n          }\n        });\n        this.displayedItems.forEach((item) => {\n          if (item.value !== itemToSelect.value) {\n            item.selected = false;\n          }\n        });\n        const itemIndex = items.findIndex(\n          (item) => item.value === itemToSelect.value,\n        );\n        this.selectedItems = [\n          { index: itemIndex, itemData: items[itemIndex].value },\n        ];\n      }\n    } else {\n      const selectedItems: { index: number; itemData: any }[] =\n        this.selectedItems;\n      const allItemsIndex = items.findIndex(\n        (item) => item.value === itemToSelect.value,\n      );\n      const selectedItemsIndex = selectedItems.findIndex(\n        (selectedItem) => selectedItem.index === allItemsIndex,\n      );\n\n      if (newSelectState && selectedItemsIndex === -1) {\n        selectedItems.push({\n          index: allItemsIndex,\n          itemData: items[allItemsIndex].value,\n        });\n      } else if (!newSelectState && selectedItemsIndex !== -1) {\n        selectedItems.splice(selectedItemsIndex, 1);\n      }\n\n      this.selectedItems = selectedItems;\n    }\n\n    void this.updateDataState();\n    this.#changeDetector.markForCheck();\n  }\n\n  public searchApplied(searchText: string): void {\n    /* istanbul ignore else */\n    if (this.searchText !== searchText) {\n      this.#itemIndex = 10;\n      this.modalInstance.scrollContentToTop();\n    }\n    this.searchText = searchText;\n    this.itemsLoading = true;\n    this.#changeDetector.detectChanges();\n\n    // We need to ensure that the scroll event makes it all the way through the infinite scroll workflow before updating the data state.\n    // Without this, the infinite scroll can add items improperly because it can see the above scroll after the items finish searching.\n    setTimeout(() => {\n      void this.updateDataState();\n    }, 100);\n  }\n\n  public searchItems(items: any[]): Promise<any[]> {\n    const searchText = this.searchText;\n\n    if (searchText) {\n      const resultValues = this.context.search(\n        searchText,\n        items.map((item) => {\n          return item.value;\n        }),\n        { context: 'modal' },\n      );\n\n      if (resultValues instanceof Array) {\n        const result = items.filter(\n          (item) => resultValues.indexOf(item.value) >= 0,\n        );\n        return Promise.resolve(result);\n      } else {\n        return resultValues.then((values) => {\n          const result = items.filter(\n            (item) => values.indexOf(item.value) >= 0,\n          );\n          return Promise.resolve(result);\n        });\n      }\n    } else {\n      return Promise.resolve(items);\n    }\n  }\n\n  public async selectAll(): Promise<void> {\n    const items = this.items;\n\n    const selectedItems: { index: number; itemData: any }[] =\n      this.selectedItems;\n\n    this.displayedItems.forEach((item: any) => {\n      if (!item.selected) {\n        item.selected = true;\n\n        const index = items.indexOf(item);\n\n        /* istanbul ignore else */\n        if (\n          selectedItems.findIndex(\n            (selectedItem) => selectedItem.index === index,\n          ) < 0\n        ) {\n          selectedItems.push({\n            index: index,\n            itemData: items[index].value,\n          });\n        }\n      }\n    });\n\n    this.selectedItems = selectedItems;\n    await this.updateDataState();\n    this.#changeDetector.markForCheck();\n  }\n\n  public async updateDataState(): Promise<void> {\n    const items = this.items;\n\n    const selectedItems: { index: number; itemData: any }[] =\n      this.selectedItems;\n\n    items?.forEach((item: any, index: number) => {\n      item.selected =\n        selectedItems.findIndex(\n          (selectedItem) => selectedItem.index === index,\n        ) !== -1;\n    });\n\n    let searchedItems = await this.searchItems(items);\n\n    if (this.onlyShowSelected) {\n      searchedItems = searchedItems.filter((item) => item.selected);\n    }\n\n    this.displayedItems = searchedItems.slice(0, this.#itemIndex);\n\n    if (this.#itemIndex > searchedItems.length) {\n      this.itemsHaveMore = false;\n    } else {\n      this.itemsHaveMore = true;\n    }\n    this.itemsLoading = false;\n\n    this.#announceSelectionState(\n      selectedItems.length,\n      this.displayedItems.length,\n    );\n\n    this.#changeDetector.markForCheck();\n  }\n\n  public async updateItemData(data: any[]): Promise<void> {\n    this.context.items = data;\n    this.items = [];\n    this.#itemIndex = 10;\n    this.selectedItems.forEach((selectedItem) => {\n      this.context.items.forEach((item: any, index: number) => {\n        if (selectedItem.itemData === item) {\n          selectedItem.index = index;\n        }\n      });\n    });\n\n    await this.addItems();\n\n    this.#changeDetector.markForCheck();\n  }\n\n  #announceSelectionState(\n    selectedItemCount: number,\n    displayedItemCount: number,\n  ): void {\n    this.#resourcesSvc\n      .getString(\n        'skyux_lookup_show_more_displayed_items_updated',\n        selectedItemCount.toString(),\n        displayedItemCount.toString(),\n      )\n      .pipe(take(1))\n      .subscribe((resourcesString) => {\n        this.#liveAnnouncerSvc.announce(resourcesString);\n      });\n  }\n}\n","<sky-modal\n  class=\"sky-lookup-show-more-modal\"\n  [attr.id]=\"id\"\n  [ngClass]=\"'sky-lookup-show-more-modal-' + context.selectMode\"\n>\n  <sky-modal-header>\n    @if (context.userConfig?.title) {\n      {{ context.userConfig.title }}\n    } @else {\n      {{\n        'skyux_lookup_show_more_modal_title'\n          | skyLibResources: context.userConfig.selectionDescriptor\n      }}\n    }\n  </sky-modal-header>\n  <sky-modal-content\n    [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n  >\n    <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n      <sky-toolbar\n        class=\"sky-lookup-show-more-modal-toolbar\"\n        [listDescriptor]=\"context.userConfig.selectionDescriptor\"\n      >\n        <sky-toolbar-section>\n          <sky-toolbar-item>\n            <sky-search\n              [debounceTime]=\"250\"\n              [searchText]=\"searchText\"\n              (searchApply)=\"searchApplied($event)\"\n            />\n          </sky-toolbar-item>\n          <sky-toolbar-view-actions>\n            @if (context.showAddButton) {\n              <button\n                type=\"button\"\n                class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n                [attr.aria-label]=\"\n                  'skyux_lookup_show_more_add_button_aria_label'\n                    | skyLibResources: context.userConfig.selectionDescriptor\n                \"\n                (click)=\"addButtonClicked()\"\n              >\n                <sky-icon iconName=\"add\" />\n                {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n              </button>\n            }\n          </sky-toolbar-view-actions>\n        </sky-toolbar-section>\n      </sky-toolbar>\n      @if (context.selectMode === 'multiple') {\n        <sky-toolbar class=\"sky-lookup-show-more-modal-multiselect-toolbar\">\n          <sky-toolbar-section>\n            <sky-toolbar-item>\n              <button\n                class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-select-all-btn\"\n                type=\"button\"\n                [attr.aria-label]=\"\n                  'skyux_lookup_show_more_select_all_button_aria_label'\n                    | skyLibResources: context.userConfig.selectionDescriptor\n                \"\n                (click)=\"selectAll()\"\n              >\n                {{\n                  'skyux_lookup_show_more_select_all_button_title'\n                    | skyLibResources\n                }}\n              </button>\n            </sky-toolbar-item>\n            <sky-toolbar-item>\n              <button\n                class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-clear-all-btn\"\n                type=\"button\"\n                [attr.aria-label]=\"\n                  'skyux_lookup_show_more_clear_all_button_aria_label'\n                    | skyLibResources: context.userConfig.selectionDescriptor\n                \"\n                (click)=\"clearAll()\"\n              >\n                {{\n                  'skyux_lookup_show_more_clear_all_button_title'\n                    | skyLibResources\n                }}\n              </button>\n            </sky-toolbar-item>\n            <sky-toolbar-view-actions>\n              <sky-checkbox\n                [labelText]=\"\n                  'skyux_lookup_show_more_show_selected_option_title'\n                    | skyLibResources: context.userConfig.selectionDescriptor\n                \"\n                [(checked)]=\"onlyShowSelected\"\n                (change)=\"updateDataState()\"\n              />\n            </sky-toolbar-view-actions>\n          </sky-toolbar-section>\n        </sky-toolbar>\n      }\n    </div>\n    @if (displayedItems.length === 0) {\n      <div class=\"sky-font-deemphasized sky-lookup-show-more-no-results\">\n        {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n      </div>\n    }\n    <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n      @for (item of displayedItems; track item) {\n        <sky-repeater-item\n          #repeaterItem\n          [selectable]=\"context.selectMode === 'multiple'\"\n          [(isSelected)]=\"item.selected\"\n          (click)=\"itemClick(item)\"\n          (keyup.enter)=\"itemClick(item)\"\n          (isSelectedChange)=\"onItemSelect($event, item)\"\n        >\n          <sky-repeater-item-content>\n            <ng-container\n              *ngTemplateOutlet=\"\n                repeaterItemTemplate ?? defaultItemTemplate;\n                context: {\n                  item: item.value,\n                  checkboxId:\n                    context.selectMode === 'multiple'\n                      ? 'sky-checkbox-' +\n                        repeaterItem.contentId +\n                        '-item-checkbox-input'\n                      : undefined\n                }\n              \"\n            />\n          </sky-repeater-item-content>\n        </sky-repeater-item>\n      }\n    </sky-repeater>\n    <sky-infinite-scroll\n      [enabled]=\"itemsHaveMore\"\n      [loading]=\"itemsLoading\"\n      (scrollEnd)=\"addItems()\"\n    />\n  </sky-modal-content>\n  <sky-modal-footer>\n    <button\n      class=\"sky-btn sky-btn-primary sky-lookup-show-more-modal-save\"\n      type=\"button\"\n      [attr.aria-label]=\"\n        'skyux_lookup_show_more_select_context'\n          | skyLibResources: context.userConfig.selectionDescriptor\n      \"\n      [skyThemeClass]=\"{\n        'sky-margin-inline-compact': 'default'\n      }\"\n      (click)=\"modalInstance.save(selectedItems)\"\n    >\n      {{ 'skyux_lookup_show_more_select' | skyLibResources }}\n    </button>\n    <button\n      class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-close\"\n      type=\"button\"\n      (click)=\"modalInstance.close()\"\n    >\n      {{ 'skyux_lookup_show_more_cancel' | skyLibResources }}\n    </button>\n  </sky-modal-footer>\n</sky-modal>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-checkboxId=\"checkboxId\">\n  @if (checkboxId) {\n    <label class=\"selection-modal-item-label\" [attr.for]=\"checkboxId\">{{\n      item[context.descriptorProperty]\n    }}</label>\n  } @else {\n    {{ item[context.descriptorProperty] }}\n  }\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Self,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { SkyAppWindowRef, SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport {\n  SkyToken,\n  SkyTokensMessage,\n  SkyTokensMessageType,\n} from '@skyux/indicators';\nimport { SkyModalInstance, SkyModalService } from '@skyux/modals';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { Observable, Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyAutocompleteInputDirective } from '../autocomplete/autocomplete-input.directive';\nimport { SkyAutocompleteMessage } from '../autocomplete/types/autocomplete-message';\nimport { SkyAutocompleteMessageType } from '../autocomplete/types/autocomplete-message-type';\nimport { SkyAutocompleteSearchAsyncArgs } from '../autocomplete/types/autocomplete-search-async-args';\nimport { SkyAutocompleteSelectionChange } from '../autocomplete/types/autocomplete-selection-change';\nimport { SkyAutocompleteShowMoreArgs } from '../autocomplete/types/autocomplete-show-more-args';\nimport { SkySelectionModalService } from '../selection-modal/selection-modal.service';\nimport { SkySelectionModalInstance } from '../selection-modal/types/selection-modal-instance';\n\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupAddCallbackArgs } from './types/lookup-add-click-callback-args';\nimport { SkyLookupAddClickEventArgs } from './types/lookup-add-click-event-args';\nimport { SkyLookupSelectModeType } from './types/lookup-select-mode-type';\nimport { SkyLookupShowMoreConfig } from './types/lookup-show-more-config';\nimport { SkyLookupShowMoreNativePickerContext } from './types/lookup-show-more-native-picker-context';\n\n@Component({\n  selector: 'sky-lookup',\n  templateUrl: './lookup.component.html',\n  styleUrls: ['./lookup.component.scss'],\n  providers: [SkyLookupAdapterService],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class SkyLookupComponent\n  extends SkyLookupAutocompleteAdapter\n  implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor\n{\n  /**\n   * The ARIA label for the typeahead search input. This sets the input's `aria-label` attribute to provide a text equivalent for\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the input includes a visible label, use `ariaLabelledBy` instead.\n   * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n   * @deprecated Use the input box `labelText` input instead.\n   */\n  @Input()\n  public ariaLabel: string | undefined;\n\n  /**\n   * The HTML element ID of the element that labels\n   * the typeahead search input. This sets the input's `aria-labelledby` attribute to provide a text equivalent for\n   * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n   * If the input does not include a visible label, use `ariaLabel` instead.\n   * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n   * @deprecated Use the input box `labelText` input instead.\n   */\n  @Input()\n  public ariaLabelledBy: string | undefined;\n\n  /**\n   * The value to provide to the `autocomplete` attribute on the form input.\n   * @default 'off'\n   * @deprecated SKY UX only supports browser autofill on components where the direct input matches the return value. This input may not behave as expected due to the dropdown selection interaction.\n   */\n  @Input()\n  public autocompleteAttribute: string | undefined;\n\n  /**\n   * The data source for the lookup component to search when users\n   * enter text. You can specify static data, such as an array of objects, or\n   * you can pull data from a database.\n   *\n   * @default []\n   * @deprecated Use the `searchAsync` event emitter and callback instead to provide data to the lookup component.\n   */\n  @Input()\n  public set data(value: any[] | undefined) {\n    this.#_data = value;\n\n    if (this.#openNativePicker && !this.#hasSearchAsync()) {\n      this.#openNativePicker.componentInstance.updateItemData(value);\n    }\n  }\n\n  public get data(): any[] {\n    return this.#_data || [];\n  }\n\n  /**\n   * Whether to disable the lookup field on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n   * To set the disabled state on reactive forms, use the `FormControl` instead.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public disabled = false;\n\n  /**\n   * Whether the lookup field is required.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public set required(value: boolean) {\n    this.#_required = value;\n    this.inputBoxHostSvc?.setRequired(value);\n  }\n\n  public get required(): boolean {\n    return this.#_required;\n  }\n\n  /**\n   * Whether to enable users to open a picker where they can view all options.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public enableShowMore = false;\n\n  /**\n   * Placeholder text to display in the lookup field.\n   */\n  @Input()\n  public placeholderText: string | undefined;\n\n  /**\n   * The object property that represents the object's unique identifier.\n   * Specifying this property enables token animations and more efficient rendering.\n   * This property is required when using `enableShowMore` and `searchAsync` together.\n   */\n  @Input()\n  public idProperty: string | undefined;\n\n  /**\n   * Whether to display a button that lets users add options to the list.\n   * @default false\n   */\n  @Input({ transform: booleanAttribute })\n  public showAddButton = false;\n\n  /**\n   * Configuration options for the picker that displays all options.\n   */\n  @Input()\n  public showMoreConfig: SkyLookupShowMoreConfig | undefined;\n\n  /**\n   * The ability for users to select one option or multiple options.\n   * @default \"multiple\"\n   */\n  @Input()\n  public set selectMode(value: SkyLookupSelectModeType | undefined) {\n    const multipleToSingle: boolean =\n      value === 'single' && this.selectMode === 'multiple';\n\n    this.#_selectMode = value;\n    this.#updateForSelectMode();\n\n    if (multipleToSingle) {\n      const value = this.#getValue();\n\n      if (value?.length > 1) {\n        // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n        setTimeout(() => {\n          this.#setValue([value[0]], { emitEvent: true });\n          this.#changeDetector.detectChanges();\n        });\n      }\n    }\n  }\n\n  public get selectMode(): SkyLookupSelectModeType {\n    return this.#_selectMode || 'multiple';\n  }\n\n  /**\n   * @internal\n   */\n  @Input()\n  public wrapperClass: string | undefined;\n\n  /**\n   * Fires when users select the button to add options to the list.\n   */\n  @Output()\n  public addClick = new EventEmitter<SkyLookupAddClickEventArgs>();\n\n  /**\n   * @internal\n   */\n  @Output()\n  public openChange = new EventEmitter<boolean>();\n\n  /**\n   * @internal\n   */\n  @Output()\n  public selectionModalOpenChange = new EventEmitter<boolean>();\n\n  public get tokens(): SkyToken[] | undefined {\n    return this.#_tokens;\n  }\n\n  public set tokens(tokens: SkyToken[] | undefined) {\n    const value = this.#getValue();\n\n    // Collapse the tokens into a single token if the user has selected many options.\n    if (this.enableShowMore && value.length > 5) {\n      this.#resourcesService\n        .getString('skyux_lookup_tokens_summary', value.length.toString())\n        .pipe(take(1))\n        .subscribe((label) => {\n          this.#_tokens = [\n            {\n              value: { [this.descriptorProperty]: label },\n            },\n          ];\n          this.#changeDetector.markForCheck();\n        });\n    } else {\n      this.#_tokens = tokens;\n      this.#changeDetector.markForCheck();\n    }\n  }\n\n  /**\n   * @internal\n   * @deprecated This is exposed for unit tests only; refactor unit tests to\n   * derive the control value a different way.\n   */\n  public get value(): any[] {\n    return this.#getValue();\n  }\n\n  public autocompleteController = new Subject<SkyAutocompleteMessage>();\n  public isInputFocused = false;\n  public showMorePickerId: string | undefined;\n  public tokensController = new Subject<SkyTokensMessage>();\n  protected controlId: string | undefined;\n  protected ariaDescribedBy: Observable<string | undefined> | undefined;\n\n  @ViewChild(SkyAutocompleteInputDirective, {\n    read: SkyAutocompleteInputDirective,\n    static: false,\n  })\n  public set autocompleteInputDirective(\n    value: SkyAutocompleteInputDirective | undefined,\n  ) {\n    this.#_autocompleteInputDirective = value;\n    this.#updateForSelectMode();\n  }\n\n  public get autocompleteInputDirective():\n    | SkyAutocompleteInputDirective\n    | undefined {\n    return this.#_autocompleteInputDirective;\n  }\n\n  @ViewChild('showMoreButtonTemplateRef', {\n    read: TemplateRef,\n    static: true,\n  })\n  public showMoreButtonTemplateRef: TemplateRef<unknown> | undefined;\n\n  @ViewChild('inputTemplateRef', {\n    read: TemplateRef,\n    static: true,\n  })\n  public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n  @ViewChild('lookupWrapper', {\n    read: ElementRef,\n  })\n  public lookupWrapperRef: ElementRef | undefined;\n\n  #idle = new Subject<void>();\n  #markForTokenFocusOnKeyUp = false;\n  #ngUnsubscribe = new Subject<void>();\n  #notifyChange: ((value: any[]) => void) | undefined;\n  #notifyTouched: (() => void) | undefined;\n  #openNativePicker: SkyModalInstance | undefined;\n  #openSelectionModal: SkySelectionModalInstance | undefined;\n  #_required = false;\n\n  #_autocompleteInputDirective: SkyAutocompleteInputDirective | undefined;\n  #_data: any[] | undefined;\n  #_selectMode: SkyLookupSelectModeType | undefined;\n  #_tokens: SkyToken[] | undefined;\n  #_value: any[] | undefined;\n\n  readonly #adapter = inject(SkyLookupAdapterService);\n  readonly #changeDetector = inject(ChangeDetectorRef);\n  readonly #elementRef = inject(ElementRef);\n  readonly #idService = inject(SkyIdService);\n  readonly #logSvc = inject(SkyLogService);\n  readonly #modalService = inject(SkyModalService);\n  readonly #resourcesService = inject(SkyLibResourcesService);\n  readonly #selectionModalSvc = inject(SkySelectionModalService);\n  readonly #windowRef = inject(SkyAppWindowRef);\n\n  #getValue(): any[] {\n    return this.#_value ? this.#_value : [];\n  }\n\n  #setValue(newValue: any[], options: { emitEvent: boolean }): void {\n    this.#_value = newValue;\n\n    if (this.selectMode === 'multiple' && !this.#pickerModalOpen()) {\n      this.tokens = this.#parseTokens(newValue);\n    }\n\n    if (options.emitEvent) {\n      this.#notifyChange?.(this.#_value);\n    }\n\n    this.#updateForSelectMode();\n  }\n\n  constructor(\n    @Self() @Optional() ngControl?: NgControl,\n    @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n    @Optional() public themeSvc?: SkyThemeService,\n  ) {\n    super();\n\n    if (ngControl) {\n      ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnInit(): void {\n    if (this.inputBoxHostSvc && this.inputTemplateRef) {\n      this.controlId = this.inputBoxHostSvc.controlId;\n      this.ariaDescribedBy = this.inputBoxHostSvc.ariaDescribedBy;\n\n      this.inputBoxHostSvc.populate({\n        inputTemplate: this.inputTemplateRef,\n        buttonsTemplate: this.enableShowMore\n          ? this.showMoreButtonTemplateRef\n          : undefined,\n      });\n\n      this.inputBoxHostSvc?.setRequired(this.required);\n    } else {\n      this.controlId = this.#idService.generateId();\n    }\n\n    /* istanbul ignore else */\n    if (this.themeSvc) {\n      // This is required for the autocomplete directive to be set after elements\n      // are rearranged when switching themes.\n      this.themeSvc.settingsChange\n        .pipe(takeUntil(this.#ngUnsubscribe))\n        .subscribe(() => {\n          this.#changeDetector.markForCheck();\n        });\n    }\n  }\n\n  public ngAfterViewInit(): void {\n    if (!this.disabled) {\n      this.#addEventListeners();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.#removeEventListeners();\n    this.#ngUnsubscribe.next();\n    this.#ngUnsubscribe.complete();\n    this.addClick.complete();\n    this.openChange.complete();\n    this.tokensController.complete();\n  }\n\n  public addButtonClicked(): void {\n    this.addClick.emit({\n      itemAdded: (args: SkyLookupAddCallbackArgs) =>\n        this.#onAddButtonComplete(args),\n    });\n  }\n\n  public onAutocompleteSelectionChange(\n    change: SkyAutocompleteSelectionChange,\n  ): void {\n    if (change.selectedItem) {\n      this.#addToSelected(change.selectedItem);\n    } else {\n      this.#setValue([], { emitEvent: true });\n    }\n  }\n\n  public onAutocompleteBlur(): void {\n    this.#notifyTouched?.();\n  }\n\n  public onTokensChange(change: SkyToken[]): void {\n    if (!change) {\n      return;\n    }\n\n    if (this.tokens !== change) {\n      if (change.length === 0) {\n        this.#focusInput();\n      }\n\n      this.tokens = change;\n      const value = change.map((token) => {\n        return token.value;\n      });\n\n      this.#setValue(value, { emitEvent: true });\n    }\n  }\n\n  public onTokensFocusIndexOverRange(): void {\n    this.#windowRef.nativeWindow.setTimeout(() => {\n      this.#focusInput();\n    });\n  }\n\n  public onTokensKeyUp(event: KeyboardEvent): void {\n    /* istanbul ignore else */\n    if (this.selectMode !== 'single') {\n      switch (event.key) {\n        case 'Backspace':\n          this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n          this.#sendTokensMessage(SkyTokensMessageType.FocusPreviousToken);\n          event.preventDefault();\n          break;\n\n        case 'Del':\n        case 'Delete':\n          this.#sendTokensMessage(SkyTokensMessageType.RemoveActiveToken);\n          this.#windowRef.nativeWindow.setTimeout(() => {\n            this.#sendTokensMessage(SkyTokensMessageType.FocusActiveToken);\n          });\n          event.preventDefault();\n          break;\n      }\n    }\n  }\n\n  public onTokensRendered(): void {\n    this.#sendAutocompleteMessage(\n      SkyAutocompleteMessageType.RepositionDropdown,\n    );\n  }\n\n  public writeValue(value: any[]): void {\n    // Since we are dealing with arrays - clone the array being sent in to ensure we aren't modifying a consumers outer array\n    this.#setValue(value ? value.slice() : [], { emitEvent: false });\n  }\n\n  public registerOnChange(fn: (value: any[]) => void): void {\n    this.#notifyChange = fn;\n  }\n\n  public registerOnTouched(fn: () => void): void {\n    this.#notifyTouched = fn;\n  }\n\n  // Allows Angular to disable the input.\n  public setDisabledState(disabled: boolean): void {\n    this.#removeEventListeners();\n\n    if (!disabled) {\n      this.#addEventListeners();\n    }\n\n    this.disabled = disabled;\n    this.#changeDetector.markForCheck();\n  }\n\n  public clearSearchText(): void {\n    if (this.autocompleteInputDirective) {\n      this.autocompleteInputDirective.value = undefined;\n      this.autocompleteInputDirective.inputTextValue = '';\n    }\n  }\n\n  // Handles when to focus on the tokens.\n  // Check for empty search text on keydown, before the escape key is fully pressed.\n  // (Otherwise, a single character being escaped would register as empty on keyup.)\n  // If empty on keydown, set a flag so that the appropriate action can be taken on keyup.\n  public inputKeydown(event: KeyboardEvent): void {\n    const value = (event.target as HTMLTextAreaElement).value;\n\n    /* Sanity check as this should only be called when in multiple select mode */\n    /* istanbul ignore else */\n    if (this.selectMode !== 'single') {\n      switch (event.key) {\n        case 'Enter':\n          event.preventDefault();\n          break;\n        case 'ArrowLeft':\n        case 'Backspace':\n        case 'Left':\n          if (value) {\n            this.#markForTokenFocusOnKeyUp = false;\n          } else {\n            this.#markForTokenFocusOnKeyUp = true;\n          }\n          break;\n        default:\n      }\n    }\n  }\n\n  public inputKeyup(event: KeyboardEvent): void {\n    /* Sanity check as this should only be called when in multiple select mode */\n    /* istanbul ignore else */\n    if (this.selectMode !== 'single') {\n      switch (event.key) {\n        case 'Esc':\n        case 'Escape':\n          this.clearSearchText();\n          event.preventDefault();\n          break;\n        case 'ArrowLeft':\n        case 'Backspace':\n        case 'Left':\n          /* istanbul ignore else */\n          if (this.#markForTokenFocusOnKeyUp) {\n            this.#sendTokensMessage(SkyTokensMessageType.FocusLastToken);\n            event.preventDefault();\n          }\n          break;\n        default:\n      }\n\n      event.stopPropagation();\n    }\n  }\n\n  public onSearchButtonClick(): void {\n    /*istanbul ignore next*/\n    if (this.disabled) {\n      return;\n    }\n    this.#sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);\n    let isValueInTextBox = false;\n    if (this.selectMode === 'single') {\n      isValueInTextBox =\n        this.autocompleteInputDirective?.value &&\n        this.autocompleteInputDirective.inputTextValue ===\n          this.autocompleteInputDirective.value[this.descriptorProperty];\n    }\n\n    let searchValue = '';\n\n    if (!isValueInTextBox && this.autocompleteInputDirective) {\n      searchValue = this.autocompleteInputDirective.inputTextValue;\n    }\n\n    this.openPicker(searchValue);\n    this.autocompleteInputDirective?.restoreInputTextValueToPreviousState();\n  }\n\n  public onShowMoreClick(event: SkyAutocompleteShowMoreArgs): void {\n    /* Sanity check */\n    /* istanbul ignore else*/\n    if (event) {\n      this.openPicker(event.inputValue);\n    }\n  }\n\n  public openPicker(initialSearch: string): void {\n    if (this.showMoreConfig?.customPicker) {\n      this.showMorePickerId = undefined;\n\n      this.showMoreConfig.customPicker.open({\n        items: this.data,\n        initialSearch,\n        initialValue: this.#getValue(),\n      });\n    } else {\n      const initialValue = this.#getValue();\n      this.selectionModalOpenChange.emit(true);\n\n      if (this.#hasSearchAsync()) {\n        this.#openSelectionModal =\n          this.#createSelectionModalInstance(initialSearch);\n\n        this.showMorePickerId = this.#openSelectionModal.id;\n\n        this.#openSelectionModal.closed.subscribe((closeArgs) => {\n          this.#processPickerResult(\n            closeArgs.reason === 'save'\n              ? closeArgs.selectedItems\n              : initialValue,\n          );\n          this.selectionModalOpenChange.emit(false);\n        });\n      } else {\n        this.#openNativePicker =\n          this.#createNativePickerInstance(initialSearch);\n\n        this.showMorePickerId = this.#openNativePicker.componentInstance.id;\n\n        this.#openNativePicker.componentInstance.addClick.subscribe(() => {\n          this.addButtonClicked();\n        });\n\n        this.#openNativePicker.closed.subscribe((closeArgs) => {\n          let selectedItems: any[];\n\n          if (closeArgs.reason === 'save') {\n            selectedItems = [];\n\n            this.data.forEach((item: any, dataIndex: number) => {\n              if (\n                closeArgs.data.some((savedItem: any) => {\n                  return savedItem.index === dataIndex;\n                })\n              ) {\n                selectedItems.push(item);\n              }\n            });\n          } else {\n            selectedItems = initialValue;\n          }\n\n          this.#processPickerResult(selectedItems);\n          this.selectionModalOpenChange.emit(false);\n        });\n\n        this.#changeDetector.markForCheck();\n      }\n    }\n  }\n\n  protected onAutocompleteOpenChange($event: boolean): void {\n    if ($event) {\n      this.openChange.emit(true);\n    } else if (!this.#pickerModalOpen()) {\n      this.openChange.emit(false);\n    }\n  }\n\n  protected onFocus($event: FocusEvent): void {\n    ($event.target as HTMLTextAreaElement).select();\n  }\n\n  #createSelectionModalInstance(\n    initialSearch: string,\n  ): SkySelectionModalInstance {\n    const initialValue = this.#getValue();\n    const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n    if (!modalConfig.itemTemplate) {\n      modalConfig.itemTemplate = this.searchResultTemplate;\n    }\n\n    if (this.idProperty === undefined) {\n      this.#logSvc.error(\n        \"The lookup component's 'idProperty' input is required when `enableShowMore` and 'searchAsync' are used together.\",\n      );\n    }\n\n    return this.#selectionModalSvc.open({\n      descriptorProperty: this.descriptorProperty,\n      idProperty: this.idProperty!,\n      searchAsync: (args) => {\n        const searchAsyncArgs: SkyAutocompleteSearchAsyncArgs = {\n          displayType: 'modal',\n          offset: args.offset,\n          searchText: args.searchText,\n          continuationData: args.continuationData,\n        };\n\n        this.searchAsync.emit(searchAsyncArgs);\n\n        return searchAsyncArgs.result;\n      },\n      selectMode: this.selectMode,\n      addClick: () => {\n        this.addButtonClicked();\n      },\n      initialSearch,\n      itemTemplate: modalConfig.itemTemplate,\n      selectionDescriptor: modalConfig.selectionDescriptor,\n      showAddButton: this.showAddButton,\n      title: modalConfig.title,\n      value: initialValue,\n      wrapperClass: this.wrapperClass,\n    });\n  }\n\n  #createNativePickerInstance(initialSearch: string): SkyModalInstance {\n    const initialValue = this.#getValue();\n    const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n    if (!modalConfig.itemTemplate) {\n      modalConfig.itemTemplate = this.searchResultTemplate;\n    }\n\n    if (!modalConfig.selectionDescriptor) {\n      modalConfig.selectionDescriptor =\n        this.selectMode === 'single' ? 'item' : 'items';\n    }\n\n    const contextProviderValue = new SkyLookupShowMoreNativePickerContext(\n      this.descriptorProperty,\n      initialSearch,\n      initialValue,\n      this.data,\n      this.searchOrDefault,\n      this.selectMode,\n      this.showAddButton,\n      modalConfig,\n    );\n\n    return this.#modalService.open(SkyLookupShowMoreModalComponent, {\n      providers: [\n        {\n          provide: SkyLookupShowMoreNativePickerContext,\n          useValue: contextProviderValue,\n        },\n        {\n          provide: SkyLookupAdapterService,\n          useValue: this.#adapter,\n        },\n      ],\n      size: 'large',\n      wrapperClass: this.wrapperClass,\n    });\n  }\n\n  #processPickerResult(selectedItems: any[] | undefined): void {\n    this.#openSelectionModal = undefined;\n    this.#openNativePicker = undefined;\n    this.showMorePickerId = undefined;\n\n    /* istanbul ignore next */\n    selectedItems = selectedItems || [];\n\n    this.#setValue(selectedItems, { emitEvent: true });\n    this.#focusInput();\n    this.#changeDetector.markForCheck();\n  }\n\n  public onSearchAsync(args: SkyAutocompleteSearchAsyncArgs): void {\n    this.searchAsync.emit(args);\n  }\n\n  #addToSelected(item: any): void {\n    const value = this.#getValue();\n\n    let selectedItems: any[];\n\n    if (this.selectMode === 'single') {\n      selectedItems = [item];\n    } else {\n      selectedItems = value;\n\n      const idProperty = this.idProperty || '';\n\n      // If items have a unique identifier, don't allow the same item to be added twice.\n      if (\n        !this.idProperty ||\n        !value.some(\n          (existingItem) => existingItem[idProperty] === item[idProperty],\n        )\n      ) {\n        selectedItems.push(item);\n      }\n\n      this.clearSearchText();\n    }\n\n    this.#setValue(selectedItems, { emitEvent: true });\n  }\n\n  #addEventListeners(): void {\n    this.#idle = new Subject();\n    this.#focusInputOnHostClick();\n  }\n\n  #removeEventListeners(): void {\n    this.#idle.next();\n    this.#idle.complete();\n  }\n\n  #focusInputOnHostClick(): void {\n    let hostElement = !this.inputBoxHostSvc\n      ? this.#elementRef.nativeElement\n      : this.lookupWrapperRef?.nativeElement;\n    const documentObj = this.#windowRef.nativeWindow.document;\n\n    // Handles focusing the input when the host is clicked.\n    // The input should NOT be focused if other elements (tokens, etc.)\n    // are currently focused or being tabbed through.\n\n    observableFromEvent<MouseEvent>(documentObj, 'click')\n      .pipe(takeUntil(this.#idle))\n      .subscribe(() => {\n        hostElement = !this.inputBoxHostSvc\n          ? this.#elementRef.nativeElement\n          : this.lookupWrapperRef?.nativeElement;\n        this.isInputFocused = hostElement.contains(document.activeElement);\n\n        this.#changeDetector.markForCheck();\n      });\n\n    observableFromEvent<KeyboardEvent>(documentObj, 'focusin')\n      .pipe(takeUntil(this.#idle))\n      .subscribe(() => {\n        hostElement = !this.inputBoxHostSvc\n          ? this.#elementRef.nativeElement\n          : this.lookupWrapperRef?.nativeElement;\n        this.isInputFocused = hostElement.contains(document.activeElement);\n\n        this.#changeDetector.markForCheck();\n      });\n\n    if (hostElement) {\n      observableFromEvent(hostElement, 'mouseup')\n        .pipe(takeUntil(this.#idle))\n        .subscribe(() => {\n          const classList = documentObj.activeElement.classList;\n          if (!classList || !classList.contains('sky-token')) {\n            this.#focusInput();\n          }\n        });\n    }\n  }\n\n  #focusInput(): void {\n    if (this.lookupWrapperRef) {\n      this.#adapter.focusInput(this.lookupWrapperRef);\n    }\n  }\n\n  #onAddButtonComplete(args: SkyLookupAddCallbackArgs): void {\n    if (this.#openSelectionModal) {\n      // Notify the selection modal of the new item. The selection\n      // modal will decide whether the new item should be added\n      // to the value when the user confirms or cancels the\n      // selection modal.\n      this.#openSelectionModal.addItem(args.item);\n    } else {\n      let addItemToValue: boolean | undefined;\n\n      if (this.#hasSearchAsync()) {\n        addItemToValue = true;\n      } else {\n        if (args.data) {\n          this.data = args.data;\n        }\n\n        if (this.data.indexOf(args.item) >= 0) {\n          if (this.#openNativePicker) {\n            // Notify the picker of the new item. The picker will\n            // decide whether the new item should be added to the\n            // value when the user confirms or cancels the picker.\n            (\n              this.#openNativePicker\n                .componentInstance as SkyLookupShowMoreModalComponent\n            ).onItemSelect(true, { value: args.item, selected: false });\n          } else {\n            addItemToValue = true;\n          }\n        }\n      }\n\n      if (addItemToValue) {\n        const oldValue = this.#getValue();\n        const newValue =\n          this.selectMode === 'multiple'\n            ? oldValue.concat(args.item)\n            : [args.item];\n\n        this.#setValue(newValue, { emitEvent: true });\n      }\n    }\n  }\n\n  #parseTokens(data: any[]): SkyToken[] {\n    return data.map((item: any) => {\n      return {\n        value: item,\n      };\n    });\n  }\n\n  #sendAutocompleteMessage(type: SkyAutocompleteMessageType): void {\n    this.autocompleteController.next({ type });\n  }\n\n  #sendTokensMessage(type: SkyTokensMessageType): void {\n    this.tokensController.next({ type });\n  }\n\n  #updateForSelectMode(): void {\n    if (this.autocompleteInputDirective) {\n      if (this.selectMode === 'single') {\n        const value = this.#getValue();\n        this.autocompleteInputDirective.value = value && value[0];\n      } else {\n        this.clearSearchText();\n      }\n    }\n  }\n\n  #hasSearchAsync(): boolean {\n    return this.searchAsync.observers.length > 0;\n  }\n\n  #pickerModalOpen(): boolean {\n    return !!(this.#openNativePicker || this.#openSelectionModal);\n  }\n}\n","@if (!inputBoxHostSvc) {\n  <ng-container *ngTemplateOutlet=\"inputTemplateRef\" />\n}\n\n<ng-template #inputTemplateRef>\n  <div\n    #lookupWrapper\n    class=\"sky-lookup\"\n    [ngClass]=\"{\n      'sky-lookup-focused': isInputFocused,\n      'sky-lookup-disabled': disabled,\n      'sky-lookup-single': selectMode === 'single'\n    }\"\n  >\n    <sky-autocomplete\n      [ariaLabelledBy]=\"ariaLabelledBy || inputBoxHostSvc?.labelId\"\n      [attr.data-sky-lookup-show-more-picker-id]=\"showMorePickerId\"\n      [data]=\"data\"\n      [debounceTime]=\"debounceTime\"\n      [descriptorProperty]=\"descriptorProperty\"\n      [enableShowMore]=\"enableShowMore\"\n      [messageStream]=\"autocompleteController\"\n      [propertiesToSearch]=\"propertiesToSearch\"\n      [search]=\"searchOrDefault\"\n      [searchAsyncDisabled]=\"searchAsync.observers.length === 0\"\n      [searchFilters]=\"searchFilters\"\n      [searchResultsLimit]=\"searchResultsLimit\"\n      [searchResultTemplate]=\"searchResultTemplate\"\n      [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n      [showAddButton]=\"showAddButton\"\n      [wrapperClass]=\"wrapperClass\"\n      (addClick)=\"addButtonClicked()\"\n      (searchAsync)=\"onSearchAsync($event)\"\n      (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n      (showMoreClick)=\"onShowMoreClick($event)\"\n      (openChange)=\"onAutocompleteOpenChange($event)\"\n    >\n      <div class=\"sky-lookup-search-flex-wrapper\">\n        <div\n          class=\"sky-lookup-search\"\n          [ngClass]=\"{\n            'sky-field-status-active': isInputFocused && !disabled\n          }\"\n        >\n          @if (selectMode === 'multiple') {\n            <sky-tokens\n              class=\"sky-lookup-tokens\"\n              [disabled]=\"disabled\"\n              [displayWith]=\"descriptorProperty\"\n              [focusable]=\"false\"\n              [messageStream]=\"tokensController\"\n              [trackWith]=\"idProperty\"\n              [tokens]=\"tokens\"\n              (keyup)=\"onTokensKeyUp($event)\"\n              (tokensChange)=\"onTokensChange($event)\"\n              (tokensRendered)=\"onTokensRendered()\"\n              (tokenSelected)=\"enableShowMore ? openPicker('') : undefined\"\n              (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n            >\n              <textarea\n                class=\"sky-form-control sky-lookup-input\"\n                rows=\"1\"\n                skyAutocomplete\n                wrap=\"off\"\n                [attr.aria-describedby]=\"ariaDescribedBy | async\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                [attr.id]=\"controlId\"\n                [attr.placeholder]=\"placeholderText\"\n                [autocompleteAttribute]=\"autocompleteAttribute\"\n                [disabled]=\"disabled\"\n                (blur)=\"onAutocompleteBlur()\"\n                (focus)=\"onFocus($event)\"\n                (keydown)=\"inputKeydown($event)\"\n                (keyup)=\"inputKeyup($event)\"\n              ></textarea>\n            </sky-tokens>\n          } @else if (selectMode === 'single') {\n            <div class=\"sky-lookup-single-control\">\n              <textarea\n                class=\"sky-form-control sky-lookup-input\"\n                rows=\"1\"\n                skyAutocomplete\n                wrap=\"off\"\n                [attr.aria-describedby]=\"ariaDescribedBy | async\"\n                [attr.aria-label]=\"ariaLabel\"\n                [attr.aria-labelledby]=\"ariaLabelledBy\"\n                [attr.id]=\"controlId\"\n                [attr.placeholder]=\"placeholderText\"\n                [autocompleteAttribute]=\"autocompleteAttribute\"\n                [disabled]=\"disabled\"\n                (blur)=\"onAutocompleteBlur()\"\n                (focus)=\"onFocus($event)\"\n              ></textarea>\n            </div>\n          }\n        </div>\n        @if (!inputBoxHostSvc && enableShowMore) {\n          <ng-container *ngTemplateOutlet=\"showMoreButtonTemplateRef\" />\n        }\n      </div>\n    </sky-autocomplete>\n  </div>\n</ng-template>\n\n<ng-template #showMoreButtonTemplateRef>\n  <div class=\"sky-input-group-btn\">\n    <button\n      class=\"sky-btn sky-btn-default\"\n      type=\"button\"\n      [disabled]=\"disabled\"\n      [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n      [attr.aria-label]=\"\n        'skyux_lookup_search_button_show_more' | skyLibResources\n      \"\n      (click)=\"onSearchButtonClick()\"\n    >\n      <sky-icon iconName=\"search\" iconSize=\"l\" />\n    </button>\n  </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyTokensModule } from '@skyux/indicators';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupComponent } from './lookup.component';\n\n@NgModule({\n  declarations: [SkyLookupComponent],\n  imports: [\n    CommonModule,\n    SkyAutocompleteModule,\n    SkyIconModule,\n    SkyLookupResourcesModule,\n    SkyThemeModule,\n    SkyTokensModule,\n  ],\n  exports: [SkyLookupComponent],\n})\nexport class SkyLookupModule {}\n","/**\n * @deprecated Use `SkyLookupSelectModeType` instead.\n * @internal\n */\nexport enum SkyLookupSelectMode {\n  /**\n   * Restricts users to a single selection.\n   */\n  single = 'single',\n\n  /**\n   * Allows users to select multiple items.\n   */\n  multiple = 'multiple',\n}\n","/**\n * Specifies configuration options to launch a custom picker when users select\n * the button to view all options.\n */\nexport class SkyLookupShowMoreCustomPickerContext {\n  /**\n   * The options that users can select in the custom picker.\n   */\n  public items!: any[];\n  /**\n   * Search text to filter the contents of the custom picker.\n   */\n  public initialSearch!: string;\n  /**\n   * The current selections in the lookup field.\n   */\n  public initialValue!: any;\n}\n","import { NgModule } from '@angular/core';\n\n/**\n * @deprecated The `SkySelectionModalModule` is no longer needed and can be removed from your application.\n * @internal\n */\n@NgModule({})\nexport class SkySelectionModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableFromEvent","uniqueId","i4","i6","i9.SkyAutocompleteSearchAsyncDisabledPipe","i1","i2","i3","i4.SkyAutocompleteComponent","i5.SkyAutocompleteInputDirective","i1.SkySearchAdapterService","i5","i7","i6.SkySearchComponent","i8","i9","i10","i11","take","i5.SkyAutocompleteComponent","i6.SkyAutocompleteInputDirective"],"mappings":"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"}