UNPKG

94.3 kBSource Map (JSON)View Raw
1{"version":3,"file":"ng2-completer.js","sources":["../../../src/globals.ts","../../../src/services/completer-base-data.ts","../../../src/services/local-data.ts","../../../src/services/remote-data.ts","../../../src/services/local-data-factory.ts","../../../src/services/remote-data-factory.ts","../../../src/services/completer-service.ts","../../../src/directives/ctr-completer.ts","../../../src/directives/ctr-dropdown.ts","../../../src/directives/ctr-input.ts","../../../src/directives/ctr-list.ts","../../../src/directives/ctr-row.ts","../../../src/components/completer-list-item-cmp.ts","../../../src/components/completer-cmp.ts","../../../src/modules/ng2-completer.module.ts"],"sourcesContent":["\nexport const MAX_CHARS = 524288; // the default max length per the html maxlength attribute\nexport const MIN_SEARCH_LENGTH = 3;\nexport const PAUSE = 10;\nexport const TEXT_SEARCHING = \"Searching...\";\nexport const TEXT_NO_RESULTS = \"No results found\";\nexport const CLEAR_TIMEOUT = 50;\n\nexport function isNil(value: any) {\n return typeof value === \"undefined\" || value === null;\n}\n","import { Subject } from \"rxjs\";\n\nimport { CompleterItem } from \"../components/completer-item\";\nimport { CompleterData } from \"./completer-data\";\nimport { isNil } from \"../globals\";\n\nexport abstract class CompleterBaseData extends Subject<CompleterItem[] | null> implements CompleterData {\n\n protected _searchFields: string | null = null;\n protected _titleField: string | null = null;\n protected _descriptionField: string | undefined = undefined;\n protected _imageField: string | undefined = undefined;\n\n constructor() {\n super();\n }\n\n public abstract search(term: string): void;\n\n public cancel() {\n return;\n }\n\n public searchFields(searchFields: string | null) {\n this._searchFields = searchFields;\n return this;\n }\n\n public titleField(titleField: string | null) {\n this._titleField = titleField;\n return this;\n }\n\n public descriptionField(descriptionField: string) {\n this._descriptionField = descriptionField;\n return this;\n }\n\n public imageField(imageField: string) {\n this._imageField = imageField;\n return this;\n }\n\n public convertToItem(data: any) {\n let image: string | null = null;\n let formattedText: string;\n let formattedDesc: string | null = null;\n\n if (this._titleField) {\n formattedText = this.extractTitle(data);\n } else {\n formattedText = data;\n }\n\n if (typeof formattedText !== \"string\") {\n formattedText = JSON.stringify(formattedText);\n }\n\n if (this._descriptionField) {\n formattedDesc = this.extractValue(data, this._descriptionField);\n }\n\n if (this._imageField) {\n image = this.extractValue(data, this._imageField);\n }\n\n if (isNil(formattedText)) {\n return null;\n }\n\n return {\n description: formattedDesc,\n image,\n originalObject: data,\n title: formattedText\n } as CompleterItem;\n\n }\n\n protected extractMatches(data: any[], term: string) {\n let matches: any[] = [];\n const searchFields = this._searchFields ? this._searchFields.split(\",\") : null;\n if (this._searchFields !== null && this._searchFields !== undefined && term !== \"\") {\n matches = data.filter((item) => {\n const values: any[] = searchFields ? this.extractBySearchFields(searchFields, item) : [item];\n return values.some((value) => value\n .toString()\n .toLowerCase()\n .indexOf(term.toString().toLowerCase()) >= 0\n );\n });\n } else {\n matches = data;\n }\n\n return matches;\n }\n\n protected extractTitle(item: any) {\n // split title fields and run extractValue for each and join with ' '\n if (!this._titleField) {\n return \"\";\n }\n\n return this._titleField.split(\",\")\n .map((field) => {\n return this.extractValue(item, field);\n })\n .reduce((acc, titlePart) => acc ? `${acc} ${titlePart}` : titlePart);\n }\n\n protected extractValue(obj: any, key: string | null) {\n let keys: string[];\n let result: any;\n if (key) {\n keys = key.split(\".\");\n result = obj;\n for (key of keys) {\n if (result) {\n result = result[key];\n }\n }\n } else {\n result = obj;\n }\n return result;\n }\n\n protected processResults(matches: string[]): CompleterItem[] {\n let i: number;\n const results: CompleterItem[] = [];\n\n if (matches && matches.length > 0) {\n for (i = 0; i < matches.length; i++) {\n const item = this.convertToItem(matches[i]);\n if (item) {\n results.push(item);\n }\n }\n }\n return results;\n }\n\n private extractBySearchFields(searchFields: string[], item: any) {\n return searchFields\n .map((searchField) => this.extractValue(item, searchField)).filter((value) => !!value);\n }\n}\n","import { EventEmitter } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\nimport { CompleterBaseData } from \"./completer-base-data\";\nimport { CompleterItem } from \"../components/completer-item\";\n\nexport class LocalData extends CompleterBaseData {\n\n public dataSourceChange: EventEmitter<void> = new EventEmitter<void>();\n\n protected _data: any[] = [];\n protected savedTerm: string | null = null;\n\n constructor() {\n super();\n }\n\n public data(data: any[] | Observable<any[]>) {\n if (data instanceof Observable) {\n const data$ = data as Observable<any[]>;\n data$\n .pipe(catchError(() => []))\n .subscribe((res) => {\n this._data = res;\n if (this.savedTerm) {\n this.search(this.savedTerm);\n }\n this.dataSourceChange.emit();\n });\n } else {\n this._data = data;\n }\n\n this.dataSourceChange.emit();\n\n return this;\n }\n\n public search(term: string): void {\n if (!this._data) {\n this.savedTerm = term;\n } else {\n this.savedTerm = null;\n const matches: any[] = this.extractMatches(this._data, term);\n this.next(this.processResults(matches));\n }\n }\n\n public convertToItem(data: any): CompleterItem | null {\n return super.convertToItem(data);\n }\n}\n","import { EventEmitter } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { Subscription } from \"rxjs\";\nimport { catchError, map } from \"rxjs/operators\";\n\nimport { CompleterBaseData } from \"./completer-base-data\";\nimport { CompleterItem } from \"../components/completer-item\";\n\nexport class RemoteData extends CompleterBaseData {\n public dataSourceChange: EventEmitter<void> = new EventEmitter<void>();\n\n private _remoteUrl: string | null = null;\n private remoteSearch: Subscription | null = null;\n private _urlFormater: ((term: string) => string) | null = null;\n private _dataField: string | null = null;\n private _requestOptions: any;\n\n constructor(private http: HttpClient) {\n super();\n }\n\n public remoteUrl(remoteUrl: string | null) {\n this._remoteUrl = remoteUrl;\n this.dataSourceChange.emit();\n\n return this;\n }\n\n public urlFormater(urlFormater: (term: string) => string) {\n this._urlFormater = urlFormater;\n }\n\n public dataField(dataField: string) {\n this._dataField = dataField;\n }\n\n public requestOptions(requestOptions: any) {\n this._requestOptions = requestOptions;\n }\n\n public search(term: string): void {\n this.cancel();\n // let params = {};\n let url = \"\";\n if (this._urlFormater) {\n url = this._urlFormater(term);\n } else {\n url = this._remoteUrl + encodeURIComponent(term);\n }\n\n this.remoteSearch = this.http\n .get(url, Object.assign({}, this._requestOptions))\n .pipe(\n map((data: any) => {\n const matches = this.extractValue(data, this._dataField);\n return this.extractMatches(matches, term);\n }),\n catchError(() => [])\n )\n .subscribe((matches: any[]) => {\n const results = this.processResults(matches);\n this.next(results);\n });\n }\n\n public cancel() {\n if (this.remoteSearch) {\n this.remoteSearch.unsubscribe();\n }\n }\n\n public convertToItem(data: any): CompleterItem | null {\n return super.convertToItem(data);\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { LocalData } from \"./local-data\";\n\n@Injectable()\nexport class LocalDataFactory {\n public create() {\n return new LocalData();\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { HttpClient } from \"@angular/common/http\";\n\nimport { RemoteData } from \"./remote-data\";\n\n@Injectable()\nexport class RemoteDataFactory {\n constructor(private http: HttpClient) { }\n\n public create() {\n return new RemoteData(this.http);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nimport { LocalData } from \"./local-data\";\nimport { RemoteData } from \"./remote-data\";\nimport { LocalDataFactory } from \"./local-data-factory\";\nimport { RemoteDataFactory } from \"./remote-data-factory\";\n\n@Injectable()\nexport class CompleterService {\n constructor(\n private localDataFactory: LocalDataFactory, // Using any instead of () => LocalData because of AoT errors\n private remoteDataFactory: RemoteDataFactory // Using any instead of () => LocalData because of AoT errors\n ) { }\n\n public local(\n data: any[] | Observable<any>,\n searchFields: string | null = \"\",\n titleField: string | null = \"\"\n ): LocalData {\n\n const localData = this.localDataFactory.create();\n return localData\n .data(data)\n .searchFields(searchFields)\n .titleField(titleField);\n }\n\n public remote(url: string | null, searchFields: string | null = \"\", titleField: string | null = \"\"): RemoteData {\n\n const remoteData = this.remoteDataFactory.create();\n return remoteData\n .remoteUrl(url)\n .searchFields(searchFields)\n .titleField(titleField);\n }\n}\n","import { Directive, EventEmitter, Output } from \"@angular/core\";\n\nimport { CompleterItem } from \"../components/completer-item\";\n\nexport interface CompleterList {\n search(term: string): void;\n open(): void;\n isOpen(open: boolean): void;\n clear(): void;\n}\n\nexport interface CompleterDropdown {\n clear(): void;\n selectCurrent(): void;\n nextRow(): void;\n prevRow(): void;\n highlightRow(index: number | null): void;\n}\n\n@Directive({\n selector: \"[ctrCompleter]\",\n})\nexport class CtrCompleter {\n @Output() public selected = new EventEmitter<CompleterItem | null>();\n @Output() public highlighted = new EventEmitter<CompleterItem | null>();\n @Output() public opened = new EventEmitter<boolean>();\n @Output() public dataSourceChange = new EventEmitter<void>();\n\n private list: CompleterList | null = null;\n private dropdown: CompleterDropdown | null = null;\n private _hasHighlighted = false;\n private _hasSelected = false;\n private _cancelBlur = false;\n private _isOpen = false;\n private _autoHighlightIndex: number | null = null;\n\n public registerList(list: CompleterList) {\n this.list = list;\n }\n\n public registerDropdown(dropdown: CompleterDropdown | null) {\n this.dropdown = dropdown;\n }\n\n public onHighlighted(item: CompleterItem | null) {\n this.highlighted.emit(item);\n this._hasHighlighted = !!item;\n }\n\n public onSelected(item: CompleterItem | null, clearList = true) {\n this.selected.emit(item);\n if (item) {\n this._hasSelected = true;\n }\n if (clearList) {\n this.clear();\n }\n }\n\n public onDataSourceChange() {\n if (this.hasSelected) {\n this.selected.emit(null);\n this._hasSelected = false;\n }\n this.dataSourceChange.emit();\n }\n\n public search(term: string) {\n if (this._hasSelected) {\n this.selected.emit(null);\n this._hasSelected = false;\n }\n if (this.list) {\n this.list.search(term);\n }\n }\n\n public clear() {\n this._hasHighlighted = false;\n this.isOpen = false;\n\n if (this.dropdown) {\n this.dropdown.clear();\n }\n\n if (this.list) {\n this.list.clear();\n }\n }\n\n public selectCurrent() {\n if (this.dropdown) {\n this.dropdown.selectCurrent();\n }\n }\n\n public nextRow() {\n if (this.dropdown) {\n this.dropdown.nextRow();\n }\n }\n\n public prevRow() {\n if (this.dropdown) {\n this.dropdown.prevRow();\n }\n }\n\n public hasHighlighted() {\n return this._hasHighlighted;\n }\n\n public cancelBlur(cancel: boolean) {\n this._cancelBlur = cancel;\n }\n\n public isCancelBlur() {\n return this._cancelBlur;\n }\n\n public open() {\n if (!this._isOpen && !!this.list) {\n this.isOpen = true;\n this.list.open();\n }\n }\n\n public get isOpen() {\n return this._isOpen;\n }\n\n public set isOpen(open: boolean) {\n this._isOpen = open;\n this.opened.emit(this._isOpen);\n if (this.list) {\n this.list.isOpen(open);\n }\n }\n\n public get autoHighlightIndex() {\n return this._autoHighlightIndex;\n }\n\n public set autoHighlightIndex(index: number | null) {\n this._autoHighlightIndex = index;\n if (this.dropdown) {\n this.dropdown.highlightRow(this._autoHighlightIndex);\n }\n }\n\n public get hasSelected() {\n return this._hasSelected;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, Host, HostListener, OnDestroy, NgZone } from \"@angular/core\";\n\nimport { CompleterItem } from \"../components/completer-item\";\nimport { CtrCompleter, CompleterDropdown } from \"./ctr-completer\";\nimport { isNil } from \"../globals\";\n\nexport interface CtrRowElement {\n setHighlighted(selected: boolean): void;\n getNativeElement(): any;\n getDataItem(): CompleterItem | null;\n}\n\nexport class CtrRowItem {\n constructor(public row: CtrRowElement, public index: number) { }\n}\n\n@Directive({\n selector: \"[ctrDropdown]\",\n})\nexport class CtrDropdown implements CompleterDropdown, OnDestroy, AfterViewInit {\n\n private rows: CtrRowItem[] = [];\n private currHighlighted: CtrRowItem | undefined;\n private isScrollOn: boolean = false;\n private _rowMouseDown: boolean = false;\n\n constructor( @Host() private completer: CtrCompleter, private el: ElementRef, private zone: NgZone) {\n this.completer.registerDropdown(this);\n }\n\n public ngOnDestroy() {\n this.completer.registerDropdown(null);\n }\n\n public ngAfterViewInit() {\n const css = getComputedStyle(this.el.nativeElement);\n const autoHighlightIndex = this.completer.autoHighlightIndex;\n\n this.isScrollOn = !!css.maxHeight && css.overflowY === \"auto\";\n if (autoHighlightIndex) {\n this.zone.run(\n () => {\n this.highlightRow(autoHighlightIndex);\n }\n );\n }\n }\n\n @HostListener(\"mousedown\", [\"$event\"]) public onMouseDown(event: any) {\n // Support for canceling blur on IE (issue #158)\n if (!this._rowMouseDown) {\n this.completer.cancelBlur(true);\n this.zone.run(\n () => {\n this.completer.cancelBlur(false);\n }\n );\n } else {\n this._rowMouseDown = false;\n }\n }\n\n public registerRow(row: CtrRowItem) {\n const arrIndex = this.rows.findIndex(_row => _row.index === row.index);\n if (arrIndex >= 0) {\n this.rows[arrIndex] = row;\n } else {\n this.rows.push(row);\n }\n }\n\n public unregisterRow(rowIndex: number) {\n const arrIndex = this.rows.findIndex(_row => _row.index === rowIndex);\n this.rows.splice(arrIndex, 1);\n if (this.currHighlighted && rowIndex === this.currHighlighted.index) {\n this.highlightRow(null);\n }\n }\n\n public highlightRow(index: number | null) {\n const highlighted = this.rows.find(row => row.index === index);\n\n if (isNil(index) || index! < 0) {\n if (this.currHighlighted) {\n this.currHighlighted.row.setHighlighted(false);\n }\n this.currHighlighted = undefined;\n this.completer.onHighlighted(null);\n return;\n }\n\n if (!highlighted) {\n return;\n }\n\n if (this.currHighlighted) {\n this.currHighlighted.row.setHighlighted(false);\n }\n\n this.currHighlighted = highlighted;\n this.currHighlighted.row.setHighlighted(true);\n this.completer.onHighlighted(this.currHighlighted.row.getDataItem());\n\n if (this.isScrollOn && this.currHighlighted) {\n const rowTop = this.dropdownRowTop();\n\n if (!rowTop) {\n return;\n }\n\n if (rowTop < 0) {\n this.dropdownScrollTopTo(rowTop - 1);\n } else {\n const row = this.currHighlighted.row.getNativeElement();\n if (this.dropdownHeight() < row.getBoundingClientRect().bottom) {\n this.dropdownScrollTopTo(this.dropdownRowOffsetHeight(row));\n if (this.el.nativeElement.getBoundingClientRect().bottom - this.dropdownRowOffsetHeight(row) < row.getBoundingClientRect().top) {\n this.dropdownScrollTopTo(row.getBoundingClientRect().top - (this.el.nativeElement.getBoundingClientRect().top + parseInt(getComputedStyle(this.el.nativeElement).paddingTop as string, 10)));\n }\n }\n }\n }\n }\n\n public clear() {\n this.rows = [];\n }\n\n public onSelected(item: CompleterItem | null) {\n this.completer.onSelected(item);\n }\n\n public rowMouseDown() {\n this._rowMouseDown = true;\n }\n\n public selectCurrent() {\n if (!!this.currHighlighted && !!this.currHighlighted.row) {\n this.onSelected(this.currHighlighted.row.getDataItem());\n } else if (this.rows.length > 0) {\n this.onSelected(this.rows[0].row.getDataItem());\n }\n\n }\n\n public nextRow() {\n let nextRowIndex = 0;\n\n if (this.currHighlighted) {\n nextRowIndex = this.currHighlighted.index + 1;\n }\n\n this.highlightRow(nextRowIndex);\n }\n\n public prevRow() {\n let nextRowIndex = -1;\n\n if (this.currHighlighted) {\n nextRowIndex = this.currHighlighted.index - 1;\n }\n\n this.highlightRow(nextRowIndex);\n }\n\n private dropdownScrollTopTo(offset: any) {\n this.el.nativeElement.scrollTop = this.el.nativeElement.scrollTop + offset;\n }\n\n private dropdownRowTop() {\n if (!this.currHighlighted) {\n return;\n }\n\n return this.currHighlighted.row.getNativeElement().getBoundingClientRect().top -\n (this.el.nativeElement.getBoundingClientRect().top +\n parseInt(getComputedStyle(this.el.nativeElement).paddingTop as string, 10));\n }\n\n private dropdownHeight() {\n return this.el.nativeElement.getBoundingClientRect().top +\n parseInt(getComputedStyle(this.el.nativeElement).maxHeight as string, 10);\n }\n\n private dropdownRowOffsetHeight(row: any) {\n const css = getComputedStyle(row.parentElement);\n return row.parentElement.offsetHeight +\n parseInt(css.marginTop as string, 10) + parseInt(css.marginBottom as string, 10);\n }\n}\n","import { Directive, ElementRef, EventEmitter, Host, HostListener, Input, Output } from \"@angular/core\";\nimport { NgModel } from \"@angular/forms\";\nimport { Subscription, timer } from \"rxjs\";\nimport { take } from \"rxjs/operators\";\n\nimport { CompleterItem } from \"../components/completer-item\";\nimport { CtrCompleter } from \"./ctr-completer\";\nimport { isNil } from \"../globals\";\n\n\n// keyboard events\nconst KEY_DW = 40;\nconst KEY_RT = 39;\nconst KEY_UP = 38;\nconst KEY_LF = 37;\nconst KEY_ES = 27;\nconst KEY_EN = 13;\nconst KEY_TAB = 9;\nconst KEY_BK = 8;\nconst KEY_SH = 16;\nconst KEY_CL = 20;\nconst KEY_F1 = 112;\nconst KEY_F12 = 123;\n\n@Directive({\n selector: \"[ctrInput]\",\n})\nexport class CtrInput {\n @Input(\"clearSelected\") public clearSelected = false;\n @Input(\"clearUnselected\") public clearUnselected = false;\n @Input(\"overrideSuggested\") public overrideSuggested = false;\n @Input(\"fillHighlighted\") public fillHighlighted = true;\n @Input(\"openOnFocus\") public openOnFocus = false;\n @Input(\"openOnClick\") public openOnClick = false;\n @Input(\"selectOnClick\") public selectOnClick = false;\n @Input(\"selectOnFocus\") public selectOnFocus = false;\n\n @Output() public ngModelChange: EventEmitter<any> = new EventEmitter();\n\n private _searchStr = \"\";\n private _displayStr = \"\";\n private blurTimer: Subscription | null = null;\n\n constructor( @Host() private completer: CtrCompleter, private ngModel: NgModel, private el: ElementRef) {\n this.completer.selected.subscribe((item: CompleterItem) => {\n if (!item) {\n return;\n }\n if (this.clearSelected) {\n this.searchStr = \"\";\n } else {\n this.searchStr = item.title;\n }\n this.ngModelChange.emit(this.searchStr);\n });\n\n this.completer.highlighted.subscribe((item: CompleterItem) => {\n if (this.fillHighlighted) {\n if (item) {\n this._displayStr = item.title;\n this.ngModelChange.emit(item.title);\n } else {\n this._displayStr = this.searchStr;\n this.ngModelChange.emit(this.searchStr);\n }\n }\n });\n\n this.completer.dataSourceChange.subscribe(() => {\n this.completer.search(this.searchStr);\n });\n\n if (this.ngModel.valueChanges) {\n this.ngModel.valueChanges.subscribe((value: any) => {\n if (!isNil(value) && this._displayStr !== value) {\n if (this.searchStr !== value) {\n this.completer.search(value);\n }\n this.searchStr = value;\n }\n });\n }\n }\n\n @HostListener(\"keyup\", [\"$event\"])\n public keyupHandler(event: any) {\n if (event.keyCode === KEY_LF || event.keyCode === KEY_RT || event.keyCode === KEY_TAB) {\n // do nothing\n return;\n }\n\n if (event.keyCode === KEY_UP || event.keyCode === KEY_EN) {\n event.preventDefault();\n } else if (event.keyCode === KEY_DW) {\n event.preventDefault();\n this.completer.search(this.searchStr);\n } else if (event.keyCode === KEY_ES) {\n if (this.completer.isOpen) {\n this.restoreSearchValue();\n this.completer.clear();\n event.stopPropagation();\n event.preventDefault();\n }\n }\n }\n\n @HostListener(\"paste\", [\"$event\"])\n public pasteHandler(event: any) {\n this.completer.open();\n }\n\n @HostListener(\"keydown\", [\"$event\"])\n public keydownHandler(event: any) {\n const keyCode = event.keyCode || event.which;\n if (keyCode === KEY_EN) {\n if (this.completer.hasHighlighted()) {\n event.preventDefault();\n }\n this.handleSelection();\n } else if (keyCode === KEY_DW) {\n event.preventDefault();\n this.completer.open();\n this.completer.nextRow();\n } else if (keyCode === KEY_UP) {\n event.preventDefault();\n this.completer.prevRow();\n } else if (keyCode === KEY_TAB) {\n this.handleSelection();\n } else if (keyCode === KEY_BK) {\n this.completer.open();\n } else if (keyCode === KEY_ES) {\n // This is very specific to IE10/11 #272\n // without this, IE clears the input text\n event.preventDefault();\n if (this.completer.isOpen) {\n event.stopPropagation();\n }\n } else {\n if (keyCode !== 0 && keyCode !== KEY_SH && keyCode !== KEY_CL &&\n (keyCode <= KEY_F1 || keyCode >= KEY_F12) &&\n !event.ctrlKey && !event.metaKey && !event.altKey\n ) {\n this.completer.open();\n }\n }\n }\n\n @HostListener(\"blur\", [\"$event\"])\n public onBlur(event: any) {\n // Check if we need to cancel Blur for IE\n if (this.completer.isCancelBlur()) {\n setTimeout(\n () => {\n // get the focus back\n this.el.nativeElement.focus();\n },\n 0\n );\n return;\n }\n\n if (this.completer.isOpen) {\n this.blurTimer = timer(200).pipe(take(1)).subscribe(() => this.doBlur());\n }\n }\n\n @HostListener(\"focus\", [])\n public onfocus() {\n if (this.blurTimer) {\n this.blurTimer.unsubscribe();\n this.blurTimer = null;\n }\n\n if (this.selectOnFocus) {\n this.el.nativeElement.select();\n }\n\n if (this.openOnFocus) {\n this.completer.open();\n }\n }\n\n @HostListener(\"click\", [\"$event\"])\n public onClick(event: any) {\n if (this.selectOnClick) {\n this.el.nativeElement.select();\n }\n\n if (this.openOnClick) {\n if (this.completer.isOpen) {\n this.completer.clear();\n } else {\n this.completer.open();\n }\n }\n }\n\n public get searchStr() {\n return this._searchStr;\n }\n\n public set searchStr(term: string) {\n this._searchStr = term;\n this._displayStr = term;\n }\n\n private handleSelection() {\n if (this.completer.hasHighlighted()) {\n this._searchStr = \"\";\n this.completer.selectCurrent();\n } else if (this.overrideSuggested) {\n this.completer.onSelected({ title: this.searchStr, originalObject: null });\n } else {\n if (this.clearUnselected && !this.completer.hasSelected) {\n this.searchStr = \"\";\n this.ngModelChange.emit(this.searchStr);\n }\n this.completer.clear();\n }\n }\n\n private restoreSearchValue() {\n if (this.fillHighlighted) {\n if (this._displayStr !== this.searchStr) {\n this._displayStr = this.searchStr;\n this.ngModelChange.emit(this.searchStr);\n }\n }\n }\n\n private doBlur() {\n if (this.blurTimer) {\n this.blurTimer.unsubscribe();\n this.blurTimer = null;\n }\n\n if (this.overrideSuggested) {\n this.completer.onSelected({ title: this.searchStr, originalObject: null });\n } else {\n if (this.clearUnselected && !this.completer.hasSelected) {\n this.searchStr = \"\";\n this.ngModelChange.emit(this.searchStr);\n } else {\n this.restoreSearchValue();\n }\n }\n\n this.completer.clear();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n EmbeddedViewRef,\n Host,\n Input,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n NgZone,\n} from \"@angular/core\";\nimport { Subscription, timer } from \"rxjs\";\nimport { take } from \"rxjs/operators\";\nimport { CompleterItem } from \"../components/completer-item\";\nimport { CLEAR_TIMEOUT, isNil, MIN_SEARCH_LENGTH, PAUSE } from \"../globals\";\nimport { CompleterData } from \"../services/completer-data\";\nimport { CompleterList, CtrCompleter } from \"./ctr-completer\";\n\nexport class CtrListContext {\n constructor(\n public results: CompleterItem[] | null,\n public searching: boolean,\n public searchInitialized: boolean,\n public isOpen: boolean\n ) {}\n}\n\n@Directive({\n selector: \"[ctrList]\",\n})\nexport class CtrList implements OnInit, CompleterList {\n @Input() public ctrListMinSearchLength = MIN_SEARCH_LENGTH;\n @Input() public ctrListPause = PAUSE;\n @Input() public ctrListAutoMatch = false;\n @Input() public ctrListAutoHighlight = false;\n @Input() public ctrListDisplaySearching = true;\n\n private _dataService: CompleterData | null = null;\n // private results: CompleterItem[] = [];\n private term: string | null = null;\n // private searching = false;\n private searchTimer: Subscription | null = null;\n private clearTimer: Subscription | null = null;\n private ctx = new CtrListContext([], false, false, false);\n private _initialValue: any = null;\n private viewRef: EmbeddedViewRef<CtrListContext> | null = null;\n\n constructor(\n @Host() private completer: CtrCompleter,\n private templateRef: TemplateRef<CtrListContext>,\n private viewContainer: ViewContainerRef,\n private cd: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n\n public ngOnInit() {\n this.completer.registerList(this);\n this.viewRef = this.viewContainer.createEmbeddedView(\n this.templateRef,\n new CtrListContext([], false, false, false)\n );\n }\n\n @Input(\"ctrList\")\n public set dataService(newService: CompleterData) {\n this._dataService = newService;\n this.dataServiceSubscribe();\n }\n\n @Input(\"ctrListInitialValue\")\n public set initialValue(value: any) {\n if (\n this._dataService &&\n typeof this._dataService.convertToItem === \"function\"\n ) {\n this.zone.run(() => {\n const initialItem =\n this._dataService && this._dataService.convertToItem!(value);\n if (initialItem) {\n this.completer.onSelected(initialItem, false);\n }\n });\n } else if (!this._dataService) {\n this._initialValue = value;\n }\n }\n\n public search(term: string) {\n if (\n !isNil(term) &&\n term.length >= this.ctrListMinSearchLength &&\n this.term !== term\n ) {\n if (this.searchTimer) {\n this.searchTimer.unsubscribe();\n this.searchTimer = null;\n }\n if (!this.ctx.searching) {\n if (this.ctrListDisplaySearching) {\n this.ctx.results = [];\n }\n this.ctx.searching = true;\n this.ctx.searchInitialized = true;\n this.refreshTemplate();\n }\n if (this.clearTimer) {\n this.clearTimer.unsubscribe();\n }\n this.searchTimer = timer(this.ctrListPause)\n .pipe(take(1))\n .subscribe(() => {\n this.searchTimerComplete(term);\n });\n } else if (!isNil(term) && term.length < this.ctrListMinSearchLength) {\n this.clear();\n this.term = \"\";\n }\n }\n\n public clear() {\n if (this.searchTimer) {\n this.searchTimer.unsubscribe();\n }\n this.clearTimer = timer(CLEAR_TIMEOUT)\n .pipe(take(1))\n .subscribe(() => {\n this._clear();\n });\n }\n\n public open() {\n if (!this.ctx.searchInitialized) {\n this.search(\"\");\n }\n this.refreshTemplate();\n }\n\n public isOpen(open: boolean) {\n this.ctx.isOpen = open;\n }\n\n private _clear() {\n if (this.searchTimer) {\n this.searchTimer.unsubscribe();\n this.searchTimer = null;\n }\n if (this.dataService) {\n this.dataService.cancel();\n }\n\n this.viewContainer.clear();\n this.viewRef = null;\n }\n\n private searchTimerComplete(term: string) {\n // Begin the search\n if (isNil(term) || term.length < this.ctrListMinSearchLength) {\n this.ctx.searching = false;\n return;\n }\n this.term = term;\n\n if (this._dataService) {\n this._dataService.search(term);\n }\n }\n\n private refreshTemplate() {\n // create the template if it doesn't exist\n if (!this.viewRef) {\n this.viewRef = this.viewContainer.createEmbeddedView(\n this.templateRef,\n this.ctx\n );\n } else if (!this.viewRef.destroyed) {\n // refresh the template\n this.viewRef!.context.isOpen = this.ctx.isOpen;\n this.viewRef!.context.results = this.ctx.results;\n this.viewRef!.context.searching = this.ctx.searching;\n this.viewRef!.context.searchInitialized = this.ctx.searchInitialized;\n this.viewRef.detectChanges();\n }\n this.cd.markForCheck();\n }\n\n private getBestMatchIndex() {\n if (!this.ctx.results || !this.term) {\n return null;\n }\n\n // First try to find the exact term\n let bestMatch = this.ctx.results.findIndex(\n (item) => item.title.toLowerCase() === this.term!.toLocaleLowerCase()\n );\n // If not try to find the first item that starts with the term\n if (bestMatch < 0) {\n bestMatch = this.ctx.results.findIndex((item) =>\n item.title.toLowerCase().startsWith(this.term!.toLocaleLowerCase())\n );\n }\n // If not try to find the first item that includes the term\n if (bestMatch < 0) {\n bestMatch = this.ctx.results.findIndex((item) =>\n item.title.toLowerCase().includes(this.term!.toLocaleLowerCase())\n );\n }\n\n return bestMatch < 0 ? null : bestMatch;\n }\n\n private dataServiceSubscribe() {\n if (this._dataService) {\n this._dataService.subscribe(\n (results) => {\n this.ctx.searchInitialized = true;\n this.ctx.searching = false;\n this.ctx.results = results;\n\n if (\n this.ctrListAutoMatch &&\n results &&\n results.length === 1 &&\n results[0].title &&\n !isNil(this.term) &&\n results[0].title.toLocaleLowerCase() ===\n this.term!.toLocaleLowerCase()\n ) {\n // Do automatch\n this.completer.onSelected(results[0]);\n return;\n }\n\n this.refreshTemplate();\n\n if (this.ctrListAutoHighlight) {\n this.completer.autoHighlightIndex = this.getBestMatchIndex();\n }\n },\n (error: any) => {\n // tslint:disable-next-line:no-console\n console.error(error);\n // tslint:disable-next-line:no-console\n console.error(\n \"Unexpected error in dataService: errors should be handled by the dataService Observable\"\n );\n return [];\n }\n );\n\n if (this._dataService.dataSourceChange) {\n this._dataService.dataSourceChange.subscribe(() => {\n this.term = null;\n this.ctx.searchInitialized = false;\n this.ctx.searching = false;\n this.ctx.results = [];\n this.refreshTemplate();\n this.completer.onDataSourceChange();\n });\n }\n }\n }\n}\n","import { Directive, ElementRef, Host, HostListener, Input, Renderer2, OnDestroy } from \"@angular/core\";\n\nimport { CompleterItem } from \"../components/completer-item\";\nimport { CtrDropdown, CtrRowElement, CtrRowItem } from \"./ctr-dropdown\";\n\n@Directive({\n selector: \"[ctrRow]\",\n})\nexport class CtrRow implements CtrRowElement, OnDestroy {\n\n private selected = false;\n private _rowIndex: number = 0;\n private _item: CompleterItem | null = null;\n\n constructor(private el: ElementRef, private renderer: Renderer2, @Host() private dropdown: CtrDropdown) { }\n\n public ngOnDestroy() {\n if (this._rowIndex) {\n this.dropdown.unregisterRow(this._rowIndex);\n }\n }\n\n @Input()\n set ctrRow(index: number) {\n this._rowIndex = index;\n this.dropdown.registerRow(new CtrRowItem(this, this._rowIndex));\n }\n\n @Input()\n set dataItem(item: CompleterItem) {\n this._item = item;\n }\n\n @HostListener(\"click\", [\"$event\"]) public onClick(event: any) {\n this.dropdown.onSelected(this._item);\n }\n\n @HostListener(\"mouseenter\", [\"$event\"]) public onMouseEnter(event: any) {\n this.dropdown.highlightRow(this._rowIndex);\n }\n\n @HostListener(\"mousedown\", [\"$event\"]) public onMouseDown(event: any) {\n this.dropdown.rowMouseDown();\n }\n\n public setHighlighted(selected: boolean) {\n this.selected = selected;\n if (this.selected) {\n this.renderer.addClass(this.el.nativeElement, \"completer-selected-row\");\n } else {\n this.renderer.removeClass(this.el.nativeElement, \"completer-selected-row\");\n }\n }\n\n public getNativeElement() {\n return this.el.nativeElement;\n }\n\n public getDataItem() {\n return this._item;\n }\n}\n","\"use strict\";\nimport { Component, Input, OnInit } from \"@angular/core\";\n\nexport interface MatchPart {\n isMatch: boolean;\n text: string;\n}\n\n@Component({\n selector: \"completer-list-item\",\n template: `<span class=\"completer-list-item-holder\" [ngClass]= \"{'completer-title': type === 'title', 'completer-description': type === 'description'}\" >\n <span class=\"completer-list-item\" *ngFor=\"let part of parts\" [ngClass]= \"part.isMatch ? matchClass : null\">{{part.text}}</span>\n </span>`\n})\nexport class CompleterListItemCmp implements OnInit {\n @Input()\n public text: string = \"\";\n @Input()\n public searchStr: string = \"\";\n @Input()\n public matchClass: string = \"\";\n @Input()\n public type: string = \"\";\n\n public parts: MatchPart[] = [];\n public ngOnInit() {\n if (!this.searchStr) {\n this.parts.push({ isMatch: false, text: this.text });\n return;\n }\n const matchStr = this.text.toLowerCase();\n let matchPos = matchStr.indexOf(this.searchStr.toLowerCase());\n let startIndex = 0;\n while (matchPos >= 0) {\n const matchText = this.text.slice(matchPos, matchPos + this.searchStr.length);\n if (matchPos === 0) {\n this.parts.push({ isMatch: true, text: matchText });\n startIndex += this.searchStr.length;\n } else if (matchPos > 0) {\n const matchPart = this.text.slice(startIndex, matchPos);\n this.parts.push({ isMatch: false, text: matchPart });\n this.parts.push({ isMatch: true, text: matchText });\n startIndex += this.searchStr.length + matchPart.length;\n }\n matchPos = matchStr.indexOf(this.searchStr.toLowerCase(), startIndex);\n }\n if (startIndex < this.text.length) {\n this.parts.push({ isMatch: false, text: this.text.slice(startIndex, this.text.length) });\n }\n }\n}","\"use strict\";\nimport { AfterViewChecked, ChangeDetectorRef, Component, Input, Output, EventEmitter, OnInit, ViewChild, forwardRef, AfterViewInit, ElementRef } from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { CtrCompleter } from \"../directives/ctr-completer\";\nimport { CompleterData } from \"../services/completer-data\";\nimport { CompleterService } from \"../services/completer-service\";\nimport { CompleterItem } from \"./completer-item\";\nimport { MAX_CHARS, MIN_SEARCH_LENGTH, PAUSE, TEXT_SEARCHING, TEXT_NO_RESULTS, isNil } from \"../globals\";\n\n\nconst noop = () => {\n return;\n};\n\nconst COMPLETER_CONTROL_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CompleterCmp),\n};\n\n\n@Component({\n selector: \"ng2-completer\",\n template: `\n <div class=\"completer-holder\" ctrCompleter>\n <input #ctrInput [attr.id]=\"inputId.length > 0 ? inputId : null\" type=\"search\"\n class=\"completer-input\" ctrInput [ngClass]=\"inputClass\"\n [(ngModel)]=\"searchStr\" (ngModelChange)=\"onChange($event)\"\n [attr.name]=\"inputName\" [placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxChars\" [tabindex]=\"fieldTabindex\" [disabled]=\"disableInput\"\n [clearSelected]=\"clearSelected\" [clearUnselected]=\"clearUnselected\"\n [overrideSuggested]=\"overrideSuggested\" [openOnFocus]=\"openOnFocus\" [fillHighlighted]=\"fillHighlighted\"\n [openOnClick]=\"openOnClick\" [selectOnClick]=\"selectOnClick\" [selectOnFocus]=\"selectOnFocus\"\n (blur)=\"onBlur()\" (focus)=\"onFocus()\" (keyup)=\"onKeyup($event)\"\n (keydown)=\"onKeydown($event)\" (click)=\"onClick($event)\"\n autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" />\n\n <div class=\"completer-dropdown-holder\"\n *ctrList=\"dataService;\n minSearchLength: minSearchLength;\n pause: pause;\n autoMatch: autoMatch;\n initialValue: initialValue;\n autoHighlight: autoHighlight;\n displaySearching: displaySearching;\n let items = results;\n let searchActive = searching;\n let isInitialized = searchInitialized;\n let isOpen = isOpen;\">\n <div class=\"completer-dropdown\" ctrDropdown\n *ngIf=\"isInitialized && isOpen && (( items?.length > 0|| (displayNoResults && !searchActive)) || (searchActive && displaySearching))\">\n <div *ngIf=\"searchActive && displaySearching\" class=\"completer-searching\">{{ _textSearching }}</div>\n <div *ngIf=\"!searchActive && (!items || items?.length === 0)\"\n class=\"completer-no-results\">{{ _textNoResults }}</div>\n <div class=\"completer-row-wrapper\" *ngFor=\"let item of items; let rowIndex=index\">\n <div class=\"completer-row\" [ctrRow]=\"rowIndex\" [dataItem]=\"item\">\n <div *ngIf=\"item.image || item.image === ''\" class=\"completer-image-holder\">\n <img *ngIf=\"item.image != ''\" src=\"{{item.image}}\" class=\"completer-image\" />\n <div *ngIf=\"item.image === ''\" class=\"completer-image-default\"></div>\n </div>\n <div class=\"completer-item-text\"\n [ngClass]=\"{'completer-item-text-image': item.image || item.image === '' }\">\n <completer-list-item\n class=\"completer-title\" [text]=\"item.title\" [matchClass]=\"matchClass\"\n [searchStr]=\"searchStr\" [type]=\"'title'\"></completer-list-item>\n <completer-list-item *ngIf=\"item.description && item.description != ''\"\n class=\"completer-description\" [text]=\"item.description\"\n [matchClass]=\"matchClass\" [searchStr]=\"searchStr\" [type]=\"'description'\">\n </completer-list-item>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,\n styles: [`\n .completer-dropdown {\n border-color: #ececec;\n border-width: 1px;\n border-style: solid;\n border-radius: 2px;\n width: 250px;\n padding: 6px;\n cursor: pointer;\n z-index: 9999;\n position: absolute;\n margin-top: -6px;\n background-color: #ffffff;\n }\n\n .completer-row {\n padding: 5px;\n color: #000000;\n margin-bottom: 4px;\n clear: both;\n display: inline-block;\n width: 103%;\n }\n\n .completer-selected-row {\n background-color: lightblue;\n color: #ffffff;\n }\n\n .completer-description {\n font-size: 14px;\n }\n\n .completer-image-default {\n width: 16px;\n height: 16px;\n background-image: url(\"demo/res/img/default.png\");\n }\n\n .completer-image-holder {\n float: left;\n width: 10%;\n }\n .completer-item-text-image {\n float: right;\n width: 90%;\n }\n `],\n providers: [COMPLETER_CONTROL_VALUE_ACCESSOR]\n})\nexport class CompleterCmp implements ControlValueAccessor, AfterViewChecked, AfterViewInit {\n @Input() public dataService: CompleterData | undefined;\n @Input() public inputName = \"\";\n @Input() public inputId: string = \"\";\n @Input() public pause = PAUSE;\n @Input() public minSearchLength = MIN_SEARCH_LENGTH;\n @Input() public maxChars = MAX_CHARS;\n @Input() public overrideSuggested = false;\n @Input() public clearSelected = false;\n @Input() public clearUnselected = false;\n @Input() public fillHighlighted = true;\n @Input() public placeholder = \"\";\n @Input() public matchClass: string | undefined;\n @Input() public fieldTabindex: number | undefined;\n @Input() public autoMatch = false;\n @Input() public disableInput = false;\n @Input() public inputClass: string | undefined;\n @Input() public autofocus = false;\n @Input() public openOnFocus = false;\n @Input() public openOnClick = false;\n @Input() public selectOnClick = false;\n @Input() public selectOnFocus = false;\n @Input() public initialValue: any;\n @Input() public autoHighlight = false;\n\n @Output() public selected = new EventEmitter<CompleterItem>();\n @Output() public highlighted = new EventEmitter<CompleterItem>();\n @Output(\"blur\") public blurEvent = new EventEmitter<void>();\n @Output() public click = new EventEmitter<void>();\n @Output(\"focus\") public focusEvent = new EventEmitter<void>();\n @Output() public opened = new EventEmitter<boolean>();\n @Output() public keyup: EventEmitter<any> = new EventEmitter();\n @Output() public keydown: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(CtrCompleter, { static: false }) public completer: CtrCompleter | undefined;\n @ViewChild(\"ctrInput\", { static: false }) public ctrInput: ElementRef | undefined;\n\n public control = new FormControl(\"\");\n public displaySearching = true;\n public displayNoResults = true;\n public _textNoResults = TEXT_NO_RESULTS;\n public _textSearching = TEXT_SEARCHING;\n\n private _onTouchedCallback: () => void = noop;\n private _onChangeCallback: (_: any) => void = noop;\n private _focus: boolean = false;\n private _open: boolean = false;\n private _searchStr = \"\";\n\n constructor(private completerService: CompleterService, private cdr: ChangeDetectorRef) { }\n\n public get value(): any { return this.searchStr; };\n\n public set value(v: any) {\n if (v !== this.searchStr) {\n this.searchStr = v;\n }\n // Propagate the change in any case\n this._onChangeCallback(v);\n }\n\n public get searchStr() {\n return this._searchStr;\n }\n\n public set searchStr(value: string) {\n if (typeof value === \"string\" || isNil(value)) {\n this._searchStr = value;\n } else {\n this._searchStr = JSON.stringify(value);\n }\n }\n\n public ngAfterViewInit() {\n if (this.autofocus) {\n this._focus = true;\n }\n \n if (!this.completer) {\n return;\n }\n\n this.completer.selected.subscribe((item: CompleterItem) => {\n this.selected.emit(item);\n });\n this.completer.highlighted.subscribe((item: CompleterItem) => {\n this.highlighted.emit(item);\n });\n this.completer.opened.subscribe((isOpen: boolean) => {\n this._open = isOpen;\n this.opened.emit(isOpen);\n });\n }\n\n public ngAfterViewChecked(): void {\n if (this._focus) {\n setTimeout(\n () => {\n if (!!this.ctrInput) {\n this.ctrInput.nativeElement.focus();\n this._focus = false;\n }\n },\n 0\n );\n }\n }\n\n public onTouched() {\n this._onTouchedCallback();\n }\n\n public writeValue(value: any) {\n this.searchStr = value;\n }\n\n public registerOnChange(fn: any) {\n this._onChangeCallback = fn;\n }\n\n public registerOnTouched(fn: any) {\n this._onTouchedCallback = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disableInput = isDisabled;\n }\n\n @Input()\n public set datasource(source: CompleterData | string | any[]) {\n if (source) {\n if (source instanceof Array) {\n this.dataService = this.completerService.local(source);\n } else if (typeof (source) === \"string\") {\n this.dataService = this.completerService.remote(source);\n } else {\n this.dataService = source as CompleterData;\n }\n }\n }\n\n @Input()\n public set textNoResults(text: string) {\n if (this._textNoResults !== text) {\n this._textNoResults = text;\n this.displayNoResults = !!this._textNoResults && this._textNoResults !== \"false\";\n }\n }\n\n @Input()\n public set textSearching(text: string) {\n if (this._textSearching !== text) {\n this._textSearching = text;\n this.displaySearching = !!this._textSearching && this._textSearching !== \"false\";\n }\n }\n\n public onBlur() {\n this.blurEvent.emit();\n this.onTouched();\n this.cdr.detectChanges();\n }\n\n public onFocus() {\n this.focusEvent.emit();\n this.onTouched();\n }\n\n public onClick(event: any) {\n this.click.emit(event);\n this.onTouched();\n }\n\n public onKeyup(event: any) {\n this.keyup.emit(event);\n event.stopPropagation();\n }\n\n public onKeydown(event: any) {\n this.keydown.emit(event);\n event.stopPropagation();\n }\n\n public onChange(value: string) {\n this.value = value;\n }\n\n public open() {\n if (!this.completer) {\n return;\n }\n\n this.completer.open();\n }\n\n public close() {\n if (!this.completer) {\n return;\n }\n\n this.completer.clear();\n }\n\n public focus(): void {\n if (this.ctrInput) {\n this.ctrInput.nativeElement.focus();\n } else {\n this._focus = true;\n }\n }\n\n public blur(): void {\n if (this.ctrInput) {\n this.ctrInput.nativeElement.blur();\n } else {\n this._focus = false;\n }\n }\n\n public isOpen() {\n return this._open;\n }\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { CompleterCmp } from \"../components/completer-cmp\";\nimport { CompleterListItemCmp } from \"../components/completer-list-item-cmp\";\nimport { LocalDataFactory } from \"../services/local-data-factory\";\nimport { RemoteDataFactory } from \"../services/remote-data-factory\";\nimport { CompleterService } from \"../services/completer-service\";\n\nimport { CtrCompleter } from \"../directives/ctr-completer\";\nimport { CtrDropdown } from \"../directives/ctr-dropdown\";\nimport { CtrInput } from \"../directives/ctr-input\";\nimport { CtrList } from \"../directives/ctr-list\";\nimport { CtrRow } from \"../directives/ctr-row\";\n\nconst providers = [\n CompleterService,\n LocalDataFactory,\n RemoteDataFactory\n];\n\n@NgModule({\n declarations: [\n CompleterListItemCmp,\n CtrCompleter,\n CtrDropdown,\n CtrInput,\n CtrList,\n CtrRow,\n CompleterCmp\n ],\n exports: [\n CompleterListItemCmp,\n CtrCompleter,\n CtrDropdown,\n CtrInput,\n CtrList,\n CtrRow,\n CompleterCmp\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n providers\n})\nexport class Ng2CompleterModule {\n\n public static forRoot(): ModuleWithProviders {\n return {\n ngModule: Ng2CompleterModule,\n providers\n };\n }\n\n public static forChild(): ModuleWithProviders {\n return {\n ngModule: Ng2CompleterModule,\n providers\n };\n }\n}\n"],"names":[],"mappings":"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"}
\No newline at end of file