Files
DOSSIER-STANDALONE/docs/design/context-menu.md
T
karim ca859c4aa4 Browser-BIM (cad): semantisches Modell, abgeleitete 2D/3D-Sichten, Zeichenwerkzeuge
Standalone-Browser-Port von DOSSIER. Enthaelt das semantische Modell mit
Plan-/3D-Ableitung, Zeichen- und Editierwerkzeuge, Rhino-artiges Befehlssystem,
dockbares Panel-System, Resource-Manager, DXF/.lin/.pat-Import, i18n (de/en)
sowie Projektdokumentation und Probe-Harness.
2026-06-30 20:52:27 +02:00

55 lines
3.0 KiB
Markdown

# Kontextmenü & Anzeige-Modi — 1:1 wie DOSSIER
> Quelle: DOSSIER `src/components/ContextMenu.jsx` + `DrawingLevelsApp.jsx`/Ebenen-Panel.
> Maus-Schema (unsere Festlegung): **Mitte = navigieren** (Plan Pan / 3D Orbit, Shift+Mitte Pan) ·
> **Links = Auswahl** · **Rechts = Kontextmenü** · **Rad = Zoom**.
## ContextMenu-Komponente (generisch, wiederverwendbar)
`ContextMenu({ x, y, items, onClose, title })`
- **item**: `{ label, icon?, onClick, disabled?, danger?, shortcut?, divider? }`
- Fixed-Position mit Rand-Clamp (4px); min-width 200px; Radius 13px; weicher Schatten;
Mount-Animation `scale(.94) translateY(-5px)` 100ms; Item-Hover = `--accent-dim`;
`danger` = rote Schrift; `divider` = 1px Trenner; Titel oben (caps, 10px, muted).
- **Schließen:** Klick außerhalb · Escape · erneuter Rechtsklick · nach Item-Klick.
- z-index ~300 (unter Modals).
## Ebenen-Kontextmenü (Rechtsklick auf Ebenen-Zeile)
1. **Ebeneneinstellungen…** (`settings`) — Ebenen-Dialog *(Rhino-spez. → vorerst Stub)*
2. — Trenner —
3. **Sub-Ebene hinzufügen…** (`add`)
4. **Selektion hierher übertragen** (`move_down`) *(braucht Auswahl → später)*
5. — Trenner —
6. **Duplizieren** (`content_copy`) — Klon mit Suffix „ KOPIE"
7. **Eigenschaften kopieren** (`colorize`) — Farbe + Linienstärke
8. **Eigenschaften einfügen** (`format_paint`) — disabled wenn Clipboard leer
9. — Trenner —
10. **Löschen** (`delete`, danger) — disabled wenn ≤1 Ebene
Titel = Ebenenname/-code.
## Zeichnungsebenen-Kontextmenü (Rechtsklick auf Geschoss/Schnitt/Zeichnung)
1. **Einstellungen…** (`settings`)
2. — Trenner —
3. **Duplizieren** (`content_copy`) — Klon mit Suffix „ Kopie"
4. — Trenner —
5. **Löschen** (`delete`, danger) — disabled wenn ≤1 Ebene
Titel = Name.
## „+"-Menü (Zeichnungsebenen)
**Geschoss** (`layers`) · **Schnitt / Ansicht** (`content_cut`) · — · **Zeichnung** (`edit_note`)
## Anzeige-Modi (Dropdown oben im Panel) — **5 Modi** (für Ebenen UND Zeichnungsebenen)
| Wert | Label | Verhalten |
|---|---|---|
| `all_force` | **Alle anzeigen** | alle erzwungen sichtbar; Augen gedimmt; Klick aufs Auge → wechselt zu „Ausgewählte" |
| `all` | **Ausgewählte** | sichtbar nach per-Zeile-Flag |
| `active` | **Nur aktive** | nur aktive sichtbar; andere stark gedimmt |
| `grey` | **Andere grau** | aktive normal, andere 45% (Sichtbarkeits-Flags gelten) |
| `grey_locked` | **Andere grau & gesperrt** | wie grey + andere gesperrt |
Regel: Klick aufs Auge in `all_force`/`active` schaltet automatisch auf `all`.
*(Hinweis: Panel-System-Workflow hatte vorerst nur 3 Modi — beim Kontextmenü-Build auf diese 5 angleichen.)*
## Migration (was sofort geht / was Stub bleibt)
- Sofort: ContextMenu-Komponente 1:1; Duplizieren, Eigenschaften kopieren/einfügen, Löschen,
+Menü, 5 Anzeige-Modi (alles reine JSON-State-Operationen).
- Stub/später: „Ebeneneinstellungen…"/„Einstellungen…" (Dialog), „Sub-Ebene hinzufügen", „Selektion hierher übertragen".