@sparkpost/matchbox
Version:
A React UI component library
39 lines (35 loc) • 786 B
JavaScript
const keys = {
enter: {
key: 'Enter',
keyCode: 13,
shiftKey: false
},
escape: {
key: 'Escape',
keyCode: 27,
shiftKey: false
}
};
function compareEvent(event, e) {
return (e.key === keys[event].key || e.keyCode === keys[event].keyCode) && e.shiftKey === keys[event].shiftKey;
}
/**
* Key down event handler
* @example onKey('escape', () => foo()])(e)
*/
export function onKey(event, callback) {
return function handleEvent(e) {
if (compareEvent(event, e)) {
return callback(e);
}
};
}
/**
* Multiple key down event handler
* @example onKeys(['escape', 'enter'], () => foo()])(e)
*/
export function onKeys(events, callback) {
return function handleEvents(e) {
events.forEach((event) => onKey(event, callback)(e));
};
}