Navbar-Reihenfolge: Unterpunkte je Gruppe editierbar, Karte unter Profil/Passwort verschoben

- Neuer Settings-Schluessel nav_child_order (JSON dict group_key ->
  geordnete Liste der Kind-Keys), analog zu nav_order fuer die Top-Level-
  Reihenfolge. _ordered_nav_items() liefert die komplette, ungefilterte
  Navbar-Struktur inkl. angewandter Kind-Reihenfolge; inject_nav() filtert
  das anschliessend weiterhin nach Berechtigung wie bisher.
- save_nav_order() verarbeitet zusaetzlich ein Feld
  nav_child_order_<group_key> pro Gruppe mit Kindern.
- account.html: Navbar-Reihenfolge-Karte jetzt UNTER Profil/Passwort
  aendern (vorher darueber), zeigt die komplette Navbar inkl.
  eingerueckter, separat sortierbarer Unterpunkte pro Gruppe
  (verschachtelte <ul>, moveNavItem() bewegt automatisch nur innerhalb
  der eigenen Gruppe dank DOM-Nesting).
- Live per Playwright verifiziert: Zugangsdaten innerhalb Geraete nach
  oben verschoben, gespeichert, Sidebar zeigt danach tatsaechlich die
  neue Reihenfolge (Zugangsdaten vor Clients/Switche).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 10:34:31 +02:00
co-authored by Claude Sonnet 5
parent 9a390e740d
commit 197af26d72
3 changed files with 115 additions and 43 deletions
+12 -3
View File
@@ -217,9 +217,6 @@ button { font-family: inherit; }
margin-bottom: 16px;
}
.nav-order-list li {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
background: var(--bg-card);
border: 1px solid var(--border-soft);
@@ -227,8 +224,20 @@ button { font-family: inherit; }
font-size: 13.5px;
font-weight: 550;
}
.nav-order-row { display: flex; align-items: center; justify-content: space-between; }
.nav-order-list .nav-order-actions { display: flex; gap: 4px; }
.nav-order-list .icon-btn { width: 28px; height: 28px; }
/* Unterpunkte je Gruppe — eingerückt, innerhalb ihrer Gruppe umsortierbar
(moveNavItem() bewegt nur innerhalb der jeweiligen <ul>, mischt also nie
Unterpunkte verschiedener Gruppen). */
.nav-order-sublist {
list-style: none;
display: flex;
flex-direction: column;
gap: 6px;
margin: 10px 0 2px 22px;
}
.nav-order-sublist li { font-weight: 500; font-size: 12.5px; background: var(--bg-elevated); }
.sidebar-footer {
padding: 14px 12px 18px;