@github/hotkey
Advanced tools
Comparing version 1.0.4 to 1.1.0
@@ -243,4 +243,4 @@ function _classCallCheck(instance, Constructor) { | ||
}); | ||
function install(element) { | ||
var hotkeys = expandHotkeyToEdges(element.getAttribute('data-hotkey') || ''); | ||
function install(element, hotkey$$1) { | ||
var hotkeys = expandHotkeyToEdges(hotkey$$1 || element.getAttribute('data-hotkey') || ''); | ||
var leaves = hotkeys.map(function (hotkey$$1) { | ||
@@ -281,2 +281,2 @@ return hotkeyRadixTrie.insert(hotkey$$1).add(element); | ||
export { install, uninstall }; | ||
export { RadixTrie, Leaf, install, uninstall }; |
@@ -249,4 +249,4 @@ (function (global, factory) { | ||
}); | ||
function install(element) { | ||
var hotkeys = expandHotkeyToEdges(element.getAttribute('data-hotkey') || ''); | ||
function install(element, hotkey$$1) { | ||
var hotkeys = expandHotkeyToEdges(hotkey$$1 || element.getAttribute('data-hotkey') || ''); | ||
var leaves = hotkeys.map(function (hotkey$$1) { | ||
@@ -287,2 +287,4 @@ return hotkeyRadixTrie.insert(hotkey$$1).add(element); | ||
exports.RadixTrie = RadixTrie; | ||
exports.Leaf = Leaf; | ||
exports.install = install; | ||
@@ -289,0 +291,0 @@ exports.uninstall = uninstall; |
{ | ||
"name": "@github/hotkey", | ||
"version": "1.0.4", | ||
"version": "1.1.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.umd.js", |
# Hotkey Behavior | ||
Trigger a action on element when keyboard hotkey is pressed. | ||
Trigger an action on a target element when a key or sequence of keys is pressed | ||
on the keyboard. This triggers a focus event on form fields, or a click event on | ||
`<a href="...">`, `<button>` and `<summary>` elements. | ||
Automatically binds hotkeys to any link with a `data-hotkey` | ||
attribute set. Multiple hotkeys are separated by a `,`. | ||
Key combinations are separated by a `+`, and key sequences | ||
are separated by a space. | ||
By default, hotkeys are extracted from a target element's `data-hotkey` | ||
attribute, but this can be overridden by passing the hotkey to the registering | ||
function (`install`) as a parameter. | ||
Two-keypress sequences like `g c` and `g i` would be stored | ||
under the 'g' key in a nested object with keys 'c' and 'i'. | ||
Multiple hotkeys are separated by a `,`; key combinations are separated | ||
by a `+`; and key sequences are separated by a space. | ||
Two-keypress sequences such as `g c` and `g i` are stored | ||
under the 'g' key in a nested object with 'c' and 'i' keys. | ||
``` | ||
@@ -21,7 +25,17 @@ mappings = | ||
So both `g c` and `c` could be available hotkeys on the same | ||
page, but `g c` and `g` couldn't coexist. If the user presses | ||
`g`, the `c` hotkey will be unavailable for 1500ms while we | ||
listen for either `g c` or `g i`. | ||
In this example, both `g c` and `c` could be available as hotkeys on the | ||
same page, but `g c` and `g` can't coexist. If the user presses | ||
`g`, the `c` hotkey will be unavailable for 1500 ms while we | ||
wait for either `g c` or `g i`. | ||
## Accessibility considerations | ||
Please note that adding this functionality to your site can be a drawback for | ||
certain users. Providing a way in your system to disable hotkeys or remap | ||
them makes sure that those users can still use your site (given that it's | ||
accessible to those users). | ||
See ["Understanding Success Criterion 2.1.4: Character Key Shortcuts"](https://www.w3.org/WAI/WCAG21/Understanding/character-key-shortcuts.html) | ||
for further reading on this topic. | ||
## Installation | ||
@@ -50,3 +64,4 @@ | ||
import {install} from '@github/hotkey' | ||
for (const el of document.querySelector('[data-hotkey]')) { | ||
for (const el of document.querySelectorAll('[data-hotkey]')) { | ||
install(el) | ||
@@ -56,2 +71,20 @@ } | ||
Alternatively, the hotkey(s) can be passed to the `install` function as a parameter e.g.: | ||
```js | ||
for (const el of document.querySelectorAll('[data-shortcut]')) { | ||
install(el, el.dataset.shortcut) | ||
} | ||
``` | ||
To unregister a hotkey from an element, use `uninstall`: | ||
```js | ||
import {uninstall} from '@github/hotkey' | ||
for (const el of document.querySelectorAll('[data-hotkey]')) { | ||
uninstall(el) | ||
} | ||
``` | ||
## Development | ||
@@ -58,0 +91,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
21447
480
97
1