webshims-rails 1.14.3 → 1.14.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +4 -0
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +141 -139
  5. data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -3
  6. data/vendor/assets/javascripts/webshims/shims/combos/1.js +22 -33
  7. data/vendor/assets/javascripts/webshims/shims/combos/10.js +76 -73
  8. data/vendor/assets/javascripts/webshims/shims/combos/11.js +73 -61
  9. data/vendor/assets/javascripts/webshims/shims/combos/12.js +37 -41
  10. data/vendor/assets/javascripts/webshims/shims/combos/13.js +36 -40
  11. data/vendor/assets/javascripts/webshims/shims/combos/14.js +7 -7
  12. data/vendor/assets/javascripts/webshims/shims/combos/15.js +23 -32
  13. data/vendor/assets/javascripts/webshims/shims/combos/16.js +36 -57
  14. data/vendor/assets/javascripts/webshims/shims/combos/17.js +73 -61
  15. data/vendor/assets/javascripts/webshims/shims/combos/18.js +611 -4604
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +27 -47
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +61 -31
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +24 -16
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +13 -25
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +40 -27
  21. data/vendor/assets/javascripts/webshims/shims/combos/27.js +167 -166
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +11 -12
  23. data/vendor/assets/javascripts/webshims/shims/combos/29.js +5 -5
  24. data/vendor/assets/javascripts/webshims/shims/combos/3.js +14 -22
  25. data/vendor/assets/javascripts/webshims/shims/combos/30.js +16 -24
  26. data/vendor/assets/javascripts/webshims/shims/combos/31.js +14 -22
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +2 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +27 -28
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +5 -14
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +78 -66
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +80 -68
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +29 -49
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +27 -47
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +78 -75
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +42 -29
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +116 -40
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +112 -38
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +3 -12
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -4
  40. data/vendor/assets/javascripts/webshims/shims/es6.js +1887 -0
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +9 -8
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +2 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-inputmode.js +52 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +2 -2
  45. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +4 -5
  46. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +73 -61
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +7 -8
  48. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +164 -163
  49. data/vendor/assets/javascripts/webshims/shims/form-validation.js +121 -144
  50. data/vendor/assets/javascripts/webshims/shims/jme/_icons.scss +3 -0
  51. data/vendor/assets/javascripts/webshims/shims/jme/alternate-media.js +184 -0
  52. data/vendor/assets/javascripts/webshims/shims/jme/{b.js → base.js} +38 -27
  53. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +129 -39
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +145 -44
  55. data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
  59. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +448 -90
  60. data/vendor/assets/javascripts/webshims/shims/jme/{c.js → mediacontrols.js} +74 -11
  61. data/vendor/assets/javascripts/webshims/shims/jme/{p.js → playlist.js} +4 -2
  62. data/vendor/assets/javascripts/webshims/shims/matchMedia.js +122 -0
  63. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +12 -24
  64. data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +1 -1
  65. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +37 -15
  66. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +3 -3
  67. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +4 -5
  68. data/vendor/assets/javascripts/webshims/shims/picture.js +13 -54
  69. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +13 -20
  70. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +24 -18
  71. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +32 -10
  72. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +43 -47
  73. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -18
  74. data/vendor/assets/javascripts/webshims/shims/styles/transparent.png +0 -0
  75. data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
  76. data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +0 -0
  77. data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
  78. data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
  79. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  80. data/vendor/assets/javascripts/webshims/shims/swfmini.js +1 -1
  81. data/vendor/assets/javascripts/webshims/shims/track-ui.js +4 -5
  82. data/vendor/assets/javascripts/webshims/shims/track.js +24 -16
  83. metadata +9 -8
  84. data/vendor/assets/javascripts/webshims/shims/combos/19.js +0 -4745
  85. data/vendor/assets/javascripts/webshims/shims/combos/20.js +0 -4522
  86. data/vendor/assets/javascripts/webshims/shims/combos/32.js +0 -2443
  87. data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +0 -1
