UNPKG

@neocomplexx/ngx-neo-completer

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.5.

56 lines 7.18 kB
import { EventEmitter } from '@angular/core'; import { map, catchError } from 'rxjs/operators'; import { CompleterBaseData } from './completer-base-data'; export class RemoteData extends CompleterBaseData { constructor(http) { super(); this.http = http; this.dataSourceChange = new EventEmitter(); this._urlFormater = null; this._dataField = null; } remoteUrl(remoteUrl) { this._remoteUrl = remoteUrl; this.dataSourceChange.emit(); return this; } urlFormater(urlFormater) { this._urlFormater = urlFormater; } dataField(dataField) { this._dataField = dataField; } requestOptions(requestOptions) { this._requestOptions = requestOptions; } search(term) { this.cancel(); // let params = {}; let url = ''; if (this._urlFormater) { url = this._urlFormater(term); } else { url = this._remoteUrl + encodeURIComponent(term); } this.remoteSearch = this.http .get(url, Object.assign({}, this._requestOptions)) .pipe(map((data) => { const matches = this.extractValue(data, this._dataField); return this.extractMatches(matches, term); }), catchError(() => [])) .subscribe((matches) => { const results = this.processResults(matches); this.next(results); }); } cancel() { if (this.remoteSearch) { this.remoteSearch.unsubscribe(); } } convertToItem(data) { return super.convertToItem(data); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmVvY29tcGxleHgvbmd4LW5lby1jb21wbGV0ZXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvcmVtb3RlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE1BQU0sT0FBTyxVQUFXLFNBQVEsaUJBQWlCO0lBUzdDLFlBQW9CLElBQWdCO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRFEsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVI3QixxQkFBZ0IsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUkvRCxpQkFBWSxHQUFzQyxJQUFJLENBQUM7UUFDdkQsZUFBVSxHQUFrQixJQUFJLENBQUM7SUFLekMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxTQUF3QjtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFN0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxXQUFxQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRU0sU0FBUyxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxjQUFjLENBQUMsY0FBbUI7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7SUFDMUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLG1CQUFtQjtRQUNuQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNILEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSTthQUN4QixHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNqRCxJQUFJLENBQ0QsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQ3ZCO2FBQ0EsU0FBUyxDQUFDLENBQUMsT0FBYyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVNLE1BQU07UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNuQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsSUFBUztRQUMxQixPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wbGV0ZXJCYXNlRGF0YSB9IGZyb20gJy4vY29tcGxldGVyLWJhc2UtZGF0YSc7XG5pbXBvcnQgeyBDb21wbGV0ZXJJdGVtIH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb21wbGV0ZXItaXRlbSc7XG5cbmV4cG9ydCBjbGFzcyBSZW1vdGVEYXRhIGV4dGVuZHMgQ29tcGxldGVyQmFzZURhdGEge1xuICAgIHB1YmxpYyBkYXRhU291cmNlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIF9yZW1vdGVVcmw6IHN0cmluZyB8IG51bGw7XG4gICAgcHJpdmF0ZSByZW1vdGVTZWFyY2g6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF91cmxGb3JtYXRlcjogKCh0ZXJtOiBzdHJpbmcpID0+IHN0cmluZykgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9kYXRhRmllbGQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX3JlcXVlc3RPcHRpb25zOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3RlVXJsKHJlbW90ZVVybDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9yZW1vdGVVcmwgPSByZW1vdGVVcmw7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZUNoYW5nZS5lbWl0KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHVybEZvcm1hdGVyKHVybEZvcm1hdGVyOiAodGVybTogc3RyaW5nKSA9PiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdXJsRm9ybWF0ZXIgPSB1cmxGb3JtYXRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGF0YUZpZWxkKGRhdGFGaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2RhdGFGaWVsZCA9IGRhdGFGaWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVxdWVzdE9wdGlvbnMocmVxdWVzdE9wdGlvbnM6IGFueSkge1xuICAgICAgICB0aGlzLl9yZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2godGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XG4gICAgICAgIC8vIGxldCBwYXJhbXMgPSB7fTtcbiAgICAgICAgbGV0IHVybCA9ICcnO1xuICAgICAgICBpZiAodGhpcy5fdXJsRm9ybWF0ZXIpIHtcbiAgICAgICAgICAgIHVybCA9IHRoaXMuX3VybEZvcm1hdGVyKHRlcm0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsID0gdGhpcy5fcmVtb3RlVXJsICsgZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW1vdGVTZWFyY2ggPSB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQodXJsLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXF1ZXN0T3B0aW9ucykpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5leHRyYWN0VmFsdWUoZGF0YSwgdGhpcy5fZGF0YUZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0cmFjdE1hdGNoZXMobWF0Y2hlcywgdGVybSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBbXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG1hdGNoZXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMucHJvY2Vzc1Jlc3VsdHMobWF0Y2hlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KHJlc3VsdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3RlU2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW90ZVNlYXJjaC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnRUb0l0ZW0oZGF0YTogYW55KTogQ29tcGxldGVySXRlbSB8IG51bGwge1xuICAgICAgICByZXR1cm4gc3VwZXIuY29udmVydFRvSXRlbShkYXRhKTtcbiAgICB9XG59XG4iXX0=