cheatsheets/_parcel/helpers/dom.js

63 lines
1.1 KiB
JavaScript

import matches from 'dom101/matches'
/*
* Just like jQuery.append
*/
export function appendMany(el, children) {
children.forEach((child) => {
el.appendChild(child)
})
}
/*
* Just like jQuery.nextUntil
*/
export function nextUntil(el, selector) {
const nextEl = el.nextSibling
return nextUntilTick(nextEl, selector, [])
}
function nextUntilTick(el, selector, acc) {
if (!el) return acc
const isMatch = matches(el, selector)
if (isMatch) return acc
return nextUntilTick(el.nextSibling, selector, [...acc, el])
}
/*
* Just like jQuery.before
*/
export function before(reference, newNode) {
reference.parentNode.insertBefore(newNode, reference)
}
/*
* Like jQuery.children('selector')
*/
export function findChildren(el, selector) {
return [].slice.call(el.children).filter((child) => matches(child, selector))
}
/**
* Creates a div
* @private
*
* @example
*
* createDiv({ class: 'foo' })
*/
export function createDiv(props) {
const d = document.createElement('div')
Object.keys(props).forEach((key) => {
d.setAttribute(key, props[key])
})
return d
}