diff --git a/src/components/Shortcut.js b/src/components/Shortcut.js index dd66d964..1c798503 100644 --- a/src/components/Shortcut.js +++ b/src/components/Shortcut.js @@ -189,7 +189,7 @@ export default class Shortcut extends Component { componentDidMount() { this.mergeShortcuts(); - document.addEventListener('keydown', this.handleKeyPress); + window.addEventListener('keydown', this.handleKeyPress); document.addEventListener('click', this.handleClick); document.addEventListener('dblclick', this.handleDoubleClick); } @@ -201,7 +201,7 @@ export default class Shortcut extends Component { } componentWillUnmount() { - document.removeEventListener('keydown', this.handleKeyPress); + window.removeEventListener('keydown', this.handleKeyPress); document.removeEventListener('click', this.handleClick); document.removeEventListener('dblclick', this.handleDoubleClick); } @@ -215,9 +215,10 @@ export default class Shortcut extends Component { alt = false }) => `${keyCode}:${ctrl}:${shift}:${alt}`; const defaultShortcuts = this.defaultShortcuts.reduce( - (shortcuts, shortcut) => Object.assign(shortcuts, { - [getShortcutKey(shortcut)]: shortcut - }), + (shortcuts, shortcut) => + Object.assign(shortcuts, { + [getShortcutKey(shortcut)]: shortcut + }), {} ); const mergedShortcuts = (this.props.shortcuts || []).reduce( @@ -233,10 +234,10 @@ export default class Shortcut extends Component { defaultShortcuts ); - const gradeShortcut = (s) => { + const gradeShortcut = s => { let score = 0; const ps = ['ctrl', 'shift', 'alt']; - ps.forEach((key) => { + ps.forEach(key => { if (s[key]) { score++; } @@ -273,11 +274,11 @@ export default class Shortcut extends Component { return; } if ( - document.activeElement - && (hasClass(document.activeElement, 'video-react-control') - || hasClass(document.activeElement, 'video-react-menu-button-active') + document.activeElement && + (hasClass(document.activeElement, 'video-react-control') || + hasClass(document.activeElement, 'video-react-menu-button-active') || // || hasClass(document.activeElement, 'video-react-slider') - || hasClass(document.activeElement, 'video-react-big-play-button')) + hasClass(document.activeElement, 'video-react-big-play-button')) ) { return; } @@ -287,14 +288,14 @@ export default class Shortcut extends Component { const shift = e.shiftKey; const alt = e.altKey; - const shortcut = this.shortcuts.filter((s) => { + const shortcut = this.shortcuts.filter(s => { if (!s.keyCode || s.keyCode - keyCode !== 0) { return false; } if ( - (s.ctrl !== undefined && s.ctrl !== ctrl) - || (s.shift !== undefined && s.shift !== shift) - || (s.alt !== undefined && s.alt !== alt) + (s.ctrl !== undefined && s.ctrl !== ctrl) || + (s.shift !== undefined && s.shift !== shift) || + (s.alt !== undefined && s.alt !== alt) ) { return false; } @@ -310,9 +311,9 @@ export default class Shortcut extends Component { // only if player is active and player is ready canBeClicked(player, e) { if ( - !player.isActive - || e.target.nodeName !== 'VIDEO' - || player.readyState !== 4 + !player.isActive || + e.target.nodeName !== 'VIDEO' || + player.readyState !== 4 ) { return false; } diff --git a/src/components/control-bar/ControlBar.js b/src/components/control-bar/ControlBar.js index 332ccec4..fa1c4873 100644 --- a/src/components/control-bar/ControlBar.js +++ b/src/components/control-bar/ControlBar.js @@ -74,7 +74,7 @@ export default class ControlBar extends Component { const defaultChildren = this.props.disableDefaultControls ? [] : this.getDefaultChildren(); - const { className, ...parentProps } = this.props; // remove className + const parentProps = { player: this.props.player }; return mergeAndSortChildren(defaultChildren, children, parentProps); } diff --git a/src/components/menu/MenuItem.js b/src/components/menu/MenuItem.js index 9785b6a1..cdc305ed 100644 --- a/src/components/menu/MenuItem.js +++ b/src/components/menu/MenuItem.js @@ -14,21 +14,37 @@ export default class MenuItem extends Component { super(props, context); this.handleClick = this.handleClick.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); } - handleClick() { + select() { const { index, onSelectItem } = this.props; onSelectItem(index); } + handleClick() { + this.select(); + } + + handleKeyDown(event) { + if (event.key === ' ' || event.key === 'Enter') { + event.preventDefault(); + this.select(); + } + } + render() { const { label, index, activateIndex } = this.props; return (