Split Web App Settings into tabs; allow unset plugin Control mode
Web App: Settings is now two tabs — Personal settings (account, appearance, profile, privacy, advanced/danger) and Integrations (Toyota, Anker Solix). Panels use v-show so loaded state and in-flight edits survive a tab switch. Adds settings.tabs.* labels (en/pl/da). API Server panel: non-required select config fields now render a leading "Not set" option, so a superadmin can leave the Anker Solix Control mode (and Toyota Brand) unset at the global layer. Previously every option was a real value, forcing a pick that won the cascade and locked organizations and users out of choosing their own mode. The server side already treated an empty value as "abstain"; this closes the UI gap. Adds plugins.notSet label (en/pl/da) and rebuilds the embedded panel dist. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
318e9c1670
commit
8656aaaee3
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#2563eb" />
|
||||
<title>DriverVault · API Server</title>
|
||||
<script type="module" crossorigin src="/assets/index-frPmZHwa.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-D-rTgBao.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-D3MeNcl7.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -187,6 +187,9 @@ const healthClass = (s) =>
|
||||
{{ f.label || f.key }}<span v-if="f.required" class="text-danger"> *</span>
|
||||
</label>
|
||||
<select v-if="f.type === 'select'" v-model="drafts[p.name][f.key]" class="dh-select">
|
||||
<!-- A non-required select can be left unset (empty), so the global
|
||||
layer abstains and lower layers (org / user) may choose. -->
|
||||
<option v-if="!f.required" value="">{{ t("plugins.notSet") }}</option>
|
||||
<option v-for="o in f.options || []" :key="o.value" :value="o.value">
|
||||
{{ o.label || o.value }}
|
||||
</option>
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
"configure": "Konfigurer",
|
||||
"close": "Luk",
|
||||
"noConfig": "Dette plugin kræver ingen konfiguration.",
|
||||
"notSet": "Ikke angivet — lad organisationer og brugere vælge",
|
||||
"capabilities": "Funktioner",
|
||||
"saved": "Gemt.",
|
||||
"checking": "Tjekker…",
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
"configure": "Configure",
|
||||
"close": "Close",
|
||||
"noConfig": "This plugin takes no configuration.",
|
||||
"notSet": "Not set — let organizations and users choose",
|
||||
"capabilities": "Capabilities",
|
||||
"saved": "Saved.",
|
||||
"checking": "Checking…",
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
"configure": "Konfiguruj",
|
||||
"close": "Zamknij",
|
||||
"noConfig": "Ta wtyczka nie wymaga konfiguracji.",
|
||||
"notSet": "Nie ustawiono — pozwól organizacjom i użytkownikom wybrać",
|
||||
"capabilities": "Możliwości",
|
||||
"saved": "Zapisano.",
|
||||
"checking": "Sprawdzanie…",
|
||||
|
||||
Reference in New Issue
Block a user