js-web-tools
Version:
Tools for Javascript develpers
60 lines (51 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hasClass = hasClass;
exports.addClass = addClass;
exports.removeClass = removeClass;
exports.toggleClass = toggleClass;
function hasClass(ele, className) {
/* istanbul ignore else */
if (ele.classList) {
return !!className && ele.classList.contains(className);
}
return " ".concat(ele.className || ele.className.baseVal, " ").indexOf(" ".concat(className, " ")) !== -1;
}
function addClass(element, className) {
/* istanbul ignore else */
if (element.classList) {
element.classList.add(className);
return;
}
/* istanbul ignore else */
if (!hasClass(element, className)) {
if (typeof element.className === 'string') {
element.className = "".concat(element.className, " ").concat(className);
} else {
element.setAttribute('class', "".concat(element.className && element.className.baseVal || '', " ").concat(className));
}
}
}
function replaceClassName(origClass, classToRemove) {
return origClass.replace(new RegExp("(^|\\s)".concat(classToRemove, "(?:\\s|$)"), 'g'), '$1').replace(/\s+/g, ' ').replace(/^\s*|\s*$/g, '');
}
function removeClass(element, className) {
if (element.classList) {
element.classList.remove(className);
} else if (typeof element.className === 'string') {
element.className = replaceClassName(element.className, className);
} else {
element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));
}
}
function toggleClass(element, className) {
if (element.classList) {
element.classList.toggle(className);
} else if (hasClass(element, className)) {
removeClass(element, className);
} else {
addClass(element, className);
}
}