diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-22 19:19:26 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-22 19:19:26 +0100 |
| commit | d42c8b528eb595101954f478e0024e3f079f6fbf (patch) | |
| tree | 61a528cf94f1f6941f4683ae8736a4a0135c035e /templates/assets/bootstrap-material-design/js/util.js | |
| download | minionlivesmatter-d42c8b528eb595101954f478e0024e3f079f6fbf.tar.gz minionlivesmatter-d42c8b528eb595101954f478e0024e3f079f6fbf.zip | |
first implementation of fun stats site
Diffstat (limited to 'templates/assets/bootstrap-material-design/js/util.js')
| -rw-r--r-- | templates/assets/bootstrap-material-design/js/util.js | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/templates/assets/bootstrap-material-design/js/util.js b/templates/assets/bootstrap-material-design/js/util.js new file mode 100644 index 0000000..3cd2e77 --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/util.js @@ -0,0 +1,105 @@ +const Util = (() => { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + let transitionEnd = false + let transitionEndSelector = '' + + const TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + } + + function transitionEndTest() { + if (window.QUnit) { + return false + } + + let el = document.createElement('bmd') + + for (let name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return TransitionEndEvent[name] // { end: TransitionEndEvent[name] } + } + } + + return false + } + + function setTransitionEndSupport() { + transitionEnd = transitionEndTest() + + // generate a concatenated transition end event selector + for (let name in TransitionEndEvent) { + transitionEndSelector += ` ${TransitionEndEvent[name]}` + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + let Util = { + + transitionEndSupported() { + return transitionEnd + }, + + transitionEndSelector() { + return transitionEndSelector + }, + + isChar(event) { + if (typeof event.which === 'undefined') { + return true + } else if (typeof event.which === 'number' && event.which > 0) { + return ( + !event.ctrlKey + && !event.metaKey + && !event.altKey + && event.which !== 8 // backspace + && event.which !== 9 // tab + && event.which !== 13 // enter + && event.which !== 16 // shift + && event.which !== 17 // ctrl + && event.which !== 20 // caps lock + && event.which !== 27 // escape + ) + } + return false + }, + + assert($element, invalidTest, message) { + if (invalidTest) { + if (!$element === undefined) { + $element.css('border', '1px solid red') + } + console.error(message, $element) // eslint-disable-line no-console + throw message + } + }, + + describe($element) { + if ($element === undefined) { + return 'undefined' + } else if ($element.length === 0) { + return '(no matching elements)' + } + return `${$element[0].outerHTML.split('>')[0]}>` + } + } + + setTransitionEndSupport() + return Util + +})(jQuery) + +export default Util |
