koel/resources/assets/js/utils/$.ts
2022-04-15 16:24:30 +02:00

40 lines
878 B
TypeScript

/**
* A utility that aims to replace jQuery for the most basic DOM methods.
*/
export const $ = {
is: (el: Element, selector: string): boolean => {
return el.matches(selector)
},
addClass: (el: Element | null, className: string): void => {
if (el) {
el.classList.add(className)
}
},
removeClass: (el: Element | null, className: string): void => {
if (el) {
el.classList.remove(className)
}
},
scrollTo (el: Element, to: number, duration: number, cb?: Function): void {
if (duration <= 0 || !el) {
return
}
const difference = to - el.scrollTop
const perTick = difference / duration * 10
window.setTimeout((): void => {
el.scrollTop = el.scrollTop + perTick
if (el.scrollTop === to) {
cb && cb()
return
}
this.scrollTo(el, to, duration - 10)
}, 10)
}
}