@skyux/lookup 8.0.3 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-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/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/selection-modal.module.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-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-autocomplete-adapter.ts","../../../../../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.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/skyux-lookup.ts"],"sourcesContent":["/**\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 SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\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_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_select_all_button_title: { message: 'Select all' },\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 items',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title_single: { message: 'Select an option' },\n skyux_lookup_show_more_modal_title_multiple: { message: 'Select options' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\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};\n\nexport class SkyLookupResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyLookupResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyLookupResourcesModule {}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n forwardRef,\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})\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 */\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.\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 #elementRef: ElementRef;\n\n #focus: Subject<void>;\n\n #focusObs: Observable<void>;\n\n #isFirstChange = true;\n\n #ngUnsubscribe = new Subject<void>();\n\n #renderer: 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(elementRef: ElementRef, renderer: Renderer2) {\n this.#elementRef = elementRef;\n this.#renderer = renderer;\n\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() {\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 public setAriaOwns(overlayId: string | null): void {\n if (overlayId) {\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'aria-owns',\n overlayId\n );\n } else {\n this.#renderer.removeAttribute(\n this.#elementRef.nativeElement,\n 'aria-owns'\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 = () => {};\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] : undefined;\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})\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 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(dropdownRef.nativeElement, 'width', `${width}px`);\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 /* Sanity check - autocomplete will not call search with empty search text */\n /* istanbul ignore if */\n if (!searchText) {\n return results;\n }\n\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n\n const filteredData = filterData(searchText, data, args);\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 EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n SKY_STACKING_CONTEXT,\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyOverlayInstance,\n SkyOverlayService,\n SkyStackingContext,\n} from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\n\nimport {\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 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})\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 /**\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 */\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 * @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 enableShowMore: boolean | undefined = false;\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 source 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.\n * @default 1\n */\n @Input()\n public set searchTextMinimumCharacters(value: number | undefined) {\n this.#_searchTextMinimumCharacters = value && value > 0 ? value : 1;\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 in order\n * to filter the search results when using the default search function. When\n * using the `search` property to specify 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 * @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 showAddButton: boolean | undefined = false;\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 * @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 //#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 });\n\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.#hasFocus = true;\n if (this.showActionsArea) {\n this.#openDropdown();\n }\n });\n }\n }\n\n public get inputDirective(): SkyAutocompleteInputDirective | undefined {\n return this.#_inputDirective;\n }\n\n @ViewChild('resultsTemplateRef', {\n read: TemplateRef,\n })\n public resultsTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('resultsRef', {\n read: ElementRef,\n })\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 /**\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 #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 #zIndex: Observable<number> | undefined;\n\n #_data: any[] = [];\n\n #_debounceTime = 0;\n\n #_descriptorProperty = 'name';\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 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 }\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.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyAffixer();\n this.#destroyOverlay();\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) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n } else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('mousedown'));\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 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 onResultMouseDown(id: string, event: MouseEvent): void {\n this.#selectSearchResultById(id);\n\n if (!this.showActionsArea) {\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 if (this.#hasFocus) {\n const isEmpty =\n !searchText || !searchText.trim() || searchText.match(/^\\s+$/);\n\n if (isEmpty) {\n // Emit selectionChange if value has been cleared.\n /* istanbul ignore else */\n if (this.inputDirective && this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({\n selectedItem: undefined,\n });\n }\n\n if (!this.showActionsArea) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n\n return;\n }\n\n const isLongEnough =\n searchText.length >= this.searchTextMinimumCharacters;\n const isDifferent = searchText !== this.searchText;\n\n this.searchText = searchText.trim();\n\n if (isLongEnough && isDifferent) {\n this.#cancelCurrentSearch();\n\n this.#currentSearchSub = this.#performSearch()\n .pipe(take(1))\n .subscribe((result) => {\n const items = result?.items.filter((item: any) => {\n return item && this.descriptorProperty in item;\n });\n\n this.isSearchingAsync = false;\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.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.#changeDetector.markForCheck();\n\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 } else {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n } else {\n this.isSearchingAsync = false;\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 searchAsyncArgs.result || 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({\n items: result,\n totalCount: result.length,\n });\n }\n\n return from(result).pipe(\n map((items) => {\n return {\n items,\n totalCount: items.length,\n };\n })\n );\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 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)) > -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 #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({\n selectedItem: data,\n });\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 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.#changeDetector.markForCheck();\n this.#updateAriaOwns();\n this.#initOverlayFocusableElements();\n }\n }\n\n #closeDropdown(): void {\n this.#resetSearch();\n this.isOpen = false;\n this.#destroyOverlay();\n this.#removeActiveDescendant();\n this.#updateAriaOwns();\n this.#changeDetector.markForCheck();\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 #updateAriaOwns(): void {\n if (this.inputDirective) {\n this.inputDirective.setAriaOwns(this.#overlay?.id || null);\n }\n }\n\n #resetSearch(): void {\n this.searchResults = [];\n this.searchText = '';\n this.highlightText = [];\n this.#activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.#removeActiveDescendant();\n this.#initOverlayFocusableElements();\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.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 }\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","<div\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n class=\"sky-autocomplete\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"isOpen ? resultsListId : null\"\n [attr.id]=\"resultsWrapperId\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #resultsTemplateRef>\n <div\n class=\"sky-autocomplete-results-container\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n (keydown)=\"handleKeydown($event)\"\n #resultsRef\n >\n <div\n *ngIf=\"isSearchingAsync; else resultControlsTemplateRef\"\n class=\"sky-autocomplete-results-waiting\"\n >\n <sky-wait [isWaiting]=\"true\"></sky-wait>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resultControlsTemplateRef>\n <div\n *ngIf=\"searchText && (!showActionsArea || searchResults.length > 0)\"\n class=\"sky-autocomplete-results\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"resultsListId\"\n >\n <ng-container *ngFor=\"let result of searchResults; let i = index\">\n <div\n *ngIf=\"\n (!searchResultsLimit || i < searchResultsLimit) &&\n !(enableShowMore && i >= 5)\n \"\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 (mousedown)=\"onResultMouseDown(result.elementId, $event)\"\n (mousemove)=\"onResultMouseMove(i)\"\n #searchResultEl\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchResultTemplate || defaultSearchResultTemplate;\n context: { item: result.data }\n \"\n >\n </ng-container>\n </div>\n </ng-container>\n <div\n *ngIf=\"searchResults.length === 0\"\n class=\"sky-deemphasized sky-padding-squish-default\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n </div>\n <div *ngIf=\"showActionsArea\" class=\"sky-autocomplete-actions\">\n <button\n *ngIf=\"enableShowMore && (!searchText || searchResults.length > 0)\"\n class=\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\"\n type=\"button\"\n (mousedown)=\"moreButtonClicked()\"\n >\n <ng-container\n *ngIf=\"\n !(\n searchAsync\n | skyAutocompleteSearchAsyncDisabled : searchAsyncDisabled\n ) &&\n searchResults.length === 0 &&\n !searchText\n \"\n >\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\n </ng-container>\n <ng-container\n *ngIf=\"\n (searchAsync\n | skyAutocompleteSearchAsyncDisabled : searchAsyncDisabled) &&\n !searchText\n \"\n >\n {{\n 'skyux_autocomplete_show_all_count'\n | skyLibResources : (data.length | skyNumeric : { truncate: false })\n }}\n </ng-container>\n <ng-container *ngIf=\"searchText\">\n {{\n 'skyux_autocomplete_show_matches_count'\n | skyLibResources\n : (searchResultsCount === undefined\n ? data.length\n : (searchResultsCount | skyNumeric : { truncate: false }))\n }}\n </ng-container>\n </button>\n <div\n *ngIf=\"searchText && searchResults.length === 0\"\n class=\"sky-font-deemphasized sky-autocomplete-actions-no-results\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n <button\n *ngIf=\"showAddButton\"\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 (mousedown)=\"addButtonClicked()\"\n #addButtonEl\n >\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"add\" iconType=\"skyux\"></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_autocomplete_add' | skyLibResources }}\n </button>\n </div>\n</ng-template>\n\n<ng-template let-item=\"item\" #defaultSearchResultTemplate>\n {{ item[descriptorProperty] }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n SkyAffixModule,\n SkyIdModule,\n SkyNumericModule,\n SkyOverlayModule,\n} from '@skyux/core';\nimport {\n SkyIconModule,\n SkyTextHighlightModule,\n SkyWaitModule,\n} 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 SkyOverlayModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n})\nexport class SkyAutocompleteModule {}\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 AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n Type,\n ViewChild,\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 { SkyAppWindowRef } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport 'intl-tel-input';\nimport { Subject, fromEvent } 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 { 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})\nexport class SkyCountryFieldComponent\n implements AfterViewInit, ControlValueAccessor, OnDestroy, OnInit, Validator\n{\n /**\n * The value for the `autocomplete` attribute on the form input.\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.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean | undefined) {\n this.#removeEventListeners();\n\n if (!isDisabled) {\n this.#addEventListeners();\n }\n\n this.#_disabled = isDisabled ?? false;\n\n this.#changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * Whether to hide the flag in the input element.\n * @default false\n */\n @Input()\n public set hideSelectedCountryFlag(value: boolean | undefined) {\n this.#_hideSelectedCountryFlag = value ?? false;\n }\n\n public get hideSelectedCountryFlag(): boolean {\n return this.#_hideSelectedCountryFlag;\n }\n\n /**\n * Whether to include phone information in the selected country and country dropdown.\n * @default false\n */\n @Input()\n public set includePhoneInfo(value: boolean | undefined) {\n this.#_includePhoneInfo = value ?? false;\n\n this.#setupCountries();\n }\n\n public get includePhoneInfo(): boolean {\n return this.#_includePhoneInfo;\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 public countries: SkyCountryFieldCountry[] = [];\n\n public countrySearchFormControl: UntypedFormControl;\n\n public isInputFocused = false;\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 && 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 }\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isInitialChange && this.#ngControl && this.#ngControl.control) {\n this.#ngControl.control.markAsPristine();\n }\n\n this.#isInitialChange = false;\n\n /**\n * The second portion of this 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 (\n this.#isInitialChange &&\n (!(this.#ngControl instanceof NgModel) || newCountry !== null)\n ) {\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 currentTheme = 'default';\n\n public inputId: string;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public searchIconTemplateRef: TemplateRef<unknown> | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n #defaultCountryData: SkyCountryFieldCountry | undefined;\n\n #elRef: ElementRef;\n\n #idle = new Subject<void>();\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 #themeSvc: SkyThemeService | undefined;\n\n #windowRef: SkyAppWindowRef;\n\n #_defaultCountry: string | undefined;\n\n #_disabled = false;\n\n #_hideSelectedCountryFlag = false;\n\n #_includePhoneInfo = false;\n\n #_selectedCountry: SkyCountryFieldCountry | undefined;\n\n #_supportedCountryISOs: string[] | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n elRef: ElementRef,\n windowRef: SkyAppWindowRef,\n injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() themeSvc?: SkyThemeService\n ) {\n this.#changeDetector = changeDetector;\n this.#elRef = elRef;\n this.#windowRef = windowRef;\n this.#injector = injector;\n this.#themeSvc = themeSvc;\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\n if (!this.disabled) {\n this.#addEventListeners();\n }\n }\n\n public ngAfterViewInit(): void {\n /* istanbul ignore else */\n if (this.#themeSvc) {\n this.#themeSvc.settingsChange.subscribe((change) => {\n this.currentTheme = change.currentSettings.theme.name;\n this.#updateInputBox();\n this.#changeDetector.markForCheck();\n });\n }\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.#removeEventListeners();\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 // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: SkyCountryFieldCountry | undefined) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\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 #addEventListeners(): void {\n this.#removeEventListeners();\n\n this.#idle = new Subject();\n\n const documentObj = this.#windowRef.nativeWindow.document;\n\n fromEvent<MouseEvent>(documentObj, 'mousedown')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n this.isInputFocused = this.#elRef.nativeElement.contains(event.target);\n this.#changeDetector.markForCheck();\n });\n\n fromEvent<KeyboardEvent>(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n this.isInputFocused = this.#elRef.nativeElement.contains(event.target);\n this.#changeDetector.markForCheck();\n });\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 #removeEventListeners(): void {\n this.#idle.next();\n this.#idle.complete();\n }\n\n #setupCountries(): void {\n /**\n * The json functions here ensures that we get a copy of the array and not the global original.\n * This ensures that multiple instances of the component don't overwrite the original data.\n *\n * We must type the window object as any here as the intl-tel-input library adds its object\n * to the main window object.\n */\n this.countries = JSON.parse(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n JSON.stringify((window as any).intlTelInputGlobals.getCountryData())\n );\n\n // Ignoring coverage here as this will be removed in the next release.\n // istanbul ignore next\n if (!this.includePhoneInfo && !this.hideSelectedCountryFlag) {\n if (\n (\n this.#elRef.nativeElement.parentElement as HTMLElement\n )?.classList?.contains('sky-phone-field-country-search')\n ) {\n this.includePhoneInfo = true;\n this.hideSelectedCountryFlag = true;\n }\n }\n\n /* istanbul ignore else */\n if (!this.includePhoneInfo) {\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.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n iconsInsetTemplate:\n this.currentTheme === 'modern'\n ? this.searchIconTemplateRef\n : undefined,\n });\n }\n }\n}\n","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\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]=\"inputId\"\n [data]=\"countries\"\n [propertiesToSearch]=\"['name', 'iso2']\"\n [searchResultTemplate]=\"countrySearchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n (selectionChange)=\"onCountrySelected($event)\"\n >\n <div\n class=\"sky-country-field-input\"\n [ngClass]=\"{\n 'sky-country-field-input-with-flag':\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n }\"\n >\n <div\n *ngIf=\"\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n \"\n class=\"sky-country-field-flag\"\n >\n <div\n class=\"iti__flag\"\n [ngClass]=\"'iti__' + selectedCountry.iso2.toLowerCase()\"\n ></div>\n </div>\n <textarea\n class=\"sky-form-control\"\n name=\"selectedCountry\"\n rows=\"1\"\n skyAutocomplete\n [attr.aria-label]=\"\n 'skyux_country_field_search_placeholder' | skyLibResources\n \"\n [attr.disabled]=\"disabled ? true : undefined\"\n [attr.id]=\"inputId\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [formControl]=\"countrySearchFormControl\"\n [placeholder]=\"\n context?.showPlaceholderText || currentTheme === 'default'\n ? ('skyux_country_field_search_placeholder' | skyLibResources)\n : ''\n \"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </sky-autocomplete>\n </span>\n</ng-template>\n\n<ng-template let-item=\"item\" #countrySearchResultTemplate>\n <div\n class=\"sky-country-field-search-result-flag\"\n [ngClass]=\"'iti__flag iti__' + item.iso2.toLowerCase()\"\n ></div>\n {{ item.name }}\n <span *ngIf=\"includePhoneInfo\" class=\"sky-deemphasized\">\n {{ item.dialCode }}\n </span>\n</ng-template>\n\n<!-- This template should only be used in modern theme input boxes. -->\n<ng-template #searchIconTemplateRef>\n <div class=\"sky-input-group-icon sky-input-box-icon-inset\">\n <sky-icon iconType=\"skyux\" icon=\"search\"></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } 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 { SkyCountryFieldComponent } from './country-field.component';\n\n@NgModule({\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyI18nModule,\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) {\n this.#getInputEl(searchEl).select();\n }\n\n public focusInput(searchEl: ElementRef) {\n this.#getInputEl(searchEl).focus();\n }\n\n public startInputAnimation(searchEl: ElementRef) {\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) {\n this.#renderer.setStyle(\n this.#getInputContainerEl(searchEl),\n 'min-width',\n ''\n );\n }\n\n #getInputContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n\n #getSearchOpenButtonEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n\n #getSearchContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n\n #getInputEl(searchEl: ElementRef) {\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 ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { 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})\nexport class SkySearchComponent implements OnDestroy, OnInit, OnChanges {\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 filter button.\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 breakpointSubscription: Subscription | 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 #changeRef: ChangeDetectorRef;\n\n #elRef: ElementRef;\n\n #mediaQueryService: SkyMediaQueryService;\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 constructor(\n mediaQueryService: SkyMediaQueryService,\n elRef: ElementRef,\n searchAdapter: SkySearchAdapterService,\n changeRef: ChangeDetectorRef\n ) {\n this.#mediaQueryService = mediaQueryService;\n this.#elRef = elRef;\n this.#searchAdapter = searchAdapter;\n this.#changeRef = changeRef;\n }\n\n public ngOnInit() {\n if (this.#searchShouldCollapse()) {\n this.breakpointSubscription = this.#mediaQueryService.subscribe(\n (args: SkyMediaBreakpoints) => {\n this.#mediaQueryCallback(args);\n this.#changeRef.detectChanges();\n }\n );\n }\n\n this.#setupSearchChangedEvent();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\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.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() {\n this.searchText = '';\n this.clearButtonShown = false;\n\n this.#searchAdapter.focusInput(this.#elRef);\n this.searchChange.emit(this.searchText);\n\n this.searchApply.emit(this.searchText);\n\n this.searchClear.emit();\n }\n\n public enterPress(event: KeyboardEvent, searchText: string | undefined) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n\n public applySearchText(searchText: string | undefined) {\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) {\n this.searchText = searchText;\n this.#searchUpdated.next(searchText);\n }\n\n public toggleSearchInput(showInput: boolean) {\n if (this.#searchShouldCollapse()) {\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) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.startInputAnimation(this.#elRef);\n\n if (\n event.toState === INPUT_SHOWN_STATE &&\n this.#mediaQueryService.current === SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n\n public inputAnimationEnd(event: AnimationEvent) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.endInputAnimation(this.#elRef);\n\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE &&\n this.#mediaQueryService.current === SkyMediaBreakpoints.xs;\n\n if (\n (event.toState === INPUT_HIDDEN_STATE &&\n this.#mediaQueryService.current === SkyMediaBreakpoints.xs) ||\n this.#mediaQueryService.current !== SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = false;\n }\n }\n }\n\n public ngOnDestroy() {\n if (this.breakpointSubscription) {\n this.breakpointSubscription.unsubscribe();\n }\n\n this.#searchUpdated.complete();\n this.#searchUpdatedSub?.unsubscribe();\n }\n #searchBindingChanged(changes: SimpleChanges) {\n return (\n changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue\n );\n }\n\n #expandModeBindingChanged(changes: SimpleChanges) {\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.#mediaQueryService.current === SkyMediaBreakpoints.xs &&\n this.#searchShouldCollapse()\n );\n }\n\n #mediaQueryCallback(args: SkyMediaBreakpoints): void {\n if (this.#searchShouldCollapse()) {\n if (args === SkyMediaBreakpoints.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\"></ng-container>\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 (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <input\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\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 skyId\n #searchInput=\"skyId\"\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 *skyThemeIf=\"'default'\" icon=\"times\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"sm\"\n ></sky-icon>\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\n *ngTemplateOutlet=\"searchIconTemplate\"\n ></ng-container>\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\"></ng-container>\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n <button\n *ngIf=\"mobileSearchShown\"\n class=\"sky-btn sky-btn-secondary sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-circle-left\" size=\"lg\">\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"double-chevron-left\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"search\"\n iconType=\"skyux\"\n size=\"lg\"\n ></sky-icon>\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/indicators';\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 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 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.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { SkyIdService } from '@skyux/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\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})\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: Subject<void> = new Subject();\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: Map<unknown, unknown> = new Map();\n\n #changeDetector: ChangeDetectorRef;\n\n #continuationData: unknown;\n\n #currentSearchSub: Subscription | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #offset = 0;\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkySelectionModalContext,\n changeDetector: ChangeDetectorRef,\n idSvc: SkyIdService\n ) {\n this.#changeDetector = changeDetector;\n\n this.id = 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 if (this.onlyShowSelected) {\n this.displayedItems = this.items.filter((item) =>\n this.selectedIdMap.has(item[this.context.idProperty])\n );\n } else {\n this.displayedItems = this.items;\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","<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 <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <sky-wait [isWaiting]=\"isSearching\"></sky-wait>\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\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 (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 (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 [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDisplayedItems()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"!isSearching && displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [isSelected]=\"\n item[context.idProperty]\n | skySelectionModalItemSelected : selectedIdMap\n \"\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: { item: item }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"hasMoreItems\"\n [loading]=\"isLoadingMore\"\n (scrollEnd)=\"infiniteScrollEnd()\"\n >\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [disabled]=\"isSearching\"\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 let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule, SkyWaitModule } from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkySearchModule } from '../search/search.module';\n\nimport { SkySelectionModalItemSelectedPipe } from './selection-modal-item-selected.pipe';\nimport { SkySelectionModalComponent } from './selection-modal.component';\n\n@NgModule({\n declarations: [SkySelectionModalComponent, SkySelectionModalItemSelectedPipe],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyI18nModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n SkyWaitModule,\n ],\n})\nexport class SkySelectionModalModule {}\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n TemplateRef,\n} from '@angular/core';\nimport { SkyIdService } from '@skyux/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject } from 'rxjs';\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 // Suppress this error rather than fix the selector since consumers with unit tests\n // may be looking for an element with this selector. We can change it in the next major\n // version of SKY UX.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'skyux-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})\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: Subject<void> = new Subject();\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 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 #changeDetector: ChangeDetectorRef;\n\n #itemIndex = 0;\n\n #ngUnsubscribe = new Subject<void>();\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkyLookupShowMoreNativePickerContext,\n changeDetector: ChangeDetectorRef,\n idSvc: SkyIdService\n ) {\n this.#changeDetector = changeDetector;\n\n this.id = idSvc.generateId();\n }\n\n public ngAfterViewInit(): void {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n 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 addItems(): void {\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 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 this.searchItems(items).then((searchedItems) => {\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.#changeDetector.markForCheck();\n });\n }\n\n public clearAll(): void {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n 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 this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string) {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.#itemIndex = 10;\n }\n this.searchText = searchText;\n this.updateDataState();\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 selectAll(): 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 this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public updateDataState(): void {\n const items = this.items;\n\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n items?.forEach((item: any, index: number) => {\n item.selected =\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index\n ) !== -1;\n });\n\n this.searchItems(items).then((searchedItems) => {\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\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\n this.#changeDetector.markForCheck();\n });\n }\n\n public updateItemData(data: any[]): 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 this.addItems();\n\n this.#changeDetector.markForCheck();\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 <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\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 class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\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 (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 (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 [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\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: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\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 let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\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.\n * @default [\"name\"]\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 to dynamically manage the data source 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. If the\n * search requires calling a remote data source, use `searchAsync` instead of\n * `search`.\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 the object\n * properties of the options.\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 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 */\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 */\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.\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 { 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';\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: 'any',\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.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 });\n\n const instance = new SkySelectionModalInstance(\n modalInstance.componentInstance.id\n );\n\n instance.itemAdded.subscribe((item) => {\n (modalInstance.componentInstance as SkySelectionModalComponent).addItem(\n item\n );\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 =\n modalInstance.componentInstance as SkySelectionModalComponent;\n\n selectionModal.addClick.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 {\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} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { SkyAppWindowRef, 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 { 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})\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 */\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 */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * The value for the `autocomplete` attribute on the form input.\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 * @default []\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.\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 * Whether to enable users to open a picker where they can view all options.\n * @default false\n */\n @Input()\n public set enableShowMore(value: boolean | undefined) {\n this.#_enableShowMore = value ?? false;\n }\n\n public get enableShowMore(): boolean {\n return this.#_enableShowMore;\n }\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()\n public set showAddButton(value: boolean | undefined) {\n this.#_showAddButton = value ?? false;\n }\n\n public get showAddButton(): boolean {\n return this.#_showAddButton;\n }\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 if (this.value && this.value.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.writeValue([this.value[0]]);\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: EventEmitter<SkyLookupAddClickEventArgs> =\n new EventEmitter();\n\n public get tokens(): SkyToken[] | undefined {\n return this.#_tokens;\n }\n\n public set tokens(value: SkyToken[] | undefined) {\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && this.value.length > 5) {\n this.#resourcesService\n .getString('skyux_lookup_tokens_summary', this.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 = value;\n this.#changeDetector.markForCheck();\n }\n }\n\n public get value(): any[] {\n return this.#_value ? this.#_value : [];\n }\n\n public set value(newValue: any[]) {\n this.#_value = newValue;\n\n if (!this.#pickerModalOpen()) {\n this.tokens = this.#parseTokens(newValue);\n }\n\n this.onChange(this.#_value);\n this.onTouched();\n }\n\n public autocompleteController = new Subject<SkyAutocompleteMessage>();\n public isInputFocused = false;\n public showMorePickerId: string | undefined;\n public tokensController = new Subject<SkyTokensMessage>();\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 @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public searchIconTemplateRef: TemplateRef<unknown> | undefined;\n\n #adapter: SkyLookupAdapterService;\n #elementRef: ElementRef;\n #changeDetector: ChangeDetectorRef;\n #idle = new Subject<void>();\n #markForTokenFocusOnKeyUp = false;\n #modalService: SkyModalService;\n #ngUnsubscribe = new Subject<void>();\n #openNativePicker: SkyModalInstance | undefined;\n #openSelectionModal: SkySelectionModalInstance | undefined;\n #resourcesService: SkyLibResourcesService;\n #selectionModalSvc: SkySelectionModalService;\n #windowRef: SkyAppWindowRef;\n #logSvc: SkyLogService;\n\n #_autocompleteInputDirective: SkyAutocompleteInputDirective | undefined;\n #_data: any[] | undefined;\n #_disabled = false;\n #_enableShowMore = false;\n #_selectMode: SkyLookupSelectModeType | undefined;\n #_showAddButton = false;\n #_tokens: SkyToken[] | undefined;\n #_value: any[] | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n elementRef: ElementRef,\n windowRef: SkyAppWindowRef,\n adapter: SkyLookupAdapterService,\n modalService: SkyModalService,\n resourcesService: SkyLibResourcesService,\n selectionModalSvc: SkySelectionModalService,\n logSvc: SkyLogService,\n @Self() @Optional() ngControl?: NgControl,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService\n ) {\n super();\n\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#windowRef = windowRef;\n this.#adapter = adapter;\n this.#modalService = modalService;\n this.#resourcesService = resourcesService;\n this.#selectionModalSvc = selectionModalSvc;\n this.#logSvc = logSvc;\n\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n iconsInsetTemplate: this.enableShowMore\n ? undefined\n : this.searchIconTemplateRef,\n });\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.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 /* istanbul ignore else */\n if (change.selectedItem) {\n this.#addToSelected(change.selectedItem);\n } else if (this.selectMode === 'single') {\n this.writeValue([]);\n }\n }\n\n public onAutocompleteBlur(): void {\n this.onTouched();\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 // NOTE: We do this here instead of just using the `value` setter because we need to use the\n // set of tokens returned here for the purposes of setting focus (see `onTokensKeyUp`).\n this.#_value = change.map((token) => {\n return token.value;\n });\n this.tokens = change;\n this.onChange(this.#_value);\n this.onTouched();\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.value = value ? value.slice() : [];\n this.#updateForSelectMode();\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: any[]) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\n\n public registerOnChange(fn: (value: any) => 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.#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.value,\n });\n } else {\n const initialValue = this.value;\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' ? closeArgs.selectedItems : initialValue\n );\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 });\n\n this.#changeDetector.markForCheck();\n }\n }\n }\n\n #createSelectionModalInstance(\n initialSearch: string\n ): SkySelectionModalInstance {\n const initialValue = this.value;\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 showAddButton: this.showAddButton,\n title: modalConfig.title,\n value: initialValue,\n });\n }\n\n #createNativePickerInstance(initialSearch: string): SkyModalInstance {\n const initialValue = this.value;\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\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 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.writeValue(selectedItems);\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 let selectedItems: any[];\n\n if (this.selectMode === 'single') {\n selectedItems = [item];\n } else {\n selectedItems = this.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 !this.value.some(\n (existingItem) => existingItem[idProperty] === item[idProperty]\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.writeValue(selectedItems);\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, 'mousedown')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\n\n this.#changeDetector.markForCheck();\n });\n\n observableFromEvent<KeyboardEvent>(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\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 newValue =\n this.selectMode === 'multiple'\n ? this.value.concat(args.item)\n : [args.item];\n this.writeValue(newValue);\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 this.autocompleteInputDirective.value = this.value && this.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","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy\"\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 >\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 <sky-tokens\n *ngIf=\"selectMode === 'multiple'\"\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-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </sky-tokens>\n <div\n *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\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 [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #searchIconTemplateRef>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{ 'sky-lookup-disabled': disabled }\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" iconType=\"skyux\" icon=\"search\"></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport {\n SkyIconModule,\n SkyTokensModule,\n SkyWaitModule,\n} from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkySelectionModalModule } from '../selection-modal/selection-modal.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupComponent } from './lookup.component';\n\n@NgModule({\n declarations: [SkyLookupComponent, SkyLookupShowMoreModalComponent],\n imports: [\n CommonModule,\n FormsModule,\n SkyAutocompleteModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyI18nModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkySelectionModalModule,\n SkyThemeModule,\n SkyTokensModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n SkyWaitModule,\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableFromEvent","uniqueId","i5","i6","i7","i8.SkyAutocompleteSearchAsyncDisabledPipe","i2","i3","i6.SkyAutocompleteComponent","i7.SkyAutocompleteInputDirective","i8","i9","i2.SkySearchAdapterService","i4","i1","i2.SkySelectionModalContext","i8.SkySearchComponent","i11","i12.SkySelectionModalItemSelectedPipe","i2.SkyLookupShowMoreNativePickerContext","i2.SkyLookupAdapterService","i5.SkySelectionModalService","i10.SkyAutocompleteComponent","i11.SkyAutocompleteInputDirective","i12"],"mappings":"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"}
1
+ {"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/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/selection-modal.module.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-adapter.service.ts","../../../../../libs/components/lookup/src/lib/modules/lookup/lookup-autocomplete-adapter.ts","../../../../../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.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/skyux-lookup.ts"],"sourcesContent":["/**\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 SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_autocomplete_add: { message: 'New' },\n skyux_autocomplete_no_results: { message: 'No matches found' },\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_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_select_all_button_title: { message: 'Select all' },\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 items',\n },\n skyux_lookup_show_more_cancel: { message: 'Cancel' },\n skyux_lookup_show_more_modal_title_single: { message: 'Select an option' },\n skyux_lookup_show_more_modal_title_multiple: { message: 'Select options' },\n skyux_lookup_show_more_no_results: { message: 'No matches found' },\n skyux_lookup_show_more_select: { message: 'Select' },\n skyux_lookup_tokens_summary: { message: '{0} items selected' },\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};\n\nexport class SkyLookupResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyLookupResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyLookupResourcesModule {}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n forwardRef,\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})\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 */\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.\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 #elementRef: ElementRef;\n\n #focus: Subject<void>;\n\n #focusObs: Observable<void>;\n\n #isFirstChange = true;\n\n #ngUnsubscribe = new Subject<void>();\n\n #renderer: 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(elementRef: ElementRef, renderer: Renderer2) {\n this.#elementRef = elementRef;\n this.#renderer = renderer;\n\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() {\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 public setAriaOwns(overlayId: string | null): void {\n if (overlayId) {\n this.#renderer.setAttribute(\n this.#elementRef.nativeElement,\n 'aria-owns',\n overlayId\n );\n } else {\n this.#renderer.removeAttribute(\n this.#elementRef.nativeElement,\n 'aria-owns'\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 = () => {};\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] : undefined;\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})\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 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(dropdownRef.nativeElement, 'width', `${width}px`);\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 /* Sanity check - autocomplete will not call search with empty search text */\n /* istanbul ignore if */\n if (!searchText) {\n return results;\n }\n\n const searchTextNormalized = normalizeDiacritics(searchText).toUpperCase();\n\n const filteredData = filterData(searchText, data, args);\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 EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n SKY_STACKING_CONTEXT,\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyOverlayInstance,\n SkyOverlayService,\n SkyStackingContext,\n} from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\n\nimport {\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 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})\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 /**\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 */\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 * @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 enableShowMore: boolean | undefined = false;\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 source 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.\n * @default 1\n */\n @Input()\n public set searchTextMinimumCharacters(value: number | undefined) {\n this.#_searchTextMinimumCharacters = value && value > 0 ? value : 1;\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 in order\n * to filter the search results when using the default search function. When\n * using the `search` property to specify 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 * @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 showAddButton: boolean | undefined = false;\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 * @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 //#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 });\n\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\n this.#hasFocus = true;\n if (this.showActionsArea) {\n this.#openDropdown();\n }\n });\n }\n }\n\n public get inputDirective(): SkyAutocompleteInputDirective | undefined {\n return this.#_inputDirective;\n }\n\n @ViewChild('resultsTemplateRef', {\n read: TemplateRef,\n })\n public resultsTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('resultsRef', {\n read: ElementRef,\n })\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 /**\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 #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 #zIndex: Observable<number> | undefined;\n\n #_data: any[] = [];\n\n #_debounceTime = 0;\n\n #_descriptorProperty = 'name';\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 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 }\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.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyAffixer();\n this.#destroyOverlay();\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) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n } else {\n if (activeElement) {\n activeElement.dispatchEvent(new MouseEvent('mousedown'));\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 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 onResultMouseDown(id: string, event: MouseEvent): void {\n this.#selectSearchResultById(id);\n\n if (!this.showActionsArea) {\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 if (this.#hasFocus) {\n const isEmpty =\n !searchText || !searchText.trim() || searchText.match(/^\\s+$/);\n\n if (isEmpty) {\n // Emit selectionChange if value has been cleared.\n /* istanbul ignore else */\n if (this.inputDirective && this.inputDirective.value) {\n this.inputDirective.value = undefined;\n this.selectionChange.emit({\n selectedItem: undefined,\n });\n }\n\n if (!this.showActionsArea) {\n this.#closeDropdown();\n } else {\n this.#resetSearch();\n }\n\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n\n return;\n }\n\n const isLongEnough =\n searchText.length >= this.searchTextMinimumCharacters;\n const isDifferent = searchText !== this.searchText;\n\n this.searchText = searchText.trim();\n\n if (isLongEnough && isDifferent) {\n this.#cancelCurrentSearch();\n\n this.#currentSearchSub = this.#performSearch()\n .pipe(take(1))\n .subscribe((result) => {\n const items = result?.items.filter((item: any) => {\n return item && this.descriptorProperty in item;\n });\n\n this.isSearchingAsync = false;\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.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.#changeDetector.markForCheck();\n\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 } else {\n this.isSearchingAsync = false;\n this.#changeDetector.markForCheck();\n }\n } else {\n this.isSearchingAsync = false;\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 searchAsyncArgs.result || 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({\n items: result,\n totalCount: result.length,\n });\n }\n\n return from(result).pipe(\n map((items) => {\n return {\n items,\n totalCount: items.length,\n };\n })\n );\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 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)) > -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 #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({\n selectedItem: data,\n });\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 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.#changeDetector.markForCheck();\n this.#updateAriaOwns();\n this.#initOverlayFocusableElements();\n }\n }\n\n #closeDropdown(): void {\n this.#resetSearch();\n this.isOpen = false;\n this.#destroyOverlay();\n this.#removeActiveDescendant();\n this.#updateAriaOwns();\n this.#changeDetector.markForCheck();\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 #updateAriaOwns(): void {\n if (this.inputDirective) {\n this.inputDirective.setAriaOwns(this.#overlay?.id || null);\n }\n }\n\n #resetSearch(): void {\n this.searchResults = [];\n this.searchText = '';\n this.highlightText = [];\n this.#activeElementIndex = -1;\n this.searchResultsCount = undefined;\n this.#removeActiveDescendant();\n this.#initOverlayFocusableElements();\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.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 }\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","<div\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n class=\"sky-autocomplete\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-owns]=\"isOpen ? resultsListId : null\"\n [attr.id]=\"resultsWrapperId\"\n>\n <ng-content></ng-content>\n</div>\n\n<ng-template #resultsTemplateRef>\n <div\n class=\"sky-autocomplete-results-container\"\n [skyThemeClass]=\"{\n 'sky-shadow': 'default',\n 'sky-elevation-4': 'modern'\n }\"\n (keydown)=\"handleKeydown($event)\"\n #resultsRef\n >\n <div\n *ngIf=\"isSearchingAsync; else resultControlsTemplateRef\"\n class=\"sky-autocomplete-results-waiting\"\n >\n <sky-wait [isWaiting]=\"true\"></sky-wait>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resultControlsTemplateRef>\n <div\n *ngIf=\"searchText && (!showActionsArea || searchResults.length > 0)\"\n class=\"sky-autocomplete-results\"\n role=\"listbox\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.id]=\"resultsListId\"\n >\n <ng-container *ngFor=\"let result of searchResults; let i = index\">\n <div\n *ngIf=\"\n (!searchResultsLimit || i < searchResultsLimit) &&\n !(enableShowMore && i >= 5)\n \"\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 (mousedown)=\"onResultMouseDown(result.elementId, $event)\"\n (mousemove)=\"onResultMouseMove(i)\"\n #searchResultEl\n >\n <ng-container\n *ngTemplateOutlet=\"\n searchResultTemplate || defaultSearchResultTemplate;\n context: { item: result.data }\n \"\n >\n </ng-container>\n </div>\n </ng-container>\n <div\n *ngIf=\"searchResults.length === 0\"\n class=\"sky-deemphasized sky-padding-squish-default\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n </div>\n <div *ngIf=\"showActionsArea\" class=\"sky-autocomplete-actions\">\n <button\n *ngIf=\"enableShowMore && (!searchText || searchResults.length > 0)\"\n class=\"sky-autocomplete-action sky-autocomplete-action-more sky-btn sky-btn-link\"\n type=\"button\"\n (mousedown)=\"moreButtonClicked()\"\n >\n <ng-container\n *ngIf=\"\n !(\n searchAsync\n | skyAutocompleteSearchAsyncDisabled : searchAsyncDisabled\n ) &&\n searchResults.length === 0 &&\n !searchText\n \"\n >\n {{ 'skyux_autocomplete_show_all' | skyLibResources }}\n </ng-container>\n <ng-container\n *ngIf=\"\n (searchAsync\n | skyAutocompleteSearchAsyncDisabled : searchAsyncDisabled) &&\n !searchText\n \"\n >\n {{\n 'skyux_autocomplete_show_all_count'\n | skyLibResources : (data.length | skyNumeric : { truncate: false })\n }}\n </ng-container>\n <ng-container *ngIf=\"searchText\">\n {{\n 'skyux_autocomplete_show_matches_count'\n | skyLibResources\n : (searchResultsCount === undefined\n ? data.length\n : (searchResultsCount | skyNumeric : { truncate: false }))\n }}\n </ng-container>\n </button>\n <div\n *ngIf=\"searchText && searchResults.length === 0\"\n class=\"sky-font-deemphasized sky-autocomplete-actions-no-results\"\n >\n {{\n noResultsFoundText ||\n ('skyux_autocomplete_no_results' | skyLibResources)\n }}\n </div>\n <button\n *ngIf=\"showAddButton\"\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 (mousedown)=\"addButtonClicked()\"\n #addButtonEl\n >\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"add\" iconType=\"skyux\"></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_autocomplete_add' | skyLibResources }}\n </button>\n </div>\n</ng-template>\n\n<ng-template let-item=\"item\" #defaultSearchResultTemplate>\n {{ item[descriptorProperty] }}\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n SkyAffixModule,\n SkyIdModule,\n SkyNumericModule,\n SkyOverlayModule,\n} from '@skyux/core';\nimport {\n SkyIconModule,\n SkyTextHighlightModule,\n SkyWaitModule,\n} 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 SkyOverlayModule,\n SkyThemeModule,\n SkyWaitModule,\n ],\n exports: [SkyAutocompleteComponent, SkyAutocompleteInputDirective],\n})\nexport class SkyAutocompleteModule {}\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 AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n TemplateRef,\n Type,\n ViewChild,\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 { SkyAppWindowRef } from '@skyux/core';\nimport { SkyInputBoxHostService } from '@skyux/forms';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport 'intl-tel-input';\nimport { Subject, fromEvent } 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 { 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})\nexport class SkyCountryFieldComponent\n implements AfterViewInit, ControlValueAccessor, OnDestroy, OnInit, Validator\n{\n /**\n * The value for the `autocomplete` attribute on the form input.\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.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean | undefined) {\n this.#removeEventListeners();\n\n if (!isDisabled) {\n this.#addEventListeners();\n }\n\n this.#_disabled = isDisabled ?? false;\n\n this.#changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * Whether to hide the flag in the input element.\n * @default false\n */\n @Input()\n public set hideSelectedCountryFlag(value: boolean | undefined) {\n this.#_hideSelectedCountryFlag = value ?? false;\n }\n\n public get hideSelectedCountryFlag(): boolean {\n return this.#_hideSelectedCountryFlag;\n }\n\n /**\n * Whether to include phone information in the selected country and country dropdown.\n * @default false\n */\n @Input()\n public set includePhoneInfo(value: boolean | undefined) {\n this.#_includePhoneInfo = value ?? false;\n\n this.#setupCountries();\n }\n\n public get includePhoneInfo(): boolean {\n return this.#_includePhoneInfo;\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 public countries: SkyCountryFieldCountry[] = [];\n\n public countrySearchFormControl: UntypedFormControl;\n\n public isInputFocused = false;\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 && 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 }\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isInitialChange && this.#ngControl && this.#ngControl.control) {\n this.#ngControl.control.markAsPristine();\n }\n\n this.#isInitialChange = false;\n\n /**\n * The second portion of this 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 (\n this.#isInitialChange &&\n (!(this.#ngControl instanceof NgModel) || newCountry !== null)\n ) {\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 currentTheme = 'default';\n\n public inputId: string;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public inputTemplateRef: TemplateRef<unknown> | undefined;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public searchIconTemplateRef: TemplateRef<unknown> | undefined;\n\n #changeDetector: ChangeDetectorRef;\n\n #defaultCountryData: SkyCountryFieldCountry | undefined;\n\n #elRef: ElementRef;\n\n #idle = new Subject<void>();\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 #themeSvc: SkyThemeService | undefined;\n\n #windowRef: SkyAppWindowRef;\n\n #_defaultCountry: string | undefined;\n\n #_disabled = false;\n\n #_hideSelectedCountryFlag = false;\n\n #_includePhoneInfo = false;\n\n #_selectedCountry: SkyCountryFieldCountry | undefined;\n\n #_supportedCountryISOs: string[] | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n elRef: ElementRef,\n windowRef: SkyAppWindowRef,\n injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() themeSvc?: SkyThemeService\n ) {\n this.#changeDetector = changeDetector;\n this.#elRef = elRef;\n this.#windowRef = windowRef;\n this.#injector = injector;\n this.#themeSvc = themeSvc;\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\n if (!this.disabled) {\n this.#addEventListeners();\n }\n }\n\n public ngAfterViewInit(): void {\n /* istanbul ignore else */\n if (this.#themeSvc) {\n this.#themeSvc.settingsChange.subscribe((change) => {\n this.currentTheme = change.currentSettings.theme.name;\n this.#updateInputBox();\n this.#changeDetector.markForCheck();\n });\n }\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.#removeEventListeners();\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 // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: SkyCountryFieldCountry | undefined) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\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 #addEventListeners(): void {\n this.#removeEventListeners();\n\n this.#idle = new Subject();\n\n const documentObj = this.#windowRef.nativeWindow.document;\n\n fromEvent<MouseEvent>(documentObj, 'mousedown')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n this.isInputFocused = this.#elRef.nativeElement.contains(event.target);\n this.#changeDetector.markForCheck();\n });\n\n fromEvent<KeyboardEvent>(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n this.isInputFocused = this.#elRef.nativeElement.contains(event.target);\n this.#changeDetector.markForCheck();\n });\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 #removeEventListeners(): void {\n this.#idle.next();\n this.#idle.complete();\n }\n\n #setupCountries(): void {\n /**\n * The json functions here ensures that we get a copy of the array and not the global original.\n * This ensures that multiple instances of the component don't overwrite the original data.\n *\n * We must type the window object as any here as the intl-tel-input library adds its object\n * to the main window object.\n */\n this.countries = JSON.parse(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n JSON.stringify((window as any).intlTelInputGlobals.getCountryData())\n );\n\n // Ignoring coverage here as this will be removed in the next release.\n // istanbul ignore next\n if (!this.includePhoneInfo && !this.hideSelectedCountryFlag) {\n if (\n (\n this.#elRef.nativeElement.parentElement as HTMLElement\n )?.classList?.contains('sky-phone-field-country-search')\n ) {\n this.includePhoneInfo = true;\n this.hideSelectedCountryFlag = true;\n }\n }\n\n /* istanbul ignore else */\n if (!this.includePhoneInfo) {\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.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n iconsInsetTemplate:\n this.currentTheme === 'modern'\n ? this.searchIconTemplateRef\n : undefined,\n });\n }\n }\n}\n","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\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]=\"inputId\"\n [data]=\"countries\"\n [propertiesToSearch]=\"['name', 'iso2']\"\n [searchResultTemplate]=\"countrySearchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n (selectionChange)=\"onCountrySelected($event)\"\n >\n <div\n class=\"sky-country-field-input\"\n [ngClass]=\"{\n 'sky-country-field-input-with-flag':\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n }\"\n >\n <div\n *ngIf=\"\n selectedCountry && selectedCountry.iso2 && !hideSelectedCountryFlag\n \"\n class=\"sky-country-field-flag\"\n >\n <div\n class=\"iti__flag\"\n [ngClass]=\"'iti__' + selectedCountry.iso2.toLowerCase()\"\n ></div>\n </div>\n <textarea\n class=\"sky-form-control\"\n name=\"selectedCountry\"\n rows=\"1\"\n skyAutocomplete\n [attr.aria-label]=\"\n 'skyux_country_field_search_placeholder' | skyLibResources\n \"\n [attr.disabled]=\"disabled ? true : undefined\"\n [attr.id]=\"inputId\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [formControl]=\"countrySearchFormControl\"\n [placeholder]=\"\n context?.showPlaceholderText || currentTheme === 'default'\n ? ('skyux_country_field_search_placeholder' | skyLibResources)\n : ''\n \"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </sky-autocomplete>\n </span>\n</ng-template>\n\n<ng-template let-item=\"item\" #countrySearchResultTemplate>\n <div\n class=\"sky-country-field-search-result-flag\"\n [ngClass]=\"'iti__flag iti__' + item.iso2.toLowerCase()\"\n ></div>\n {{ item.name }}\n <span *ngIf=\"includePhoneInfo\" class=\"sky-deemphasized\">\n {{ item.dialCode }}\n </span>\n</ng-template>\n\n<!-- This template should only be used in modern theme input boxes. -->\n<ng-template #searchIconTemplateRef>\n <div class=\"sky-input-group-icon sky-input-box-icon-inset\">\n <sky-icon iconType=\"skyux\" icon=\"search\"></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } 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 { SkyCountryFieldComponent } from './country-field.component';\n\n@NgModule({\n declarations: [SkyCountryFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyAutocompleteModule,\n SkyIconModule,\n SkyI18nModule,\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) {\n this.#getInputEl(searchEl).select();\n }\n\n public focusInput(searchEl: ElementRef) {\n this.#getInputEl(searchEl).focus();\n }\n\n public startInputAnimation(searchEl: ElementRef) {\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) {\n this.#renderer.setStyle(\n this.#getInputContainerEl(searchEl),\n 'min-width',\n ''\n );\n }\n\n #getInputContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-input-container');\n }\n\n #getSearchOpenButtonEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-btn-open');\n }\n\n #getSearchContainerEl(searchEl: ElementRef) {\n return searchEl.nativeElement.querySelector('.sky-search-container');\n }\n\n #getInputEl(searchEl: ElementRef) {\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 ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { 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})\nexport class SkySearchComponent implements OnDestroy, OnInit, OnChanges {\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 filter button.\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 breakpointSubscription: Subscription | 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 #changeRef: ChangeDetectorRef;\n\n #elRef: ElementRef;\n\n #mediaQueryService: SkyMediaQueryService;\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 constructor(\n mediaQueryService: SkyMediaQueryService,\n elRef: ElementRef,\n searchAdapter: SkySearchAdapterService,\n changeRef: ChangeDetectorRef\n ) {\n this.#mediaQueryService = mediaQueryService;\n this.#elRef = elRef;\n this.#searchAdapter = searchAdapter;\n this.#changeRef = changeRef;\n }\n\n public ngOnInit() {\n if (this.#searchShouldCollapse()) {\n this.breakpointSubscription = this.#mediaQueryService.subscribe(\n (args: SkyMediaBreakpoints) => {\n this.#mediaQueryCallback(args);\n this.#changeRef.detectChanges();\n }\n );\n }\n\n this.#setupSearchChangedEvent();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\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.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() {\n this.searchText = '';\n this.clearButtonShown = false;\n\n this.#searchAdapter.focusInput(this.#elRef);\n this.searchChange.emit(this.searchText);\n\n this.searchApply.emit(this.searchText);\n\n this.searchClear.emit();\n }\n\n public enterPress(event: KeyboardEvent, searchText: string | undefined) {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n this.applySearchText(searchText);\n }\n }\n\n public applySearchText(searchText: string | undefined) {\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) {\n this.searchText = searchText;\n this.#searchUpdated.next(searchText);\n }\n\n public toggleSearchInput(showInput: boolean) {\n if (this.#searchShouldCollapse()) {\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) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.startInputAnimation(this.#elRef);\n\n if (\n event.toState === INPUT_SHOWN_STATE &&\n this.#mediaQueryService.current === SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = true;\n this.searchButtonShown = false;\n }\n }\n }\n\n public inputAnimationEnd(event: AnimationEvent) {\n if (this.#searchShouldCollapse()) {\n this.#searchAdapter.endInputAnimation(this.#elRef);\n\n this.searchButtonShown =\n event.toState === INPUT_HIDDEN_STATE &&\n this.#mediaQueryService.current === SkyMediaBreakpoints.xs;\n\n if (\n (event.toState === INPUT_HIDDEN_STATE &&\n this.#mediaQueryService.current === SkyMediaBreakpoints.xs) ||\n this.#mediaQueryService.current !== SkyMediaBreakpoints.xs\n ) {\n this.mobileSearchShown = false;\n }\n }\n }\n\n public ngOnDestroy() {\n if (this.breakpointSubscription) {\n this.breakpointSubscription.unsubscribe();\n }\n\n this.#searchUpdated.complete();\n this.#searchUpdatedSub?.unsubscribe();\n }\n #searchBindingChanged(changes: SimpleChanges) {\n return (\n changes['searchText'] &&\n changes['searchText'].previousValue !== changes['searchText'].currentValue\n );\n }\n\n #expandModeBindingChanged(changes: SimpleChanges) {\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.#mediaQueryService.current === SkyMediaBreakpoints.xs &&\n this.#searchShouldCollapse()\n );\n }\n\n #mediaQueryCallback(args: SkyMediaBreakpoints): void {\n if (this.#searchShouldCollapse()) {\n if (args === SkyMediaBreakpoints.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\"></ng-container>\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 (@inputState.start)=\"inputAnimationStart($event)\"\n (@inputState.done)=\"inputAnimationEnd($event)\"\n [ngClass]=\"{\n 'sky-search-input-container-has-value': searchText?.trim()\n }\"\n >\n <sky-input-box [disabled]=\"disabled\">\n <input\n class=\"sky-form-control sky-search-input sky-rounded-corners\"\n type=\"text\"\n [attr.aria-label]=\"'skyux_search_label' | skyLibResources\"\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 skyId\n #searchInput=\"skyId\"\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 *skyThemeIf=\"'default'\" icon=\"times\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"close\"\n iconType=\"skyux\"\n size=\"sm\"\n ></sky-icon>\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\n *ngTemplateOutlet=\"searchIconTemplate\"\n ></ng-container>\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\"></ng-container>\n </div>\n </sky-input-box>\n </div>\n </div>\n <div class=\"sky-search-item-dismiss\">\n <button\n *ngIf=\"mobileSearchShown\"\n class=\"sky-btn sky-btn-secondary sky-search-btn-dismiss\"\n type=\"button\"\n [attr.title]=\"'skyux_search_dismiss' | skyLibResources\"\n (click)=\"toggleSearchInput(false)\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"chevron-circle-left\" size=\"lg\">\n </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"double-chevron-left\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #searchIconTemplate>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\" size=\"lg\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"search\"\n iconType=\"skyux\"\n size=\"lg\"\n ></sky-icon>\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/indicators';\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 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 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.showAddButton = showAddButton;\n this.userConfig = userConfig;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { SkyIdService } from '@skyux/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\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})\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: Subject<void> = new Subject();\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: Map<unknown, unknown> = new Map();\n\n #changeDetector: ChangeDetectorRef;\n\n #continuationData: unknown;\n\n #currentSearchSub: Subscription | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #offset = 0;\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkySelectionModalContext,\n changeDetector: ChangeDetectorRef,\n idSvc: SkyIdService\n ) {\n this.#changeDetector = changeDetector;\n\n this.id = 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 if (this.onlyShowSelected) {\n this.displayedItems = this.items.filter((item) =>\n this.selectedIdMap.has(item[this.context.idProperty])\n );\n } else {\n this.displayedItems = this.items;\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","<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 <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\n </sky-modal-header>\n <sky-modal-content\n [skyViewkeeper]=\"['.sky-lookup-show-more-toolbar-wrapper']\"\n >\n <sky-wait [isWaiting]=\"isSearching\"></sky-wait>\n <div class=\"sky-lookup-show-more-toolbar-wrapper\">\n <sky-toolbar class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\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 (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 (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 [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDisplayedItems()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"!isSearching && displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\n [isSelected]=\"\n item[context.idProperty]\n | skySelectionModalItemSelected : selectedIdMap\n \"\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: { item: item }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll\n [enabled]=\"hasMoreItems\"\n [loading]=\"isLoadingMore\"\n (scrollEnd)=\"infiniteScrollEnd()\"\n >\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\n [disabled]=\"isSearching\"\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 let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule, SkyWaitModule } from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkySearchModule } from '../search/search.module';\n\nimport { SkySelectionModalItemSelectedPipe } from './selection-modal-item-selected.pipe';\nimport { SkySelectionModalComponent } from './selection-modal.component';\n\n@NgModule({\n declarations: [SkySelectionModalComponent, SkySelectionModalItemSelectedPipe],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyI18nModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkyThemeModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n SkyWaitModule,\n ],\n})\nexport class SkySelectionModalModule {}\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n TemplateRef,\n} from '@angular/core';\nimport { SkyIdService } from '@skyux/core';\nimport { SkyModalInstance } from '@skyux/modals';\n\nimport { Subject } from 'rxjs';\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 // Suppress this error rather than fix the selector since consumers with unit tests\n // may be looking for an element with this selector. We can change it in the next major\n // version of SKY UX.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'skyux-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})\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: Subject<void> = new Subject();\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 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 #changeDetector: ChangeDetectorRef;\n\n #itemIndex = 0;\n\n #ngUnsubscribe = new Subject<void>();\n\n constructor(\n public modalInstance: SkyModalInstance,\n public context: SkyLookupShowMoreNativePickerContext,\n changeDetector: ChangeDetectorRef,\n idSvc: SkyIdService\n ) {\n this.#changeDetector = changeDetector;\n\n this.id = idSvc.generateId();\n }\n\n public ngAfterViewInit(): void {\n this.repeaterItemTemplate = this.context.userConfig.itemTemplate || null;\n this.searchText = this.context.initialSearch;\n 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 addItems(): void {\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 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 this.searchItems(items).then((searchedItems) => {\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.#changeDetector.markForCheck();\n });\n }\n\n public clearAll(): void {\n this.displayedItems.forEach((item) => {\n if (item.selected) {\n item.selected = false;\n }\n });\n this.selectedItems = [];\n this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public itemClick(selectedItem: any): void {\n if (this.context.selectMode === 'single') {\n 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 this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public searchApplied(searchText: string) {\n /* istanbul ignore else */\n if (this.searchText !== searchText) {\n this.#itemIndex = 10;\n }\n this.searchText = searchText;\n this.updateDataState();\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 selectAll(): 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 this.updateDataState();\n this.#changeDetector.markForCheck();\n }\n\n public updateDataState(): void {\n const items = this.items;\n\n const selectedItems: { index: number; itemData: any }[] =\n this.selectedItems;\n items?.forEach((item: any, index: number) => {\n item.selected =\n selectedItems.findIndex(\n (selectedItem) => selectedItem.index === index\n ) !== -1;\n });\n\n this.searchItems(items).then((searchedItems) => {\n if (this.onlyShowSelected) {\n searchedItems = searchedItems.filter((item) => item.selected);\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\n this.#changeDetector.markForCheck();\n });\n }\n\n public updateItemData(data: any[]): 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 this.addItems();\n\n this.#changeDetector.markForCheck();\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 <ng-container *ngIf=\"context.userConfig?.title; else defaultTitle\">\n {{ context.userConfig.title }}\n </ng-container>\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 class=\"sky-lookup-show-more-modal-toolbar\">\n <sky-toolbar-section>\n <sky-toolbar-item>\n <sky-search\n [debounceTime]=\"250\"\n [searchText]=\"searchText\"\n (searchApply)=\"searchApplied($event)\"\n >\n </sky-search>\n </sky-toolbar-item>\n <sky-toolbar-view-actions>\n <button\n *ngIf=\"context.showAddButton\"\n type=\"button\"\n class=\"sky-btn sky-btn-link sky-lookup-show-more-modal-add\"\n (click)=\"addButtonClicked()\"\n >\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"add\"\n iconType=\"skyux\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'default'\" icon=\"plus-circle\"></sky-icon>\n {{ 'skyux_lookup_show_more_add' | skyLibResources }}\n </button>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n <sky-toolbar\n *ngIf=\"context.selectMode === 'multiple'\"\n class=\"sky-lookup-show-more-modal-multiselect-toolbar\"\n >\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 (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 (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 [(checked)]=\"onlyShowSelected\"\n (change)=\"updateDataState()\"\n >\n <sky-checkbox-label>\n {{\n 'skyux_lookup_show_more_show_selected_option_title'\n | skyLibResources\n }}\n </sky-checkbox-label>\n </sky-checkbox>\n </sky-toolbar-view-actions>\n </sky-toolbar-section>\n </sky-toolbar>\n </div>\n <div\n *ngIf=\"displayedItems.length === 0\"\n class=\"sky-font-deemphasized sky-lookup-show-more-no-results\"\n >\n {{ 'skyux_lookup_show_more_no_results' | skyLibResources }}\n </div>\n <sky-repeater class=\"sky-lookup-show-more-repeater\" expandMode=\"none\">\n <sky-repeater-item\n *ngFor=\"let item of displayedItems\"\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: { item: item.value }\n \"\n >\n </ng-container>\n </sky-repeater-item-content>\n </sky-repeater-item>\n </sky-repeater>\n <sky-infinite-scroll [enabled]=\"itemsHaveMore\" (scrollEnd)=\"addItems()\">\n </sky-infinite-scroll>\n </sky-modal-content>\n <sky-modal-footer>\n <button\n class=\"sky-btn sky-btn-primary sky-margin-inline-compact sky-lookup-show-more-modal-save\"\n type=\"button\"\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 let-item=\"item\" #defaultItemTemplate>\n {{ item[context.descriptorProperty] }}\n</ng-template>\n\n<ng-template #defaultTitle>\n <ng-container *ngIf=\"context.selectMode === 'single'\">\n {{ 'skyux_lookup_show_more_modal_title_single' | skyLibResources }}\n </ng-container>\n <ng-container *ngIf=\"context.selectMode === 'multiple'\">\n {{ 'skyux_lookup_show_more_modal_title_multiple' | skyLibResources }}\n </ng-container>\n</ng-template>\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.\n * @default [\"name\"]\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 to dynamically manage the data source 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. If the\n * search requires calling a remote data source, use `searchAsync` instead of\n * `search`.\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 the object\n * properties of the options.\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 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 */\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 */\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.\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 { 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';\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: 'any',\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.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 });\n\n const instance = new SkySelectionModalInstance(\n modalInstance.componentInstance.id\n );\n\n instance.itemAdded.subscribe((item) => {\n (modalInstance.componentInstance as SkySelectionModalComponent).addItem(\n item\n );\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 =\n modalInstance.componentInstance as SkySelectionModalComponent;\n\n selectionModal.addClick.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 {\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} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { SkyAppWindowRef, 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 { 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})\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 */\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 */\n @Input()\n public ariaLabelledBy: string | undefined;\n\n /**\n * The value for the `autocomplete` attribute on the form input.\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 * @default []\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.\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 * Whether to enable users to open a picker where they can view all options.\n * @default false\n */\n @Input()\n public set enableShowMore(value: boolean | undefined) {\n this.#_enableShowMore = value ?? false;\n }\n\n public get enableShowMore(): boolean {\n return this.#_enableShowMore;\n }\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()\n public set showAddButton(value: boolean | undefined) {\n this.#_showAddButton = value ?? false;\n }\n\n public get showAddButton(): boolean {\n return this.#_showAddButton;\n }\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 if (this.value && this.value.length > 1) {\n // The `setTimeout` is needed to avoid a `ExpressionChangedAfterItHasBeenCheckedError` error in template forms.\n setTimeout(() => {\n this.writeValue([this.value[0]]);\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: EventEmitter<SkyLookupAddClickEventArgs> =\n new EventEmitter();\n\n public get tokens(): SkyToken[] | undefined {\n return this.#_tokens;\n }\n\n public set tokens(value: SkyToken[] | undefined) {\n // Collapse the tokens into a single token if the user has selected many options.\n if (this.enableShowMore && this.value.length > 5) {\n this.#resourcesService\n .getString('skyux_lookup_tokens_summary', this.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 = value;\n this.#changeDetector.markForCheck();\n }\n }\n\n public get value(): any[] {\n return this.#_value ? this.#_value : [];\n }\n\n public set value(newValue: any[]) {\n this.#_value = newValue;\n\n if (!this.#pickerModalOpen()) {\n this.tokens = this.#parseTokens(newValue);\n }\n\n this.onChange(this.#_value);\n this.onTouched();\n }\n\n public autocompleteController = new Subject<SkyAutocompleteMessage>();\n public isInputFocused = false;\n public showMorePickerId: string | undefined;\n public tokensController = new Subject<SkyTokensMessage>();\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 @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n public searchIconTemplateRef: TemplateRef<unknown> | undefined;\n\n #adapter: SkyLookupAdapterService;\n #elementRef: ElementRef;\n #changeDetector: ChangeDetectorRef;\n #idle = new Subject<void>();\n #markForTokenFocusOnKeyUp = false;\n #modalService: SkyModalService;\n #ngUnsubscribe = new Subject<void>();\n #openNativePicker: SkyModalInstance | undefined;\n #openSelectionModal: SkySelectionModalInstance | undefined;\n #resourcesService: SkyLibResourcesService;\n #selectionModalSvc: SkySelectionModalService;\n #windowRef: SkyAppWindowRef;\n #logSvc: SkyLogService;\n\n #_autocompleteInputDirective: SkyAutocompleteInputDirective | undefined;\n #_data: any[] | undefined;\n #_disabled = false;\n #_enableShowMore = false;\n #_selectMode: SkyLookupSelectModeType | undefined;\n #_showAddButton = false;\n #_tokens: SkyToken[] | undefined;\n #_value: any[] | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n elementRef: ElementRef,\n windowRef: SkyAppWindowRef,\n adapter: SkyLookupAdapterService,\n modalService: SkyModalService,\n resourcesService: SkyLibResourcesService,\n selectionModalSvc: SkySelectionModalService,\n logSvc: SkyLogService,\n @Self() @Optional() ngControl?: NgControl,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService\n ) {\n super();\n\n this.#changeDetector = changeDetector;\n this.#elementRef = elementRef;\n this.#windowRef = windowRef;\n this.#adapter = adapter;\n this.#modalService = modalService;\n this.#resourcesService = resourcesService;\n this.#selectionModalSvc = selectionModalSvc;\n this.#logSvc = logSvc;\n\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc && this.inputTemplateRef) {\n this.inputBoxHostSvc.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.enableShowMore\n ? this.showMoreButtonTemplateRef\n : undefined,\n iconsInsetTemplate: this.enableShowMore\n ? undefined\n : this.searchIconTemplateRef,\n });\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.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 /* istanbul ignore else */\n if (change.selectedItem) {\n this.#addToSelected(change.selectedItem);\n } else if (this.selectMode === 'single') {\n this.writeValue([]);\n }\n }\n\n public onAutocompleteBlur(): void {\n this.onTouched();\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 // NOTE: We do this here instead of just using the `value` setter because we need to use the\n // set of tokens returned here for the purposes of setting focus (see `onTokensKeyUp`).\n this.#_value = change.map((token) => {\n return token.value;\n });\n this.tokens = change;\n this.onChange(this.#_value);\n this.onTouched();\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.value = value ? value.slice() : [];\n this.#updateForSelectMode();\n }\n\n // Angular automatically constructs these methods.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onChange = (value: any[]) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\n\n public registerOnChange(fn: (value: any) => 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.#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.value,\n });\n } else {\n const initialValue = this.value;\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' ? closeArgs.selectedItems : initialValue\n );\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 });\n\n this.#changeDetector.markForCheck();\n }\n }\n }\n\n #createSelectionModalInstance(\n initialSearch: string\n ): SkySelectionModalInstance {\n const initialValue = this.value;\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 showAddButton: this.showAddButton,\n title: modalConfig.title,\n value: initialValue,\n });\n }\n\n #createNativePickerInstance(initialSearch: string): SkyModalInstance {\n const initialValue = this.value;\n const modalConfig = this.showMoreConfig?.nativePickerConfig || {};\n\n if (!modalConfig.itemTemplate) {\n modalConfig.itemTemplate = this.searchResultTemplate;\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 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.writeValue(selectedItems);\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 let selectedItems: any[];\n\n if (this.selectMode === 'single') {\n selectedItems = [item];\n } else {\n selectedItems = this.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 !this.value.some(\n (existingItem) => existingItem[idProperty] === item[idProperty]\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.writeValue(selectedItems);\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, 'mousedown')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\n\n this.#changeDetector.markForCheck();\n });\n\n observableFromEvent<KeyboardEvent>(documentObj, 'focusin')\n .pipe(takeUntil(this.#idle))\n .subscribe((event) => {\n hostElement = !this.inputBoxHostSvc\n ? this.#elementRef.nativeElement\n : this.lookupWrapperRef?.nativeElement;\n this.isInputFocused = hostElement.contains(event.target);\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 newValue =\n this.selectMode === 'multiple'\n ? this.value.concat(args.item)\n : [args.item];\n this.writeValue(newValue);\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 this.autocompleteInputDirective.value = this.value && this.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","<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template #inputTemplateRef>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy\"\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 >\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 <sky-tokens\n *ngIf=\"selectMode === 'multiple'\"\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-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </sky-tokens>\n <div\n *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\n ></ng-container>\n </ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\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 [disabled]=\"disabled\"\n [ngClass]=\"{ 'sky-btn-disabled': disabled }\"\n type=\"button\"\n [attr.aria-label]=\"\n 'skyux_lookup_search_button_show_more' | skyLibResources\n \"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\"></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #searchIconTemplateRef>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{ 'sky-lookup-disabled': disabled }\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"search\"></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" iconType=\"skyux\" icon=\"search\"></sky-icon>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyViewkeeperModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport {\n SkyIconModule,\n SkyTokensModule,\n SkyWaitModule,\n} from '@skyux/indicators';\nimport { SkyToolbarModule } from '@skyux/layout';\nimport { SkyInfiniteScrollModule, SkyRepeaterModule } from '@skyux/lists';\nimport { SkyModalModule } from '@skyux/modals';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyAutocompleteModule } from '../autocomplete/autocomplete.module';\nimport { SkySearchModule } from '../search/search.module';\nimport { SkySelectionModalModule } from '../selection-modal/selection-modal.module';\nimport { SkyLookupResourcesModule } from '../shared/sky-lookup-resources.module';\n\nimport { SkyLookupShowMoreModalComponent } from './lookup-show-more-modal.component';\nimport { SkyLookupComponent } from './lookup.component';\n\n@NgModule({\n declarations: [SkyLookupComponent, SkyLookupShowMoreModalComponent],\n imports: [\n CommonModule,\n FormsModule,\n SkyAutocompleteModule,\n SkyCheckboxModule,\n SkyIconModule,\n SkyInfiniteScrollModule,\n SkyI18nModule,\n SkyLookupResourcesModule,\n SkyModalModule,\n SkyRepeaterModule,\n SkySearchModule,\n SkySelectionModalModule,\n SkyThemeModule,\n SkyTokensModule,\n SkyToolbarModule,\n SkyViewkeeperModule,\n SkyWaitModule,\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["observableFromEvent","uniqueId","i5","i6","i7","i8.SkyAutocompleteSearchAsyncDisabledPipe","i2","i3","i6.SkyAutocompleteComponent","i7.SkyAutocompleteInputDirective","i8","i9","i2.SkySearchAdapterService","i4","i1","i2.SkySelectionModalContext","i8.SkySearchComponent","i11","i12.SkySelectionModalItemSelectedPipe","i2.SkyLookupShowMoreNativePickerContext","i2.SkyLookupAdapterService","i5.SkySelectionModalService","i10.SkyAutocompleteComponent","i11.SkyAutocompleteInputDirective","i12"],"mappings":"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"}