diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html
index 86db0afdf0..5bf1b7c49a 100644
--- a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html
+++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html
@@ -1,40 +1,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts
index 371379b611..ed75b78c66 100644
--- a/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts
+++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts
@@ -3,13 +3,13 @@ import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
+ EventEmitter,
Input,
OnChanges,
OnDestroy,
- OnInit,
+ Output,
SimpleChanges,
} from '@angular/core'
-import { FormControl } from '@angular/forms'
import {
AutocompleteComponent,
DropdownSelectorComponent,
@@ -58,10 +58,9 @@ import { map } from 'rxjs/operators'
SortableListComponent,
],
})
-export class FormFieldContactsComponent
- implements OnInit, OnDestroy, OnChanges
-{
- @Input() control: FormControl
+export class FormFieldContactsComponent implements OnDestroy, OnChanges {
+ @Input() value: Individual[]
+ @Output() valueChange: EventEmitter = new EventEmitter()
contacts: Individual[] = []
contactsAsDynElem: DynamicElement[] = []
@@ -82,32 +81,31 @@ export class FormFieldContactsComponent
this.allUsers$ = this.platformServiceInterface.getUsers()
}
- ngOnChanges(changes: SimpleChanges): void {
- console.log(changes['control'])
- }
+ async ngOnChanges(changes: SimpleChanges): Promise {
+ const contactsChanges = changes['value']
- async ngOnInit(): Promise {
- this.allOrganizations = new Map(
- (
- await firstValueFrom(this.organizationsServiceInterface.organisations$)
- ).map((organization) => [organization.name, organization])
- )
+ if (contactsChanges.firstChange) {
+ this.allOrganizations = new Map(
+ (
+ await firstValueFrom(
+ this.organizationsServiceInterface.organisations$
+ )
+ ).map((organization) => [organization.name, organization])
+ )
+ }
- this.updateContacts()
+ if (contactsChanges.currentValue !== contactsChanges.previousValue) {
+ const contacts = contactsChanges.currentValue
+ console.log(contacts)
- this.changeDetectorRef.markForCheck()
+ this.updateContacts()
- this.subscription.add(
- this.control.valueChanges.subscribe((contacts) => {
- console.log('new contacts (valueChange): ', contacts)
- this.updateContacts()
- this.changeDetectorRef.markForCheck()
- })
- )
+ this.changeDetectorRef.markForCheck()
+ }
}
updateContacts() {
- this.contacts = this.control.value.reduce((acc, contact) => {
+ this.contacts = this.value.reduce((acc, contact) => {
const completeOrganization = this.allOrganizations.get(
contact.organization.name
)
@@ -124,7 +122,7 @@ export class FormFieldContactsComponent
return acc
}, [] as Individual[])
- this.contactsAsDynElem = this.control.value.reduce((acc, contact) => {
+ this.contactsAsDynElem = this.value.reduce((acc, contact) => {
const completeOrganization = this.allOrganizations.get(
contact.organization.name
)
@@ -152,18 +150,12 @@ export class FormFieldContactsComponent
this.changeDetectorRef.markForCheck()
}
- removeContact() {
- this.control.setValue([])
- }
-
handleContactsChanged(event: DynamicElement[]) {
const newContactsOrdered = event.map(
(contactAsDynElem) => contactAsDynElem.inputs['contact']
) as Individual[]
- console.log('newContactsOrdered :', newContactsOrdered)
-
- this.control.setValue(newContactsOrdered)
+ this.valueChange.emit(newContactsOrdered)
}
/**
@@ -193,7 +185,7 @@ export class FormFieldContactsComponent
* gn-ui-autocomplete
*/
addContact(contact: UserModel) {
- const newContacts = {
+ const newContact = {
firstName: contact.name ?? '',
lastName: contact.surname ?? '',
organization:
@@ -206,9 +198,7 @@ export class FormFieldContactsComponent
position: '',
} as Individual
- const newControlValue = [...this.control.value, newContacts]
-
- this.control.setValue(newControlValue)
+ this.valueChange.emit([...this.value, newContact])
}
ngOnDestroy(): void {
diff --git a/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html b/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html
index 00e4f87667..a303aa2c93 100644
--- a/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html
+++ b/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html
@@ -122,10 +122,11 @@
(valueChange)="valueChange.emit($event)"
>
-
-
-
+
+
+
diff --git a/translations/de.json b/translations/de.json
index 24b74e605d..38b8ea9523 100644
--- a/translations/de.json
+++ b/translations/de.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "",
"editor.record.form.classification.opendata": "",
"editor.record.form.field.abstract": "Kurzbeschreibung",
+ "editor.record.form.field.contacts.noContact": "",
"editor.record.form.field.contactsForResource.noContact": "",
"editor.record.form.field.keywords": "Schlagwörter",
"editor.record.form.field.license": "Lizenz",
diff --git a/translations/en.json b/translations/en.json
index ce7750795b..57643c9fd1 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "Previous",
"editor.record.form.classification.opendata": "Open Data",
"editor.record.form.field.abstract": "Abstract",
+ "editor.record.form.field.contacts.noContact": "Please provide at least one point of contact.",
"editor.record.form.field.contactsForResource.noContact": "Please provide at least one point of contact responsible for the data.",
"editor.record.form.field.keywords": "Keywords",
"editor.record.form.field.license": "License",
diff --git a/translations/es.json b/translations/es.json
index e708c32ec0..6f87aa7c9d 100644
--- a/translations/es.json
+++ b/translations/es.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "",
"editor.record.form.classification.opendata": "",
"editor.record.form.field.abstract": "",
+ "editor.record.form.field.contacts.noContact": "",
"editor.record.form.field.contactsForResource.noContact": "",
"editor.record.form.field.keywords": "",
"editor.record.form.field.license": "",
diff --git a/translations/fr.json b/translations/fr.json
index 42a4944787..9062405511 100644
--- a/translations/fr.json
+++ b/translations/fr.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "Précédent",
"editor.record.form.classification.opendata": "Données ouvertes",
"editor.record.form.field.abstract": "Résumé",
+ "editor.record.form.field.contacts.noContact": "Veuillez renseigner au moins un point de contact.",
"editor.record.form.field.contactsForResource.noContact": "Veuillez renseigner au moins un point de contact responsable de la donnée.",
"editor.record.form.field.keywords": "Mots-clés",
"editor.record.form.field.license": "Licence",
diff --git a/translations/it.json b/translations/it.json
index 1f87f83ac5..6508983d02 100644
--- a/translations/it.json
+++ b/translations/it.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "",
"editor.record.form.classification.opendata": "",
"editor.record.form.field.abstract": "",
+ "editor.record.form.field.contacts.noContact": "",
"editor.record.form.field.contactsForResource.noContact": "",
"editor.record.form.field.keywords": "",
"editor.record.form.field.license": "Licenza",
diff --git a/translations/nl.json b/translations/nl.json
index c5895c20c4..d6ab9c4d22 100644
--- a/translations/nl.json
+++ b/translations/nl.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "",
"editor.record.form.classification.opendata": "",
"editor.record.form.field.abstract": "",
+ "editor.record.form.field.contacts.noContact": "",
"editor.record.form.field.contactsForResource.noContact": "",
"editor.record.form.field.keywords": "",
"editor.record.form.field.license": "",
diff --git a/translations/pt.json b/translations/pt.json
index 64c5b7975d..58f0dd7185 100644
--- a/translations/pt.json
+++ b/translations/pt.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "",
"editor.record.form.classification.opendata": "",
"editor.record.form.field.abstract": "",
+ "editor.record.form.field.contacts.noContact": "",
"editor.record.form.field.contactsForResource.noContact": "",
"editor.record.form.field.keywords": "",
"editor.record.form.field.license": "",
diff --git a/translations/sk.json b/translations/sk.json
index 3911e28e0e..c71d528ab3 100644
--- a/translations/sk.json
+++ b/translations/sk.json
@@ -206,6 +206,7 @@
"editor.record.form.bottomButtons.previous": "",
"editor.record.form.classification.opendata": "",
"editor.record.form.field.abstract": "",
+ "editor.record.form.field.contacts.noContact": "",
"editor.record.form.field.contactsForResource.noContact": "",
"editor.record.form.field.keywords": "",
"editor.record.form.field.license": "Licencia",