UNPKG

js-web-tools

Version:
60 lines (51 loc) 1.79 kB
"use strict"; 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); } }