summaryrefslogtreecommitdiff
path: root/templates/assets/bootstrap-material-design/js/util.js
diff options
context:
space:
mode:
Diffstat (limited to 'templates/assets/bootstrap-material-design/js/util.js')
-rw-r--r--templates/assets/bootstrap-material-design/js/util.js105
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