Skip to content

Global Search + Keyboard Shortcuts

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

  1. Framework sammelt alle Entities mit searchable Feldern
  2. Multi-Index Query an Meilisearch (ein Request, alle Entities)
  3. Ergebnisse gruppiert nach Feature anzeigen
  4. Klick / Enter → navigiert zum Detail-Screen des Features
TasteAktion
F1 / Cmd+KOeffnen / Schliessen (Toggle)
EscapeSchliessen
Arrow Up/DownDurch Ergebnisse navigieren
EnterAusgewaehltes Ergebnis oeffnen
TippenSofort 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)

ShortcutAktionWo
F1 / Cmd+KGlobal SearchUeberall
EscapeSchliessen / AbbrechenUeberall
Ctrl+S / Cmd+SSpeichernFormulare
Ctrl+Z / Cmd+ZUndoWenn 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.