diff --git a/src/components/dashboard/dashboard-shell.tsx b/src/components/dashboard/dashboard-shell.tsx
index fed8e84..3ee9ff0 100644
--- a/src/components/dashboard/dashboard-shell.tsx
+++ b/src/components/dashboard/dashboard-shell.tsx
@@ -18,14 +18,12 @@ import {
Button,
Card,
CardContent,
- Checkbox,
Chip,
Container,
Dialog,
DialogActions,
DialogContent,
DialogTitle,
- FormControlLabel,
IconButton,
MenuItem,
Stack,
@@ -1260,6 +1258,11 @@ export function DashboardShell({
return;
}
+ if (orgaSettingsDraft.requiredApprovalTypes.length === 0) {
+ setMessage({ type: "error", text: "Bitte mindestens eine Freigaberolle auswählen." });
+ return;
+ }
+
await runAction(async () => {
await parseResponse(
await fetch("/api/settings", {
@@ -1268,7 +1271,8 @@ export function DashboardShell({
"Content-Type": "application/json"
},
body: JSON.stringify({
- approvalThreshold: nextThreshold
+ approvalThreshold: nextThreshold,
+ requiredApprovalTypes: orgaSettingsDraft.requiredApprovalTypes
})
})
);
@@ -1482,7 +1486,7 @@ export function DashboardShell({
value: ApprovalPermissionValue[],
onToggle: (approvalType: ApprovalPermissionValue) => void,
helperText: string,
- availableApprovalTypes: ApprovalPermissionValue[]
+ availableApprovalTypes: readonly ApprovalPermissionValue[]
) {
return (
@@ -2297,8 +2301,18 @@ export function DashboardShell({
helperText={`Aktuell: ${approvalThreshold.toFixed(2)} EUR`}
fullWidth
/>
+ {renderApprovalPermissionSelector(
+ orgaSettingsDraft.requiredApprovalTypes,
+ (approvalType) =>
+ setOrgaSettingsDraft((current) => ({
+ ...current,
+ requiredApprovalTypes: toggleApprovalPermission(current.requiredApprovalTypes, approvalType)
+ })),
+ "Diese Rollen müssen schwellenpflichtige Ausgaben bestätigen. AG-Mitglieder können nicht freigeben.",
+ APPROVAL_FLOW
+ )}
@@ -2911,37 +2925,10 @@ export function DashboardShell({
-