@neocomplexx/ngx-neo-completer-mat
Version:
56 lines • 7.44 kB
JavaScript
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==