Created
December 18, 2015 12:11
-
-
Save javierarques/cb401dd6e901875b2500 to your computer and use it in GitHub Desktop.
Toggler JS Component. Fire CSS classes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const Toggler = (() => { | |
"use strict"; | |
// | |
// CONSTANTS | |
// | |
const TOGGLER_ATTR = '[data-toggler]'; | |
const TOGGLER_ATTR_TARGET = 'data-toggler-target'; | |
const TOGGLER_ATTR_CLASS = 'data-toggler-class'; | |
// | |
// GLOBALS | |
// | |
let togglers = []; | |
// | |
// METHODS | |
// | |
function init() { | |
cacheDomElements(); | |
bindEvents(); | |
} | |
function cacheDomElements() { | |
togglers = document.querySelectorAll(TOGGLER_ATTR); | |
} | |
function bindEvents() { | |
if (togglers.length) { | |
Array.prototype.forEach.call(togglers, addSingleEvent); | |
} | |
} | |
function addSingleEvent(element) { | |
let target = document.querySelector(element.getAttribute(TOGGLER_ATTR_TARGET)); | |
let cssClass = element.getAttribute(TOGGLER_ATTR_CLASS); | |
element.addEventListener('click', (e) => { | |
e.preventDefault(); | |
toggleClass(target, cssClass); | |
}); | |
} | |
function toggleClass(target, cssClass) { | |
target.classList.toggle(cssClass); | |
} | |
// | |
// AUTO INIT | |
// | |
init(); | |
// | |
// PUBLIC API | |
// | |
var Toggler = { | |
toggleClass: toggleClass, | |
init: init | |
}; | |
return Toggler; | |
})(); | |
export default Toggler; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment