mirror of
https://github.com/mdbootstrap/mdb-ui-kit.git
synced 2024-11-25 11:04:09 +03:00
103 lines
2.6 KiB
JavaScript
103 lines
2.6 KiB
JavaScript
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;
|