Global Search + Keyboard Shortcuts
Global Search
F1 oder Cmd+K → Suche ueber alle Entities aller Features. Nutzt Meilisearch (haben wir), tenant-scoped.
UI
┌─────────────────────────────────────┐│ 🔍 Suche... [F1] ││ ││ Orders ││ Order #123 — ACME, Musterstr. 5 ││ Order #456 — Koch GmbH ││ ││ Clients ││ ACME Corporation ││ ││ Vehicles ││ BMW 320d — M-AB 1234 │└─────────────────────────────────────┘Wie es funktioniert
- Framework sammelt alle Entities mit
searchableFeldern - Multi-Index Query an Meilisearch (ein Request, alle Entities)
- Ergebnisse gruppiert nach Feature anzeigen
- Klick / Enter → navigiert zum Detail-Screen des Features
Navigation in der Search
| Taste | Aktion |
|---|---|
F1 / Cmd+K | Oeffnen / Schliessen (Toggle) |
Escape | Schliessen |
Arrow Up/Down | Durch Ergebnisse navigieren |
Enter | Ausgewaehltes Ergebnis oeffnen |
| Tippen | Sofort filtern (kein Submit noetig) |
Search Result Darstellung
Jedes Feature bestimmt wie seine Entities in der Suche angezeigt werden:
r.entity("order", { fields: { identifier: { type: "text", searchable: true }, fin: { type: "text", searchable: true }, }, searchResult: { title: (order) => `Order #${order.identifier}`, subtitle: (order) => `${order.clientName} — ${order.pickupCity}`, icon: "car", screen: "orderDetail", // Navigation bei Klick },});Ohne searchResult Definition: Framework zeigt den ersten searchable Text-Feld als Titel.
Ownership-Filter
Global Search respektiert Ownership automatisch. Fahrer sucht → sieht nur seine Orders. Admin sucht → sieht alles.
Keyboard Shortcuts
Framework-Defaults (immer da)
| Shortcut | Aktion | Wo |
|---|---|---|
F1 / Cmd+K | Global Search | Ueberall |
Escape | Schliessen / Abbrechen | Ueberall |
Ctrl+S / Cmd+S | Speichern | Formulare |
Ctrl+Z / Cmd+Z | Undo | Wenn Undo aktiviert |
Feature-eigene Shortcuts
Features koennen eigene Shortcuts registrieren:
r.shortcut("Ctrl+N", { action: () => navigate("orders.orderCreate"), label: "orders:shortcut.newOrder", screen: "orderList", // Nur auf diesem Screen aktiv access: { roles: ["Admin", "Disponent"] },});
r.shortcut("Ctrl+D", { action: (ctx) => ctx.write("order.duplicate", { orderId: ctx.selectedId }), label: "orders:shortcut.duplicate", screen: "orderDetail", access: { roles: ["Admin", "Disponent"] },});Shortcut-Hilfe
? oder Ctrl+/ → zeigt alle verfuegbaren Shortcuts als Overlay:
┌─────────────────────────────────────┐│ Keyboard Shortcuts ││ ││ Global ││ F1 Suche ││ Ctrl+S Speichern ││ Ctrl+Z Rueckgaengig ││ Escape Schliessen ││ ││ Orders (aktueller Screen) ││ Ctrl+N Neue Order ││ Ctrl+D Duplizieren │└─────────────────────────────────────┘Konflikte
Boot-Validierung: Zwei Features registrieren denselben Shortcut auf demselben Screen → Error. Verschiedene Screens → OK (nur einer ist aktiv).
Mobile
Keyboard Shortcuts nur auf Web/Desktop. Auf Mobile: keine Shortcuts, gleiche Aktionen ueber Buttons/Gesten erreichbar.