aboutsummaryrefslogtreecommitdiffstats
path: root/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js')
-rw-r--r--src/js/controls.js33
-rw-r--r--src/js/utils.js34
2 files changed, 30 insertions, 37 deletions
diff --git a/src/js/controls.js b/src/js/controls.js
index 615da39e..5f2fb402 100644
--- a/src/js/controls.js
+++ b/src/js/controls.js
@@ -15,8 +15,6 @@ const browser = utils.getBrowser();
const controls = {
// Webkit polyfill for lower fill range
updateRangeFill(target) {
-
-
// Get range from event if event passed
const range = utils.is.event(target) ? target.target : target;
@@ -369,7 +367,7 @@ const controls = {
}),
);
- const faux = utils.createElement('span', { 'aria-hidden': true });
+ const faux = utils.createElement('span', { hidden: '' });
label.appendChild(radio);
label.appendChild(faux);
@@ -444,11 +442,7 @@ const controls = {
// Hide/show a tab
toggleTab(setting, toggle) {
- const tab = this.elements.settings.tabs[setting];
- const pane = this.elements.settings.panes[setting];
-
- utils.toggleHidden(tab, !toggle);
- utils.toggleHidden(pane, !toggle);
+ utils.toggleHidden(this.elements.settings.tabs[setting], !toggle);
},
// Set the quality menu
@@ -660,7 +654,6 @@ const controls = {
// Get current selected caption language
// TODO: rework this to user the getter in the API?
-
// Set a list of available captions languages
setCaptionsMenu() {
// TODO: Captions or language? Currently it's mixed
@@ -760,10 +753,6 @@ const controls = {
// Get the list to populate
const list = this.elements.settings.panes.speed.querySelector('ul');
- // Show the pane and tab
- utils.toggleHidden(this.elements.settings.tabs.speed, false);
- utils.toggleHidden(this.elements.settings.panes.speed, false);
-
// Empty the menu
utils.emptyElement(list);
@@ -794,7 +783,7 @@ const controls = {
return;
}
- const show = utils.is.boolean(event) ? event : utils.is.element(form) && form.getAttribute('aria-hidden') === 'true';
+ const show = utils.is.boolean(event) ? event : utils.is.element(form) && form.hasAttribute('hidden');
if (utils.is.event(event)) {
const isMenuItem = utils.is.element(form) && form.contains(event.target);
@@ -819,7 +808,7 @@ const controls = {
}
if (utils.is.element(form)) {
- form.setAttribute('aria-hidden', !show);
+ utils.toggleHidden(form, !show);
utils.toggleClass(this.elements.container, this.config.classNames.menu.open, show);
if (show) {
@@ -835,7 +824,7 @@ const controls = {
const clone = tab.cloneNode(true);
clone.style.position = 'absolute';
clone.style.opacity = 0;
- clone.setAttribute('aria-hidden', false);
+ clone.removeAttribute('hidden');
// Prevent input's being unchecked due to the name being identical
Array.from(clone.querySelectorAll('input[name]')).forEach(input => {
@@ -879,7 +868,7 @@ const controls = {
// Hide all other tabs
// Get other tabs
- const current = menu.querySelector('[role="tabpanel"][aria-hidden="false"]');
+ const current = menu.querySelector('[role="tabpanel"]:not([hidden])');
const container = current.parentNode;
// Set other toggles to be expanded false
@@ -923,11 +912,11 @@ const controls = {
}
// Set attributes on current tab
- current.setAttribute('aria-hidden', true);
+ utils.toggleHidden(current, true);
current.setAttribute('tabindex', -1);
// Set attributes on target
- pane.setAttribute('aria-hidden', !show);
+ utils.toggleHidden(pane, !show);
tab.setAttribute('aria-expanded', show);
pane.removeAttribute('tabindex');
@@ -1069,7 +1058,7 @@ const controls = {
const form = utils.createElement('form', {
class: 'plyr__menu__container',
id: `plyr-settings-${data.id}`,
- 'aria-hidden': true,
+ hidden: '',
'aria-labelled-by': `plyr-settings-toggle-${data.id}`,
role: 'tablist',
tabindex: -1,
@@ -1079,7 +1068,6 @@ const controls = {
const home = utils.createElement('div', {
id: `plyr-settings-${data.id}-home`,
- 'aria-hidden': false,
'aria-labelled-by': `plyr-settings-toggle-${data.id}`,
role: 'tabpanel',
});
@@ -1130,11 +1118,10 @@ const controls = {
this.config.settings.forEach(type => {
const pane = utils.createElement('div', {
id: `plyr-settings-${data.id}-${type}`,
- 'aria-hidden': true,
+ hidden: '',
'aria-labelled-by': `plyr-settings-${data.id}-${type}-tab`,
role: 'tabpanel',
tabindex: -1,
- hidden: '',
});
const back = utils.createElement(
diff --git a/src/js/utils.js b/src/js/utils.js
index 2ec57a50..41419b06 100644
--- a/src/js/utils.js
+++ b/src/js/utils.js
@@ -375,6 +375,25 @@ const utils = {
return attributes;
},
+ // Toggle hidden
+ toggleHidden(element, hidden) {
+ if (!utils.is.element(element)) {
+ return;
+ }
+
+ let hide = hidden;
+
+ if (!utils.is.boolean(hide)) {
+ hide = !element.hasAttribute('hidden');
+ }
+
+ if (hide) {
+ element.setAttribute('hidden', '');
+ } else {
+ element.removeAttribute('hidden');
+ }
+ },
+
// Toggle class on an element
toggleClass(element, className, toggle) {
if (utils.is.element(element)) {
@@ -393,19 +412,6 @@ const utils = {
return utils.is.element(element) && element.classList.contains(className);
},
- // Toggle hidden attribute on an element
- toggleHidden(element, toggle) {
- if (!utils.is.element(element)) {
- return;
- }
-
- if (toggle) {
- element.setAttribute('hidden', '');
- } else {
- element.removeAttribute('hidden');
- }
- },
-
// Element matches selector
matches(element, selector) {
const prototype = { Element };
@@ -752,7 +758,7 @@ const utils = {
return null;
}
- return array.reduce((prev, curr) => Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev);
+ return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));
},
// Get the provider for a given URL