fixes for multiple fields

This commit is contained in:
lotte
2020-01-16 12:59:19 +01:00
parent ab966c08ac
commit c92fb9262c
6 changed files with 15 additions and 12 deletions

View File

@@ -317,6 +317,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
const modalComp = this.modalRef.componentInstance;
if (hasValue(this.model.value)) {
modalComp.query = this.model.value.value;
modalComp.selectEvent.pipe(take(1)).subscribe(() => this.model.setValue(undefined))
}
modalComp.repeatable = this.model.repeatable;
modalComp.listId = this.listId;
@@ -324,6 +325,7 @@ export class DsDynamicFormControlContainerComponent extends DynamicFormControlCo
modalComp.metadataFields = this.model.metadataFields;
modalComp.item = this.item;
modalComp.submissionId = this.model.submissionId;
}
/**

View File

@@ -15,7 +15,6 @@
<button type="button" class="close float-left drag-button" cdkDragHandle>
<i class="fas fa-grip-vertical fa-fw"></i>
</button>
{{idx}}
<ng-container *ngTemplateOutlet="startTemplate?.templateRef; context: groupModel"></ng-container>
<ng-container *ngTemplateOutlet="controlContainer; context: {$implicit: idx}"></ng-container>
<ng-container *ngTemplateOutlet="endTemplate?.templateRef; context: groupModel"></ng-container>

View File

@@ -82,7 +82,7 @@ export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent imple
)
).subscribe((item) => this.submissionItem = item);
// this.updateReorderables();
this.updateReorderables();
}
private updateReorderables(): void {
@@ -185,12 +185,12 @@ export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent imple
onChange($event) {
let event = $event;
// if (hasNoValue($event.context)) {
// const context = Object.assign({}, $event.context, { index: this.reorderables.length });
// event = Object.assign({}, $event, { context });
// } else {
// this.updateReorderables();
// }
if (hasNoValue($event.context)) {
const context = Object.assign({}, $event.context, { index: this.reorderables.length });
event = Object.assign({}, $event, { context });
} else {
this.updateReorderables();
}
super.onChange(event);
}

View File

@@ -1,4 +1,4 @@
import { Component, NgZone, OnDestroy, OnInit } from '@angular/core';
import { Component, EventEmitter, NgZone, OnDestroy, OnInit, Output } from '@angular/core';
import { combineLatest, Observable, Subscription } from 'rxjs';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { hasValue } from '../../../../empty.util';
@@ -34,6 +34,7 @@ import { Context } from '../../../../../core/shared/context.model';
* Represents a modal where the submitter can select items to be added as a certain relationship type to the object being submitted
*/
export class DsDynamicLookupRelationModalComponent implements OnInit, OnDestroy {
@Output() selectEvent: EventEmitter<ListableObject[]> = new EventEmitter<ListableObject[]>();
relationshipOptions: RelationshipOptions;
listId: string;
item;
@@ -74,6 +75,7 @@ export class DsDynamicLookupRelationModalComponent implements OnInit, OnDestroy
}
select(...selectableObjects: Array<SearchResult<Item>>) {
this.selectEvent.emit(selectableObjects);
this.zone.runOutsideAngular(
() => {
const obs: Observable<any[]> = combineLatest(...selectableObjects.map((sri: SearchResult<Item>) => {

View File

@@ -11,8 +11,6 @@
(dfChange)="onChange($event)"
(dfFocus)="onFocus($event)">
<ng-template modelType="ARRAY" let-group let-index="index" let-context="context">
{{group.index}}-{{index}}
<!--Array with repeatable items-->
<div *ngIf="!context.notRepeatable && index < 1"
class="col-xs-2 d-flex flex-column justify-content-sm-start align-items-end">

View File

@@ -302,7 +302,9 @@ export class FormComponent implements OnDestroy, OnInit {
insertItem($event, arrayContext: DynamicFormArrayModel, index: number): void {
const formArrayControl = this.formGroup.get(this.formBuilderService.getPath(arrayContext)) as FormArray;
this.formBuilderService.addFormArrayGroup(formArrayControl, arrayContext);
this.formBuilderService.moveFormArrayGroup(0, formArrayControl.length - 1, formArrayControl, arrayContext);
const value = formArrayControl.controls[index].value;
formArrayControl.controls[formArrayControl.length - 1].setValue(value);
formArrayControl.controls[index].reset();
this.addArrayItem.emit(this.getEvent($event, arrayContext, index, 'add'));
this.formService.changeForm(this.formId, this.formModel);
}