Merge pull request #1030 from friday/event-improvements
Minor event changes
This commit is contained in:
commit
5c08363400
2
src/js/controls.js
vendored
2
src/js/controls.js
vendored
@ -1068,7 +1068,7 @@ const controls = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Listen for the transition finishing and restore auto height/width
|
// Listen for the transition finishing and restore auto height/width
|
||||||
once(container, transitionEndEvent, restore);
|
once.call(this, container, transitionEndEvent, restore);
|
||||||
|
|
||||||
// Set dimensions to target
|
// Set dimensions to target
|
||||||
container.style.width = `${size.width}px`;
|
container.style.width = `${size.width}px`;
|
||||||
|
@ -210,7 +210,7 @@ class Listeners {
|
|||||||
toggleListener.call(this.player, document.body, 'click', this.toggleMenu, toggle);
|
toggleListener.call(this.player, document.body, 'click', this.toggleMenu, toggle);
|
||||||
|
|
||||||
// Detect touch by events
|
// Detect touch by events
|
||||||
once(document.body, 'touchstart', this.firstTouch);
|
once.call(this.player, document.body, 'touchstart', this.firstTouch);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Container listeners
|
// Container listeners
|
||||||
@ -453,7 +453,9 @@ class Listeners {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Play/pause toggle
|
// Play/pause toggle
|
||||||
bind(this.player.elements.buttons.play, 'click', this.player.togglePlay, 'play');
|
Array.from(this.player.elements.buttons.play).forEach(button => {
|
||||||
|
bind(button, 'click', this.player.togglePlay, 'play');
|
||||||
|
});
|
||||||
|
|
||||||
// Pause
|
// Pause
|
||||||
bind(this.player.elements.buttons.restart, 'click', this.player.restart, 'restart');
|
bind(this.player.elements.buttons.restart, 'click', this.player.restart, 'restart');
|
||||||
@ -634,8 +636,8 @@ class Listeners {
|
|||||||
|
|
||||||
// Polyfill for lower fill in <input type="range"> for webkit
|
// Polyfill for lower fill in <input type="range"> for webkit
|
||||||
if (browser.isWebkit) {
|
if (browser.isWebkit) {
|
||||||
bind(getElements.call(this.player, 'input[type="range"]'), 'input', event => {
|
Array.from(getElements.call(this.player, 'input[type="range"]')).forEach(element => {
|
||||||
controls.updateRangeFill.call(this.player, event.target);
|
bind(element, 'input', event => controls.updateRangeFill.call(this.player, event.target));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,7 +975,7 @@ class Plyr {
|
|||||||
* @param {function} callback - Callback for when event occurs
|
* @param {function} callback - Callback for when event occurs
|
||||||
*/
|
*/
|
||||||
once(event, callback) {
|
once(event, callback) {
|
||||||
once(this.elements.container, event, callback);
|
once.call(this, this.elements.container, event, callback);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Remove event listeners
|
* Remove event listeners
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Element utils
|
// Element utils
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
|
||||||
import { off, on } from './events';
|
import { toggleListener } from './events';
|
||||||
import is from './is';
|
import is from './is';
|
||||||
|
|
||||||
// Wrap an element
|
// Wrap an element
|
||||||
@ -277,11 +277,7 @@ export function trapFocus(element = null, toggle = false) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (toggle) {
|
toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);
|
||||||
on(this.elements.container, 'keydown', trap, false);
|
|
||||||
} else {
|
|
||||||
off(this.elements.container, 'keydown', trap, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toggle aria-pressed state on a toggle button
|
// Toggle aria-pressed state on a toggle button
|
||||||
|
@ -27,21 +27,9 @@ const supportsPassiveListeners = (() => {
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
// Toggle event listener
|
// Toggle event listener
|
||||||
export function toggleListener(elements, event, callback, toggle = false, passive = true, capture = false, once = false) {
|
export function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {
|
||||||
// Bail if no elemetns, event, or callback
|
// Bail if no element, event, or callback
|
||||||
if (is.empty(elements) || is.empty(event) || !is.function(callback)) {
|
if (!is.element(element) || is.empty(event) || !is.function(callback)) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If a nodelist is passed, call itself on each node
|
|
||||||
if (is.nodeList(elements) || is.array(elements)) {
|
|
||||||
// Create listener for each node
|
|
||||||
Array.from(elements).forEach(element => {
|
|
||||||
if (element instanceof Node) {
|
|
||||||
toggleListener.call(null, element, event, callback, toggle, passive, capture);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,12 +52,12 @@ export function toggleListener(elements, event, callback, toggle = false, passiv
|
|||||||
|
|
||||||
// If a single node is passed, bind the event listener
|
// If a single node is passed, bind the event listener
|
||||||
events.forEach(type => {
|
events.forEach(type => {
|
||||||
if (this && this.eventListeners && toggle && !once) {
|
if (this && this.eventListeners && toggle) {
|
||||||
// Cache event listener
|
// Cache event listener
|
||||||
this.eventListeners.push({ elements, type, callback, options });
|
this.eventListeners.push({ element, type, callback, options });
|
||||||
}
|
}
|
||||||
|
|
||||||
elements[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);
|
element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +78,7 @@ export function once(element, events = '', callback, passive = true, capture = f
|
|||||||
callback.apply(this, args);
|
callback.apply(this, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleListener(element, events, onceCallback, true, passive, capture, true);
|
toggleListener.call(this, element, events, onceCallback, true, passive, capture);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trigger event
|
// Trigger event
|
||||||
@ -116,8 +104,8 @@ export function triggerEvent(element, type = '', bubbles = false, detail = {}) {
|
|||||||
export function unbindListeners() {
|
export function unbindListeners() {
|
||||||
if (this && this.eventListeners) {
|
if (this && this.eventListeners) {
|
||||||
this.eventListeners.forEach(item => {
|
this.eventListeners.forEach(item => {
|
||||||
const { elements, type, callback, options } = item;
|
const { element, type, callback, options } = item;
|
||||||
elements.removeEventListener(type, callback, options);
|
element.removeEventListener(type, callback, options);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.eventListeners = [];
|
this.eventListeners = [];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user