44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
/**
|
|
* @file
|
|
* Provides additional Modernizr tests.
|
|
*/
|
|
((Modernizr) => {
|
|
// This is a copy of Modernizr's touchevents test from version 3.3.1. Drupal
|
|
// core has updated Modernizr to a version newer than 3.3.1, but this newer
|
|
// version does not include the touchevents test in its build. Modernizr's
|
|
// touchevents test is deprecated, and newer versions of this test do not work
|
|
// properly with Drupal as it significantly changes the criteria used for
|
|
// determining if touchevents are supported.
|
|
// The most recent known-to-work version, 3.3.1 is provided here. The only
|
|
// changes are refactoring the code to meet Drupal's JavaScript coding
|
|
// standards and calling prefixes and testStyles() via the Modernizr object
|
|
// as they are not in scope when adding a test via Modernizr.addTest();
|
|
// @todo find alternative to Modernizr's deprecated touchevent test in
|
|
// http://drupal.org/node/3101922
|
|
// @see https://github.com/Modernizr/Modernizr/blob/v3.3.1/feature-detects/touchevents.js
|
|
Modernizr.addTest('touchevents', () => {
|
|
let bool;
|
|
|
|
if (
|
|
'ontouchstart' in window ||
|
|
(window.DocumentTouch && document instanceof window.DocumentTouch)
|
|
) {
|
|
bool = true;
|
|
} else {
|
|
// include the 'heartz' as a way to have a non matching MQ to help
|
|
// terminate the join https://git.io/vznFH
|
|
const query = [
|
|
'@media (',
|
|
Modernizr._prefixes.join('touch-enabled),('),
|
|
'heartz',
|
|
')',
|
|
'{#modernizr{top:9px;position:absolute}}',
|
|
].join('');
|
|
Modernizr.testStyles(query, (node) => {
|
|
bool = node.offsetTop === 9;
|
|
});
|
|
}
|
|
return bool;
|
|
});
|
|
})(Modernizr);
|