UNPKG

@neocomplexx/ngx-neo-completer-mat

Version:
56 lines 7.44 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWRhdGEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmVvY29tcGxleHgvbmd4LW5lby1jb21wbGV0ZXItbWF0LyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3JlbW90ZS1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxNQUFNLE9BQU8sVUFBVyxTQUFRLGlCQUFpQjtJQVM3QyxZQUFvQixJQUFnQjtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQURRLFNBQUksR0FBSixJQUFJLENBQVk7UUFSN0IscUJBQWdCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFJL0QsaUJBQVksR0FBc0MsSUFBSSxDQUFDO1FBQ3ZELGVBQVUsR0FBa0IsSUFBSSxDQUFDO0lBS3pDLENBQUM7SUFFTSxTQUFTLENBQUMsU0FBd0I7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxXQUFXLENBQUMsV0FBcUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDcEMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxTQUFpQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sY0FBYyxDQUFDLGNBQW1CO1FBQ3JDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBQzFDLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBWTtRQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxtQkFBbUI7UUFDbkIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUk7YUFDeEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDakQsSUFBSSxDQUNELEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUN2QjthQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQVM7UUFDMUIsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wbGV0ZXJCYXNlRGF0YSB9IGZyb20gJy4vY29tcGxldGVyLWJhc2UtZGF0YSc7XHJcbmltcG9ydCB7IENvbXBsZXRlckl0ZW0gfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbXBsZXRlci1pdGVtJztcclxuXHJcbmV4cG9ydCBjbGFzcyBSZW1vdGVEYXRhIGV4dGVuZHMgQ29tcGxldGVyQmFzZURhdGEge1xyXG4gICAgcHVibGljIGRhdGFTb3VyY2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9yZW1vdGVVcmw6IHN0cmluZyB8IG51bGw7XHJcbiAgICBwcml2YXRlIHJlbW90ZVNlYXJjaDogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfdXJsRm9ybWF0ZXI6ICgodGVybTogc3RyaW5nKSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9kYXRhRmllbGQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBfcmVxdWVzdE9wdGlvbnM6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZW1vdGVVcmwocmVtb3RlVXJsOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fcmVtb3RlVXJsID0gcmVtb3RlVXJsO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZUNoYW5nZS5lbWl0KCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cmxGb3JtYXRlcih1cmxGb3JtYXRlcjogKHRlcm06IHN0cmluZykgPT4gc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdXJsRm9ybWF0ZXIgPSB1cmxGb3JtYXRlcjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGF0YUZpZWxkKGRhdGFGaWVsZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YUZpZWxkID0gZGF0YUZpZWxkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZXF1ZXN0T3B0aW9ucyhyZXF1ZXN0T3B0aW9uczogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2VhcmNoKHRlcm06IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FuY2VsKCk7XHJcbiAgICAgICAgLy8gbGV0IHBhcmFtcyA9IHt9O1xyXG4gICAgICAgIGxldCB1cmwgPSAnJztcclxuICAgICAgICBpZiAodGhpcy5fdXJsRm9ybWF0ZXIpIHtcclxuICAgICAgICAgICAgdXJsID0gdGhpcy5fdXJsRm9ybWF0ZXIodGVybSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXJsID0gdGhpcy5fcmVtb3RlVXJsICsgZW5jb2RlVVJJQ29tcG9uZW50KHRlcm0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZW1vdGVTZWFyY2ggPSB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldCh1cmwsIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3JlcXVlc3RPcHRpb25zKSlcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLmV4dHJhY3RWYWx1ZShkYXRhLCB0aGlzLl9kYXRhRmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RNYXRjaGVzKG1hdGNoZXMsIHRlcm0pO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IFtdKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG1hdGNoZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5wcm9jZXNzUmVzdWx0cyhtYXRjaGVzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dChyZXN1bHRzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNhbmNlbCgpIHtcclxuICAgICAgICBpZiAodGhpcy5yZW1vdGVTZWFyY2gpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdGVTZWFyY2gudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNvbnZlcnRUb0l0ZW0oZGF0YTogYW55KTogQ29tcGxldGVySXRlbSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5jb252ZXJ0VG9JdGVtKGRhdGEpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==