diff --git a/legalconsenthub/components/FormEngine.vue b/legalconsenthub/components/FormEngine.vue
index e56ae05..2ef190c 100644
--- a/legalconsenthub/components/FormEngine.vue
+++ b/legalconsenthub/components/FormEngine.vue
@@ -26,6 +26,7 @@ function getResolvedComponent(formElement: FormElementDto) {
case 'CHECKBOX':
case 'DROPDOWN':
case 'RADIOBUTTON':
+ return resolveComponent('TheRadioGroup')
case 'SWITCH':
return resolveComponent('TheSwitch')
case 'TEXTFIELD':
diff --git a/legalconsenthub/components/formelements/TheInput.vue b/legalconsenthub/components/formelements/TheInput.vue
index 132db2f..e08650c 100644
--- a/legalconsenthub/components/formelements/TheInput.vue
+++ b/legalconsenthub/components/formelements/TheInput.vue
@@ -1,14 +1,29 @@
-
-
+
+
diff --git a/legalconsenthub/components/formelements/TheRadioGroup.vue b/legalconsenthub/components/formelements/TheRadioGroup.vue
new file mode 100644
index 0000000..7c4a3ef
--- /dev/null
+++ b/legalconsenthub/components/formelements/TheRadioGroup.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
diff --git a/legalconsenthub/composables/useApplicationFormValidator.ts b/legalconsenthub/composables/useApplicationFormValidator.ts
index 155b71d..7543733 100644
--- a/legalconsenthub/composables/useApplicationFormValidator.ts
+++ b/legalconsenthub/composables/useApplicationFormValidator.ts
@@ -2,9 +2,19 @@ import { ComplianceStatus, type FormElementDto } from '~/.api-client'
import { complianceCheckableElementTypes, complianceMap } from './complianceMap'
import type { FormElementId } from '~/types/FormElement'
+const formElementComplianceMap = ref(new Map())
+
export function useApplicationFormValidator() {
+ function getHighestComplianceStatus(): ComplianceStatus {
+ const complianceStatusValues = Array.from(formElementComplianceMap.value.values())
+ const highestComplianceNumber = Math.max(
+ ...complianceStatusValues.map((complianceStatus) => Object.values(ComplianceStatus).indexOf(complianceStatus))
+ )
+ return Object.values(ComplianceStatus)[highestComplianceNumber]
+ }
+
function validateFormElements(formElements: FormElementDto[]): Map {
- const formElementComplianceMap = new Map()
+ formElementComplianceMap.value.clear()
formElements.forEach((formElement) => {
if (!complianceCheckableElementTypes.includes(formElement.type)) return
@@ -12,7 +22,7 @@ export function useApplicationFormValidator() {
// Reset any previously set compliance status when all options are false
const hasAtLeastOneOptionSet = formElement.options.some((option) => option.value && option.value !== 'false')
if (!hasAtLeastOneOptionSet) {
- formElementComplianceMap.delete(formElement.id)
+ // No value set, continue with next form element
return
}
@@ -22,26 +32,31 @@ export function useApplicationFormValidator() {
return
}
+ // Value not set to true, continue with next option
+ if (option.value === 'false') {
+ return
+ }
+
const currentHighestComplianceStatus =
complianceMap?.get(option.processingPurpose)?.get(option.employeeDataCategory) ?? ComplianceStatus.NonCritical
const currentHighestComplianceStatusPos =
Object.values(ComplianceStatus).indexOf(currentHighestComplianceStatus)
- if (formElementComplianceMap.has(formElement.id)) {
- const newComplianceStatus = formElementComplianceMap.get(formElement.id)!
+ if (formElementComplianceMap.value.has(formElement.id)) {
+ const newComplianceStatus = formElementComplianceMap.value.get(formElement.id)!
const newComplianceStatusPos = Object.values(ComplianceStatus).indexOf(newComplianceStatus)
if (newComplianceStatusPos > currentHighestComplianceStatusPos) {
- formElementComplianceMap.set(formElement.id, newComplianceStatus)
+ formElementComplianceMap.value.set(formElement.id, newComplianceStatus)
}
} else {
- formElementComplianceMap.set(formElement.id, currentHighestComplianceStatus)
+ formElementComplianceMap.value.set(formElement.id, currentHighestComplianceStatus)
}
})
})
- return formElementComplianceMap
+ return formElementComplianceMap.value
}
- return { validateFormElements }
+ return { getHighestComplianceStatus, validateFormElements }
}
diff --git a/legalconsenthub/pages/create.vue b/legalconsenthub/pages/create.vue
index 0de4bcd..a81159d 100644
--- a/legalconsenthub/pages/create.vue
+++ b/legalconsenthub/pages/create.vue
@@ -33,12 +33,12 @@