Skip to content

Instantly share code, notes, and snippets.

@kaisermann
Last active March 7, 2017 13:24
Show Gist options
  • Save kaisermann/524acd1aec5f3de8ea11a36ab9d95dad to your computer and use it in GitHub Desktop.
Save kaisermann/524acd1aec5f3de8ea11a36ab9d95dad to your computer and use it in GitHub Desktop.
Collection of small javascript utility methods that I made and/or use
const onceTransitionsEnd = function (node, properties, res) {
node.addEventListener('transitionend', (function () {
let propertyMatches = 0;
const transitionEnded = function (e) {
if (properties.indexOf(e.propertyName) >= 0) {
propertyMatches++;
}
if (propertyMatches === properties.length) {
this.removeEventListener('transitionend', transitionEnded);
res();
}
};
return transitionEnded;
})());
};
export default callback => {
if (document.readyState === 'complete' ||
(document.readyState !== 'loading' && !document.documentElement.doScroll)) {
callback()
} else {
document.addEventListener('DOMContentLoaded', callback, false)
}
}
// Returns a function that looks for every node with a 'selector'
// and passes it to a 'callback(node)'.
export default (selector, callback) => {
return function () {
const retArray = []
const gridNodes = document.querySelectorAll(selector)
for (let i = 0; i < gridNodes.length; i++) {
const node = gridNodes[i]
if (!node.isControlled) {
retArray.push(callback(node) || node)
node.isControlled = true
}
}
return retArray
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment