From c1b241dc299392842f6c5b4edae415867f5b6cd2 Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio <giuseppe.digilio@4science.it> Date: Thu, 22 Aug 2019 11:29:31 +0200 Subject: [PATCH] Fixed issue with lookup field which updated model on input event --- .../lookup/dynamic-lookup.component.html | 10 ++++---- .../lookup/dynamic-lookup.component.spec.ts | 4 ++-- .../models/lookup/dynamic-lookup.component.ts | 23 +++++++++++-------- 3 files changed, 20 insertions(+), 17 deletions(-) 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 cb2d1fe217..3cfb5980c6 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 4a1d636adb..39c2c61efe 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 597f39b271..ac9046c12b 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(); } -- GitLab