Skip to content

Instantly share code, notes, and snippets.

@Danilo-Araujo-Silva
Last active December 24, 2017 01:21
Show Gist options
  • Save Danilo-Araujo-Silva/cada6018c5b0c06b535176b7e904f8d0 to your computer and use it in GitHub Desktop.
Save Danilo-Araujo-Silva/cada6018c5b0c06b535176b7e904f8d0 to your computer and use it in GitHub Desktop.
hasClass, addClass, removeClass, toggleClass implementation in ES6
/**
*
* @param classNames
* @param className
* @returns {boolean}
*/
export function hasClass(classNames, className) {
return new RegExp(` ${className} `).test(` ${classNames} `)
}
/**
*
* @param classNames
* @param className
* @returns {*}
*/
export function addClass(classNames, className) {
let output = classNames
if (!hasClass(classNames, className)) {
output = `${classNames} ${className}`
}
return output
}
/**
*
* @param classNames
* @param className
* @returns {string}
*/
export function removeClass(classNames, className) {
let output = ` ${classNames.replace(/[\t\r\n]/g, ' ')} `
if (hasClass(classNames, className)) {
while (output.indexOf(` ${className} `) >= 0) {
output = output.replace(` ${className} `, ' ')
}
output = output.replace(/^\s+|\s+$/g, '')
return output
}
}
/**
*
* @param classNames
* @param className
* @returns {string}
*/
export function toggleClass(classNames, className) {
let output = ` ${classNames.replace( /[\t\r\n]/g, ' ')} `
if (hasClass(classNames, className)) {
while (output.indexOf(` ${className} `) >= 0) {
output = output.replace(` ${className} `, ' ')
}
output = output.replace(/^\s+|\s+$/g, '')
} else {
output += ` ${className}`
}
return output
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment