blob: 3cd2e77ee5a597183b9735e986cdf30bec3510e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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
|