@@ -158,7 +158,7 @@ var swfmini = function() {
158
158
  webshims.$.noop
159
159
  ;
160
160
 
161
- if(!Modernizr.video){
161
+ if(!webshims.support.mediaelement){
162
162
  loadEmbed();
163
163
  } else {
164
164
  webshims.ready('WINDOWLOAD', loadEmbed);
@@ -285,7 +285,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
285
285
  var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
286
286
  var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
287
287
  var has = Object.prototype.hasOwnProperty;
288
- webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
288
+ webshims.assumeARIA = true;
289
289
 
290
290
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
291
291
  webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
@@ -304,15 +304,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
304
304
  }
305
305
  window.jQuery = webshims.$;
306
306
  }
307
- if(webshims.M != Modernizr){
308
- webshims.error("Modernizr was included more than once. Make sure to include it only once! Webshims and other scripts might not work properly.");
309
- for(var i in Modernizr){
310
- if(!(i in webshims.M)){
311
- webshims.M[i] = Modernizr[i];
312
- }
313
- }
314
- Modernizr = webshims.M;
315
- }
316
307
  };
317
308
  switch$();
318
309
  setTimeout(switch$, 90);
@@ -641,7 +632,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
641
632
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
642
633
 
643
634
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
644
- var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
635
+ var isExtendNativeSave = webshims.support.advancedObjectProperties && webshims.support.objectAccessor;
645
636
  return function(nodeName, prop, desc){
646
637
  var elem , elemProto;
647
638
  if( isExtendNativeSave && (elem = document.createElement(nodeName)) && (elemProto = webshims.getPrototypeOf(elem)) && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
@@ -952,7 +943,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
952
943
  });
953
944
  }
954
945
  webshims.ready('WINDOWLOAD', this.test);
955
- $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
946
+ $(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel playerdimensionchange', this.handler);
956
947
  $(window).on('resize', this.handler);
957
948
  }
958
949
  }
@@ -1462,13 +1453,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1462
1453
  e._isPolyfilled = true;
1463
1454
  }
1464
1455
  };
1465
-
1466
- if(Modernizr.formvalidation && !webshims.bugs.bustedValidity){
1467
- //create delegatable events
1468
- webshims.capturingEvents(['invalid'], true);
1469
- }
1456
+
1470
1457
 
1471
1458
  var modules = webshims.modules;
1459
+ var support = webshims.support;
1472
1460
  var isValid = function(elem){
1473
1461
  return ($.prop(elem, 'validity') || {valid: 1}).valid;
1474
1462
  };
@@ -1522,7 +1510,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1522
1510
  return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required'));
1523
1511
  },
1524
1512
  "user-error": function(elem){
1525
- return ($.prop(elem, 'willValidate') && $(elem).hasClass('user-error'));
1513
+ return ($.prop(elem, 'willValidate') && $(elem).getShadowElement().hasClass((options.iVal.errorClass || 'user-error')));
1526
1514
  },
1527
1515
  "optional-element": function(elem){
1528
1516
  return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required') === false);
@@ -1534,7 +1522,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1534
1522
  });
1535
1523
 
1536
1524
  // sizzle/jQuery has a bug with :disabled/:enabled selectors
1537
- if(Modernizr.fieldsetdisabled && !$('<fieldset disabled=""><input /><input /></fieldset>').find(':disabled').filter(':disabled').is(':disabled')){
1525
+ if(support.fieldsetdisabled && !$('<fieldset disabled=""><input /><input /></fieldset>').find(':disabled').filter(':disabled').is(':disabled')){
1538
1526
  matches = $.find.matches;
1539
1527
  matchesOverride = {':disabled': 1, ':enabled': 1};
1540
1528
  $.find.matches = function(expr, elements){
@@ -1588,6 +1576,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1588
1576
  addModule('form-validators', $.extend({}, formExtras));
1589
1577
 
1590
1578
 
1579
+ if(support.formvalidation && !webshims.bugs.bustedValidity){
1580
+ //create delegatable events
1581
+ webshims.capturingEvents(['invalid'], true);
1582
+ }
1591
1583
 
1592
1584
  if($.expr.filters){
1593
1585
  extendSels();
@@ -1733,7 +1725,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1733
1725
 
1734
1726
  webshims.ready('WINDOWLOAD', lazyLoad);
1735
1727
 
1736
- if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
1728
+ if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (support.inputtypes.range && support.inputtypes.color))){
1737
1729
  webshims.isReady('form-number-date-ui', true);
1738
1730
  }
1739
1731
 
@@ -1814,12 +1806,11 @@ var typeModels = webshims.inputTypes,
1814
1806
  }
1815
1807
  return fn;
1816
1808
  })();
