minor ui fixes

This commit is contained in:
Diamantis Tziotzios 2024-01-31 12:30:21 +02:00
parent f604eac172
commit 078ca9e0cb
6 changed files with 111 additions and 105 deletions

View File

@ -201,10 +201,7 @@ public class ReferencePersist {
.must(() -> !this.isNull(item.getSourceType())) .must(() -> !this.isNull(item.getSourceType()))
.failOn(ReferencePersist._sourceType).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferencePersist._sourceType}, LocaleContextHolder.getLocale())), .failOn(ReferencePersist._sourceType).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferencePersist._sourceType}, LocaleContextHolder.getLocale())),
this.spec() this.refSpec()
.must(() -> !this.isNull(item.getDefinition()))
.failOn(ReferencePersist._definition).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferencePersist._definition}, LocaleContextHolder.getLocale())),
this.refSpec()
.iff(() -> !this.isNull(item.getDefinition())) .iff(() -> !this.isNull(item.getDefinition()))
.on(ReferencePersist._definition) .on(ReferencePersist._definition)
.over(item.getDefinition()) .over(item.getDefinition())

View File

@ -1,6 +1,7 @@
package eu.eudat.model.persist.dmpproperties; package eu.eudat.model.persist.dmpproperties;
import eu.eudat.commons.validation.BaseValidator; import eu.eudat.commons.validation.BaseValidator;
import gr.cite.tools.validation.ValidatorFactory;
import gr.cite.tools.validation.specification.Specification; import gr.cite.tools.validation.specification.Specification;
import eu.eudat.convention.ConventionService; import eu.eudat.convention.ConventionService;
import eu.eudat.errorcode.ErrorThesaurusProperties; import eu.eudat.errorcode.ErrorThesaurusProperties;
@ -53,12 +54,14 @@ public class DmpBlueprintValuePersist {
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public static class DmpBlueprintValuePersistValidator extends BaseValidator<DmpBlueprintValuePersist> { public static class DmpBlueprintValuePersistValidator extends BaseValidator<DmpBlueprintValuePersist> {
private final ValidatorFactory validatorFactory;
private final MessageSource messageSource; private final MessageSource messageSource;
public static final String ValidatorName = "DmpBlueprintValuePersistValidator"; public static final String ValidatorName = "DmpBlueprintValuePersistValidator";
protected DmpBlueprintValuePersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource) { protected DmpBlueprintValuePersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, ValidatorFactory validatorFactory, MessageSource messageSource) {
super(conventionService, errors); super(conventionService, errors);
this.validatorFactory = validatorFactory;
this.messageSource = messageSource; this.messageSource = messageSource;
} }
@ -70,17 +73,18 @@ public class DmpBlueprintValuePersist {
@Override @Override
protected List<Specification> specifications(DmpBlueprintValuePersist item) { protected List<Specification> specifications(DmpBlueprintValuePersist item) {
return Arrays.asList( return Arrays.asList(
this.spec() // this.spec()
.must(() -> !this.isValidGuid(item.getFieldId())) // .must(() -> !this.isValidGuid(item.getFieldId()))
.failOn(DmpBlueprintValuePersist._fieldId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DmpBlueprintValuePersist._fieldId}, LocaleContextHolder.getLocale())), // .failOn(DmpBlueprintValuePersist._fieldId).failWith(messageSource.getMessage("Validation_Required", new Object[]{DmpBlueprintValuePersist._fieldId}, LocaleContextHolder.getLocale())),
this.spec() // this.spec()
.iff(() -> this.isNull(item.getReferences()) || item.getReferences().isEmpty()) // .iff(() -> this.isNull(item.getReferences()) || item.getReferences().isEmpty())
.must(() -> !this.isEmpty(item.getFieldValue())) // .must(() -> !this.isEmpty(item.getFieldValue()))
.failOn(DmpBlueprintValuePersist._fieldValue).failWith(messageSource.getMessage("Validation_Required", new Object[]{DmpBlueprintValuePersist._fieldValue}, LocaleContextHolder.getLocale())), // .failOn(DmpBlueprintValuePersist._fieldValue).failWith(messageSource.getMessage("Validation_Required", new Object[]{DmpBlueprintValuePersist._fieldValue}, LocaleContextHolder.getLocale())),
this.spec() this.navSpec()
.iff(() -> !this.isNull(item.getReferences()) && !item.getReferences().isEmpty()) .iff(() -> !this.isListNullOrEmpty(item.getReferences()))
.must(() -> this.isEmpty(item.getFieldValue())) .on(DmpBlueprintValuePersist._references)
.failOn(DmpBlueprintValuePersist._fieldValue).failWith(messageSource.getMessage("Validation_UnexpectedValue", new Object[]{DmpBlueprintValuePersist._fieldValue}, LocaleContextHolder.getLocale())) .over(item.getReferences())
.using((itm) -> this.validatorFactory.validator(ReferencePersist.ReferencePersistValidator.class))
); );
} }
} }

