aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSam Potts <me@sampotts.me>2017-04-16 20:38:45 +1000
committerSam Potts <me@sampotts.me>2017-04-16 20:38:45 +1000
commit452678867f6f235e63f0edaf56eff591fd7b98e3 (patch)
tree089d41f9919b39ddbf5e5aeb0d691516b2eb37ff /src
parentff2d27f8e5bacdc26792b7d7aed46a3377c0ea89 (diff)
downloadplyr-452678867f6f235e63f0edaf56eff591fd7b98e3.tar.lz
plyr-452678867f6f235e63f0edaf56eff591fd7b98e3.tar.xz
plyr-452678867f6f235e63f0edaf56eff591fd7b98e3.zip
More work on menus
Diffstat (limited to 'src')
-rw-r--r--src/js/plyr.js100
1 files changed, 60 insertions, 40 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js
index e21a1f21..5cb6a198 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -122,6 +122,7 @@
ready: 'plyr--ready',
videoWrapper: 'plyr__video-wrapper',
embedWrapper: 'plyr__video-embed',
+ control: 'plyr__control',
type: 'plyr--{0}',
stopped: 'plyr--stopped',
playing: 'plyr--playing',
@@ -133,6 +134,10 @@
hideControls: 'plyr--hide-controls',
isIos: 'plyr--is-ios',
isTouch: 'plyr--is-touch',
+ menu: {
+ value: 'plyr__menu__value',
+ badge: 'plyr__badge'
+ },
captions: {
enabled: 'plyr--captions-enabled',
active: 'plyr--captions-active'
@@ -1076,6 +1081,19 @@
}, text);
}
+ // Create a badge
+ function createBadge(text) {
+ var badge = createElement('span', {
+ class: config.classes.menu.value
+ });
+
+ badge.appendChild(createElement('span', {
+ class: config.classes.menu.badge
+ }, text));
+
+ return badge;
+ }
+
// Create a <button>
function createButton(type, attributes) {
var button = createElement('button');
@@ -1088,11 +1106,11 @@
}
if ('class' in attributes) {
- if (attributes.class.indexOf('plyr__control') === -1) {
- attributes.class += ' plyr__control';
+ if (attributes.class.indexOf(config.classes.control) === -1) {
+ attributes.class += ' ' + config.classes.control;
}
} else {
- attributes.class = 'plyr__control';
+ attributes.class = config.classes.control;
}
// Large play button
@@ -1376,7 +1394,7 @@
var button = createElement('button', extend(getAttributesFromSelector(config.selectors.buttons.settings), {
type: 'button',
- class: 'plyr__control plyr__control--forward',
+ class: config.classes.control + ' ' + config.classes.control + '--forward',
id: 'plyr-settings-' + data.id + '-' + type + '-tab',
'aria-haspopup': true,
'aria-controls': 'plyr-settings-' + data.id + '-' + type,
@@ -1384,7 +1402,7 @@
}), config.i18n[type]);
var value = createElement('span', {
- class: 'plyr__menu__value'
+ class: config.classes.menu.value
});
// Speed contains HTML entities
@@ -1412,23 +1430,19 @@
tabindex: -1
});
- var options = createElement('ul');
-
- var option = createElement('li');
-
var back = createElement('button', {
type: 'button',
- class: 'plyr__control plyr__control--back',
+ class: config.classes.control + ' ' + config.classes.control + '--back',
'aria-haspopup': true,
'aria-controls': 'plyr-settings-' + data.id + '-home',
'aria-expanded': false
- }, config.i18n.back);
+ }, config.i18n[type]);
- option.appendChild(back);
+ pane.appendChild(back);
- options.appendChild(option);
+ var options = createElement('ul');
- switch (type) {
+ /*switch (type) {
case 'captions':
if (is.array(config.tracks)) {
config.tracks.forEach(function(track, index) {
@@ -1449,7 +1463,7 @@
});
}
break;
- }
+ }*/
pane.appendChild(options);
@@ -1697,14 +1711,10 @@
}
if (!label.length) {
- return "";
+ return null;
}
- return [
- '<span class="plyr__menu__value">',
- '<span class="plyr__badge">' + label + '</span>',
- '</span>'
- ].join('');
+ return createBadge(label);
}
// Translate the quality key into a nice label
@@ -1735,27 +1745,37 @@
return ['tiny', 'small'].indexOf(quality) === -1;
});
- var list = filtered.map(function(quality) {
- return [
- '<li>',
- '<label class="plyr__control">',
- '<input type="radio" name="quality" value="' + quality + '"' + (quality === player.quality.current ? ' checked' : '') + '>',
- getLabel(quality),
- getBadge(quality),
- '</label>',
- '</li>'
- ].join('');
- });
+ var list = player.elements.settings.panes.quality.querySelector('ul');
- list.unshift([
- '<li role="tab">',
- '<button type="button" class="plyr__control plyr__control--back" aria-haspopup="true" aria-controls="plyr-settings-' + player.id + '-primary" aria-expanded="false">',
- config.i18n.quality,
- '</button>',
- '</li>'
- ].join(''));
+ filtered.forEach(function(quality) {
+ var item = createElement('li');
+
+ var label = createElement('label', {
+ class: config.classes.control
+ });
- player.elements.settings.panes.quality.innerHTML = list.join('');
+ var radio = createElement('input', {
+ type: 'radio',
+ name: 'quality',
+ value: quality,
+ });
+
+ if (quality === player.quality.current) {
+ radio.setAttribute('checked', '');
+ }
+
+ label.appendChild(radio);
+ label.appendChild(document.createTextNode(getLabel(quality)));
+
+ var badge = getBadge(quality);
+ if (is.htmlElement(badge)) {
+ label.appendChild(badge);
+ }
+
+ item.appendChild(label);
+
+ list.appendChild(item);
+ });
}
}