@skyux/lookup 5.6.1 → 5.6.2

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.
@@ -25,7 +25,8 @@ export class SkyAutocompleteInputDirective {
25
25
  this._disabled = false;
26
26
  this._focus = new Subject();
27
27
  this._textChanges = new Subject();
28
- /* istanbul ignore next */
28
+ // istanbul ignore next
29
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
29
30
  this.onValidatorChange = () => { };
30
31
  }
31
32
  /**
@@ -189,9 +190,9 @@ export class SkyAutocompleteInputDirective {
189
190
  }
190
191
  }
191
192
  // Angular automatically constructs these methods.
192
- /* istanbul ignore next */
193
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
193
194
  onChange(value) { }
194
- /* istanbul ignore next */
195
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
195
196
  onTouched() { }
196
197
  setAttributes(element) {
197
198
  this.renderer.setAttribute(element, 'autocomplete', this.autocompleteAttribute);
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-input.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-input.directive.ts"],"names":[],"mappings":"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","sourcesContent":["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\n// tslint:disable:no-forward-ref no-use-before-declare\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// tslint:enable\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 * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public set autocompleteAttribute(value: string) {\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 * Indicates whether to disable the autocomplete field.\n * @default false\n */\n @Input()\n public set disabled(value: boolean) {\n this._disabled = value;\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', value);\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public get blur(): Observable<void> {\n return this._blur.asObservable();\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 /**\n * @internal\n */\n public get inputElement(): any {\n return this.elementRef.nativeElement;\n }\n\n public get focus(): Observable<void> {\n return this._focus.asObservable();\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._textChanges.asObservable();\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 private control: AbstractControl;\n\n private isFirstChange = true;\n\n private ngUnsubscribe = new Subject<void>();\n\n private _autocompleteAttribute: string;\n\n private _blur = new Subject<void>();\n\n private _disabled = false;\n\n private _displayWith: string;\n\n private _focus = new Subject<void>();\n\n private _textChanges = new Subject<SkyAutocompleteInputTextChange>();\n\n private _value: any;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n public ngOnInit() {\n const element = this.elementRef.nativeElement;\n\n this.setAttributes(element);\n\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\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 /** Sanity check */\n if (!this.disabled) {\n this._blur.next();\n }\n });\n\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._focus.next();\n }\n });\n\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\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 this._blur = this._textChanges = this.ngUnsubscribe = undefined;\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 {\n if (!this.control) {\n this.control = control;\n }\n return;\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 // Angular automatically constructs these methods.\n /* istanbul ignore next */\n public onChange(value: any): void {}\n /* istanbul ignore next */\n public onTouched(): void {}\n /* istanbul ignore next */\n public onValidatorChange = () => {};\n\n private setAttributes(element: any): void {\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 private getValueByKey(): string {\n return this.value ? this.value[this.displayWith] : undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"autocomplete-input.directive.js","sourceRoot":"","sources":["../../../../../../../../libs/components/lookup/src/lib/modules/autocomplete/autocomplete-input.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,UAAU,EACV,KAAK,EAGL,SAAS,EACT,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,aAAa,EACb,iBAAiB,GAGlB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAc,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;AAI3C,sDAAsD;AACtD,MAAM,+BAA+B,GAAG;IACtC,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC;IAC5D,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,0BAA0B,GAAG;IACjC,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC;IAC5D,KAAK,EAAE,IAAI;CACZ,CAAC;AACF,gBAAgB;AAMhB,MAAM,OAAO,6BAA6B;IAyHxC,YAAoB,UAAsB,EAAU,QAAmB;QAAnD,eAAU,GAAV,UAAU,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAW;QAlB/D,kBAAa,GAAG,IAAI,CAAC;QAErB,kBAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;QAIpC,UAAK,GAAG,IAAI,OAAO,EAAQ,CAAC;QAE5B,cAAS,GAAG,KAAK,CAAC;QAIlB,WAAM,GAAG,IAAI,OAAO,EAAQ,CAAC;QAE7B,iBAAY,GAAG,IAAI,OAAO,EAAkC,CAAC;QAyHrE,uBAAuB;QACvB,gEAAgE;QACzD,sBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAvHsC,CAAC;IAtH3E;;;OAGG;IACH,IACW,qBAAqB,CAAC,KAAa;QAC5C,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;SACrC;aAAM;YACL,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;SACrC;QAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,cAAc,EACd,IAAI,CAAC,qBAAqB,CAC3B,CAAC;IACJ,CAAC;IAED,IAAW,qBAAqB;QAC9B,OAAO,IAAI,CAAC,sBAAsB,IAAI,KAAK,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,IACW,QAAQ,CAAC,KAAc;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,WAAW,CAAC,KAAa;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACvC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;IAC7C,CAAC;IAED,IAAW,cAAc,CAAC,KAAa;QACrC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,KAAK,CAAC,KAAU;QACzB,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC;QAEzC,0BAA0B;QAC1B,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3B,mCAAmC;YACnC,kDAAkD;YAClD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE;gBACtC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;aAC/B;YAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE;gBACrC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC5B;SACF;IACH,CAAC;IAwBM,QAAQ;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAE9C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE5B,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;aAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACd,mBAAmB;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oBACrB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK;iBAC3C,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEL,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;aACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACd,mBAAmB;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aACnB;QACH,CAAC,CAAC,CAAC;QAEL,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;aAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACd,mBAAmB;YACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;QAEL,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;aACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACnC,SAAS,CAAC,GAAG,EAAE;YACd,mBAAmB;YACnB,0BAA0B;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAE7B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IAClE,CAAC;IAEM,UAAU,CAAC,KAAU;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEM,gBAAgB,CAAC,EAAwB;QAC9C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAEM,iBAAiB,CAAC,EAAc;QACrC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEM,yBAAyB,CAAC,EAAc;QAC7C,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEM,oCAAoC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAExC,8DAA8D;QAC9D,uCAAuC;QACvC,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE;YACtC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;SAClC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEM,gBAAgB,CAAC,QAAiB;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,QAAQ,CAAC,OAAwB;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QACD,OAAO;IACT,CAAC;IAED,4EAA4E;IACrE,mBAAmB,CAAC,YAA2B;QACpD,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,uBAAuB,EACvB,YAAY,CACb,CAAC;SACH;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,uBAAuB,CACxB,CAAC;SACH;IACH,CAAC;IAED,kDAAkD;IAClD,gEAAgE;IACzD,QAAQ,CAAC,KAAU,IAAS,CAAC;IACpC,gEAAgE;IACzD,SAAS,KAAU,CAAC;IAKnB,aAAa,CAAC,OAAY;QAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,OAAO,EACP,cAAc,EACd,IAAI,CAAC,qBAAqB,CAC3B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACtD,CAAC;IAEO,aAAa;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;;2HAhQU,6BAA6B;+GAA7B,6BAA6B,8JAF7B,CAAC,+BAA+B,EAAE,0BAA0B,CAAC;4FAE7D,6BAA6B;kBAJzC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mDAAmD;oBAC7D,SAAS,EAAE,CAAC,+BAA+B,EAAE,0BAA0B,CAAC;iBACzE;yHASY,qBAAqB;sBAD/B,KAAK;gBAwBK,QAAQ;sBADlB,KAAK","sourcesContent":["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\n// tslint:disable:no-forward-ref no-use-before-declare\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// tslint:enable\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 * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public set autocompleteAttribute(value: string) {\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 * Indicates whether to disable the autocomplete field.\n * @default false\n */\n @Input()\n public set disabled(value: boolean) {\n this._disabled = value;\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', value);\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public get blur(): Observable<void> {\n return this._blur.asObservable();\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 /**\n * @internal\n */\n public get inputElement(): any {\n return this.elementRef.nativeElement;\n }\n\n public get focus(): Observable<void> {\n return this._focus.asObservable();\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._textChanges.asObservable();\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 private control: AbstractControl;\n\n private isFirstChange = true;\n\n private ngUnsubscribe = new Subject<void>();\n\n private _autocompleteAttribute: string;\n\n private _blur = new Subject<void>();\n\n private _disabled = false;\n\n private _displayWith: string;\n\n private _focus = new Subject<void>();\n\n private _textChanges = new Subject<SkyAutocompleteInputTextChange>();\n\n private _value: any;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n public ngOnInit() {\n const element = this.elementRef.nativeElement;\n\n this.setAttributes(element);\n\n observableFromEvent(element, 'input')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\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 /** Sanity check */\n if (!this.disabled) {\n this._blur.next();\n }\n });\n\n observableFromEvent(element, 'focus')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\n if (!this.disabled) {\n this._focus.next();\n }\n });\n\n observableFromEvent(element, 'change')\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n /** Sanity check */\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 this._blur = this._textChanges = this.ngUnsubscribe = undefined;\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 {\n if (!this.control) {\n this.control = control;\n }\n return;\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 // 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 private setAttributes(element: any): void {\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 private getValueByKey(): string {\n return this.value ? this.value[this.displayWith] : undefined;\n }\n}\n"]}
@@ -47,9 +47,9 @@ export class SkyCountryFieldComponent {
47
47
  this._disabled = false;
48
48
  this._includePhoneInfo = false;
49
49
  // Angular automatically constructs these methods.
50
- /* istanbul ignore next */
50
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
51
51
  this.onChange = (value) => { };
52
- /* istanbul ignore next */
52
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
53
53
  this.onTouched = () => { };
54
54
  this.setupCountries();
55
55
  this.countrySearchFormControl = new FormControl();
@@ -1 +1 @@
1
- {"version":3,"file":"country-field.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.ts","../../../../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.html"],"names":[],"mappings":"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","sourcesContent":["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 FormControl,\n NG_VALIDATORS,\n NgControl,\n NgModel,\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\n// tslint:disable:no-forward-ref no-use-before-declare\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\n\n// tslint:enable\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 * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies 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) {\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 {\n return this._defaultCountry;\n }\n\n /**\n * Indicates whether to disable the country field.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean) {\n this.removeEventListeners();\n\n if (!isDisabled) {\n this.addEventListeners();\n }\n\n this._disabled = isDisabled;\n\n this.changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Indicates whether to hide the flag in the input element.\n * @default false\n */\n @Input()\n public hideSelectedCountryFlag: boolean;\n\n /**\n * Indicates whether to include phone information in the selected country and country dropdown.\n * @default false\n */\n @Input()\n public set includePhoneInfo(includePhoneInfo: boolean) {\n this._includePhoneInfo = includePhoneInfo;\n\n this.setupCountries();\n }\n\n public get includePhoneInfo(): boolean {\n return this._includePhoneInfo;\n }\n\n /**\n * Specifies 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[]) {\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: FormControl;\n\n public isInputFocused = false;\n\n public searchTextMinimumCharacters = 2;\n\n @ViewChild(SkyAutocompleteInputDirective)\n public countrySearchAutocompleteDirective: SkyAutocompleteInputDirective;\n\n public set selectedCountry(newCountry: SkyCountryFieldCountry) {\n if (!this.countriesAreEqual(this.selectedCountry, newCountry)) {\n if (newCountry && newCountry.iso2) {\n const isoCountry = this.countries.find(\n (country) => country.iso2 === newCountry.iso2\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 {\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 private inputTemplateRef: TemplateRef<any>;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<any>;\n\n private defaultCountryData: SkyCountryFieldCountry;\n\n private idle: Subject<any> = new Subject();\n\n private internalFormChange = false;\n\n private isInitialChange = true;\n\n private ngControl: NgControl;\n\n private ngUnsubscribe = new Subject();\n\n private _defaultCountry: string;\n\n private _disabled = false;\n\n private _includePhoneInfo = false;\n\n private _selectedCountry: SkyCountryFieldCountry;\n\n private _supportedCountryISOs: string[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n private injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() private themeSvc?: SkyThemeService\n ) {\n this.setupCountries();\n\n this.countrySearchFormControl = new FormControl();\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 // tslint:disable-next-line: no-null-keyword\n this.ngControl = this.injector.get<NgControl>(\n NgControl as unknown as Type<NgControl>,\n null\n );\n\n this.inputId = `sky-country-field-input-${uniqueId++}`;\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 = 'us';\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 compoennt 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 /* istanbul ignore next */\n public onChange: Function = (value: SkyCountryFieldCountry) => {};\n\n /* istanbul ignore next */\n public onTouched: Function = () => {};\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 // Allows Angular to disable the input.\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n\n public validate(control: AbstractControl): ValidationErrors {\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 return;\n }\n\n public writeValue(value: SkyCountryFieldCountry): void {\n this.selectedCountry = value;\n this.changeDetector.markForCheck();\n }\n\n private addEventListeners(): void {\n this.removeEventListeners();\n\n this.idle = new Subject();\n\n const documentObj = this.windowRef.nativeWindow.document;\n\n fromEvent(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n\n fromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n }\n\n private countriesAreEqual(\n country1: SkyCountryFieldCountry,\n country2: SkyCountryFieldCountry\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 private countriesEqual(\n a: SkyCountryFieldCountry,\n b: SkyCountryFieldCountry\n ): boolean {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private 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 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: any) => {\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 private sortCountriesWithSelectedAndDefault(\n selectedCountry: SkyCountryFieldCountry\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) &&\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 offical data from the\n // library and not the data provided by the user on initialization of the component\n selectedCountryData = this.countries.find(\n (country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase()\n );\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 this.countries = sortedNewCountries;\n }\n\n private updateInputBox(): void {\n if (this.inputBoxHostSvc) {\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]=\"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 ' + 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"]}
1
+ {"version":3,"file":"country-field.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.ts","../../../../../../../../libs/components/lookup/src/lib/modules/country-field/country-field.component.html"],"names":[],"mappings":"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","sourcesContent":["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 FormControl,\n NG_VALIDATORS,\n NgControl,\n NgModel,\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\n// tslint:disable:no-forward-ref no-use-before-declare\nconst SKY_COUNTRY_FIELD_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyCountryFieldComponent),\n multi: true,\n};\n\n// tslint:enable\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 * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies 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) {\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 {\n return this._defaultCountry;\n }\n\n /**\n * Indicates whether to disable the country field.\n * @default false\n */\n @Input()\n public set disabled(isDisabled: boolean) {\n this.removeEventListeners();\n\n if (!isDisabled) {\n this.addEventListeners();\n }\n\n this._disabled = isDisabled;\n\n this.changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Indicates whether to hide the flag in the input element.\n * @default false\n */\n @Input()\n public hideSelectedCountryFlag: boolean;\n\n /**\n * Indicates whether to include phone information in the selected country and country dropdown.\n * @default false\n */\n @Input()\n public set includePhoneInfo(includePhoneInfo: boolean) {\n this._includePhoneInfo = includePhoneInfo;\n\n this.setupCountries();\n }\n\n public get includePhoneInfo(): boolean {\n return this._includePhoneInfo;\n }\n\n /**\n * Specifies 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[]) {\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: FormControl;\n\n public isInputFocused = false;\n\n public searchTextMinimumCharacters = 2;\n\n @ViewChild(SkyAutocompleteInputDirective)\n public countrySearchAutocompleteDirective: SkyAutocompleteInputDirective;\n\n public set selectedCountry(newCountry: SkyCountryFieldCountry) {\n if (!this.countriesAreEqual(this.selectedCountry, newCountry)) {\n if (newCountry && newCountry.iso2) {\n const isoCountry = this.countries.find(\n (country) => country.iso2 === newCountry.iso2\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 {\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 private inputTemplateRef: TemplateRef<any>;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<any>;\n\n private defaultCountryData: SkyCountryFieldCountry;\n\n private idle: Subject<any> = new Subject();\n\n private internalFormChange = false;\n\n private isInitialChange = true;\n\n private ngControl: NgControl;\n\n private ngUnsubscribe = new Subject();\n\n private _defaultCountry: string;\n\n private _disabled = false;\n\n private _includePhoneInfo = false;\n\n private _selectedCountry: SkyCountryFieldCountry;\n\n private _supportedCountryISOs: string[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n private injector: Injector,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() private themeSvc?: SkyThemeService\n ) {\n this.setupCountries();\n\n this.countrySearchFormControl = new FormControl();\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 // tslint:disable-next-line: no-null-keyword\n this.ngControl = this.injector.get<NgControl>(\n NgControl as unknown as Type<NgControl>,\n null\n );\n\n this.inputId = `sky-country-field-input-${uniqueId++}`;\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 = 'us';\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 compoennt 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) => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public onTouched = () => {};\n\n public registerOnChange(fn: (value: SkyCountryFieldCountry) => void): 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 {\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 return;\n }\n\n public writeValue(value: SkyCountryFieldCountry): void {\n this.selectedCountry = value;\n this.changeDetector.markForCheck();\n }\n\n private addEventListeners(): void {\n this.removeEventListeners();\n\n this.idle = new Subject();\n\n const documentObj = this.windowRef.nativeWindow.document;\n\n fromEvent(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n\n fromEvent(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\n this.isInputFocused = this.elRef.nativeElement.contains(event.target);\n this.changeDetector.markForCheck();\n });\n }\n\n private countriesAreEqual(\n country1: SkyCountryFieldCountry,\n country2: SkyCountryFieldCountry\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 private countriesEqual(\n a: SkyCountryFieldCountry,\n b: SkyCountryFieldCountry\n ): boolean {\n return a.iso2 === b.iso2 && a.name === b.name;\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private 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 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: any) => {\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 private sortCountriesWithSelectedAndDefault(\n selectedCountry: SkyCountryFieldCountry\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) &&\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 offical data from the\n // library and not the data provided by the user on initialization of the component\n selectedCountryData = this.countries.find(\n (country) => country.iso2 === selectedCountry.iso2.toLocaleLowerCase()\n );\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 this.countries = sortedNewCountries;\n }\n\n private updateInputBox(): void {\n if (this.inputBoxHostSvc) {\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]=\"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 ' + 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"]}
@@ -62,9 +62,9 @@ export class SkyLookupComponent extends SkyLookupAutocompleteAdapter {
62
62
  this.idle = new Subject();
63
63
  this.markForTokenFocusOnKeyUp = false;
64
64
  // Angular automatically constructs these methods.
65
- /* istanbul ignore next */
65
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
66
66
  this.onChange = (value) => { };
67
- /* istanbul ignore next */
67
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
68
68
  this.onTouched = () => { };
69
69
  ngControl.valueAccessor = this;
70
70
  }
