fix: improve the selector component

This commit is contained in:
xiaoxian521
2021-04-13 00:57:15 +08:00
parent 7bd09e9899
commit 8a4a39de3a
4 changed files with 117 additions and 17 deletions

View File

@@ -1,12 +1,15 @@
export const hasClass = (ele: Element, cls:string) :any => {
export const hasClass = (ele: Element, cls: string): any => {
return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
}
export const addClass = (ele: Element, cls:string) :any => {
export const addClass = (ele: Element, cls: string, extracls?: string): any => {
if (!hasClass(ele, cls)) ele.className += ' ' + cls
if (extracls) {
if (!hasClass(ele, extracls)) ele.className += ' ' + extracls
}
}
export const removeClass =(ele: Element, cls:string, extracls?: string) :any => {
export const removeClass = (ele: Element, cls: string, extracls?: string): any => {
if (hasClass(ele, cls)) {
const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
ele.className = ele.className.replace(reg, ' ').trim()
@@ -17,4 +20,11 @@ export const removeClass =(ele: Element, cls:string, extracls?: string) :any =>
ele.className = ele.className.replace(regs, ' ').trim()
}
}
}
}
export const toggleClass = (flag: boolean, clsName: string, target?: HTMLElement): any => {
const targetEl = target || document.body
let { className } = targetEl
className = className.replace(clsName, "")
targetEl.className = flag ? `${className} ${clsName} ` : className
}