diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.html b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.html index cb2d1fe217d14ca32f1933e69f5f4f174e258d3d..3cfb5980c64e610a45e94c22a401cf21c1b910c5 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.html +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.html @@ -20,11 +20,10 @@ [disabled]="isInputDisabled()" [placeholder]="model.placeholder | translate" [readonly]="model.readOnly" - (change)="$event.preventDefault()" + (change)="onChange($event)" (blur)="onBlurEvent($event); $event.stopPropagation(); sdRef.close();" (focus)="onFocusEvent($event); $event.stopPropagation(); sdRef.close();" - (click)="$event.stopPropagation(); $event.stopPropagation(); sdRef.close();" - (input)="onInput($event)"> + (click)="$event.stopPropagation(); $event.stopPropagation(); sdRef.close();"> </div> <!--Lookup-name, second field--> @@ -40,11 +39,10 @@ [disabled]="firstInputValue.length === 0 || isInputDisabled()" [placeholder]="model.secondPlaceholder | translate" [readonly]="model.readOnly" - (change)="$event.preventDefault()" + (change)="onChange($event)" (blur)="onBlurEvent($event); $event.stopPropagation(); sdRef.close();" (focus)="onFocusEvent($event); $event.stopPropagation(); sdRef.close();" - (click)="$event.stopPropagation(); sdRef.close();" - (input)="onInput($event)"> + (click)="$event.stopPropagation(); sdRef.close();"> </div> <div class="col-auto text-center"> <button ngbDropdownAnchor diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts index 4a1d636adb6e195e7d3316aee88fe1036ad8eb01..39c2c61efef6233393b7cf7508a893bf1da4e291 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.spec.ts @@ -289,7 +289,7 @@ describe('Dynamic Lookup component', () => { lookupComp.firstInputValue = 'test'; lookupFixture.detectChanges(); - lookupComp.onInput(new Event('input')); + lookupComp.onChange(new Event('change')); expect(lookupComp.model.value).toEqual(new FormFieldMetadataValueObject('test')) })); @@ -299,7 +299,7 @@ describe('Dynamic Lookup component', () => { lookupComp.firstInputValue = 'test'; lookupFixture.detectChanges(); - lookupComp.onInput(new Event('input')); + lookupComp.onChange(new Event('change')); expect(lookupComp.model.value).not.toBeDefined(); }); diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.ts index 597f39b27165481ca963416cb33fee9401db5636..ac9046c12b925c7355a344970e4901fc3ad57545 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component.ts @@ -123,6 +123,15 @@ export class DsDynamicLookupComponent extends DynamicFormControlComponent implem } } + protected updateModel(value) { + this.group.markAsDirty(); + this.model.valueUpdates.next(value); + this.setInputsValue(value); + this.change.emit(value); + this.optionsList = null; + this.pageInfo = null; + } + public formatItemForInput(item: any, field: number): string { if (isUndefined(item) || isNull(item)) { return ''; @@ -170,12 +179,13 @@ export class DsDynamicLookupComponent extends DynamicFormControlComponent implem this.focus.emit(event); } - public onInput(event) { + public onChange(event) { + event.preventDefault(); if (!this.model.authorityOptions.closed) { if (isNotEmpty(this.getCurrentValue())) { const currentValue = new FormFieldMetadataValueObject(this.getCurrentValue()); if (!this.editMode) { - this.onSelect(currentValue); + this.updateModel(currentValue); } } else { this.remove(); @@ -191,12 +201,7 @@ export class DsDynamicLookupComponent extends DynamicFormControlComponent implem } public onSelect(event) { - this.group.markAsDirty(); - this.model.valueUpdates.next(event); - this.setInputsValue(event); - this.change.emit(event); - this.optionsList = null; - this.pageInfo = null; + this.updateModel(event); } public openChange(isOpened: boolean) { @@ -219,7 +224,7 @@ export class DsDynamicLookupComponent extends DynamicFormControlComponent implem display: this.getCurrentValue(), value: this.getCurrentValue() }); - this.onSelect(newValue); + this.updateModel(newValue); } else { this.remove(); }