diff options
Diffstat (limited to 'js/segmented-controllers.js')
-rw-r--r-- | js/segmented-controllers.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/js/segmented-controllers.js b/js/segmented-controllers.js new file mode 100644 index 0000000..359b5d6 --- /dev/null +++ b/js/segmented-controllers.js @@ -0,0 +1,47 @@ +/* ---------------------------------- + * Segmented controls v2.0.0 + * Licensed under The MIT License + * http://opensource.org/licenses/MIT + * ---------------------------------- */ + +!function () { + var getTarget = function (target) { + var i, segmentedControls = document.querySelectorAll('.segmented-control .control-item'); + for (; target && target !== document; target = target.parentNode) { + for (i = segmentedControls.length; i--;) { if (segmentedControls[i] === target) return target; } + } + }; + + window.addEventListener("touchend", function (e) { + var activeTab; + var activeBodies; + var targetBody; + var targetTab = getTarget(e.target); + var className = 'active'; + var classSelector = '.' + className; + + if (!targetTab) return; + + activeTab = targetTab.parentNode.querySelector(classSelector); + + if (activeTab) activeTab.classList.remove(className); + + targetTab.classList.add(className); + + if (!targetTab.hash) return; + + targetBody = document.querySelector(targetTab.hash); + + if (!targetBody) return; + + activeBodies = targetBody.parentNode.querySelectorAll(classSelector); + + for (var i = 0; i < activeBodies.length; i++) { + activeBodies[i].classList.remove(className); + } + + targetBody.classList.add(className); + }); + + window.addEventListener('click', function (e) { if (getTarget(e.target)) e.preventDefault(); }); +}();
\ No newline at end of file |