devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
70 lines (59 loc) • 2.33 kB
JavaScript
var inArray = require("./array").inArray,
domAdapter = require("../dom_adapter"),
callOnce = require("./call_once"),
windowUtils = require("./window"),
navigator = windowUtils.getNavigator(),
devices = require("../devices"),
styleUtils = require("./style");
var transitionEndEventNames = {
'webkitTransition': 'webkitTransitionEnd',
'MozTransition': 'transitionend',
'OTransition': 'oTransitionEnd',
'msTransition': 'MsTransitionEnd',
'transition': 'transitionend'
};
var supportProp = function supportProp(prop) {
return !!styleUtils.styleProp(prop);
};
var isNativeScrollingSupported = function isNativeScrollingSupported() {
var realDevice = devices.real(),
realPlatform = realDevice.platform,
realVersion = realDevice.version,
isObsoleteAndroid = realVersion && realVersion[0] < 4 && realPlatform === "android",
isNativeScrollDevice = !isObsoleteAndroid && inArray(realPlatform, ["ios", "android", "win"]) > -1 || realDevice.mac;
return isNativeScrollDevice;
};
var inputType = function inputType(type) {
if (type === "text") {
return true;
}
var input = domAdapter.createElement("input");
try {
input.setAttribute("type", type);
input.value = "wrongValue";
return !input.value;
} catch (e) {
return false;
}
};
var touchEvents = windowUtils.hasProperty("ontouchstart") && !windowUtils.hasProperty("callPhantom"),
pointerEvents = !!navigator.pointerEnabled || !!navigator.msPointerEnabled,
touchPointersPresent = !!navigator.maxTouchPoints || !!navigator.msMaxTouchPoints;
exports.touchEvents = touchEvents;
exports.pointerEvents = pointerEvents;
exports.touch = touchEvents || pointerEvents && touchPointersPresent;
exports.transition = callOnce(function () {
return supportProp("transition");
});
exports.transitionEndEventName = callOnce(function () {
return transitionEndEventNames[styleUtils.styleProp("transition")];
});
exports.animation = callOnce(function () {
return supportProp("animation");
});
exports.nativeScrolling = isNativeScrollingSupported();
exports.styleProp = styleUtils.styleProp;
exports.stylePropPrefix = styleUtils.stylePropPrefix;
exports.supportProp = supportProp;
exports.inputType = inputType;
;