Script-Editor: Strg+S / Cmd+S speichert (Save-Shortcut, auch im CodeMirror-Feld) #179

Closed
opened 2026-06-26 11:13:56 +00:00 by chinux · 0 comments
Owner

Ziel

Im Script-Editor (ScriptEditorModal.svelte, aus #177) Strg+S / Cmd+S als Shortcut zum Speichern — loest dieselbe Aktion aus wie der "Speichern"-Button.

Umsetzung (klein)

frontend/src/lib/components/editor/ScriptEditorModal.svelte:

  • Es gibt bereits async function save() (Z.44) und einen onkeydown-Handler (Z.62, aktuell nur Escape).
  • Den Handler erweitern:
onkeydown={(e) => {
  if (e.key === "Escape") { onClose(); return; }
  if ((e.ctrlKey || e.metaKey) && (e.key === "s" || e.key === "S")) {
    e.preventDefault();          // Browser-"Seite speichern" unterdruecken
    if (!busy) save();
  }
}}
  • Wichtig: Der CodeMirror-Editor faengt Tastatur-Events selbst ab. Damit Strg+S auch im Editorfeld greift (nicht nur wenn der Modal-Container Fokus hat), den Shortcut zusaetzlich als CodeMirror-Keymap in CodeEditor.svelte registrieren (@codemirror/view keymap.of([{ key: "Mod-s", preventDefault: true, run: () => { onSave?.(); return true; } }])) und einen optionalen onSave-Callback-Prop durchreichen, den das Modal auf save setzt. Mod-s deckt Ctrl (Linux/Win) und Cmd (Mac) ab.

Akzeptanz

  • Strg+S (und Cmd+S) im Editor-Modal speichert das Script (= Klick auf "Speichern"), Browser-Speichern-Dialog erscheint NICHT.
  • Funktioniert sowohl bei Fokus im Code-Editor als auch in Name/Beschreibung.
  • Bei laufendem Speichern (busy) kein Doppel-Submit.

Bezug

#177 (Editor-Modal).

Branch

feat/editor-ctrl-s-save

## Ziel Im Script-Editor (`ScriptEditorModal.svelte`, aus #177) **Strg+S / Cmd+S** als Shortcut zum Speichern — loest dieselbe Aktion aus wie der "Speichern"-Button. ## Umsetzung (klein) `frontend/src/lib/components/editor/ScriptEditorModal.svelte`: - Es gibt bereits `async function save()` (Z.44) und einen `onkeydown`-Handler (Z.62, aktuell nur Escape). - Den Handler erweitern: ```js onkeydown={(e) => { if (e.key === "Escape") { onClose(); return; } if ((e.ctrlKey || e.metaKey) && (e.key === "s" || e.key === "S")) { e.preventDefault(); // Browser-"Seite speichern" unterdruecken if (!busy) save(); } }} ``` - **Wichtig:** Der CodeMirror-Editor faengt Tastatur-Events selbst ab. Damit Strg+S **auch im Editorfeld** greift (nicht nur wenn der Modal-Container Fokus hat), den Shortcut zusaetzlich als **CodeMirror-Keymap** in `CodeEditor.svelte` registrieren (`@codemirror/view` `keymap.of([{ key: "Mod-s", preventDefault: true, run: () => { onSave?.(); return true; } }])`) und einen optionalen `onSave`-Callback-Prop durchreichen, den das Modal auf `save` setzt. `Mod-s` deckt Ctrl (Linux/Win) **und** Cmd (Mac) ab. ## Akzeptanz - Strg+S (und Cmd+S) im Editor-Modal speichert das Script (= Klick auf "Speichern"), Browser-Speichern-Dialog erscheint NICHT. - Funktioniert sowohl bei Fokus im Code-Editor als auch in Name/Beschreibung. - Bei laufendem Speichern (`busy`) kein Doppel-Submit. ## Bezug #177 (Editor-Modal). ## Branch `feat/editor-ctrl-s-save`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#179
No description provided.