generator-senbochen-cli
Version:
这是一个自定义的yeoman脚手架
38 lines (34 loc) • 912 B
text/typescript
type ElementType = Element | HTMLElement
let dom: ElementType
const operationClass = (dom: ElementType) => {
if (dom) {
dom.classList.contains('shake')
? dom.classList.toggle('moreover-shake')
: dom.classList.toggle('shake')
} else {
return
}
}
const shake = (params: Record<string, any>, ...rest: any[]) => {
const target = rest[0]
const className = params.value?.className || ''
if (!className) {
const dom = target.target as ElementType
operationClass(dom)
}
if (className) {
if (!dom) {
dom = document.querySelector(`.${params.value?.className}`) as ElementType
}
operationClass(dom)
}
}
const vShake = {
mounted(el: ElementType, params: Record<string, any>): any {
el.addEventListener('click', shake.bind(null, params))
},
unmounted(el: ElementType): void {
el.removeEventListener('click', shake)
},
}
export default vShake