yoastseo-dep
Version:
Yoast clientside page analysis
66 lines (56 loc) • 1.66 kB
JavaScript
import { forEach } from "lodash-es";
/**
* Adds a class to an element
*
* @param {HTMLElement} element The element to add the class to.
* @param {string} className The class to add.
* @returns {void}
*/
var addClass = function( element, className ) {
var classes = element.className.split( " " );
if ( -1 === classes.indexOf( className ) ) {
classes.push( className );
}
element.className = classes.join( " " );
};
/**
* Removes a class from an element
*
* @param {HTMLElement} element The element to remove the class from.
* @param {string} className The class to remove.
* @returns {void}
*/
var removeClass = function( element, className ) {
var classes = element.className.split( " " );
var foundClass = classes.indexOf( className );
if ( -1 !== foundClass ) {
classes.splice( foundClass, 1 );
}
element.className = classes.join( " " );
};
/**
* Removes multiple classes from an element
*
* @param {HTMLElement} element The element to remove the classes from.
* @param {Array} classes A list of classes to remove
* @returns {void}
*/
var removeClasses = function( element, classes ) {
forEach( classes, this.removeClass.bind( null, element ) );
};
/**
* Checks whether an element has a specific class.
*
* @param {HTMLElement} element The element to check for the class.
* @param {string} className The class to look for.
* @returns {boolean} Whether or not the class is present.
*/
var hasClass = function( element, className ) {
return element.className.indexOf( className ) > -1;
};
export default {
hasClass: hasClass,
addClass: addClass,
removeClass: removeClass,
removeClasses: removeClasses,
};