View File

@ -79,10 +79,7 @@ public class FieldPersist {
.failOn(FieldPersist._code).failWith(messageSource.getMessage("Validation_Required", new Object[]{FieldPersist._code}, LocaleContextHolder.getLocale())), .failOn(FieldPersist._code).failWith(messageSource.getMessage("Validation_Required", new Object[]{FieldPersist._code}, LocaleContextHolder.getLocale())),
this.spec() this.spec()
.must(() -> !this.isNull(item.getDataType())) .must(() -> !this.isNull(item.getDataType()))
.failOn(FieldPersist._dataType).failWith(messageSource.getMessage("Validation_Required", new Object[]{FieldPersist._dataType}, LocaleContextHolder.getLocale())), .failOn(FieldPersist._dataType).failWith(messageSource.getMessage("Validation_Required", new Object[]{FieldPersist._dataType}, LocaleContextHolder.getLocale()))
this.spec()
.must(() -> !this.isEmpty(item.getValue()))
.failOn(FieldPersist._value).failWith(messageSource.getMessage("Validation_Required", new Object[]{FieldPersist._value}, LocaleContextHolder.getLocale()))
); );
} }
} }

View File

@ -148,6 +148,7 @@ export class ReferenceService {
lookup.project = { lookup.project = {
fields: [ fields: [
nameof<Reference>(x => x.id), nameof<Reference>(x => x.id),
nameof<Reference>(x => x.hash),
nameof<Reference>(x => x.label), nameof<Reference>(x => x.label),
nameof<Reference>(x => x.type), nameof<Reference>(x => x.type),
nameof<Reference>(x => x.description), nameof<Reference>(x => x.description),

View File

@ -179,13 +179,6 @@
</mat-form-field> </mat-form-field>
</div> </div>
<div *ngIf="field.systemFieldType == dmpBlueprintSystemFieldTypeEnum.CONTACT"> <div *ngIf="field.systemFieldType == dmpBlueprintSystemFieldTypeEnum.CONTACT">
<div class="row">
<div class="col">
<button mat-icon-button (click)="addContact()" [disabled]="formGroup.disabled">
<mat-icon>add</mat-icon>
</button>
</div>
</div>
<div cdkDropList class="col-12" (cdkDropListDropped)="dropContacts($event)"> <div cdkDropList class="col-12" (cdkDropListDropped)="dropContacts($event)">
<div *ngFor="let contact of formGroup.get('properties').get('contacts').controls; let contactIndex=index;" cdkDrag class="row align-items-center" [cdkDragDisabled]="formGroup.disabled"> <div *ngFor="let contact of formGroup.get('properties').get('contacts').controls; let contactIndex=index;" cdkDrag class="row align-items-center" [cdkDragDisabled]="formGroup.disabled">
<div class="col-auto"> <div class="col-auto">
@ -193,53 +186,66 @@
</div> </div>
<div class="col-auto d-flex"><mat-icon [ngClass]="{'drag-handle-disabled': formGroup.disabled}" cdkDragHandle class="drag-handle">drag_indicator</mat-icon></div> <div class="col-auto d-flex"><mat-icon [ngClass]="{'drag-handle-disabled': formGroup.disabled}" cdkDragHandle class="drag-handle">drag_indicator</mat-icon></div>
<div class="col-auto"> <div class="col-auto">
<mat-button-toggle-group name="fontStyle" aria-label="Font Style" [formControl]= "contact.get('contactType')"> <mat-button-toggle-group name="fontStyle" aria-label="Font Style" [formControl]="contact.get('contactType')">
<div *ngFor="let contactType of dmpContactTypeEnumValues"> <div *ngFor="let contactType of dmpContactTypeEnumValues">
<mat-button-toggle class="lang-button" [value]="contactType">{{enumUtils.toDmpContactTypeString(contactType)}}</mat-button-toggle> <mat-button-toggle class="lang-button" [value]="contactType">{{enumUtils.toDmpContactTypeString(contactType)}}</mat-button-toggle>
</div> </div>
</mat-button-toggle-group> </mat-button-toggle-group>
</div> </div>
<div class="col-auto d-flex" *ngIf="contact.get('contactType').value == dmpContactTypeEnum.Internal"> <div class="col pt-4">
<mat-form-field class="w-100"> <div class="row">
<mat-label>{{'DMP-EDITOR.FIELDS1.USER' | translate}}</mat-label> <div class="col d-flex" *ngIf="contact.get('contactType').value == dmpContactTypeEnum.Internal">
<app-single-auto-complete [formControl]="contact.get('userId')" [hidePlaceholder]="true" [configuration]= "userService.singleAutocompleteConfiguration"></app-single-auto-complete> <mat-form-field class="w-100">
<mat-error *ngIf="contact.get('userId').hasError('backendError')">{{contact.get('userId').getError('backendError').message}}</mat-error> <mat-label>{{'DMP-EDITOR.FIELDS1.USER' | translate}}</mat-label>
<mat-error *ngIf="contact.get('userId').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <app-single-auto-complete [formControl]="contact.get('userId')" [hidePlaceholder]="true" [configuration]="userService.singleAutocompleteConfiguration"></app-single-auto-complete>
</mat-form-field> <mat-error *ngIf="contact.get('userId').hasError('backendError')">{{contact.get('userId').getError('backendError').message}}</mat-error>
</div> <mat-error *ngIf="contact.get('userId').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
<div class="col-auto d-flex" *ngIf="contact.get('contactType').value == dmpContactTypeEnum.External"> </mat-form-field>
<div class="col"> </div>
<mat-form-field class="w-100"> <ng-container *ngIf="contact.get('contactType').value == dmpContactTypeEnum.External">
<mat-label>{{'DMP-EDITOR.FIELDS1.FIRST-NAME' | translate}}</mat-label> <div class="col">
<input matInput type="text" name="firstName" [formControl]="contact.get('firstName')"> <mat-form-field class="w-100">
<mat-error *ngIf="contact.get('firstName').hasError('backendError')">{{contact.get('firstName').getError('backendError').message}}</mat-error> <mat-label>{{'DMP-EDITOR.FIELDS1.FIRST-NAME' | translate}}</mat-label>
<mat-error *ngIf="contact.get('firstName').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <input matInput type="text" name="firstName" [formControl]="contact.get('firstName')">
</mat-form-field> <mat-error *ngIf="contact.get('firstName').hasError('backendError')">{{contact.get('firstName').getError('backendError').message}}</mat-error>
</div> <mat-error *ngIf="contact.get('firstName').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
<div class="col"> </mat-form-field>
<mat-form-field class="w-100"> </div>
<mat-label>{{'DMP-EDITOR.FIELDS1.LAST-NAME' | translate}}</mat-label> <div class="col">
<input matInput type="text" name="lastName" [formControl]="contact.get('lastName')"> <mat-form-field class="w-100">
<mat-error *ngIf="contact.get('lastName').hasError('backendError')">{{contact.get('lastName').getError('backendError').message}}</mat-error> <mat-label>{{'DMP-EDITOR.FIELDS1.LAST-NAME' | translate}}</mat-label>
<mat-error *ngIf="contact.get('lastName').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <input matInput type="text" name="lastName" [formControl]="contact.get('lastName')">
</mat-form-field> <mat-error *ngIf="contact.get('lastName').hasError('backendError')">{{contact.get('lastName').getError('backendError').message}}</mat-error>
</div> <mat-error *ngIf="contact.get('lastName').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
<div class="col"> </mat-form-field>
<mat-form-field class="w-100"> </div>
<mat-label>{{'DMP-EDITOR.FIELDS1.EMAIL' | translate}}</mat-label> <div class="col">
<input matInput type="text" name="email" [formControl]="contact.get('email')"> <mat-form-field class="w-100">
<mat-error *ngIf="contact.get('email').hasError('backendError')">{{contact.get('email').getError('backendError').message}}</mat-error> <mat-label>{{'DMP-EDITOR.FIELDS1.EMAIL' | translate}}</mat-label>
<mat-error *ngIf="contact.get('email').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <input matInput type="text" name="email" [formControl]="contact.get('email')">
</mat-form-field> <mat-error *ngIf="contact.get('email').hasError('backendError')">{{contact.get('email').getError('backendError').message}}</mat-error>
<mat-error *ngIf="contact.get('email').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field>
</div>
</ng-container>
</div> </div>
</div> </div>
<button mat-icon-button class="action-list-icon" matTooltip="{{'DMP-EDITOR.FIELDS.REMOVE-CONTACT' | translate}}" (click)="removeContact(contactIndex)" [disabled]="formGroup.disabled"> <div class="col-auto">
<mat-icon>delete</mat-icon> <button mat-icon-button class="action-list-icon" matTooltip="{{'DMP-EDITOR.FIELDS.REMOVE-CONTACT' | translate}}" (click)="removeContact(contactIndex)" [disabled]="formGroup.disabled">
</button> <mat-icon>delete</mat-icon>
</button>
</div>
</div> </div>
<mat-error *ngIf="formGroup.get('properties').get('contacts').hasError('backendError')">{{formGroup.get('properties').get('contacts').getError('backendError').message}}</mat-error> <mat-error *ngIf="formGroup.get('properties').get('contacts').hasError('backendError')">{{formGroup.get('properties').get('contacts').getError('backendError').message}}</mat-error>
<mat-error *ngIf="formGroup.get('properties').get('contacts').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('properties').get('contacts').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</div> </div>
<div class="row">
<div class="col">
<button mat-icon-button (click)="addContact()" [disabled]="formGroup.disabled">
<mat-icon>add</mat-icon>
</button>
</div>
</div>
</div> </div>
<div *ngIf="field.systemFieldType == dmpBlueprintSystemFieldTypeEnum.ACCESS_RIGHTS"> <div *ngIf="field.systemFieldType == dmpBlueprintSystemFieldTypeEnum.ACCESS_RIGHTS">
<mat-form-field class="w-100"> <mat-form-field class="w-100">
@ -252,55 +258,56 @@
<mat-error *ngIf="formGroup.get('accessType').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="formGroup.get('accessType').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field> </mat-form-field>
</div> </div>
<div *ngIf="field.category === dmpBlueprintSectionFieldCategoryEnum.EXTRA"> <div *ngIf="field.category === dmpBlueprintSectionFieldCategoryEnum.EXTRA">
<div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.TEXT"> <div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.TEXT">
<mat-form-field class="w-100"> <mat-form-field class="w-100">
<input matInput placeholder="{{field.placeholder}}" type="text" name="value" [formControl]="formGroup.get('extraFields').get(getExtraFieldIndex(field.id)).get('value')" [required]="field.required"> <input matInput placeholder="{{field.placeholder}}" type="text" name="value" [formControl]="formGroup.get('extraFields').get(getExtraFieldIndex(field.id)).get('value')" [required]="field.required">
</mat-form-field> </mat-form-field>
</div> </div>
<div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.RICH_TEXT"> <div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.RICH_TEXT">
<ng-container formArrayName="extraFields"> <ng-container formArrayName="extraFields">
<ng-container *ngFor="let control of extraFieldsArray().controls; let extraFieldIndex = index;"> <ng-container *ngFor="let control of extraFieldsArray().controls; let extraFieldIndex = index;">
<ng-container [formGroupName]="extraFieldIndex"> <ng-container [formGroupName]="extraFieldIndex">
<ng-container *ngIf="control.get('id').value === field.id"> <ng-container *ngIf="control.get('id').value === field.id">
<rich-text-editor-component [form]="control.get('value')" [placeholder]="field.placeholder" [required]="field.required"> <rich-text-editor-component [form]="control.get('value')" [placeholder]="field.placeholder" [required]="field.required">
</rich-text-editor-component> </rich-text-editor-component>
</ng-container>
</ng-container> </ng-container>
</ng-container> </ng-container>
</ng-container> </ng-container>
</ng-container> </div>
</div> <div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.DATE">
<div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.DATE"> <mat-form-field class="w-100">
<mat-form-field class="w-100"> <input matInput placeholder="{{field.placeholder}}" type="date" name="value" [formControl]="formGroup.get('extraFields').get(getExtraFieldIndex(field.id)).get('value')" [required]="field.required">
<input matInput placeholder="{{field.placeholder}}" type="date" name="value" [formControl]="formGroup.get('extraFields').get(getExtraFieldIndex(field.id)).get('value')" [required]="field.required"> </mat-form-field>
</mat-form-field> </div>
</div> <div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.NUMBER">
<div *ngIf="field.dataType === dmpBlueprintExtraFieldDataTypeEnum.NUMBER"> <mat-form-field class="w-100">
<mat-form-field class="w-100"> <input matInput placeholder="{{field.placeholder}}" type="number" name="value" [formControl]="formGroup.get('extraFields').get(getExtraFieldIndex(field.id)).get('value')" [required]="field.required">
<input matInput placeholder="{{field.placeholder}}" type="number" name="value" [formControl]="formGroup.get('extraFields').get(getExtraFieldIndex(field.id)).get('value')" [required]="field.required"> </mat-form-field>
</mat-form-field> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="col-12 card" *ngIf="section.hasTemplates">
<div class="col-12 card" *ngIf="section.hasTemplates"> {{formGroup.get('descriptionTemplates').get(section.id).value | json}}
{{formGroup.get('descriptionTemplates').get(section.id).value | json}} <div class="row">
<div class="row"> <div class="col-12">
<div class="col-12"> <div class="input-form">
<div class="input-form"> <div class="heading">{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES' | translate}}</div>
<div class="heading">{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES' | translate}}</div> <mat-form-field class="w-100">
<mat-form-field class="w-100"> <mat-label>{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES-HINT' | translate}}</mat-label>
<mat-label>{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES-HINT' | translate}}</mat-label> <app-multiple-auto-complete placeholder="{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES-HINT' | translate}}" [hidePlaceholder]="true" required='true' [formControl]="formGroup.get('descriptionTemplates').get(section.id)" [configuration]="descriptionTemplateService.descriptionTempalteGroupMultipleAutocompleteConfiguration" (optionRemoved)="onRemoveDescriptionTemplate($event, i)" (optionActionClicked)="onPreviewDescriptionTemplate($event, i)" (optionSelected)="onDescriptionTemplateSelected($event, i)">
<app-multiple-auto-complete placeholder="{{'DMP-EDITOR.FIELDS.DESCRIPTION-TEMPLATES-HINT' | translate}}" [hidePlaceholder]="true" required='true' [formControl]="formGroup.get('descriptionTemplates').get(section.id)" [configuration]="descriptionTemplateService.descriptionTempalteGroupMultipleAutocompleteConfiguration" (optionRemoved)="onRemoveDescriptionTemplate($event, i)" (optionActionClicked)="onPreviewDescriptionTemplate($event, i)" (optionSelected)="onDescriptionTemplateSelected($event, i)"> </app-multiple-auto-complete>
</app-multiple-auto-complete> <mat-error *ngIf="formGroup.get('descriptionTemplates').get(section.id).hasError('backendError')">{{formGroup.get('descriptionTemplates').get(section.id).getError('backendError').message}}</mat-error>
<mat-error *ngIf="formGroup.get('descriptionTemplates').get(section.id).hasError('backendError')">{{formGroup.get('descriptionTemplates').get(section.id).getError('backendError').message}}</mat-error> <mat-error *ngIf="formGroup.get('descriptionTemplates').get(section.id).hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
<mat-error *ngIf="formGroup.get('descriptionTemplates').get(section.id).hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> </mat-form-field>
</mat-form-field> <div class="col pl-0 pt-0 pb-0 d-flex">
<div class="col pl-0 pt-0 pb-0 d-flex"> <span class="not-found-template">{{'DMP-EDITOR.NO-TEMPLATE-MESSAGE' | translate}}</span>
<span class="not-found-template">{{'DMP-EDITOR.NO-TEMPLATE-MESSAGE' | translate}}</span> </div>
</div> </div>
</div> </div>
</div> </div>
@ -312,5 +319,4 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>

View File

@ -5,6 +5,7 @@
<mat-error *ngIf="form.hasError('backendError')">{{form.getError('backendError').message}}</mat-error> <mat-error *ngIf="form.hasError('backendError')">{{form.getError('backendError').message}}</mat-error>
<mat-error *ngIf="form.hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> <mat-error *ngIf="form.hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field> </mat-form-field>
{{form.errors | json}}
<div class="mb-4"> <div class="mb-4">
<span *ngIf="!form.disabled" class="not-found">{{'REFERENCE-FIELD.COULD-NOT-FIND-MESSAGE' | translate}}</span> <span *ngIf="!form.disabled" class="not-found">{{'REFERENCE-FIELD.COULD-NOT-FIND-MESSAGE' | translate}}</span>
<span *ngIf="!form.disabled" class="insert-manually" (click)="addReference($event)">{{'REFERENCE-FIELD.ACTIONS.INSERT-MANUALLY' | translate}}</span> <span *ngIf="!form.disabled" class="insert-manually" (click)="addReference($event)">{{'REFERENCE-FIELD.ACTIONS.INSERT-MANUALLY' | translate}}</span>