feat(admin): configure system navigation defaults

This commit is contained in:
2026-08-20 01:47:03 +02:00
parent 8a75c82a5d
commit a1d7b649aa
5 changed files with 60 additions and 6 deletions
@@ -5,7 +5,7 @@ import { Card } from "@govoplan/core-webui";
import { FormField } from "@govoplan/core-webui";
import { ToggleSwitch } from "@govoplan/core-webui";
import { fetchSystemSettingsDelta, updateSystemSettings, type LanguagePackage, type PrivacyRetentionLimitPermissions, type PrivacyRetentionPolicy, type SystemSettingsDeltaSections, type SystemSettingsItem } from "../../api/admin";
import { AdminPageLayout, AdminSelectionList, DocumentationHelpLink, adminErrorMessage, useDeltaWatermarks, useUnsavedDraftGuard } from "@govoplan/core-webui";
import { AdminPageLayout, AdminSelectionList, DocumentationHelpLink, NavigationPreferenceEditor, adminErrorMessage, configurableNavigationItemsForModules, dispatchPlatformModulesChanged, useDeltaWatermarks, usePlatformModules, useUnsavedDraftGuard } from "@govoplan/core-webui";
import { ADMIN_GOVERNANCE_DOCUMENTATION, ADMIN_INTERFACE_I18N, mutationDisabledReason } from "./interfacePatterns";
const DELTA_KEY = "admin:system-settings";
@@ -43,10 +43,13 @@ const fallback: SystemSettingsItem = {
{ code: "en", label: "English", native_label: "English" }
],
enabled_language_codes: ["de", "en"],
settings: {}
settings: {},
navigation: null
};
export default function SystemSettingsPanel({ settings, canWrite, canAccessMaintenance }: {settings: ApiSettings;canWrite: boolean;canAccessMaintenance: boolean;}) {
const modules = usePlatformModules();
const navigationItems = configurableNavigationItemsForModules(modules);
const [draft, setDraft] = useState<SystemSettingsItem>(fallback);
const [savedDraft, setSavedDraft] = useState<SystemSettingsItem>(fallback);
const [loading, setLoading] = useState(true);
@@ -102,11 +105,13 @@ export default function SystemSettingsPanel({ settings, canWrite, canAccessMaint
allow_tenant_api_keys: draft.allow_tenant_api_keys,
maintenance_mode: draft.maintenance_mode,
available_languages: draft.available_languages,
enabled_language_codes: draft.enabled_language_codes
enabled_language_codes: draft.enabled_language_codes,
navigation: draft.navigation
});
setDraft(saved);
setSavedDraft(saved);
resetDeltaWatermark(DELTA_KEY);
dispatchPlatformModulesChanged();
setSuccess("i18n:govoplan-admin.system_settings_saved.dac4f17b");
return true;
} catch (err) {setError(adminErrorMessage(err));return false;} finally
@@ -187,6 +192,15 @@ export default function SystemSettingsPanel({ settings, canWrite, canAccessMaint
</div>
<p className="muted small-note">i18n:govoplan-admin.these_settings_are_enforced_by_the_backend_centr.8112ed6f</p>
</Card>
<Card title="System navigation order">
<NavigationPreferenceEditor
items={navigationItems}
value={draft.navigation}
onChange={(navigation) => setDraft({ ...draft, navigation })}
scope="system"
disabled={!canWrite || busy}
/>
</Card>
<Card title="i18n:govoplan-admin.maintenance_mode.98cca5c6">
<div className="settings-list">
<ToggleSwitch
@@ -232,7 +246,8 @@ function systemSettingsDraftKey(item: SystemSettingsItem): string {
allow_tenant_api_keys: item.allow_tenant_api_keys,
maintenance_mode: item.maintenance_mode,
available_languages: item.available_languages,
enabled_language_codes: item.enabled_language_codes
enabled_language_codes: item.enabled_language_codes,
navigation: item.navigation
});
}
@@ -244,6 +259,7 @@ function applySystemSettingsSections(item: SystemSettingsItem, sections: SystemS
...(sections.languages ?? {}),
...(sections.privacy_retention_policy ? { privacy_retention_policy: sections.privacy_retention_policy } : {}),
...(sections.maintenance_mode ? { maintenance_mode: sections.maintenance_mode } : {}),
...(sections.navigation !== undefined ? { navigation: sections.navigation } : {}),
...(sections.settings ? { settings: sections.settings } : {})
};
}