Zum Inhalt springen
Anjunar/ DOCS

Eingabe und Toolbar

Der Browser meldet, was der Nutzer will; Bindings entscheiden, welcher Befehl daraus wird. Die Toolbar führt dieselben Befehle aus.

Bindings

Reihenfolge ist eine Entscheidung

Eingabe- und Tastatur-Bindings greifen beim ersten Treffer. Eine Absicht, die niemand bindet, läuft nativ; ein Editor ohne Listen bricht also nicht bei insertUnorderedList.

scala
val bindings = HistoryBindings.input ++ ListBindings.input ++ RichTextBindings.input val keys = EditorBindings.everythingKeyboard BrowserInputController.attachTo(session, view, port, bindings, keys)
Tab fängt nie ein

Den Editor verlassen ist Tabs Standard. Einrücken mit Tab ist zuschaltbar: EditorBindings.tabIndentation binden und TabPolicy.IndentsUntilEscape setzen, das ist der Ausweg. Strg+] und Strg+[ rücken ohne Tab ein.

Toolbar

Typisierte Befehle mit Zustand

ToolbarAction.command bindet einen Befehl und seinen Payload an eine Zustandsabfrage. Die Leiste hat einen Tab-Stopp, bewegt sich mit den Pfeiltasten und markiert gedrückte Knöpfe als true, false oder mixed.

scala
val bold = ToolbarAction.command( "bold", "Bold", session, RichText.ToggleMark, StandardMarks.Strong, () => ToolbarState.mark(session.state, StandardMarks.Strong, editable()) ) val toolbar = new EditorToolbar(session, selectionPort, Vector(bold)) Runtime.mount(toolbar, DomCursor.root(toolbarContainer))

Die Editoren auf diesen Seiten nutzen gruppierte Aktionen mit Material Icons: Verlauf, Marks, Überschriften, Zitate, Listen, Codeblöcke und Tabellen.

Komposition

Eingabemethoden bleiben unversehrt

Während eine Eingabemethode Text komponiert, schreibt die Ansicht nicht in den Bereich, der ihr gehört. Eine Komposition ist über HistoryBindings.groupCompositions ein Rückgängig-Schritt.

scala
compositions.bind(input) val grouping = HistoryBindings.groupCompositions(input, history)