1817
- if(!Modernizr.prefixed || Modernizr.prefixed("matchesSelector", document.documentElement)){
1818
- $.find.matchesSelector = function(node, expr){
1819
- expr = expr.replace(regExp, regFn);
1820
- return matchesSelector.call(this, node, expr);
1821
- };
1822
- }
1809
+
1810
+ $.find.matchesSelector = function(node, expr){
1811
+ expr = expr.replace(regExp, regFn);
1812
+ return matchesSelector.call(this, node, expr);
1813
+ };
1823
1814
 
1824
1815
  })();
1825
1816
  }
@@ -2274,7 +2265,7 @@ webshims.defineNodeNameProperty('form', 'noValidate', {
2274
2265
  });
2275
2266
  });
2276
2267
 
2277
- if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
2268
+ if(webshims.support.inputtypes.date && /webkit/i.test(navigator.userAgent)){
2278
2269
  (function(){
2279
2270
 
2280
2271
  var noInputTriggerEvts = {updateInput: 1, input: 1},
@@ -2386,7 +2377,7 @@ webshims.addReady(function(context, contextElem){
2386
2377
 
2387
2378
  });
2388
2379
 
2389
- if(!Modernizr.input.list){
2380
+ if(!webshims.support.datalist){
2390
2381
  webshims.defineNodeNameProperty('datalist', 'options', {
2391
2382
  prop: {
2392
2383
  writeable: false,
@@ -2820,7 +2811,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2820
2811
  };
2821
2812
 
2822
2813
 
2823
- if(!Modernizr.formvalidation || webshims.bugs.bustedValidity){
2814
+ if(!webshims.support.formvalidation || webshims.bugs.bustedValidity){
2824
2815
  implementProperties.push('validationMessage');
2825
2816
  }
2826
2817
 
@@ -2856,7 +2847,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2856
2847
  if(message){return message;}
2857
2848
 
2858
2849
  if(validity.customError && elem.nodeName){
2859
- message = (Modernizr.formvalidation && !webshims.bugs.bustedValidity && desc.prop._supget) ? desc.prop._supget.call(elem) : webshims.data(elem, 'customvalidationMessage');
2850
+ message = (webshims.support.formvalidation && !webshims.bugs.bustedValidity && desc.prop._supget) ? desc.prop._supget.call(elem) : webshims.data(elem, 'customvalidationMessage');
2860
2851
  if(message){return message;}
2861
2852
  }
2862
2853
  $.each(validity, function(name, prop){
@@ -2935,8 +2926,8 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
2935
2926
  */
2936
2927
 
2937
2928
  (function(){
2938
- var formsCFG = $.webshims.cfg.forms;
2939
- var listSupport = Modernizr.input.list;
2929
+ var formsCFG = webshims.cfg.forms;
2930
+ var listSupport = webshims.support.datalist;
2940
2931
  if(listSupport && !formsCFG.customDatalist){return;}
2941
2932
 
2942
2933
  var initializeDatalist = function(){
@@ -3174,9 +3165,10 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
3174
3165
  })();
3175
3166
 
3176
3167
  });
3177
- ;(function(Modernizr, webshims){
3168
+ ;(function(webshims){
3178
3169
  "use strict";
3179
- var hasNative = Modernizr.audio && Modernizr.video;
3170
+ var support = webshims.support;
3171
+ var hasNative = support.mediaelement;
3180
3172
  var supportsLoop = false;
3181
3173
  var bugs = webshims.bugs;
3182
3174
  var swfType = 'mediaelement-jaris';
@@ -3199,14 +3191,14 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
3199
3191
 
3200
3192
  if(hasNative){
3201
3193
  var videoElem = document.createElement('video');
3202
- Modernizr.videoBuffered = ('buffered' in videoElem);
3203
- Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
3194
+ support.videoBuffered = ('buffered' in videoElem);
3195
+ support.mediaDefaultMuted = ('defaultMuted' in videoElem);
3204
3196
  supportsLoop = ('loop' in videoElem);
3205
- Modernizr.mediaLoop = supportsLoop;
3197
+ support.mediaLoop = supportsLoop;
3206
3198
 
3207
3199
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
3208
3200
 
3209
- if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
3201
+ if( !support.videoBuffered || !supportsLoop || (!support.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
3210
3202
  webshims.addPolyfill('mediaelement-native-fix', {
3211
3203
  d: ['dom-support']
3212
3204
  });
@@ -3214,7 +3206,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
3214
3206
  }
3215
3207
  }
3216
3208
 
3217
- if(Modernizr.track && !bugs.track){
3209
+ if(support.track && !bugs.track){
3218
3210
  (function(){
3219
3211
  if(!bugs.track){
3220
3212
 
@@ -3546,19 +3538,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3546
3538
  }
3547
3539
  }
3548
3540
  };
3549
- var allowedPreload = {'metadata': 1, 'auto': 1, '': 1};
3550
- var fixPreload = function(elem){
3551
- var preload, img;
3552
- if(elem.getAttribute('preload') == 'none'){
3553
- if(allowedPreload[(preload = $.attr(elem, 'data-preload'))]){
3554
- $.attr(elem, 'preload', preload);
3555
- } else if(hasNative && (preload = elem.getAttribute('poster'))){
3556
- img = document.createElement('img');
3557
- img.src = preload;
3558
- }
3559
- }
3560
- };
3561
- var stopParent = /^(?:embed|object|datalist)$/i;
3541
+ var stopParent = /^(?:embed|object|datalist|picture)$/i;
3562
3542
  var selectSource = function(elem, data){
3563
3543
  var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
3564
3544
  var _srces = mediaelement.srces(elem);
@@ -3573,7 +3553,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3573
3553
  if(mediaelement.sortMedia){
3574
3554
  _srces.sort(mediaelement.sortMedia);
3575
3555
  }
3576
- fixPreload(elem);
3577
3556
  stepSources(elem, data, _srces);
3578
3557
 
3579
3558
  };
@@ -3597,7 +3576,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3597
3576
 
3598
3577
  if(webshims.implement(this, 'mediaelement')){
3599
3578
  selectSource(this);
3600
- if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
3579
+ if(!support.mediaDefaultMuted && $.attr(this, 'muted') != null){
3601
3580
  $.prop(this, 'muted', true);
3602
3581
  }
3603
3582
 
@@ -3622,7 +3601,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3622
3601
  if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
3623
3602
  supLoad.prop._supvalue.apply(this, arguments);
3624
3603
  }
3625
- if(!loadTrackUi.loaded && $('track', this).length){
3604
+ if(!loadTrackUi.loaded && this.querySelector('track')){
3626
3605
  loadTrackUi();
3627
3606
  }
3628
3607
  $(this).triggerHandler('wsmediareload');
@@ -3721,4 +3700,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3721
3700
  webshims.ready('track', loadTrackUi);
3722
3701
  });
3723
3702
 
3724
- })(Modernizr, webshims);
3703
+ })(webshims);
@@ -1239,7 +1239,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1239
1239
  "use strict";
1240
1240
  var curCfg;
1241
1241
  var formcfg = webshims.formcfg;
1242
- var hasFormValidation = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
1242
+ var hasFormValidation = webshims.support.formvalidation && !webshims.bugs.bustedValidity;
1243
1243
  var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
1244
1244
  var stopPropagation = function(e){
1245
1245
  e.stopImmediatePropagation();
@@ -1292,7 +1292,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1292
1292
  ;
1293
1293
  }
1294
1294
  };
1295
- var numericType = Modernizr.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
1295
+ var numericType = webshims.support.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
1296
1296
  'tel' : 'text';
1297
1297
  var splitInputs = {
1298
1298
  date: {
@@ -2333,74 +2333,86 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2333
2333
  })();
2334
2334
 
2335
2335
 
2336
- $.fn.wsTouchClick = (function(){
2337
- var supportsTouchaction = ('touchAction' in document.documentElement.style);
2338
- var addTouch = !supportsTouchaction && ('ontouchstart' in window) && document.addEventListener;
2339
- return function(target, handler){
2340
- var touchData, touchEnd, touchStart;
2341
2336
 
2342
- if(addTouch){
2337
+ if(!$.fn.wsTouchClick){
2343
2338
 
2344
- touchEnd = function(e){
2345
- var ret, touch;
2346
- e = e.originalEvent || {};
2347
- $(this).off('touchend touchcancel', touchEnd);
2348
- var changedTouches = e.changedTouches || e.touches;
2349
- if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
2350
- return;
2339
+ $.fn.wsTouchClick = (function(){
2340
+ var supportsTouchaction = ('touchAction' in document.documentElement.style);
2341
+ var addTouch = !supportsTouchaction && ('ontouchstart' in window) && document.addEventListener;
2342
+ return function(target, handler){
2343
+ var touchData, touchEnd, touchStart, stopClick, allowClick;
2344
+ var runHandler = function(){
2345
+ if(!stopClick){
2346
+ return handler.apply(this, arguments);
2351
2347
  }
2348
+ };
2349
+ if(addTouch){
2350
+ allowClick = function(){
2351
+ stopClick = false;
2352
+ };
2353
+ touchEnd = function(e){
2354
+ var ret, touch;
2355
+ e = e.originalEvent || {};
2356
+ $(this).off('touchend touchcancel', touchEnd);
2357
+ var changedTouches = e.changedTouches || e.touches;
2358
+ if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
2359
+ return;
2360
+ }
2352
2361
 
2353
- touch = changedTouches[0];
2354
- if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 300){
2355
- return;
2356
- }
2357
- e.preventDefault();
2358
- ret = handler.apply(this, arguments);
2362
+ touch = changedTouches[0];
2363
+ if(Math.abs(touchData.x - touch.pageX) > 40 || Math.abs(touchData.y - touch.pageY) > 40 || Date.now() - touchData.now > 300){
2364
+ return;
2365
+ }
2359
2366
 
2360
- return ret;
2361
- };
2367
+ e.preventDefault();
2368
+ stopClick = true;
2369
+ setTimeout(allowClick, 400);
2362
2370
 
2363
- touchStart = function(e){
2364
- var touch, elemTarget;
2371
+ ret = handler.apply(this, arguments);
2365
2372
 
2373
+ return ret;
2374
+ };
2366
2375
 
2367
- if((!e || e.touches.length != 1)){
2368
- return;
2369
- }
2370
- touch = e.touches[0];
2371
- elemTarget = target ? $(touch.target).closest(target) : $(this);
2372
- if(!elemTarget.length){
2373
- return;
2374
- }
2375
- touchData = {
2376
- x: touch.pageX,
2377
- y: touch.pageY,
2378
- now: Date.now()
2376
+ touchStart = function(e){
2377
+ var touch, elemTarget;
2378
+ if((!e || e.touches.length != 1)){
2379
+ return;
2380
+ }
2381
+ touch = e.touches[0];
2382
+ elemTarget = target ? $(touch.target).closest(target) : $(this);
2383
+ if(!elemTarget.length){
2384
+ return;
2385
+ }
2386
+ touchData = {
2387
+ x: touch.pageX,
2388
+ y: touch.pageY,
2389
+ now: Date.now()
2390
+ };
2391
+ elemTarget.on('touchend touchcancel', touchEnd);
2379
2392
  };
2380
- elemTarget.on('touchend touchcancel', touchEnd);
2381
- };
2382
2393
 
2383
- this.each(function(){
2384
- this.addEventListener('touchstart', touchStart, true);
2385
- });
2386
- } else if(supportsTouchaction){
2387
- this.css('touch-action', 'manipulation');
2388
- }
2394
+ this.each(function(){
2395
+ this.addEventListener('touchstart', touchStart, true);
2396
+ });
2397
+ } else if(supportsTouchaction){
2398
+ this.css('touch-action', 'manipulation');
2399
+ }
2389
2400
 
2390
- if($.isFunction(target)){
2391
- handler = target;
2392
- target = false;
2393
- this.on('click', handler);
2394
- } else {
2395
- this.on('click', target, handler);
2396
- }
2397
- return this;
2398
- };
2399
- })();
2401
+ if($.isFunction(target)){
2402
+ handler = target;
2403
+ target = false;
2404
+ this.on('click', runHandler);
2405
+ } else {
2406
+ this.on('click', target, runHandler);
2407
+ }
2408
+ return this;
2409
+ };
2410
+ })();
2411
+ }
2400
2412
 
2401
2413
  (function(){
2402
2414
  var picker = {};
2403
- var assumeVirtualKeyBoard = Modernizr.touchevents || Modernizr.touch || (/android|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase()));
2415
+ var assumeVirtualKeyBoard = (window.Modernizr && (Modernizr.touchevents || Modernizr.touch)) || (/android|iphone|ipad|ipod|blackberry|iemobile/i.test(navigator.userAgent.toLowerCase()));
2404
2416
  webshims.inlinePopover = {
2405
2417
  _create: function(){
2406
2418
  this.element = $('<div class="ws-inline-picker"><div class="ws-po-box" /></div>').data('wspopover', this);
@@ -2790,7 +2802,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2790
2802
 
2791
2803
  var stopCircular, isCheckValidity;
2792
2804
 
2793
- var modernizrInputTypes = Modernizr.inputtypes;
2805
+ var supportInputTypes = webshims.support.inputtypes;
2794
2806
  var inputTypes = {
2795
2807
 
2796
2808
  };
@@ -2944,7 +2956,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
2944
2956
  var type = $.prop(this, 'type');
2945
2957
  var i, opts, data, optsName, labels, cNames, hasInitialFocus;
2946
2958
 
2947
- if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!modernizrInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
2959
+ if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!supportInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
2948
2960
  data = {};
2949
2961
  optsName = type;
2950
2962
  hasInitialFocus = $(this).is(':focus');
@@ -3115,11 +3127,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
3115
3127
  });
3116
3128
  }
3117
3129
  }
3118
- if(modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && ((/MSIE 1[0|1]\.\d/.test(navigator.userAgent)) || (/Trident\/7\.0/.test(navigator.userAgent)))){
3130
+ if(supportInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && ((/MSIE 1[0|1]\.\d/.test(navigator.userAgent)) || (/Trident\/7\.0/.test(navigator.userAgent)))){
3119
3131
  replace.number = 1;
3120
3132
  }
3121
3133
 
3122
- if(!modernizrInputTypes.range || replace.range){
3134
+ if(!supportInputTypes.range || replace.range){
3123
3135
  extendType('range', {
3124
3136
  _create: function(opts, set){
3125
3137
  var data = $('<span />').insertAfter(opts.orig).rangeUI(opts).data('rangeUi');
@@ -3130,7 +3142,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
3130
3142
 
3131
3143
 
3132
3144
  ['number', 'time', 'month', 'date', 'color', 'datetime-local'].forEach(function(name){
3133
- if(!modernizrInputTypes[name] || replace[name]){
3145
+ if(!supportInputTypes[name] || replace[name]){
3134
3146
  extendType(name, {
3135
3147
  _create: function(opts, set){
3136
3148
  if(opts.monthSelect || opts.daySelect || opts.yearSelect){