From 516c9f93627c04e9a59896c5f9385743aa511d5f Mon Sep 17 00:00:00 2001 From: Gary Katsevman Date: Fri, 3 Feb 2017 16:31:03 -0500 Subject: [PATCH] feat: toggle playback with space when focused on seekbar (#4005) --- .../control-bar/progress-control/seek-bar.js | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/js/control-bar/progress-control/seek-bar.js b/src/js/control-bar/progress-control/seek-bar.js index 1864db7b1..c29a04a8e 100644 --- a/src/js/control-bar/progress-control/seek-bar.js +++ b/src/js/control-bar/progress-control/seek-bar.js @@ -167,6 +167,44 @@ class SeekBar extends Slider { stepBack() { this.player_.currentTime(this.player_.currentTime() - STEP_SECONDS); } + + /** + * Toggles the playback state of the player + * This gets called when enter or space is used on the seekbar + * + * @param {EventTarget~Event} event + * The `keydown` event that caused this function to be called + * + */ + handleAction(event) { + if (this.player_.paused()) { + this.player_.play(); + } else { + this.player_.pause(); + } + } + + /** + * Called when this SeekBar has focus and a key gets pressed down. By + * default it will call `this.handleAction` when the key is space or enter. + * + * @param {EventTarget~Event} event + * The `keydown` event that caused this function to be called. + * + * @listens keydown + */ + handleKeyPress(event) { + + // Support Space (32) or Enter (13) key operation to fire a click event + if (event.which === 32 || event.which === 13) { + event.preventDefault(); + this.handleAction(event); + } else if (super.handleKeyPress) { + + // Pass keypress handling up for unsupported keys + super.handleKeyPress(event); + } + } } /**