Ich dachte daran, eine nette Möglichkeit zum Binden an Tastaturereignisse hinzuzufügen. Etwas wie das Folgende wäre wirklich großartig:
Html.input [
prop.onKeyUp(key.enter, fun _ -> dispatch Login)
prop.onChange (UsernameChanged >> dispatch)
prop.valueOrDefault state.Username
]
Html.input [
prop.onKeyUp [ key.enter, fun _ -> dispatch Login ]
prop.onChange (UsernameChanged >> dispatch)
prop.valueOrDefault state.Username
]
Html.input [
prop.onKeyUp(dispatch, [ key.enter, Login; key.esc, Reset ])
prop.onChange (UsernameChanged >> dispatch)
prop.valueOrDefault state.Username
]
Das ist zu ergattern! PRs sind sehr willkommen, lassen Sie es mich und andere Mitwirkende wissen, wenn Sie es versuchen möchten
Ooh, schön, ich mag, wie du denkst!
IMHO Key
liest sich besser als Keys
, dh Key.Enter
vs. Keys.Enter
.
@cmeeren Du hast Recht, um es konsistent zu halten, haben wir für die Module prop
, style
und key
(Kleinbuchstaben) ein Singular verwendet, wäre eine natürliche Ergänzung 👍
Ja, obwohl mir aufgefallen ist, dass wir colors
und jetzt fonts
... Etwas, das man in Betracht ziehen sollte, sich zu ändern. :)
@cmeeren Ein Problem mit colors
und fonts
bei #95 gemacht
Szenario 2.2 stimmt nicht mit dem Rest der Event-Handler überein, weil es bedeutet, dass wir auch onClick(dispatch, Login)
implementieren sollten und höchstwahrscheinlich nicht (Feedback und Diskussion sind natürlich willkommen).
Wie bei Szenario 1 und Szenario 2 sollten die Ereignishandler dort KeyboardEvent
als Argument für das Lambda (neben dem Schlüssel) akzeptieren. dh die Tastaturereignisse nehmen die Überladungen an:
KeyboardEvent -> unit // default
IKeyboardKey * (KeyboardEvent -> unit) // scenario 1
(IKeyboardKey * (KeyboardEvent -> unit)) list // scenario 2
Sieht gut für mich aus. Der Beweis liegt jedoch im Pudding. Mal sehen, wie es sich im Gebrauch anfühlt. :)
Tastaturgüte hinzugefügt:
// Enter only
prop.onKeyUp (key.enter, fun _ -> dispatch Login)
// Enter + CTRL
prop.onKeyUp (key.ctrl(key.enter), fun _ -> dispatch Login)
// Enter + SHIFT
prop.onKeyUp (key.shift(key.enter), fun _ -> dispatch Login)
// Enter + CTRL + SHIFT
prop.onKeyUp (key.ctrlAndShift(key.enter), fun _ -> dispatch Login)