diff --git a/README.md b/README.md index d4dc3bb..f77b0f6 100644 --- a/README.md +++ b/README.md @@ -651,8 +651,22 @@ Inspector unter **Objekt · Auswahl**: horizontale **Ausrichtung** **Prozent** 0/2 Stellen, **Datum**/**Zeit**/**Datum + Zeit** — kombiniert mit der Locale unten — sowie **Datum (ISO)**, das immer `JJJJ-MM-TT` zeigt, unabhängig von der Locale), **Zell-Textfarbe**, -**Zell-Füllfarbe**, **Fett**/**Kursiv**, „Formatierung entfernen". Auch exakte -**Spaltenbreite** und **Zeilenhöhe** der Fokuszelle. +**Zell-Füllfarbe**, **Fett**/**Kursiv**/**Unterstrichen**, „Formatierung +entfernen". Auch exakte **Spaltenbreite** und **Zeilenhöhe** der Fokuszelle. +Per Tastatur: `Strg`/`Cmd`+`Umschalt`+`B` (oder `F`) fett, `+I` kursiv, `+U` +unterstrichen; jeweils ein, wenn noch nicht jede Zelle der Auswahl es hat, +sonst aus. + +### Hilfe (`?`, F1) + +Das `?` in der Symbolleiste, **Datei › Hilfe …** oder `F1` öffnet die +eingebaute Hilfe ([`HelpModal.vue`](app/frontend/components/HelpModal.vue)): +Themen für Benutzer, alle Tastenkürzel und die Formelfunktionen samt +Rechenzeichen, mit einer Suche über alles. Themen und Kürzel stehen in +[`data/help.ts`](app/frontend/data/help.ts) und werden von Hand gepflegt, wer +ein Kürzel oder eine sichtbare Funktion ändert, passt sie dort mit an. Die +Funktionsliste kommt aus `data/codeReference.ts` und ist damit immer +vollständig. ### Einstellungen (⚙, links neben dem Titel) diff --git a/app/frontend/components/AppToolbar.vue b/app/frontend/components/AppToolbar.vue index 8fb473d..ab1e31c 100644 --- a/app/frontend/components/AppToolbar.vue +++ b/app/frontend/components/AppToolbar.vue @@ -4,6 +4,7 @@ import { useDocument } from '../store/document'; import { useTheme } from '../composables/useTheme'; import { useToasts } from '../composables/useToasts'; import BaseModal from './BaseModal.vue'; +import HelpModal from './HelpModal.vue'; import CustomFunctionsModal from './CustomFunctionsModal.vue'; import NamedRangesModal from './NamedRangesModal.vue'; import MacrosModal from './MacrosModal.vue'; @@ -120,6 +121,17 @@ const uploadOpen = ref(false); const loginOpen = ref(false); const loginReason = ref(); const accountMenuOpen = ref(false); +const helpOpen = ref(false); + +// F1 opens the help from anywhere (also out of a cell editor -- the browser's +// own F1 help is what preventDefault keeps away) +function onHelpKey(e: KeyboardEvent) { + if (e.key !== 'F1') return; + e.preventDefault(); + helpOpen.value = true; +} +onMounted(() => window.addEventListener('keydown', onHelpKey)); +onBeforeUnmount(() => window.removeEventListener('keydown', onHelpKey)); function openLogin(reason?: string) { loginReason.value = reason; @@ -470,10 +482,13 @@ async function onSample() {
  • +
  • + + - + + +