From 1ad103c29fd5c92fc05c6a6d85c9d74e61b0fb54 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 26 Sep 2016 23:21:57 +1000 Subject: Menu animation --- src/js/plyr.js | 200 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 116 insertions(+), 84 deletions(-) (limited to 'src/js') diff --git a/src/js/plyr.js b/src/js/plyr.js index f6c98caa..e24f258b 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -888,81 +888,83 @@ '' + config.i18n.settings + '', '', '' @@ -3159,7 +3161,6 @@ var menu = this, toggle = event.target, target = document.getElementById(toggle.getAttribute('aria-controls')), - tabs = menu.querySelectorAll('[role="tabpanel"]'), show = (toggle.getAttribute('aria-expanded') === 'false'); // Nothing to show, bail @@ -3167,21 +3168,52 @@ return; } + // Are we targetting a tab? + var isTab = target.getAttribute('role') === 'tabpanel', + targetWidth, + targetHeight, + container; + // Hide all other tabs - if (target.getAttribute('role') === 'tabpanel') { - [].forEach.call(tabs, function(tab) { - tab.setAttribute('aria-hidden', true); - tab.setAttribute('tabindex', -1); + if (isTab) { + // Get other tabs + var current = menu.querySelector('[role="tabpanel"][aria-hidden="false"]'); + container = current.parentNode; - [].forEach.call(menu.querySelectorAll('[aria-controls="' + tab.getAttribute('id') + '"]'), function(toggle) { - toggle.setAttribute('aria-expanded', false); - }); + [].forEach.call(menu.querySelectorAll('[aria-controls="' + current.getAttribute('id') + '"]'), function(toggle) { + toggle.setAttribute('aria-expanded', false); }); - } - toggle.setAttribute('aria-expanded', show); + container.style.width = current.scrollWidth + 'px'; + container.style.height = current.scrollHeight + 'px'; + + current.setAttribute('aria-hidden', true); + current.setAttribute('tabindex', -1); + + // Get the natural element size + var clone = target.cloneNode(true); + clone.style.position = "absolute"; + clone.style.opacity = 0; + clone.setAttribute('aria-hidden', false); + container.appendChild(clone); + targetWidth = clone.scrollWidth; + targetHeight = clone.scrollHeight; + _remove(clone); + } + target.setAttribute('aria-hidden', !show); + toggle.setAttribute('aria-expanded', show); target.setAttribute('tabindex', 0); + + if (isTab) { + container.style.width = targetWidth + 'px'; + container.style.height = targetHeight + 'px'; + + window.setTimeout(function() { + container.style.width = ''; + container.style.height = ''; + }, 300); + } }); // Seek tooltip -- cgit v1.2.3