From 31e4aa788ee484815c3588a7077e56d11af1068a Mon Sep 17 00:00:00 2001 From: Alessandro Martelli Date: Tue, 13 Apr 2021 09:51:05 +0200 Subject: [PATCH] [CST-3782] lookup click doesn't clear the plain value --- ...ynamic-form-control-container.component.ts | 19 +++++++++++++++++++ ...ng-metadata-list-element.component.spec.ts | 5 ++++- ...xisting-metadata-list-element.component.ts | 13 +++++++++---- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts index a2ed538ce6..b8024346f5 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.ts @@ -37,6 +37,7 @@ import { DynamicFormControl, DynamicFormControlContainerComponent, DynamicFormControlEvent, + DynamicFormControlEventType, DynamicFormControlModel, DynamicFormLayout, DynamicFormLayoutService, @@ -394,6 +395,24 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo size: 'lg' }); + if (hasValue(this.model.value)) { + this.focus.emit({ + $event: new Event('focus'), + context: this.context, + control: this.control, + model: this.model, + type: DynamicFormControlEventType.Focus + } as DynamicFormControlEvent); + + this.change.emit({ + $event: new Event('change'), + context: this.context, + control: this.control, + model: this.model, + type: DynamicFormControlEventType.Change + } as DynamicFormControlEvent); + } + this.submissionService.dispatchSave(this.model.submissionId); const modalComp = this.modalRef.componentInstance; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts index 2a38a07759..b5af2a8843 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.spec.ts @@ -38,6 +38,7 @@ describe('ExistingMetadataListElementComponent', () => { let relatedSearchResult; let submissionId; let relationshipService; + let submissionServiceStub; function init() { uuid1 = '91ce578d-2e63-4093-8c73-3faafd716000'; @@ -64,6 +65,8 @@ describe('ExistingMetadataListElementComponent', () => { relationship = Object.assign(new Relationship(), { leftItem: leftItemRD$, rightItem: rightItemRD$ }); submissionId = '1234'; reoRel = new ReorderableRelationship(relationship, true, {} as any, {} as any, submissionId); + submissionServiceStub = new SubmissionServiceStub(); + submissionServiceStub.getSubmissionObject.and.returnValue(observableOf({})); } beforeEach(waitForAsync(() => { @@ -81,7 +84,7 @@ describe('ExistingMetadataListElementComponent', () => { providers: [ { provide: SelectableListService, useValue: selectionService }, { provide: Store, useValue: store }, - { provide: SubmissionService, useClass: SubmissionServiceStub }, + { provide: SubmissionService, useValue: submissionServiceStub }, ], schemas: [NO_ERRORS_SCHEMA] }) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts index 29097d1337..899400eba0 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component.ts @@ -3,7 +3,7 @@ import { FormControl } from '@angular/forms'; import { DynamicFormArrayGroupModel } from '@ng-dynamic-forms/core'; import { Store } from '@ngrx/store'; import { BehaviorSubject, Subscription } from 'rxjs'; -import { filter } from 'rxjs/operators'; +import { filter, take } from 'rxjs/operators'; import { AppState } from '../../../../../app.reducer'; import { RelationshipService } from '../../../../../core/data/relationship.service'; import { Relationship } from '../../../../../core/shared/item-relationships/relationship.model'; @@ -20,6 +20,7 @@ import { RelationshipOptions } from '../../models/relationship-options.model'; import { DynamicConcatModel } from '../models/ds-dynamic-concat.model'; import { RemoveRelationshipAction } from '../relation-lookup-modal/relationship.actions'; import { SubmissionService } from '../../../../../submission/submission.service'; +import { SubmissionObjectEntry } from '../../../../../submission/objects/submission-objects.reducer'; // tslint:disable:max-classes-per-file /** @@ -197,9 +198,13 @@ export class ExistingMetadataListElementComponent implements OnInit, OnChanges, */ removeSelection() { this.submissionService.dispatchSave(this.submissionId); - this.selectableListService.deselectSingle(this.listId, Object.assign(new ItemSearchResult(), { indexableObject: this.relatedItem })); - this.store.dispatch(new RemoveRelationshipAction(this.submissionItem, this.relatedItem, this.relationshipOptions.relationshipType, this.submissionId)); - this.remove.emit(); + this.submissionService.getSubmissionObject(this.submissionId).pipe( + filter((state: SubmissionObjectEntry) => !state.savePending && !state.isLoading), + take(1)).subscribe(() => { + this.selectableListService.deselectSingle(this.listId, Object.assign(new ItemSearchResult(), { indexableObject: this.relatedItem })); + this.store.dispatch(new RemoveRelationshipAction(this.submissionItem, this.relatedItem, this.relationshipOptions.relationshipType, this.submissionId)); + this.remove.emit(); + }); } /**