docbrown/app/javascript/article-form/components/keyboardShortcutsHandler.jsx
2020-05-29 11:59:37 -04:00

38 lines
902 B
JavaScript

import { Component } from 'preact';
import PropTypes from 'prop-types';
export class KeyboardShortcutsHandler extends Component {
componentDidMount() {
document.addEventListener('keydown', this.handleKeyDown());
}
componentWillUnmount() {
document.removeEventListener('keydown', this.globalKeysListener);
}
handleKeyDown = () => {
this.globalKeysListener = event => {
const controlOrCommandKey = event.ctrlKey || event.metaKey;
if (
controlOrCommandKey &&
event.shiftKey &&
event.key.toUpperCase() === 'P'
) {
const { togglePreview } = this.props;
togglePreview(event);
}
};
return this.globalKeysListener;
};
render() {
return null;
}
}
KeyboardShortcutsHandler.propTypes = {
togglePreview: PropTypes.func.isRequired,
};
KeyboardShortcutsHandler.displayName = 'KeyboardShortcutsHandler';