React.Keybind
- Package
- purescript-react-keybind
- Repository
- EpicOrange/purescript-react-keybind
This module provides bindings for the components provided
by the react-keybind library, intended to be used in the
same fashion as React.Basic.DOM.
Quick usage guide for the components
shortcutProvider, shortcutConsumer, and withShortcut:
shortcutProvider { children: [], ignoreKeys: ["shift", "ctrl"] } [ ... ]
shortcutConsumer \{ registerShortcut, shortcuts } -> [ ... ]
myShortcutComponent :: Component {}
myShortcutComponent = withShortcut "MyShortcutComponent" $
React.component "MyComponent" \{ shortcut: {registerShortcut, unregisterShortcut} } -> React.do
...
Quick guide to registerShortcut:
_ <- registerShortcut { method: handler_ save
, keys: ["ctrl+s", "cmd+s"]
, title: "Save"
, description: "Save a file"
, holdDuration: Nothing }
Every key in keys gets bound to the given method handler.
The strings are checked (case-insensitive) against KeyboardEvent.key,
and may be modified with ctrl, alt, meta/cmd, and shift.
For further guidance, check out the examples directory in the git repo!
#shortcutConsumer Source
shortcutConsumer :: (ProviderRenderProps -> Array JSX) -> JSXCreate a shortcut consumer that offers the following props:
registerShortcut :: ShortcutSpec -> Effect Unit
registerSequenceShortcut :: ShortcutSpec -> Effect Unit
shortcuts :: Array IShortcut
triggerShortcut :: String -> Effect Unit
unregisterShortcut :: Array String -> Effect Unit
Usage: shortcutConsumer { registerShortcut, shortcuts } -> [ ... ]
#shortcutProvider Source
shortcutProvider :: forall props_ props. Union props props_ ProviderPropsRow => Record props -> JSXCreate a shortcut provider with possible props:
children :: Array JSX
ignoreKeys :: Array String
ignoreTagNames :: Array String
preventDefault :: Boolean
#shortcutProvider_ Source
shortcutProvider_ :: Array JSX -> JSXShorthand of shortcutProvider for only passing in children
#withShortcut Source
withShortcut :: forall props_ props. Union WithShortcutPropsRow props props_ => String -> Component { shortcut :: ProviderRenderProps | props } -> Component (Record props)A higher-order pure component that adds a single prop shortcut containing:
registerShortcut :: ShortcutSpec -> Effect Unit
registerSequenceShortcut :: ShortcutSpec -> Effect Unit
shortcuts :: Array IShortcut
triggerShortcut :: String -> Effect Unit
unregisterShortcut :: Array String -> Effect Unit
Use this with (or as an alternative to) shortcutConsumer.