From 6be343cccfa43a841e931ff32d2014ed14e09870 Mon Sep 17 00:00:00 2001 From: Kristof De Langhe Date: Thu, 1 Dec 2022 13:07:19 +0100 Subject: [PATCH] 97075: Margin fixes + metadata field autofocus and validation --- .../dso-edit-metadata.component.html | 31 ++++++++------- .../dso-edit-metadata.component.ts | 18 ++++++++- .../metadata-field-selector.component.html | 5 ++- .../metadata-field-selector.component.ts | 38 ++++++++++++++++--- 4 files changed, 69 insertions(+), 23 deletions(-) diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html index 27cf706a1a..4154a9ce56 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html @@ -1,18 +1,18 @@
-
+
- - -
- +
-
+
@@ -44,16 +44,19 @@
- - -
@@ -109,15 +112,15 @@
-
+
- - - diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts index 5f837e1b80..97f34ba2a3 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.ts @@ -1,7 +1,7 @@ -import { Component, Injector, Input, OnDestroy, OnInit } from '@angular/core'; +import { Component, Injector, Input, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { AlertType } from '../../shared/alert/aletr-type'; import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { DsoEditMetadataChangeType, DsoEditMetadataForm } from './dso-edit-metadata-form'; +import { DsoEditMetadataChangeType, DsoEditMetadataForm, DsoEditMetadataValue } from './dso-edit-metadata-form'; import { map, switchMap } from 'rxjs/operators'; import { ActivatedRoute, Data } from '@angular/router'; import { combineLatest as observableCombineLatest } from 'rxjs/internal/observable/combineLatest'; @@ -23,6 +23,7 @@ import { ResourceType } from '../../core/shared/resource-type'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { TranslateService } from '@ngx-translate/core'; import { DataService } from '../../core/data/data.service'; +import { MetadataFieldSelectorComponent } from './metadata-field-selector/metadata-field-selector.component'; @Component({ selector: 'ds-dso-edit-metadata', @@ -31,6 +32,7 @@ import { DataService } from '../../core/data/data.service'; }) export class DsoEditMetadataComponent implements OnInit, OnDestroy { @Input() dso: DSpaceObject; + @ViewChild(MetadataFieldSelectorComponent) metadataFieldSelectorComponent: MetadataFieldSelectorComponent; updateDataService: UpdateDataService; dsoType: string; @@ -41,6 +43,7 @@ export class DsoEditMetadataComponent implements OnInit, OnDestroy { hasChanges: boolean; isEmpty: boolean; saving$: BehaviorSubject = new BehaviorSubject(false); + loadingFieldValidation$: BehaviorSubject = new BehaviorSubject(false); /** * The AlertType enumeration for access in the component's template @@ -120,6 +123,17 @@ export class DsoEditMetadataComponent implements OnInit, OnDestroy { }); } + setMetadataField() { + this.loadingFieldValidation$.next(true); + this.metadataFieldSelectorComponent.validate().subscribe((valid) => { + this.loadingFieldValidation$.next(false); + if (valid) { + this.form.setMetadataField(this.newMdField); + this.onValueSaved(); + } + }); + } + add(): void { this.newMdField = undefined; this.form.add(); diff --git a/src/app/dso-shared/dso-edit-metadata/metadata-field-selector/metadata-field-selector.component.html b/src/app/dso-shared/dso-edit-metadata/metadata-field-selector/metadata-field-selector.component.html index d2761e52a6..2a69c21188 100644 --- a/src/app/dso-shared/dso-edit-metadata/metadata-field-selector/metadata-field-selector.component.html +++ b/src/app/dso-shared/dso-edit-metadata/metadata-field-selector/metadata-field-selector.component.html @@ -1,11 +1,12 @@
- +
Invalid metadata field, please pick an existing one from the suggestions when searching