@@ -120,9 +119,12 @@
Tjänst
{{avrop.tjanst}}
- Avser period
+ Startdatum
+
+
+
+ Slutdatum
- -
Deltar arbetssökande på distans?
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/franvaro-report/franvaro-report.validator.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/franvaro-report/franvaro-report.validator.ts
index b742122..4bbd21d 100644
--- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/franvaro-report/franvaro-report.validator.ts
+++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/deltagare-reports/franvaro-report/franvaro-report.validator.ts
@@ -1,5 +1,6 @@
import { AbstractControl, ValidatorFn } from '@angular/forms';
import { ANNAN_KAND_ORSAK_ID, ANNAN_ORSAK_ID } from '@msfa-constants/franvaro-reasons';
+import { CHARACTER_REGEX } from '@msfa-constants/regex';
import { Franvaro } from '@msfa-models/franvaro.model';
const TIME_REGEX = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;
@@ -36,11 +37,18 @@ export class FranvaroReportValidator {
...errors,
otherKnownReason: 'Känd orsak måste väljas',
};
- } else if (otherKnownReason === ANNAN_ORSAK_ID && !knownReasonComment) {
- errors = {
- ...errors,
- knownReasonComment: 'Beskrivning av frånvaro är obligatorisk',
- };
+ } else if (otherKnownReason === ANNAN_ORSAK_ID) {
+ if (!knownReasonComment) {
+ errors = {
+ ...errors,
+ knownReasonComment: 'Beskrivning av frånvaro är obligatorisk',
+ };
+ } else if (!CHARACTER_REGEX.test(knownReasonComment)) {
+ errors = {
+ ...errors,
+ knownReasonComment: 'Beskrivning av frånvaro har en ogiltig värde',
+ };
+ }
}
}
if (!date) {
diff --git a/apps/mina-sidor-fa/src/app/shared/constants/regex.ts b/apps/mina-sidor-fa/src/app/shared/constants/regex.ts
index 6949a19..03cbae6 100644
--- a/apps/mina-sidor-fa/src/app/shared/constants/regex.ts
+++ b/apps/mina-sidor-fa/src/app/shared/constants/regex.ts
@@ -1,2 +1,3 @@
export const EMAIL_REGEX = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
export const ISO_DATE_NO_TIME = /^\d{4}[-/\s]?((((0[13578])|(1[02]))[-/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[-/\s]?(([0-2][0-9])|(30)))|(02[-/\s]?[0-2][0-9]))$/;
+export const CHARACTER_REGEX = /\w/;
diff --git a/apps/mina-sidor-fa/src/app/shared/utils/mark-controls-as-dirty.util.ts b/apps/mina-sidor-fa/src/app/shared/utils/mark-controls-as-dirty.util.ts
new file mode 100644
index 0000000..5c5ace5
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/shared/utils/mark-controls-as-dirty.util.ts
@@ -0,0 +1,13 @@
+import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
+
+export function markControlsAsDirty(controls: AbstractControl[]): void {
+ controls.forEach(control => {
+ if (control instanceof FormControl) {
+ control.markAsDirty({ onlySelf: true });
+ } else if (control instanceof FormGroup) {
+ markControlsAsDirty(Object.values(control.controls));
+ } else if (control instanceof FormArray) {
+ markControlsAsDirty(control.controls);
+ }
+ });
+}
diff --git a/apps/mina-sidor-fa/src/app/shared/utils/validators/regex.validator.ts b/apps/mina-sidor-fa/src/app/shared/utils/validators/regex.validator.ts
new file mode 100644
index 0000000..446f63e
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/shared/utils/validators/regex.validator.ts
@@ -0,0 +1,15 @@
+import { AbstractControl, ValidatorFn } from '@angular/forms';
+import { CHARACTER_REGEX } from '@msfa-constants/regex';
+import { ValidationError } from '@msfa-models/validation-error.model';
+
+export function RegexValidator(regex = CHARACTER_REGEX, message = 'Ogiltig värde'): ValidatorFn {
+ return (control: AbstractControl): ValidationError => {
+ if (control && control.value) {
+ if (!regex.test(control.value)) {
+ return { invalid: message };
+ }
+ }
+
+ return null;
+ };
+}