element-vir
Version:
Heroic. Reactive. Declarative. Type safe. Web components without compromise.
34 lines (33 loc) • 1.04 kB
JavaScript
import { listen } from './listen.directive.js';
/**
* Listens to enter, return, and space key hits on an element. Similar to {@link listenToEnter} but
* includes space.
*
* @category Directives
*/
export function listenToActivate(callback) {
return listen('keydown', async (event) => {
const key = event.code.toLowerCase();
if (key.includes('enter') || key.includes('return') || key === 'space') {
event.stopImmediatePropagation();
event.preventDefault();
await callback();
}
});
}
/**
* Listens to enter and return key hits on an element. Similar to {@link listenToActivate} but
* doesn't include space.
*
* @category Directives
*/
export function listenToEnter(callback) {
return listen('keydown', async (event) => {
const key = event.code.toLowerCase();
if (key.includes('enter') || key.includes('return')) {
event.stopImmediatePropagation();
event.preventDefault();
await callback();
}
});
}