@neocomplexx/ngx-neo-completer-mat
Version:
43 lines • 6.3 kB
JavaScript
/**
* Esta clase permite simplificar el uso de los autocompletadores para funcionar con objetos y no con simples string.
*/
export class NgxNeoCompleterMatService {
constructor(completerService) {
// variable que realiza el binding con el componente html : [(ngModel)]
this.modelString = '';
// Propiedad sobre la que queremos hacer binding
this.fieldValue = '';
this.completerService = completerService;
}
/**
* Se ejecuta cuando el usuario selecciona un valor del autocompletable
* @author mgesuitti
*/
onSelected(selected) {
if (selected != null) {
this.selectedObject[this.fieldValue] = selected.originalObject;
}
else {
this.selectedObject[this.fieldValue] = this.empty;
}
}
/**
* Se utiliza para asignar los datos locales (cargados previamente desde el servidor)
*
* @author mgesuitti
*/
local(data, selectedObject, fieldValue = '', searchFields, titleField, emptyObject) {
this.selectedObject = selectedObject;
this.fieldValue = fieldValue;
this.dataSource = this.completerService.local(data, searchFields, titleField);
if (fieldValue !== '') {
this.modelString = this.selectedObject[this.fieldValue][searchFields];
}
else {
this.modelString = this.selectedObject[searchFields];
}
this.empty = emptyObject;
return this.dataSource;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW5lby1jb21wbGV0ZXItbWF0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmVvY29tcGxleHgvbmd4LW5lby1jb21wbGV0ZXItbWF0LyIsInNvdXJjZXMiOlsibGliL25neC1uZW8tY29tcGxldGVyLW1hdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBOztHQUVHO0FBSUgsTUFBTSxPQUFPLHlCQUF5QjtJQWtCbEMsWUFBWSxnQkFBa0M7UUFkOUMsdUVBQXVFO1FBQ2hFLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBUXhCLGdEQUFnRDtRQUN6QyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBS25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLFFBQXVCO1FBQ3JDLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO1NBQ2xFO2FBQU07WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBR3JEO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsSUFBNkIsRUFBRSxjQUFtQixFQUFFLGFBQXFCLEVBQUUsRUFDcEYsWUFBNEIsRUFBRSxVQUEwQixFQUFFLFdBQXNCO1FBQ2hGLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlFLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDeEQ7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztRQUV6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGxldGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29tcGxldGVyLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wbGV0ZXJJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbXBsZXRlci1pdGVtJztcclxuaW1wb3J0IHsgTG9jYWxEYXRhIH0gZnJvbSAnLi9zZXJ2aWNlcy9sb2NhbC1kYXRhJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIEVzdGEgY2xhc2UgcGVybWl0ZSBzaW1wbGlmaWNhciBlbCB1c28gZGUgbG9zIGF1dG9jb21wbGV0YWRvcmVzIHBhcmEgZnVuY2lvbmFyIGNvbiBvYmpldG9zIHkgbm8gY29uIHNpbXBsZXMgc3RyaW5nLlxyXG4gKi9cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIE5neE5lb0NvbXBsZXRlck1hdFNlcnZpY2U8VEVudGlkYWQ+ICB7XHJcblxyXG4gICAgcHVibGljIGNvbXBsZXRlclNlcnZpY2U6IENvbXBsZXRlclNlcnZpY2U7XHJcblxyXG4gICAgLy8gdmFyaWFibGUgcXVlIHJlYWxpemEgZWwgYmluZGluZyBjb24gZWwgY29tcG9uZW50ZSBodG1sIDogWyhuZ01vZGVsKV1cclxuICAgIHB1YmxpYyBtb2RlbFN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8vIFNlcnZpY2lvIHF1ZSBzZSBlbmNhcmdhIGRlIHJlYWxpemFyIGxhIGJ1c3F1ZWRhIGN1YW5kbyB2YW1vcyBhdXRvY29tcGxldGFuZG8gOiBbZGF0YXNvdXJjZV1cclxuICAgIHB1YmxpYyBkYXRhU291cmNlOiBMb2NhbERhdGE7XHJcblxyXG4gICAgLy8gT2JqZXRvIHF1ZSB0aWVuZSBsYSBwcm9waWVkYWQgcXVlIHF1ZXJlbW9zIGhhY2VyIGJpbmRpbmdcclxuICAgIHB1YmxpYyBzZWxlY3RlZE9iamVjdDogYW55O1xyXG5cclxuICAgIC8vIFByb3BpZWRhZCBzb2JyZSBsYSBxdWUgcXVlcmVtb3MgaGFjZXIgYmluZGluZ1xyXG4gICAgcHVibGljIGZpZWxkVmFsdWUgPSAnJztcclxuXHJcbiAgICBwdWJsaWMgZW1wdHk6IFRFbnRpZGFkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGNvbXBsZXRlclNlcnZpY2U6IENvbXBsZXRlclNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLmNvbXBsZXRlclNlcnZpY2UgPSBjb21wbGV0ZXJTZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2UgZWplY3V0YSBjdWFuZG8gZWwgdXN1YXJpbyBzZWxlY2Npb25hIHVuIHZhbG9yIGRlbCBhdXRvY29tcGxldGFibGVcclxuICAgICAqIEBhdXRob3IgbWdlc3VpdHRpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvblNlbGVjdGVkKHNlbGVjdGVkOiBDb21wbGV0ZXJJdGVtKSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdFt0aGlzLmZpZWxkVmFsdWVdID0gc2VsZWN0ZWQub3JpZ2luYWxPYmplY3Q7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdFt0aGlzLmZpZWxkVmFsdWVdID0gdGhpcy5lbXB0eTtcclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlIHV0aWxpemEgcGFyYSBhc2lnbmFyIGxvcyBkYXRvcyBsb2NhbGVzIChjYXJnYWRvcyBwcmV2aWFtZW50ZSBkZXNkZSBlbCBzZXJ2aWRvcilcclxuICAgICAqXHJcbiAgICAgKiBAYXV0aG9yIG1nZXN1aXR0aVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9jYWwoZGF0YTogYW55W10gfCBPYnNlcnZhYmxlPGFueT4sIHNlbGVjdGVkT2JqZWN0OiBhbnksIGZpZWxkVmFsdWU6IHN0cmluZyA9ICcnLFxyXG4gICAgICAgIHNlYXJjaEZpZWxkcz86IHN0cmluZyB8IG51bGwsIHRpdGxlRmllbGQ/OiBzdHJpbmcgfCBudWxsLCBlbXB0eU9iamVjdD86IFRFbnRpZGFkKTogTG9jYWxEYXRhIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT2JqZWN0ID0gc2VsZWN0ZWRPYmplY3Q7XHJcbiAgICAgICAgdGhpcy5maWVsZFZhbHVlID0gZmllbGRWYWx1ZTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSB0aGlzLmNvbXBsZXRlclNlcnZpY2UubG9jYWwoZGF0YSwgc2VhcmNoRmllbGRzLCB0aXRsZUZpZWxkKTtcclxuICAgICAgICBpZiAoZmllbGRWYWx1ZSAhPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbFN0cmluZyA9IHRoaXMuc2VsZWN0ZWRPYmplY3RbdGhpcy5maWVsZFZhbHVlXVtzZWFyY2hGaWVsZHNdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWxTdHJpbmcgPSB0aGlzLnNlbGVjdGVkT2JqZWN0W3NlYXJjaEZpZWxkc107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVtcHR5ID0gZW1wdHlPYmplY3Q7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbn1cclxuIl19