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