Introduces a reusable core detail-drawer primitive that slides in from the right and loads any view via a `*-fragment(none).phtml` endpoint. Bundles the address book list overhaul that is its first consumer. Core additions: - `app-detail-drawer.js` — generic drawer with stepper, focus trap, body scroll-lock, URL-hash deep-linking, session-expiry detection - `app-fragment-init.js` — auto-wires tabs/lookups/confirm/file-upload/ fslightbox inside injected HTML; consumers do not re-initialize components - `app-focus-trap.js` — shared focus-trap + refcounted scroll-lock, used by both filter-drawer and detail-drawer - `getHtml()` in `app-http.js` + `SessionExpiredError`; drawer reloads the page on auth redirect instead of rendering the login form in the panel - `DetailDrawerFragmentContractTest` enforces that every `initDetailDrawer` consumer ships matching `*-fragment($id).php` + `*-fragment(none).phtml` Address book list: - Grid collapses from 9 columns to 4 (identity / context / phone / actions) with a two-line identity cell (avatar + name + email) - Tenant register tabs above the grid using the `app-list-tabs` partial; tenant filter wired via hidden toolbar field so grid.js forwards it on every data fetch - Profile body extracted to a shared partial so the full-page view and the new drawer fragment share the same markup - New i18n keys for the drawer/list labels Also refactors `app-filter-drawer` to reuse the shared focus-trap and scroll-lock instead of maintaining its own copy, and documents the detail-drawer convention in CLAUDE.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
21 lines
598 B
JSON
21 lines
598 B
JSON
{
|
|
"About": "Über",
|
|
"Address book": "Adressbuch",
|
|
"Call": "Anrufen",
|
|
"Call mobile": "Mobil anrufen",
|
|
"Call phone": "Telefon anrufen",
|
|
"Failed to load": "Laden fehlgeschlagen",
|
|
"From": "Von",
|
|
"Loading": "Lädt",
|
|
"More": "Mehr",
|
|
"No departments": "Keine Abteilungen",
|
|
"Open details": "Details öffnen",
|
|
"Open full page": "Vollseite öffnen",
|
|
"Quick actions": "Schnellaktionen",
|
|
"Send email": "E-Mail senden",
|
|
"Tenant / Department": "Mandant / Abteilung",
|
|
"To": "Bis",
|
|
"View in address book": "Im Adressbuch ansehen",
|
|
"further assignments": "weitere Zuordnungen"
|
|
}
|