bit-ng-library 16.0.2 → 16.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/esm2022/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.mjs +52 -6
- package/fesm2022/bit-ng-library.mjs +51 -5
- package/fesm2022/bit-ng-library.mjs.map +1 -1
- package/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.d.ts +12 -4
- package/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,6 +26,15 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C
|
|
|
26
26
|
|
|
27
27
|
## changelog
|
|
28
28
|
|
|
29
|
+
## [16.0.3] - 2023-10-19
|
|
30
|
+
|
|
31
|
+
Se amplía el funcionamiento de bit-autocomplete para aceptar listas de objetos con id y descripcion. El campo id del objeto si no es id se puede especificar
|
|
32
|
+
mediante el nuevo input id de bit-autocomplete aunque es opcional. El campo descripcion del objeto se sigue especificando mediante el input suggestionField.
|
|
33
|
+
Además, para que se pinte un valor que pueda venir del servidor cuando se está representando una ficha en modo edición tenemos el input displayValue. Este
|
|
34
|
+
nuevo input solo es necesario si estamos trabajando con listas de objetos pues se asume que en el formControl asociado al bit-autocomplete metemos un identificador (numero)
|
|
35
|
+
pero queremos pintar un valor (string). En el caso de que en el formControl estemos metiendo un string y las listas del autocomplete sean strings, no es necesario
|
|
36
|
+
indicar ningún displayValue.
|
|
37
|
+
|
|
29
38
|
## [16.0.2] - 2023-10-10
|
|
30
39
|
|
|
31
40
|
se importan 4 módulos de prime: ChipModule, ToogleButtonModule, FileUploadModule que se redefine como FileUploadModulePrimeNg por conflictos con el FileUploadModule de la librería ng2 y BadgeModule
|
package/esm2022/lib/sharedlibrary/components/form/autocomplete/bit-autocomplete.component.mjs
CHANGED
|
@@ -12,10 +12,21 @@ export class BitAutoCompleteComponent extends BitCustomComponent {
|
|
|
12
12
|
super(ayudaService);
|
|
13
13
|
this.ayudaService = ayudaService;
|
|
14
14
|
this.multiple = false;
|
|
15
|
+
this.id = "id";
|
|
15
16
|
this.completeMethod = new EventEmitter();
|
|
16
17
|
this.onSelect = new EventEmitter();
|
|
17
18
|
this.onClear = new EventEmitter();
|
|
18
19
|
}
|
|
20
|
+
ngOnChanges(changes) {
|
|
21
|
+
for (let propName in changes) {
|
|
22
|
+
if (propName === "suggestions") {
|
|
23
|
+
let changedProp = changes[propName];
|
|
24
|
+
let newList = changedProp.currentValue;
|
|
25
|
+
this.suggestions_mapped = newList && newList.map((obj) => (obj instanceof Object) ? obj[this.suggestionField] : obj);
|
|
26
|
+
//console.log("newList", this.suggestions_mapped);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
19
30
|
search(event) {
|
|
20
31
|
this.completeMethod.emit(event);
|
|
21
32
|
}
|
|
@@ -32,25 +43,56 @@ export class BitAutoCompleteComponent extends BitCustomComponent {
|
|
|
32
43
|
this.value = "";
|
|
33
44
|
}
|
|
34
45
|
else {
|
|
35
|
-
|
|
46
|
+
if (typeof (v) == 'string') {
|
|
47
|
+
this.value = v.toString();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.value = this.displayValue;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
changeComponentValue(value) {
|
|
55
|
+
let valueConverted;
|
|
56
|
+
if (this.suggestionField) { // si estamos especificando que lo que el autocomplete hace es operar sobre una lista de objetos
|
|
57
|
+
// recuperamos el objeto dentro de la lista con el valor del campo suggestionField igual al seleccionado
|
|
58
|
+
let selectedObject = this._findObject(value);
|
|
59
|
+
// el valor reconvertido será el id del objeto que es lo que vamos a meter en el FormControl
|
|
60
|
+
valueConverted = selectedObject && selectedObject[this.id];
|
|
61
|
+
// emitimos que ha cambiado el objeto
|
|
62
|
+
this.onChange.emit(selectedObject);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// si no es una lista de objetos el comportamiento es el de siempre
|
|
66
|
+
valueConverted = value;
|
|
67
|
+
this.onChange.emit(valueConverted);
|
|
36
68
|
}
|
|
69
|
+
this._onChange(valueConverted);
|
|
37
70
|
}
|
|
38
71
|
_onSelect(selectedValue) {
|
|
39
72
|
this.value = selectedValue;
|
|
40
73
|
this.changeComponentValue(this.value);
|
|
41
|
-
|
|
74
|
+
if (this.suggestionField) {
|
|
75
|
+
let selectedObject = this._findObject(selectedValue);
|
|
76
|
+
this.onSelect.emit(selectedObject);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this.onSelect.emit(this.value);
|
|
80
|
+
}
|
|
42
81
|
}
|
|
43
82
|
_onClear() {
|
|
44
83
|
this.value = "";
|
|
45
84
|
this.changeComponentValue(this.value);
|
|
46
85
|
this.onClear.emit();
|
|
47
86
|
}
|
|
87
|
+
_findObject(value) {
|
|
88
|
+
return value && this.suggestions.find((obj) => obj[this.suggestionField] === value);
|
|
89
|
+
}
|
|
48
90
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: BitAutoCompleteComponent, deps: [{ token: i1.AyudaService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: BitAutoCompleteComponent, selector: "bit-autocomplete", inputs: { suggestions: "suggestions", suggestionField: "suggestionField", multiple: "multiple" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onClear: "onClear" }, providers: [{
|
|
91
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: BitAutoCompleteComponent, selector: "bit-autocomplete", inputs: { suggestions: "suggestions", suggestionField: "suggestionField", multiple: "multiple", id: "id", displayValue: "displayValue" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onClear: "onClear" }, providers: [{
|
|
50
92
|
provide: NG_VALUE_ACCESSOR,
|
|
51
93
|
useExisting: forwardRef(() => BitAutoCompleteComponent),
|
|
52
94
|
multi: true
|
|
53
|
-
}], usesInheritance: true, ngImport: i0, template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"
|
|
95
|
+
}], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"suggestions_mapped\"\n [multiple]=\"multiple\"\n appendTo=\"body\"\n (completeMethod)=\"search($event)\"\n (onSelect)=\"_onSelect($event)\"\n (onClear)=\"_onClear()\"\n (onBlur)=\"_onBlur()\"\n (onFocus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId }}\"\n></p-autoComplete>\n<control-messages *ngIf=\"control != null\" [control]=\"control\" [field]=\"nombre\"></control-messages>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i5.BitControlMessages, selector: "control-messages", inputs: ["control", "field"] }] }); }
|
|
54
96
|
}
|
|
55
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: BitAutoCompleteComponent, decorators: [{
|
|
56
98
|
type: Component,
|
|
@@ -58,13 +100,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
|
|
|
58
100
|
provide: NG_VALUE_ACCESSOR,
|
|
59
101
|
useExisting: forwardRef(() => BitAutoCompleteComponent),
|
|
60
102
|
multi: true
|
|
61
|
-
}], template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"
|
|
103
|
+
}], template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"suggestions_mapped\"\n [multiple]=\"multiple\"\n appendTo=\"body\"\n (completeMethod)=\"search($event)\"\n (onSelect)=\"_onSelect($event)\"\n (onClear)=\"_onClear()\"\n (onBlur)=\"_onBlur()\"\n (onFocus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId }}\"\n></p-autoComplete>\n<control-messages *ngIf=\"control != null\" [control]=\"control\" [field]=\"nombre\"></control-messages>\n" }]
|
|
62
104
|
}], ctorParameters: function () { return [{ type: i1.AyudaService }]; }, propDecorators: { suggestions: [{
|
|
63
105
|
type: Input
|
|
64
106
|
}], suggestionField: [{
|
|
65
107
|
type: Input
|
|
66
108
|
}], multiple: [{
|
|
67
109
|
type: Input
|
|
110
|
+
}], id: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], displayValue: [{
|
|
113
|
+
type: Input
|
|
68
114
|
}], completeMethod: [{
|
|
69
115
|
type: Output
|
|
70
116
|
}], onSelect: [{
|
|
@@ -72,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
|
|
|
72
118
|
}], onClear: [{
|
|
73
119
|
type: Output
|
|
74
120
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb3JtL2F1dG9jb21wbGV0ZS9iaXQtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JpdC1uZy1saWJyYXJ5L3NyYy9saWIvc2hhcmVkbGlicmFyeS9jb21wb25lbnRzL2Zvcm0vYXV0b2NvbXBsZXRlL2JpdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBVzdELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxrQkFBa0I7SUFnQjlELFlBQXNCLFlBQTBCO1FBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQURBLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBVmhELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTVDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXRDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBTWxDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVTtRQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQyx3REFBd0Q7YUFDckQ7WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVM7UUFDbEIsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ2pCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsYUFBa0I7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0FuRFUsd0JBQXdCO2tHQUF4Qix3QkFBd0Isc09BTnhCLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDdkQsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLGlEQ2JKLDQ3QkF5QkE7OzJGRFZhLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxrQkFBa0IsYUFFakIsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQzttR0FJRixXQUFXO3NCQURWLEtBQUs7Z0JBR04sZUFBZTtzQkFEZCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixjQUFjO3NCQURiLE1BQU07Z0JBR1AsUUFBUTtzQkFEUCxNQUFNO2dCQUdQLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5pbXBvcnQgeyBBeXVkYVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvYXl1ZGEuc2VydmljZVwiO1xuaW1wb3J0IHsgQml0Q3VzdG9tQ29tcG9uZW50IH0gZnJvbSBcIi4uL2JpdC1jdXN0b20uY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJiaXQtYXV0b2NvbXBsZXRlXCIsXG4gIHRlbXBsYXRlVXJsOiBcImJpdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWxcIixcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJpdEF1dG9Db21wbGV0ZUNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgQml0QXV0b0NvbXBsZXRlQ29tcG9uZW50IGV4dGVuZHMgQml0Q3VzdG9tQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKVxuICBzdWdnZXN0aW9uczogYW55W107XG4gIEBJbnB1dCgpXG4gIHN1Z2dlc3Rpb25GaWVsZDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KClcbiAgY29tcGxldGVNZXRob2QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpXG4gIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKVxuICBvbkNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgdmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXl1ZGFTZXJ2aWNlOiBBeXVkYVNlcnZpY2UpIHtcbiAgICBzdXBlcihheXVkYVNlcnZpY2UpO1xuICB9XG5cbiAgc2VhcmNoKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNvbXBsZXRlTWV0aG9kLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0IHZhbHVlX2xlY3R1cmEoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9IC8vIHNpIGVzIG51bGwgbyB1bmRlZmluZWQgKGVzIGxvIHF1ZSBldmFsw7phIGVsIFwiPT1udWxsXCIpXG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHY6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdikge1xuICAgICAgdGhpcy52YWx1ZSA9IFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgIH1cbiAgfVxuXG4gIF9vblNlbGVjdChzZWxlY3RlZFZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gc2VsZWN0ZWRWYWx1ZTtcbiAgICB0aGlzLmNoYW5nZUNvbXBvbmVudFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMub25TZWxlY3QuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIF9vbkNsZWFyKCkge1xuICAgIHRoaXMudmFsdWUgPSBcIlwiO1xuICAgIHRoaXMuY2hhbmdlQ29tcG9uZW50VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkNsZWFyLmVtaXQoKTtcbiAgfVxuXG59XG4iLCI8bGFiZWwgKm5nSWY9XCIhaGlkZUxhYmVsXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD4mbmJzcDs8c3BhbiAqbmdJZj1cIm9ibGlnYXRvcmlvXCIgY2xhc3M9XCJvYmxpZ2F0b3JpbyBmYSBmYS1hc3Rlcmlza1wiPjwvc3Bhbj4mbmJzcDsmbmJzcDtcbiAgPGkgKm5nSWY9XCJheXVkYVwiIGNsYXNzPVwiYnRuLWF5dWRhIGZhIGZhLXF1ZXN0aW9uXCIgKGNsaWNrKT1cInNob3dBeXVkYSgpXCI+PC9pPlxuPC9sYWJlbD5cbjxwICpuZ0lmPVwicmVhZE9ubHlcIiBjbGFzcz1cImxlY3R1cmFcIiBbaWRdPVwibm9tYnJlXCI+e3sgdmFsdWVfbGVjdHVyYSB9fTwvcD5cbjxwLWF1dG9Db21wbGV0ZVxuICAqbmdJZj1cIiFyZWFkT25seVwiXG4gIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICBpZD1cInt7IG5vbWJyZSB9fVwiXG4gIG5hbWU9XCJ7eyBub21icmUgfX1cIlxuICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIGRlbGF5PVwiNDAwXCJcbiAgW3N1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zXCJcbiAgW2ZpZWxkXT1cInN1Z2dlc3Rpb25GaWVsZFwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIGFwcGVuZFRvPVwiYm9keVwiXG4gIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gIChvblNlbGVjdCk9XCJfb25TZWxlY3QoJGV2ZW50KVwiXG4gIChvbkNsZWFyKT1cIl9vbkNsZWFyKClcIlxuICAob25CbHVyKT1cIl9vbkJsdXIoKVwiXG4gIChvbkZvY3VzKT1cIl9vbkZvY3VzKClcIlxuICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgZGF0YVRlc3RJZCB9fVwiXG4+PC9wLWF1dG9Db21wbGV0ZT5cbjxjb250cm9sLW1lc3NhZ2VzICpuZ0lmPVwiY29udHJvbCAhPSBudWxsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtmaWVsZF09XCJub21icmVcIj48L2NvbnRyb2wtbWVzc2FnZXM+XG4iXX0=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iaXQtbmctbGlicmFyeS9zcmMvbGliL3NoYXJlZGxpYnJhcnkvY29tcG9uZW50cy9mb3JtL2F1dG9jb21wbGV0ZS9iaXQtYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JpdC1uZy1saWJyYXJ5L3NyYy9saWIvc2hhcmVkbGlicmFyeS9jb21wb25lbnRzL2Zvcm0vYXV0b2NvbXBsZXRlL2JpdC1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7OztBQVc3RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsa0JBQWtCO0lBc0I5RCxZQUFzQixZQUEwQjtRQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFEQSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWhCaEQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixPQUFFLEdBQVcsSUFBSSxDQUFDO1FBSWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUU1QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV0QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQVFsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQTRDO1FBQ3RELEtBQUssSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO1lBQzVCLElBQUksUUFB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Q0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OEdBbEdVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDhRQU54QixDQUFDO2dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQyxzRUNiSixvNkJBd0JBOzsyRkRUYSx3QkFBd0I7a0JBVHBDLFNBQVM7K0JBQ0Usa0JBQWtCLGFBRWpCLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7bUdBSUYsV0FBVztzQkFEVixLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixRQUFRO3NCQURQLEtBQUs7Z0JBR04sRUFBRTtzQkFERCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixjQUFjO3NCQURiLE1BQU07Z0JBR1AsUUFBUTtzQkFEUCxNQUFNO2dCQUdQLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmltcG9ydCB7IEF5dWRhU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9heXVkYS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBCaXRDdXN0b21Db21wb25lbnQgfSBmcm9tIFwiLi4vYml0LWN1c3RvbS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImJpdC1hdXRvY29tcGxldGVcIixcbiAgdGVtcGxhdGVVcmw6IFwiYml0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbFwiLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQml0QXV0b0NvbXBsZXRlQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XVxufSlcbmV4cG9ydCBjbGFzcyBCaXRBdXRvQ29tcGxldGVDb21wb25lbnQgZXh0ZW5kcyBCaXRDdXN0b21Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpXG4gIHN1Z2dlc3Rpb25zOiBhbnlbXTtcbiAgQElucHV0KClcbiAgc3VnZ2VzdGlvbkZpZWxkO1xuICBASW5wdXQoKVxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBpZDogc3RyaW5nID0gXCJpZFwiO1xuICBASW5wdXQoKVxuICBkaXNwbGF5VmFsdWU6IHN0cmluZztcbiAgQE91dHB1dCgpXG4gIGNvbXBsZXRlTWV0aG9kID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KClcbiAgb25DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHN1Z2dlc3Rpb25zX21hcHBlZDogc3RyaW5nW107XG5cbiAgdmFsdWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXl1ZGFTZXJ2aWNlOiBBeXVkYVNlcnZpY2UpIHtcbiAgICBzdXBlcihheXVkYVNlcnZpY2UpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcEtleTogc3RyaW5nXTogU2ltcGxlQ2hhbmdlIH0pIHtcbiAgICBmb3IgKGxldCBwcm9wTmFtZSBpbiBjaGFuZ2VzKSB7XG4gICAgICBpZiAocHJvcE5hbWUgPT09IFwic3VnZ2VzdGlvbnNcIikge1xuICAgICAgICBsZXQgY2hhbmdlZFByb3AgPSBjaGFuZ2VzW3Byb3BOYW1lXTtcbiAgICAgICAgbGV0IG5ld0xpc3QgPSBjaGFuZ2VkUHJvcC5jdXJyZW50VmFsdWU7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNfbWFwcGVkID0gbmV3TGlzdCAmJiBuZXdMaXN0Lm1hcCgob2JqKSA9PiAob2JqIGluc3RhbmNlb2YgT2JqZWN0KSA/IG9ialt0aGlzLnN1Z2dlc3Rpb25GaWVsZF0gOiBvYmopO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwibmV3TGlzdFwiLCB0aGlzLnN1Z2dlc3Rpb25zX21hcHBlZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNvbXBsZXRlTWV0aG9kLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0IHZhbHVlX2xlY3R1cmEoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9IC8vIHNpIGVzIG51bGwgbyB1bmRlZmluZWQgKGVzIGxvIHF1ZSBldmFsw7phIGVsIFwiPT1udWxsXCIpXG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHY6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdikge1xuICAgICAgdGhpcy52YWx1ZSA9IFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgKHYpID09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2LnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5kaXNwbGF5VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29tcG9uZW50VmFsdWUodmFsdWU6IGFueSkge1xuICAgIGxldCB2YWx1ZUNvbnZlcnRlZDtcbiAgICBpZiAodGhpcy5zdWdnZXN0aW9uRmllbGQpIHsgLy8gc2kgZXN0YW1vcyBlc3BlY2lmaWNhbmRvIHF1ZSBsbyBxdWUgZWwgYXV0b2NvbXBsZXRlIGhhY2UgZXMgb3BlcmFyIHNvYnJlIHVuYSBsaXN0YSBkZSBvYmpldG9zXG4gICAgICAvLyByZWN1cGVyYW1vcyBlbCBvYmpldG8gZGVudHJvIGRlIGxhIGxpc3RhIGNvbiBlbCB2YWxvciBkZWwgY2FtcG8gc3VnZ2VzdGlvbkZpZWxkIGlndWFsIGFsIHNlbGVjY2lvbmFkb1xuICAgICAgbGV0IHNlbGVjdGVkT2JqZWN0ID0gdGhpcy5fZmluZE9iamVjdCh2YWx1ZSk7XG4gICAgICAvLyBlbCB2YWxvciByZWNvbnZlcnRpZG8gc2Vyw6EgZWwgaWQgZGVsIG9iamV0byBxdWUgZXMgbG8gcXVlIHZhbW9zIGEgbWV0ZXIgZW4gZWwgRm9ybUNvbnRyb2xcbiAgICAgIHZhbHVlQ29udmVydGVkID0gc2VsZWN0ZWRPYmplY3QgJiYgc2VsZWN0ZWRPYmplY3RbdGhpcy5pZF07XG4gICAgICAvLyBlbWl0aW1vcyBxdWUgaGEgY2FtYmlhZG8gZWwgb2JqZXRvXG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoc2VsZWN0ZWRPYmplY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzaSBubyBlcyB1bmEgbGlzdGEgZGUgb2JqZXRvcyBlbCBjb21wb3J0YW1pZW50byBlcyBlbCBkZSBzaWVtcHJlXG4gICAgICB2YWx1ZUNvbnZlcnRlZCA9IHZhbHVlO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHZhbHVlQ29udmVydGVkKTtcbiAgICB9XG4gICAgdGhpcy5fb25DaGFuZ2UodmFsdWVDb252ZXJ0ZWQpO1xuICB9XG5cbiAgX29uU2VsZWN0KHNlbGVjdGVkVmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZFZhbHVlO1xuICAgIHRoaXMuY2hhbmdlQ29tcG9uZW50VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkZpZWxkKSB7XG4gICAgICBsZXQgc2VsZWN0ZWRPYmplY3QgPSB0aGlzLl9maW5kT2JqZWN0KHNlbGVjdGVkVmFsdWUpO1xuICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHNlbGVjdGVkT2JqZWN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIF9vbkNsZWFyKCkge1xuICAgIHRoaXMudmFsdWUgPSBcIlwiO1xuICAgIHRoaXMuY2hhbmdlQ29tcG9uZW50VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vbkNsZWFyLmVtaXQoKTtcbiAgfVxuXG4gIF9maW5kT2JqZWN0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHRoaXMuc3VnZ2VzdGlvbnMuZmluZCgob2JqKSA9PiBvYmpbdGhpcy5zdWdnZXN0aW9uRmllbGRdID09PSB2YWx1ZSk7XG4gIH1cbn0iLCI8bGFiZWwgKm5nSWY9XCIhaGlkZUxhYmVsXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD4mbmJzcDs8c3BhbiAqbmdJZj1cIm9ibGlnYXRvcmlvXCIgY2xhc3M9XCJvYmxpZ2F0b3JpbyBmYSBmYS1hc3Rlcmlza1wiPjwvc3Bhbj4mbmJzcDsmbmJzcDtcbiAgPGkgKm5nSWY9XCJheXVkYVwiIGNsYXNzPVwiYnRuLWF5dWRhIGZhIGZhLXF1ZXN0aW9uXCIgKGNsaWNrKT1cInNob3dBeXVkYSgpXCI+PC9pPlxuPC9sYWJlbD5cbjxwICpuZ0lmPVwicmVhZE9ubHlcIiBjbGFzcz1cImxlY3R1cmFcIiBbaWRdPVwibm9tYnJlXCI+e3sgdmFsdWVfbGVjdHVyYSB9fTwvcD5cbjxwLWF1dG9Db21wbGV0ZVxuICAqbmdJZj1cIiFyZWFkT25seVwiXG4gIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICBpZD1cInt7IG5vbWJyZSB9fVwiXG4gIG5hbWU9XCJ7eyBub21icmUgfX1cIlxuICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIGRlbGF5PVwiNDAwXCJcbiAgW3N1Z2dlc3Rpb25zXT1cInN1Z2dlc3Rpb25zX21hcHBlZFwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIGFwcGVuZFRvPVwiYm9keVwiXG4gIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gIChvblNlbGVjdCk9XCJfb25TZWxlY3QoJGV2ZW50KVwiXG4gIChvbkNsZWFyKT1cIl9vbkNsZWFyKClcIlxuICAob25CbHVyKT1cIl9vbkJsdXIoKVwiXG4gIChvbkZvY3VzKT1cIl9vbkZvY3VzKClcIlxuICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgZGF0YVRlc3RJZCB9fVwiXG4+PC9wLWF1dG9Db21wbGV0ZT5cbjxjb250cm9sLW1lc3NhZ2VzICpuZ0lmPVwiY29udHJvbCAhPSBudWxsXCIgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtmaWVsZF09XCJub21icmVcIj48L2NvbnRyb2wtbWVzc2FnZXM+XG4iXX0=
|
|
@@ -4305,10 +4305,21 @@ class BitAutoCompleteComponent extends BitCustomComponent {
|
|
|
4305
4305
|
super(ayudaService);
|
|
4306
4306
|
this.ayudaService = ayudaService;
|
|
4307
4307
|
this.multiple = false;
|
|
4308
|
+
this.id = "id";
|
|
4308
4309
|
this.completeMethod = new EventEmitter();
|
|
4309
4310
|
this.onSelect = new EventEmitter();
|
|
4310
4311
|
this.onClear = new EventEmitter();
|
|
4311
4312
|
}
|
|
4313
|
+
ngOnChanges(changes) {
|
|
4314
|
+
for (let propName in changes) {
|
|
4315
|
+
if (propName === "suggestions") {
|
|
4316
|
+
let changedProp = changes[propName];
|
|
4317
|
+
let newList = changedProp.currentValue;
|
|
4318
|
+
this.suggestions_mapped = newList && newList.map((obj) => (obj instanceof Object) ? obj[this.suggestionField] : obj);
|
|
4319
|
+
//console.log("newList", this.suggestions_mapped);
|
|
4320
|
+
}
|
|
4321
|
+
}
|
|
4322
|
+
}
|
|
4312
4323
|
search(event) {
|
|
4313
4324
|
this.completeMethod.emit(event);
|
|
4314
4325
|
}
|
|
@@ -4325,25 +4336,56 @@ class BitAutoCompleteComponent extends BitCustomComponent {
|
|
|
4325
4336
|
this.value = "";
|
|
4326
4337
|
}
|
|
4327
4338
|
else {
|
|
4328
|
-
|
|
4339
|
+
if (typeof (v) == 'string') {
|
|
4340
|
+
this.value = v.toString();
|
|
4341
|
+
}
|
|
4342
|
+
else {
|
|
4343
|
+
this.value = this.displayValue;
|
|
4344
|
+
}
|
|
4329
4345
|
}
|
|
4330
4346
|
}
|
|
4347
|
+
changeComponentValue(value) {
|
|
4348
|
+
let valueConverted;
|
|
4349
|
+
if (this.suggestionField) { // si estamos especificando que lo que el autocomplete hace es operar sobre una lista de objetos
|
|
4350
|
+
// recuperamos el objeto dentro de la lista con el valor del campo suggestionField igual al seleccionado
|
|
4351
|
+
let selectedObject = this._findObject(value);
|
|
4352
|
+
// el valor reconvertido será el id del objeto que es lo que vamos a meter en el FormControl
|
|
4353
|
+
valueConverted = selectedObject && selectedObject[this.id];
|
|
4354
|
+
// emitimos que ha cambiado el objeto
|
|
4355
|
+
this.onChange.emit(selectedObject);
|
|
4356
|
+
}
|
|
4357
|
+
else {
|
|
4358
|
+
// si no es una lista de objetos el comportamiento es el de siempre
|
|
4359
|
+
valueConverted = value;
|
|
4360
|
+
this.onChange.emit(valueConverted);
|
|
4361
|
+
}
|
|
4362
|
+
this._onChange(valueConverted);
|
|
4363
|
+
}
|
|
4331
4364
|
_onSelect(selectedValue) {
|
|
4332
4365
|
this.value = selectedValue;
|
|
4333
4366
|
this.changeComponentValue(this.value);
|
|
4334
|
-
|
|
4367
|
+
if (this.suggestionField) {
|
|
4368
|
+
let selectedObject = this._findObject(selectedValue);
|
|
4369
|
+
this.onSelect.emit(selectedObject);
|
|
4370
|
+
}
|
|
4371
|
+
else {
|
|
4372
|
+
this.onSelect.emit(this.value);
|
|
4373
|
+
}
|
|
4335
4374
|
}
|
|
4336
4375
|
_onClear() {
|
|
4337
4376
|
this.value = "";
|
|
4338
4377
|
this.changeComponentValue(this.value);
|
|
4339
4378
|
this.onClear.emit();
|
|
4340
4379
|
}
|
|
4380
|
+
_findObject(value) {
|
|
4381
|
+
return value && this.suggestions.find((obj) => obj[this.suggestionField] === value);
|
|
4382
|
+
}
|
|
4341
4383
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: BitAutoCompleteComponent, deps: [{ token: AyudaService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4342
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: BitAutoCompleteComponent, selector: "bit-autocomplete", inputs: { suggestions: "suggestions", suggestionField: "suggestionField", multiple: "multiple" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onClear: "onClear" }, providers: [{
|
|
4384
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.4", type: BitAutoCompleteComponent, selector: "bit-autocomplete", inputs: { suggestions: "suggestions", suggestionField: "suggestionField", multiple: "multiple", id: "id", displayValue: "displayValue" }, outputs: { completeMethod: "completeMethod", onSelect: "onSelect", onClear: "onClear" }, providers: [{
|
|
4343
4385
|
provide: NG_VALUE_ACCESSOR,
|
|
4344
4386
|
useExisting: forwardRef(() => BitAutoCompleteComponent),
|
|
4345
4387
|
multi: true
|
|
4346
|
-
}], usesInheritance: true, ngImport: i0, template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"
|
|
4388
|
+
}], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"suggestions_mapped\"\n [multiple]=\"multiple\"\n appendTo=\"body\"\n (completeMethod)=\"search($event)\"\n (onSelect)=\"_onSelect($event)\"\n (onClear)=\"_onClear()\"\n (onBlur)=\"_onBlur()\"\n (onFocus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId }}\"\n></p-autoComplete>\n<control-messages *ngIf=\"control != null\" [control]=\"control\" [field]=\"nombre\"></control-messages>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$6.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: BitControlMessages, selector: "control-messages", inputs: ["control", "field"] }] }); }
|
|
4347
4389
|
}
|
|
4348
4390
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImport: i0, type: BitAutoCompleteComponent, decorators: [{
|
|
4349
4391
|
type: Component,
|
|
@@ -4351,13 +4393,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.4", ngImpor
|
|
|
4351
4393
|
provide: NG_VALUE_ACCESSOR,
|
|
4352
4394
|
useExisting: forwardRef(() => BitAutoCompleteComponent),
|
|
4353
4395
|
multi: true
|
|
4354
|
-
}], template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"
|
|
4396
|
+
}], template: "<label *ngIf=\"!hideLabel\">\n <ng-content></ng-content> <span *ngIf=\"obligatorio\" class=\"obligatorio fa fa-asterisk\"></span> \n <i *ngIf=\"ayuda\" class=\"btn-ayuda fa fa-question\" (click)=\"showAyuda()\"></i>\n</label>\n<p *ngIf=\"readOnly\" class=\"lectura\" [id]=\"nombre\">{{ value_lectura }}</p>\n<p-autoComplete\n *ngIf=\"!readOnly\"\n [(ngModel)]=\"value\"\n id=\"{{ nombre }}\"\n name=\"{{ nombre }}\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"placeholder\"\n delay=\"400\"\n [suggestions]=\"suggestions_mapped\"\n [multiple]=\"multiple\"\n appendTo=\"body\"\n (completeMethod)=\"search($event)\"\n (onSelect)=\"_onSelect($event)\"\n (onClear)=\"_onClear()\"\n (onBlur)=\"_onBlur()\"\n (onFocus)=\"_onFocus()\"\n attr.data-testid=\"{{ dataTestId }}\"\n></p-autoComplete>\n<control-messages *ngIf=\"control != null\" [control]=\"control\" [field]=\"nombre\"></control-messages>\n" }]
|
|
4355
4397
|
}], ctorParameters: function () { return [{ type: AyudaService }]; }, propDecorators: { suggestions: [{
|
|
4356
4398
|
type: Input
|
|
4357
4399
|
}], suggestionField: [{
|
|
4358
4400
|
type: Input
|
|
4359
4401
|
}], multiple: [{
|
|
4360
4402
|
type: Input
|
|
4403
|
+
}], id: [{
|
|
4404
|
+
type: Input
|
|
4405
|
+
}], displayValue: [{
|
|
4406
|
+
type: Input
|
|
4361
4407
|
}], completeMethod: [{
|
|
4362
4408
|
type: Output
|
|
4363
4409
|
}], onSelect: [{
|