Just wondering if this is bad practice, and whether there is a better alternative?
import { domHelpers } from './helpers/dom-helpers.js'
const {
getElem,
getElems,
nextSibling,
prevSibling,
addEvent,
removeEvent,
hasClass,
toggleClass,
addClass,
removeClass,
debounce
} = domHelpers
Thanks
edit: this is the module I am importing, if it’s helpful
const doc = window.document
// helper Properties
const __isDesktop = doc.body.classList.contains('desktop')
const __touchtype = __isDesktop ? 'click' : 'touchend'
/* selector methods */
const getElem = (selector, root) => (root || doc).querySelector(selector)
const getElems = (selector, root) => Array.from((root || doc).querySelectorAll(selector))
const nextSibling = elem => elem.nextElementSibling
const prevSibling = elem => elem.previousElementSibling
/* class methods */
const hasClass = (elem, className) => elem.classList.contains(className)
const addClass = (elem, className) => elem.classList.add(className)
const removeClass = (elem, className) => elem.classList.remove(className)
const toggleClass = (elem, className) => elem.classList.toggle(className)
/* event methods */
const addEvent = (elem, type, fn, capture = false) => elem.addEventListener(type, fn, capture)
const removeEvent = (elem, type, fn, capture = false) => elem.removeEventListener(type, fn, capture)
const addEventAll = (elems, type, fn, capture = false) => {
Array.from(elems).forEach(elem => elem.addEventListener(type, fn, capture))
}
const removeEventAll = (elems, type, fn, capture = false) => {
Array.from(elems).forEach(elem => elem.removeEventListener(type, fn, capture))
}
const debounce = (func, wait) => {
let timeout = null
return (...args) => {
const later = () => {
timeout = null
func(...args)
}
clearTimeout(timeout)
timeout = setTimeout(later, wait)
}
}
export const domHelpers = {
/* selector methods */
getElem,
getElems,
nextSibling,
prevSibling,
/* event methods */
addEvent,
removeEvent,
addEventAll,
removeEventAll,
debounce,
/* class methods */
hasClass,
addClass,
removeClass,
toggleClass,
/* properties */
__isDesktop,
__touchtype
}