@skyux/lookup 7.6.2 → 7.7.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/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 Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyOverlayInstance,\n SkyOverlayService,\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 directive.onTouched();\n });\n\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\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 #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 #_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 ) {\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\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 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 = 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 }\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 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 {\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} 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';\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> = 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 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 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> = 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 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 #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","i2.SkyAutocompleteAdapterService","i3","i5","i6","i7","i8.SkyAutocompleteSearchAsyncDisabledPipe","i2","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/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 Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAffixer,\n SkyOverlayInstance,\n SkyOverlayService,\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 directive.onTouched();\n });\n\n this.#_inputDirective.focus\n .pipe(takeUntil(this.#inputDirectiveUnsubscribe))\n .subscribe(() => {\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 #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 #_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 ) {\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\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 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 = 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 }\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 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 {\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} 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';\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> = 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 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 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 wrapperClass: args.wrapperClass,\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> = 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 wrapperClass: this.wrapperClass,\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 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 #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","i2.SkyAutocompleteAdapterService","i3","i5","i6","i7","i8.SkyAutocompleteSearchAsyncDisabledPipe","i2","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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"}