@@ -323,8 +323,9 @@ export class SkyLookupComponent extends SkyLookupAutocompleteAdapter {
323
323
  let isValueInTextBox = false;
324
324
  if (this.selectMode === 'single') {
325
325
  isValueInTextBox =
326
- this.autocompleteInputDirective.inputTextValue ===
327
- this.autocompleteInputDirective.value[this.descriptorProperty];
326
+ this.autocompleteInputDirective.value &&
327
+ this.autocompleteInputDirective.inputTextValue ===
328
+ this.autocompleteInputDirective.value[this.descriptorProperty];
328
329
  }
329
330
  this.openPicker(isValueInTextBox ? '' : this.autocompleteInputDirective.inputTextValue);
330
331
  this.autocompleteInputDirective.restoreInputTextValueToPreviousState();
@@ -1 +1 @@
1
- {"version":3,"file":"lookup.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.ts","../../../../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.html"],"names":[],"mappings":"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","sourcesContent":["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 } 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';\n\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreAsyncModalComponent } from './lookup-show-more-async-modal.component';\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 { SkyLookupShowMoreNativePickerAsyncContext } from './types/lookup-show-more-native-picker-async-context';\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 * Specifies an ARIA label for the typeahead search input\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the typeahead search input. This sets the input's `aria-labelledby` attribute\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 */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies a 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[]) {\n this._data = value;\n\n if (this.openNativePicker && this.searchAsync.observers.length === 0) {\n this.openNativePicker.componentInstance.updateItemData(value);\n }\n }\n\n public get data(): any[] {\n return this._data;\n }\n\n /**\n * Indicates whether to disable the lookup field.\n */\n @Input()\n public disabled = false;\n\n /**\n * Indicates whether to enable users to open a picker where they can view all options.\n */\n @Input()\n public enableShowMore = false;\n\n /**\n * Specifies placeholder text to display in the lookup field.\n */\n @Input()\n public placeholderText: string;\n\n /**\n * Specifies an object property that represents the object's unique identifier.\n * Specifying this property enables token animations and more efficient rendering.\n */\n @Input()\n public idProperty: string;\n\n /**\n * Indicates whether to display a button that lets users add options to the list.\n */\n @Input()\n public showAddButton = false;\n\n /**\n * Specifies configuration options for the picker that displays all options.\n */\n @Input()\n public showMoreConfig: SkyLookupShowMoreConfig;\n\n /**\n * Specifies whether users can select one option or multiple options.\n * @default \"mulitple\"\n */\n @Input()\n public set selectMode(value: SkyLookupSelectModeType) {\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;\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[] {\n return this._tokens;\n }\n\n public set tokens(value: SkyToken[]) {\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.openNativePicker) {\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 tokensController = new Subject<SkyTokensMessage>();\n\n @ViewChild(SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n })\n private set autocompleteInputDirective(value: SkyAutocompleteInputDirective) {\n this._autocompleteInputDirective = value;\n this.updateForSelectMode();\n }\n\n private get autocompleteInputDirective(): SkyAutocompleteInputDirective {\n return this._autocompleteInputDirective;\n }\n\n @ViewChild('showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private showMoreButtonTemplateRef: TemplateRef<any>;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private inputTemplateRef: TemplateRef<any>;\n\n @ViewChild('lookupWrapper', {\n read: ElementRef,\n })\n private lookupWrapperRef: ElementRef;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<any>;\n\n private ngUnsubscribe = new Subject();\n private idle = new Subject();\n private markForTokenFocusOnKeyUp = false;\n private openNativePicker: SkyModalInstance;\n\n private _autocompleteInputDirective: SkyAutocompleteInputDirective;\n private _data: any[];\n private _selectMode: SkyLookupSelectModeType;\n private _tokens: SkyToken[];\n private _value: any[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n @Self() @Optional() ngControl: NgControl,\n private adapter: SkyLookupAdapterService,\n private modalService: SkyModalService,\n private resourcesService: SkyLibResourcesService,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService\n ) {\n super();\n ngControl.valueAccessor = this;\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc) {\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\n this.sendAutocompleteMessage(\n SkyAutocompleteMessageType.RepositionDropdown\n );\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 /* tslint:disable-next-line:switch-default */\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 writeValue(value: any[]): void {\n this.value = value ? value : [];\n this.updateForSelectMode();\n }\n\n // Angular automatically constructs these methods.\n /* istanbul ignore next */\n public onChange = (value: any[]) => {};\n /* istanbul ignore next */\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 this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = undefined;\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, value: string): 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 '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.inputTextValue ===\n this.autocompleteInputDirective.value[this.descriptorProperty];\n }\n\n this.openPicker(\n isValueInTextBox ? '' : this.autocompleteInputDirective.inputTextValue\n );\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 private 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 let contextProviderType:\n | typeof SkyLookupShowMoreNativePickerContext\n | typeof SkyLookupShowMoreNativePickerAsyncContext;\n\n let contextProviderValue:\n | SkyLookupShowMoreNativePickerContext\n | SkyLookupShowMoreNativePickerAsyncContext;\n\n let modalComponentType:\n | typeof SkyLookupShowMoreModalComponent\n | typeof SkyLookupShowMoreAsyncModalComponent;\n\n if (this.searchAsync.observers.length > 0) {\n contextProviderType = SkyLookupShowMoreNativePickerAsyncContext;\n modalComponentType = SkyLookupShowMoreAsyncModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerAsyncContext();\n contextProviderValue.idProperty = this.idProperty;\n contextProviderValue.searchAsync = (args) => {\n this.searchAsync.emit(args);\n return args.result;\n };\n } else {\n contextProviderType = SkyLookupShowMoreNativePickerContext;\n modalComponentType = SkyLookupShowMoreModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerContext();\n contextProviderValue.items = this.data;\n contextProviderValue.search = this.search;\n }\n\n contextProviderValue.descriptorProperty = this.descriptorProperty;\n contextProviderValue.initialSearch = initialSearch;\n contextProviderValue.initialValue = initialValue;\n contextProviderValue.selectMode = this.selectMode;\n contextProviderValue.showAddButton = this.showAddButton;\n contextProviderValue.userConfig = modalConfig;\n\n return this.modalService.open(modalComponentType, {\n providers: [\n {\n provide: contextProviderType,\n useValue: contextProviderValue,\n },\n ],\n wrapperClass: this.wrapperClass,\n });\n }\n\n public openPicker(initialSearch: string): void {\n if (this.showMoreConfig?.customPicker) {\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch: initialSearch,\n initialValue: this.value,\n });\n } else {\n const initialValue = this.value;\n\n this.openNativePicker = this.createNativePickerInstance(initialSearch);\n\n this.openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n\n this.openNativePicker.closed.subscribe((closeArgs) => {\n this.openNativePicker = undefined;\n if (closeArgs.reason === 'save') {\n let selectedItems: any[] = [];\n\n if (this.searchAsync.observers.length > 0) {\n selectedItems = closeArgs.data.map((item) => item.itemData);\n } else {\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 }\n\n this.writeValue(selectedItems);\n } else {\n this.writeValue(initialValue);\n }\n\n this.focusInput();\n this.changeDetector.markForCheck();\n });\n }\n }\n\n public onSearchAsync(args: SkyAutocompleteSearchAsyncArgs): void {\n this.searchAsync.emit(args);\n }\n\n private 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 // 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) =>\n existingItem[this.idProperty] === item[this.idProperty]\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.writeValue(selectedItems);\n }\n\n private addEventListeners(): void {\n this.idle = new Subject();\n this.focusInputOnHostClick();\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private 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(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\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(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\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 private focusInput(): void {\n this.adapter.focusInput(this.lookupWrapperRef);\n }\n\n private onAddButtonComplete(args: SkyLookupAddCallbackArgs) {\n if (args.data) {\n this.data = args.data;\n }\n\n if (this.data.indexOf(args.item) >= 0) {\n if (this.openNativePicker) {\n (\n this.openNativePicker\n .componentInstance as SkyLookupShowMoreModalComponent\n ).onItemSelect(true, { value: args.item, selected: false });\n } else {\n let newValue = this.value;\n if (this.selectMode === 'multiple') {\n newValue = this.value.concat(args.item);\n } else {\n newValue = [args.item];\n }\n this.writeValue(newValue);\n }\n }\n }\n\n private parseTokens(data: any[]): SkyToken[] {\n return data.map((item: any) => {\n return {\n value: item,\n };\n });\n }\n\n private sendAutocompleteMessage(type: SkyAutocompleteMessageType): void {\n this.autocompleteController.next({ type });\n }\n\n private sendTokensMessage(type: SkyTokensMessageType): void {\n this.tokensController.next({ type });\n }\n\n private 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","<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 [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"search\"\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 (tokenSelected)=\"enableShowMore ? openPicker(undefined) : 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, $event.target.value)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\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 </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\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\n *skyThemeIf=\"'default'\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n </div>\n</ng-template>\n"]}
1
+ {"version":3,"file":"lookup.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.ts","../../../../../../../../libs/components/lookup/src/lib/modules/lookup/lookup.component.html"],"names":[],"mappings":"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","sourcesContent":["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 } 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';\n\nimport { SkyLookupAdapterService } from './lookup-adapter.service';\nimport { SkyLookupAutocompleteAdapter } from './lookup-autocomplete-adapter';\nimport { SkyLookupShowMoreAsyncModalComponent } from './lookup-show-more-async-modal.component';\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 { SkyLookupShowMoreNativePickerAsyncContext } from './types/lookup-show-more-native-picker-async-context';\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 * Specifies an ARIA label for the typeahead search input\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the input includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the typeahead search input. This sets the input's `aria-labelledby` attribute\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 */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Specifies the value for the `autocomplete` attribute on the form input.\n * @default \"off\"\n */\n @Input()\n public autocompleteAttribute: string;\n\n /**\n * Specifies a 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[]) {\n this._data = value;\n\n if (this.openNativePicker && this.searchAsync.observers.length === 0) {\n this.openNativePicker.componentInstance.updateItemData(value);\n }\n }\n\n public get data(): any[] {\n return this._data;\n }\n\n /**\n * Indicates whether to disable the lookup field.\n */\n @Input()\n public disabled = false;\n\n /**\n * Indicates whether to enable users to open a picker where they can view all options.\n */\n @Input()\n public enableShowMore = false;\n\n /**\n * Specifies placeholder text to display in the lookup field.\n */\n @Input()\n public placeholderText: string;\n\n /**\n * Specifies an object property that represents the object's unique identifier.\n * Specifying this property enables token animations and more efficient rendering.\n */\n @Input()\n public idProperty: string;\n\n /**\n * Indicates whether to display a button that lets users add options to the list.\n */\n @Input()\n public showAddButton = false;\n\n /**\n * Specifies configuration options for the picker that displays all options.\n */\n @Input()\n public showMoreConfig: SkyLookupShowMoreConfig;\n\n /**\n * Specifies whether users can select one option or multiple options.\n * @default \"mulitple\"\n */\n @Input()\n public set selectMode(value: SkyLookupSelectModeType) {\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;\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[] {\n return this._tokens;\n }\n\n public set tokens(value: SkyToken[]) {\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.openNativePicker) {\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 tokensController = new Subject<SkyTokensMessage>();\n\n @ViewChild(SkyAutocompleteInputDirective, {\n read: SkyAutocompleteInputDirective,\n static: false,\n })\n private set autocompleteInputDirective(value: SkyAutocompleteInputDirective) {\n this._autocompleteInputDirective = value;\n this.updateForSelectMode();\n }\n\n private get autocompleteInputDirective(): SkyAutocompleteInputDirective {\n return this._autocompleteInputDirective;\n }\n\n @ViewChild('showMoreButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private showMoreButtonTemplateRef: TemplateRef<any>;\n\n @ViewChild('inputTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private inputTemplateRef: TemplateRef<any>;\n\n @ViewChild('lookupWrapper', {\n read: ElementRef,\n })\n private lookupWrapperRef: ElementRef;\n\n @ViewChild('searchIconTemplateRef', {\n read: TemplateRef,\n static: true,\n })\n private searchIconTemplateRef: TemplateRef<any>;\n\n private ngUnsubscribe = new Subject();\n private idle = new Subject();\n private markForTokenFocusOnKeyUp = false;\n private openNativePicker: SkyModalInstance;\n\n private _autocompleteInputDirective: SkyAutocompleteInputDirective;\n private _data: any[];\n private _selectMode: SkyLookupSelectModeType;\n private _tokens: SkyToken[];\n private _value: any[];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private windowRef: SkyAppWindowRef,\n @Self() @Optional() ngControl: NgControl,\n private adapter: SkyLookupAdapterService,\n private modalService: SkyModalService,\n private resourcesService: SkyLibResourcesService,\n @Optional() public inputBoxHostSvc?: SkyInputBoxHostService,\n @Optional() public themeSvc?: SkyThemeService\n ) {\n super();\n ngControl.valueAccessor = this;\n }\n\n public ngOnInit(): void {\n if (this.inputBoxHostSvc) {\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\n this.sendAutocompleteMessage(\n SkyAutocompleteMessageType.RepositionDropdown\n );\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 /* tslint:disable-next-line:switch-default */\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 writeValue(value: any[]): void {\n this.value = value ? value : [];\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 this.autocompleteInputDirective.value = undefined;\n this.autocompleteInputDirective.inputTextValue = undefined;\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, value: string): 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 '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 this.openPicker(\n isValueInTextBox ? '' : this.autocompleteInputDirective.inputTextValue\n );\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 private 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 let contextProviderType:\n | typeof SkyLookupShowMoreNativePickerContext\n | typeof SkyLookupShowMoreNativePickerAsyncContext;\n\n let contextProviderValue:\n | SkyLookupShowMoreNativePickerContext\n | SkyLookupShowMoreNativePickerAsyncContext;\n\n let modalComponentType:\n | typeof SkyLookupShowMoreModalComponent\n | typeof SkyLookupShowMoreAsyncModalComponent;\n\n if (this.searchAsync.observers.length > 0) {\n contextProviderType = SkyLookupShowMoreNativePickerAsyncContext;\n modalComponentType = SkyLookupShowMoreAsyncModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerAsyncContext();\n contextProviderValue.idProperty = this.idProperty;\n contextProviderValue.searchAsync = (args) => {\n this.searchAsync.emit(args);\n return args.result;\n };\n } else {\n contextProviderType = SkyLookupShowMoreNativePickerContext;\n modalComponentType = SkyLookupShowMoreModalComponent;\n\n contextProviderValue = new SkyLookupShowMoreNativePickerContext();\n contextProviderValue.items = this.data;\n contextProviderValue.search = this.search;\n }\n\n contextProviderValue.descriptorProperty = this.descriptorProperty;\n contextProviderValue.initialSearch = initialSearch;\n contextProviderValue.initialValue = initialValue;\n contextProviderValue.selectMode = this.selectMode;\n contextProviderValue.showAddButton = this.showAddButton;\n contextProviderValue.userConfig = modalConfig;\n\n return this.modalService.open(modalComponentType, {\n providers: [\n {\n provide: contextProviderType,\n useValue: contextProviderValue,\n },\n ],\n wrapperClass: this.wrapperClass,\n });\n }\n\n public openPicker(initialSearch: string): void {\n if (this.showMoreConfig?.customPicker) {\n this.showMoreConfig.customPicker.open({\n items: this.data,\n initialSearch: initialSearch,\n initialValue: this.value,\n });\n } else {\n const initialValue = this.value;\n\n this.openNativePicker = this.createNativePickerInstance(initialSearch);\n\n this.openNativePicker.componentInstance.addClick.subscribe(() => {\n this.addButtonClicked();\n });\n\n this.openNativePicker.closed.subscribe((closeArgs) => {\n this.openNativePicker = undefined;\n if (closeArgs.reason === 'save') {\n let selectedItems: any[] = [];\n\n if (this.searchAsync.observers.length > 0) {\n selectedItems = closeArgs.data.map((item) => item.itemData);\n } else {\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 }\n\n this.writeValue(selectedItems);\n } else {\n this.writeValue(initialValue);\n }\n\n this.focusInput();\n this.changeDetector.markForCheck();\n });\n }\n }\n\n public onSearchAsync(args: SkyAutocompleteSearchAsyncArgs): void {\n this.searchAsync.emit(args);\n }\n\n private 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 // 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) =>\n existingItem[this.idProperty] === item[this.idProperty]\n )\n ) {\n selectedItems.push(item);\n }\n\n this.clearSearchText();\n }\n\n this.writeValue(selectedItems);\n }\n\n private addEventListeners(): void {\n this.idle = new Subject();\n this.focusInputOnHostClick();\n }\n\n private removeEventListeners(): void {\n this.idle.next();\n this.idle.complete();\n }\n\n private 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(documentObj, 'mousedown')\n .pipe(takeUntil(this.idle))\n .subscribe((event: MouseEvent) => {\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(documentObj, 'focusin')\n .pipe(takeUntil(this.idle))\n .subscribe((event: KeyboardEvent) => {\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 private focusInput(): void {\n this.adapter.focusInput(this.lookupWrapperRef);\n }\n\n private onAddButtonComplete(args: SkyLookupAddCallbackArgs) {\n if (args.data) {\n this.data = args.data;\n }\n\n if (this.data.indexOf(args.item) >= 0) {\n if (this.openNativePicker) {\n (\n this.openNativePicker\n .componentInstance as SkyLookupShowMoreModalComponent\n ).onItemSelect(true, { value: args.item, selected: false });\n } else {\n let newValue = this.value;\n if (this.selectMode === 'multiple') {\n newValue = this.value.concat(args.item);\n } else {\n newValue = [args.item];\n }\n this.writeValue(newValue);\n }\n }\n }\n\n private parseTokens(data: any[]): SkyToken[] {\n return data.map((item: any) => {\n return {\n value: item,\n };\n });\n }\n\n private sendAutocompleteMessage(type: SkyAutocompleteMessageType): void {\n this.autocompleteController.next({ type });\n }\n\n private sendTokensMessage(type: SkyTokensMessageType): void {\n this.tokensController.next({ type });\n }\n\n private 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","<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 [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"search\"\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 (tokenSelected)=\"enableShowMore ? openPicker(undefined) : 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, $event.target.value)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\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 </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"showMoreButtonTemplateRef\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container\n *ngTemplateOutlet=\"searchIconTemplateRef\"\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\n *skyThemeIf=\"'default'\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n </div>\n</ng-template>\n"]}
@@ -116,7 +116,8 @@ class SkyAutocompleteInputDirective {
116
116
  this._disabled = false;
117
117
  this._focus = new Subject();
118
118
  this._textChanges = new Subject();
119
- /* istanbul ignore next */
119
+ // istanbul ignore next
120
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
120
121
  this.onValidatorChange = () => { };
121
122
  }
