From 969c31ae19f4d8ddafbe837ea23eb9dba95ff244 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Thu, 23 Mar 2023 14:37:45 +0100
Subject: [PATCH] feat: select component: add error message

refs #609
---
 .../components/generic-select/generic-select.component.html | 3 +++
 src/app/components/results-chart/chart-type.component.ts    | 4 ++++
 .../select-field-line/select-field-line.component.ts        | 6 ++++++
 src/app/formulaire/elements/select/select-field.ts          | 6 +++++-
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html
index 0a75a714e..68c4dfa09 100644
--- a/src/app/components/generic-select/generic-select.component.html
+++ b/src/app/components/generic-select/generic-select.component.html
@@ -23,3 +23,6 @@
 <div *ngIf="messageWhenEmpty" class="message-when-empty">
     {{ messageWhenEmpty }}
 </div>
+<div *ngIf="errorMessage" class="message-when-empty">
+    {{ errorMessage }}
+</div>
diff --git a/src/app/components/results-chart/chart-type.component.ts b/src/app/components/results-chart/chart-type.component.ts
index 123657c51..01b12a2a4 100644
--- a/src/app/components/results-chart/chart-type.component.ts
+++ b/src/app/components/results-chart/chart-type.component.ts
@@ -53,6 +53,10 @@ export class ChartTypeSelectComponent implements IObservable {
         return this._select.messageWhenEmpty;
     }
 
+    public get errorMessage(): string {
+        return undefined;
+    }
+
     public get enableHelpButton(): boolean {
         return false;
     }
diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts
index 7c4b067ef..7142ef870 100644
--- a/src/app/components/select-field-line/select-field-line.component.ts
+++ b/src/app/components/select-field-line/select-field-line.component.ts
@@ -45,6 +45,12 @@ export class SelectFieldLineComponent implements OnInit {
         return this._select.messageWhenEmpty;
     }
 
+    public get errorMessage(): string {
+        if (this._select.errorMessage !== undefined) {
+            return this.i18nService.localizeMessage(this._select.errorMessage);
+        }
+    }
+
     protected entryLabel(entry: SelectEntry): string {
         return decodeHtml(entry.label);
     }
diff --git a/src/app/formulaire/elements/select/select-field.ts b/src/app/formulaire/elements/select/select-field.ts
index 2ecfdfa75..cb0dce965 100644
--- a/src/app/formulaire/elements/select/select-field.ts
+++ b/src/app/formulaire/elements/select/select-field.ts
@@ -4,7 +4,7 @@ import { arraysAreEqual } from "../../../util/util";
 import { FormulaireNode } from "../formulaire-node";
 import { ServiceFactory } from "app/services/service-factory";
 import { FormulaireDefinition } from "../../definition/form-definition";
-import { enumValueFromString, Nub } from "jalhyd";
+import { enumValueFromString, Message, Nub } from "jalhyd";
 
 export abstract class SelectField extends Field {
 
@@ -301,6 +301,10 @@ export abstract class SelectField extends Field {
         return msg;
     }
 
+    public get errorMessage(): Message {
+        return undefined;
+    }
+
     public get multiple(): boolean {
         return this._multiple;
     }
-- 
GitLab