63 lines
1.1 KiB
JavaScript
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
|
|
}
|