122
123
  /**
@@ -280,9 +281,9 @@ class SkyAutocompleteInputDirective {
280
281
  }
281
282
  }
282
283
  // Angular automatically constructs these methods.
283
- /* istanbul ignore next */
284
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
284
285
  onChange(value) { }
285
- /* istanbul ignore next */
286
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
286
287
  onTouched() { }
287
288
  setAttributes(element) {
288
289
  this.renderer.setAttribute(element, 'autocomplete', this.autocompleteAttribute);
@@ -1247,9 +1248,9 @@ class SkyCountryFieldComponent {
1247
1248
  this._disabled = false;
1248
1249
  this._includePhoneInfo = false;
1249
1250
  // Angular automatically constructs these methods.
1250
- /* istanbul ignore next */
1251
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1251
1252
  this.onChange = (value) => { };
1252
- /* istanbul ignore next */
1253
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1253
1254
  this.onTouched = () => { };
1254
1255
  this.setupCountries();
1255
1256
  this.countrySearchFormControl = new FormControl();
@@ -2531,9 +2532,9 @@ class SkyLookupComponent extends SkyLookupAutocompleteAdapter {
2531
2532
  this.idle = new Subject();
2532
2533
  this.markForTokenFocusOnKeyUp = false;
2533
2534
  // Angular automatically constructs these methods.
2534
- /* istanbul ignore next */
2535
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
2535
2536
  this.onChange = (value) => { };
2536
- /* istanbul ignore next */
2537
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
2537
2538
  this.onTouched = () => { };
2538
2539
  ngControl.valueAccessor = this;
2539
2540
  }
@@ -2792,8 +2793,9 @@ class SkyLookupComponent extends SkyLookupAutocompleteAdapter {
2792
2793
  let isValueInTextBox = false;
2793
2794
  if (this.selectMode === 'single') {
2794
2795
  isValueInTextBox =
2795
- this.autocompleteInputDirective.inputTextValue ===
2796
- this.autocompleteInputDirective.value[this.descriptorProperty];
2796
+ this.autocompleteInputDirective.value &&
2797
+ this.autocompleteInputDirective.inputTextValue ===
2798
+ this.autocompleteInputDirective.value[this.descriptorProperty];
2797
2799
  }
2798
2800
  this.openPicker(isValueInTextBox ? '' : this.autocompleteInputDirective.inputTextValue);
2799
2801
  this.autocompleteInputDirective.restoreInputTextValueToPreviousState();