webshims-rails 1.13.0 → 1.14.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) 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 +0 -0
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +45 -26
  5. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +0 -0
  6. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +0 -0
  7. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
  8. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +0 -0
  9. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +0 -0
  10. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +0 -0
  11. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  12. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  13. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +0 -0
  14. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +0 -0
  15. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +0 -0
  16. data/vendor/assets/javascripts/webshims/shims/color-picker.js +0 -0
  17. data/vendor/assets/javascripts/webshims/shims/combos/1.js +33 -2
  18. data/vendor/assets/javascripts/webshims/shims/combos/10.js +82 -29
  19. data/vendor/assets/javascripts/webshims/shims/combos/11.js +50 -27
  20. data/vendor/assets/javascripts/webshims/shims/combos/12.js +0 -0
  21. data/vendor/assets/javascripts/webshims/shims/combos/13.js +0 -0
  22. data/vendor/assets/javascripts/webshims/shims/combos/14.js +1 -1
  23. data/vendor/assets/javascripts/webshims/shims/combos/15.js +115 -43
  24. data/vendor/assets/javascripts/webshims/shims/combos/16.js +115 -43
  25. data/vendor/assets/javascripts/webshims/shims/combos/17.js +50 -27
  26. data/vendor/assets/javascripts/webshims/shims/combos/18.js +50 -27
  27. data/vendor/assets/javascripts/webshims/shims/combos/19.js +33 -3
  28. data/vendor/assets/javascripts/webshims/shims/combos/2.js +65 -4
  29. data/vendor/assets/javascripts/webshims/shims/combos/20.js +33 -3
  30. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1 -1
  31. data/vendor/assets/javascripts/webshims/shims/combos/22.js +0 -0
  32. data/vendor/assets/javascripts/webshims/shims/combos/23.js +0 -0
  33. data/vendor/assets/javascripts/webshims/shims/combos/25.js +492 -2580
  34. data/vendor/assets/javascripts/webshims/shims/combos/26.js +8314 -1432
  35. data/vendor/assets/javascripts/webshims/shims/combos/27.js +1642 -556
  36. data/vendor/assets/javascripts/webshims/shims/combos/28.js +50 -39
  37. data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -0
  38. data/vendor/assets/javascripts/webshims/shims/combos/3.js +66 -5
  39. data/vendor/assets/javascripts/webshims/shims/combos/30.js +66 -5
  40. data/vendor/assets/javascripts/webshims/shims/combos/31.js +65 -4
  41. data/vendor/assets/javascripts/webshims/shims/combos/32.js +0 -0
  42. data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -0
  43. data/vendor/assets/javascripts/webshims/shims/combos/34.js +32 -2
  44. data/vendor/assets/javascripts/webshims/shims/combos/4.js +33 -3
  45. data/vendor/assets/javascripts/webshims/shims/combos/5.js +50 -27
  46. data/vendor/assets/javascripts/webshims/shims/combos/6.js +50 -27
  47. data/vendor/assets/javascripts/webshims/shims/combos/7.js +66 -5
  48. data/vendor/assets/javascripts/webshims/shims/combos/8.js +66 -5
  49. data/vendor/assets/javascripts/webshims/shims/combos/9.js +82 -29
  50. data/vendor/assets/javascripts/webshims/shims/combos/97.js +0 -0
  51. data/vendor/assets/javascripts/webshims/shims/combos/98.js +1 -2
  52. data/vendor/assets/javascripts/webshims/shims/combos/99.js +1 -2
  53. data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +1 -0
  54. data/vendor/assets/javascripts/webshims/shims/details.js +0 -0
  55. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +32 -2
  56. data/vendor/assets/javascripts/webshims/shims/es5.js +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/excanvas.js +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/filereader.js +441 -362
  59. data/vendor/assets/javascripts/webshims/shims/form-combat.js +19 -7
  60. data/vendor/assets/javascripts/webshims/shims/form-core.js +33 -2
  61. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +0 -0
  62. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -0
  63. data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +0 -0
  64. data/vendor/assets/javascripts/webshims/shims/form-message.js +1 -1
  65. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +0 -0
  66. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -0
  67. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +50 -27
  68. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +49 -38
  69. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +45 -14
  70. data/vendor/assets/javascripts/webshims/shims/form-validation.js +105 -7
  71. data/vendor/assets/javascripts/webshims/shims/form-validators.js +212 -134
  72. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +15 -12
  73. data/vendor/assets/javascripts/webshims/shims/geolocation.js +0 -0
  74. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +0 -0
  75. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-CN.js +0 -0
  76. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-cs.js +0 -0
  77. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +0 -0
  78. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +0 -0
  79. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -0
  80. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +0 -0
  81. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +0 -0
  82. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +0 -0
  83. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +0 -0
  84. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +0 -0
  85. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +0 -0
  86. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +0 -0
  87. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +0 -0
  88. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +0 -0
  89. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +0 -0
  90. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-BR.js +0 -0
  91. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +0 -0
  92. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt.js +0 -0
  93. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +0 -0
  94. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +0 -0
  95. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +0 -0
  96. data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -0
  97. data/vendor/assets/javascripts/webshims/shims/jme/b.js +0 -0
  98. data/vendor/assets/javascripts/webshims/shims/jme/c.js +1 -2
  99. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +0 -0
  100. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +0 -0
  101. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +3 -3
  102. data/vendor/assets/javascripts/webshims/shims/jme/p.js +0 -0
  103. data/vendor/assets/javascripts/webshims/shims/jpicker/ChangeLog.txt +0 -0
  104. data/vendor/assets/javascripts/webshims/shims/jpicker/ReadMe.txt +0 -0
  105. data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
  106. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
  107. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
  108. data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
  109. data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
  110. data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
  111. data/vendor/assets/javascripts/webshims/shims/jpicker/images/mappoint.gif +0 -0
  112. data/vendor/assets/javascripts/webshims/shims/jpicker/images/picker.gif +0 -0
  113. data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
  114. data/vendor/assets/javascripts/webshims/shims/jpicker/images/rangearrows.gif +0 -0
  115. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +0 -0
  116. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +0 -0
  117. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +1 -1
  118. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +0 -0
  119. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +1 -1
  120. data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
  121. data/vendor/assets/javascripts/webshims/shims/moxie/js/moxie.js +7994 -0
  122. data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
  123. data/vendor/assets/javascripts/webshims/shims/picture.js +50 -43
  124. data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +0 -0
  125. data/vendor/assets/javascripts/webshims/shims/promise.js +0 -0
  126. data/vendor/assets/javascripts/webshims/shims/range-ui.js +0 -0
  127. data/vendor/assets/javascripts/webshims/shims/sizzle.js +0 -0
  128. data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
  129. data/vendor/assets/javascripts/webshims/shims/styles/config.rb +0 -0
  130. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +7 -2
  131. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +0 -0
  132. data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
  133. data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
  134. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +219 -0
  135. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +115 -0
  136. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +31 -0
  137. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +583 -0
  138. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
  139. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
  140. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +736 -0
  141. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +105 -21
  142. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +91 -19
  143. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  144. data/vendor/assets/javascripts/webshims/shims/swf/filereader.swf +0 -0
  145. data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +0 -0
  146. data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -0
  147. data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -1
  148. data/vendor/assets/javascripts/webshims/shims/track.js +0 -0
  149. metadata +13 -2
@@ -179,8 +179,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
179
179
  });
180
180
  return this;
181
181
  };
182
-
183
- var dataID = '_webshimsLib'+ (Math.round(Math.random() * 1000));
182
+ var idCount = 0;
183
+ var dataID = '_webshims'+ (Math.round(Math.random() * 1000));
184
184
  var elementData = function(elem, key, val){
185
185
  elem = elem.jquery ? elem[0] : elem;
186
186
  if(!elem){return val || {};}
@@ -211,6 +211,35 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
211
211
  return this.pushStack(elems);
212
212
  };
213
213
  });
214
+
215
+ function clone(elem, dataAndEvents, uniqueIds){
216
+ var cloned = $.clone( elem, dataAndEvents, false );
217
+ $(cloned.querySelectorAll('.'+webshims.shadowClass)).detach();
218
+ if(uniqueIds){
219
+ idCount++;
220
+ $(cloned.querySelectorAll('[id]')).prop('id', function(i, id){
221
+ return id +idCount;
222
+ });
223
+ } else {
224
+ $(cloned.querySelectorAll('audio[id^="ID-"], video[id^="ID-"], label[id^="ID-"]')).removeAttr('id');
225
+ }
226
+ return cloned;
227
+ }
228
+
229
+ $.fn.clonePolyfill = function(dataAndEvents, uniqueIds){
230
+ dataAndEvents = dataAndEvents || false;
231
+ return this
232
+ .map(function() {
233
+ var cloned = clone( this, dataAndEvents, uniqueIds );
234
+ setTimeout(function(){
235
+ if($.contains(document.body, cloned)){
236
+ $(cloned).updatePolyfill();
237
+ }
238
+ });
239
+ return cloned;
240
+ })
241
+ ;
242
+ };
214
243
 
215
244
  //add support for $('video').trigger('play') in case extendNative is set to false
216
245
  if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
@@ -522,6 +551,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
522
551
  return id;
523
552
  };
524
553
  })(),
554
+ shadowClass: 'wsshadow-'+(Date.now()),
525
555
  implement: function(elem, type){
526
556
  var data = elementData(elem, 'implemented') || elementData(elem, 'implemented', {});
527
557
  if(data[type]){
@@ -179,8 +179,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
179
179
  });
180
180
  return this;
181
181
  };
182
-
183
- var dataID = '_webshimsLib'+ (Math.round(Math.random() * 1000));
182
+ var idCount = 0;
183
+ var dataID = '_webshims'+ (Math.round(Math.random() * 1000));
184
184
  var elementData = function(elem, key, val){
185
185
  elem = elem.jquery ? elem[0] : elem;
186
186
  if(!elem){return val || {};}
@@ -211,6 +211,35 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
211
211
  return this.pushStack(elems);
212
212
  };
213
213
  });
214
+
215
+ function clone(elem, dataAndEvents, uniqueIds){
216
+ var cloned = $.clone( elem, dataAndEvents, false );
217
+ $(cloned.querySelectorAll('.'+webshims.shadowClass)).detach();
218
+ if(uniqueIds){
219
+ idCount++;
220
+ $(cloned.querySelectorAll('[id]')).prop('id', function(i, id){
221
+ return id +idCount;
222
+ });
223
+ } else {
224
+ $(cloned.querySelectorAll('audio[id^="ID-"], video[id^="ID-"], label[id^="ID-"]')).removeAttr('id');
225
+ }
226
+ return cloned;
227
+ }
228
+
229
+ $.fn.clonePolyfill = function(dataAndEvents, uniqueIds){
230
+ dataAndEvents = dataAndEvents || false;
231
+ return this
232
+ .map(function() {
233
+ var cloned = clone( this, dataAndEvents, uniqueIds );
234
+ setTimeout(function(){
235
+ if($.contains(document.body, cloned)){
236
+ $(cloned).updatePolyfill();
237
+ }
238
+ });
239
+ return cloned;
240
+ })
241
+ ;
242
+ };
214
243
 
215
244
  //add support for $('video').trigger('play') in case extendNative is set to false
216
245
  if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
@@ -522,6 +551,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
522
551
  return id;
523
552
  };
524
553
  })(),
554
+ shadowClass: 'wsshadow-'+(Date.now()),
525
555
  implement: function(elem, type){
526
556
  var data = elementData(elem, 'implemented') || elementData(elem, 'implemented', {});
527
557
  if(data[type]){
@@ -1407,7 +1437,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1407
1437
  if(message && message.indexOf('{%') != -1){
1408
1438
  ['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
1409
1439
  if(message.indexOf('{%'+attr) === -1){return;}
1410
- var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
1440
+ var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr) || $.attr(elem, attr) || '') || '';
1411
1441
  val = ''+val;
1412
1442
 
1413
1443
 
@@ -1497,6 +1497,8 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1497
1497
  ;
1498
1498
  }
1499
1499
  };
1500
+ var numericType = Modernizr.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
1501
+ 'tel' : 'text';
1500
1502
  var splitInputs = {
1501
1503
  date: {
1502
1504
  _create: function(opts){
@@ -1507,18 +1509,18 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1507
1509
  if(opts.yearSelect){
1508
1510
  obj.splits.push($('<select class="yy"></select>')[0]);
1509
1511
  } else {
1510
- obj.splits.push($('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1512
+ obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1511
1513
  }
1512
1514
 
1513
1515
  if(opts.monthSelect){
1514
1516
  obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
1515
1517
  } else {
1516
- obj.splits.push($('<input type="text" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
1518
+ obj.splits.push($('<input type="'+ numericType +'" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
1517
1519
  }
1518
1520
  if(opts.daySelect){
1519
1521
  obj.splits.push($(daySelect)[0]);
1520
1522
  } else {
1521
- obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1523
+ obj.splits.push($('<input type="'+ numericType +'" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1522
1524
  }
1523
1525
 
1524
1526
  obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
@@ -1553,7 +1555,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1553
1555
  if(opts.yearSelect){
1554
1556
  obj.splits.push($('<select class="yy"></select>')[0]);
1555
1557
  } else {
1556
- obj.splits.push($('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1558
+ obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1557
1559
  }
1558
1560
 
1559
1561
  if(opts.monthSelect){
@@ -1561,7 +1563,10 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1561
1563
  } else {
1562
1564
  obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
1563
1565
  if(opts.onlyMonthDigits){
1564
- $(obj.splits[1]).attr({inputmode: 'numeric', size: 2, maxlength: 2});
1566
+ $().attr({inputmode: 'numeric', size: 2, maxlength: 2});
1567
+ try {
1568
+ obj.splits[1].setAttribute('type', numericType);
1569
+ } catch(e){}
1565
1570
  }
1566
1571
  }
1567
1572
 
@@ -1584,7 +1589,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1584
1589
  }
1585
1590
  }
1586
1591
  };
1587
-
1592
+
1588
1593
  var nowDate = new Date(new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 ));
1589
1594
  var nowYear = nowDate.getFullYear();
1590
1595
  nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), nowDate.getHours()).getTime();
@@ -2404,7 +2409,11 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2404
2409
  } else if(!isNaN(this.maxAsNumber) && start > this.maxAsNumber){
2405
2410
  start = this.maxAsNumber;
2406
2411
  }
2407
- this.elemHelper.prop('valueAsNumber', start);
2412
+ try {
2413
+ this.elemHelper.prop('valueAsNumber', start);
2414
+ } catch(e){
2415
+ webshims.warn('valueAsNumber set: '+e);
2416
+ }
2408
2417
  this.options.defValue = this.elemHelper.prop('value');
2409
2418
  },
2410
2419
  reorderInputs: function(){
@@ -2428,7 +2437,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2428
2437
  _beforeValue: function(val){
2429
2438
  this.valueAsNumber = this.asNumber(val);
2430
2439
  this.options.value = val;
2431
-
2440
+
2432
2441
  if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
2433
2442
  this._setStartInRange();
2434
2443
  } else {
@@ -2544,9 +2553,9 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2544
2553
  touchEnd = function(e){
2545
2554
  var ret, touch;
2546
2555
  e = e.originalEvent || {};
2547
- $(this).off('touchend', touchEnd);
2556
+ $(this).off('touchend touchcancel', touchEnd);
2548
2557
  var changedTouches = e.changedTouches || e.touches;
2549
- if(!touchData || !changedTouches || changedTouches.length != 1){
2558
+ if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
2550
2559
  return;
2551
2560
  }
2552
2561
 
@@ -2577,7 +2586,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2577
2586
  y: touch.pageY,
2578
2587
  now: Date.now()
2579
2588
  };
2580
- elemTarget.on('touchend', touchEnd);
2589
+ elemTarget.on('touchend touchcancel', touchEnd);
2581
2590
  };
2582
2591
 
2583
2592
  this.each(function(){
@@ -2691,7 +2700,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2691
2700
  cancel: function(val, popover, data){
2692
2701
  if(!data.options.inlinePicker){
2693
2702
  popover.stopOpen = true;
2694
- if(assumeVirtualKeyBoard){
2703
+ if(!popover.openedByFocus && assumeVirtualKeyBoard){
2695
2704
  $('button', data.buttonWrapper).trigger('focus');
2696
2705
  } else {
2697
2706
  data.element.getShadowFocusElement().trigger('focus');
@@ -2791,14 +2800,6 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2791
2800
  var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, $.extend(options.popover || {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element}));
2792
2801
  var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
2793
2802
 
2794
- if(options.widgetPosition){
2795
- webshims.error('options.widgetPosition was removed use options.popover.position instead');
2796
- }
2797
-
2798
- if(options.openOnFocus && popover.options && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
2799
- webshims.error('openOnFocus and popover.appendTo "auto/element" can prduce a11y problems try to change appendTo to body or similiar or use openOnMouseFocus instead');
2800
- }
2801
-
2802
2803
  var showPickerContent = function(){
2803
2804
  (picker[data.type].showPickerContent || picker.showPickerContent)(data, popover);
2804
2805
  };
@@ -2867,9 +2868,28 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2867
2868
  stopPropagation.apply(this, arguments);
2868
2869
  popover.preventBlur();
2869
2870
  },
2870
- focus: function(){
2871
- popover.preventBlur();
2872
- }
2871
+ keydown: function(e){
2872
+ if(e.keyCode == 40 && e.altKey){
2873
+ open();
2874
+ }
2875
+ },
2876
+ 'focus mousedown': (function(){
2877
+ var allowClose = true;
2878
+ var reset = function(){
2879
+ allowClose = true;
2880
+ };
2881
+ return function(e){
2882
+ if(e.type == 'mousedown'){
2883
+ allowClose = false;
2884
+ setTimeout(reset);
2885
+ }
2886
+ if(e.type == 'focus' && allowClose && options.openOnFocus && popover.openedByFocus && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
2887
+ popover.hide();
2888
+ } else {
2889
+ popover.preventBlur();
2890
+ }
2891
+ };
2892
+ })()
2873
2893
  })
2874
2894
  ;
2875
2895
 
@@ -3116,6 +3136,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3116
3136
  }
3117
3137
 
3118
3138
  };
3139
+ oriStyleO.webkitAppearance = 'none';
3119
3140
  data.element.onWSOff('updateshadowdom', updateStyles, true);
3120
3141
  };
3121
3142
 
@@ -3123,13 +3144,14 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3123
3144
  var implementType = function(){
3124
3145
 
3125
3146
  var type = $.prop(this, 'type');
3126
-
3127
3147
  var i, opts, data, optsName, labels, cNames, hasInitialFocus;
3128
- if(inputTypes[type] && webshims.implement(this, 'inputwidgets')){
3148
+
3149
+ if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!modernizrInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
3129
3150
  data = {};
3130
3151
  optsName = type;
3131
3152
  hasInitialFocus = $(this).is(':focus');
3132
3153
  labels = $(this).jProp('labels');
3154
+
3133
3155
  opts = $.extend(webshims.getOptions(this, type, [options.widgets, options[type], $($.prop(this, 'form')).data(type)]), {
3134
3156
  orig: this,
3135
3157
  type: type,
@@ -3162,6 +3184,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3162
3184
  opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
3163
3185
  }
3164
3186
  }
3187
+
3165
3188
  if(opts.formatMonthNames){
3166
3189
  webshims.error('formatMonthNames was renamded to monthNames');
3167
3190
  }
@@ -3185,11 +3208,11 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3185
3208
  cNames = cNames.replace('form-control', '');
3186
3209
  }
3187
3210
 
3188
- data.shim.element.on('change input', stopPropagation).addClass(cNames);
3211
+ data.shim.element.on('change input', stopPropagation).addClass(cNames+' '+webshims.shadowClass);
3189
3212
 
3190
3213
  if(data.shim.buttonWrapper){
3191
3214
 
3192
- data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length));
3215
+ data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length)+' '+webshims.shadowClass);
3193
3216
 
3194
3217
  if(data.shim.buttonWrapper.filter(isVisible).length){
3195
3218
  data.shim.element.addClass('has-input-buttons');
@@ -1497,6 +1497,8 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1497
1497
  ;
1498
1498
  }
1499
1499
  };
1500
+ var numericType = Modernizr.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
1501
+ 'tel' : 'text';
1500
1502
  var splitInputs = {
1501
1503
  date: {
1502
1504
  _create: function(opts){
@@ -1507,18 +1509,18 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1507
1509
  if(opts.yearSelect){
1508
1510
  obj.splits.push($('<select class="yy"></select>')[0]);
1509
1511
  } else {
1510
- obj.splits.push($('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1512
+ obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1511
1513
  }
1512
1514
 
1513
1515
  if(opts.monthSelect){
1514
1516
  obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
1515
1517
  } else {
1516
- obj.splits.push($('<input type="text" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
1518
+ obj.splits.push($('<input type="'+ numericType +'" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
1517
1519
  }
1518
1520
  if(opts.daySelect){
1519
1521
  obj.splits.push($(daySelect)[0]);
1520
1522
  } else {
1521
- obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1523
+ obj.splits.push($('<input type="'+ numericType +'" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1522
1524
  }
1523
1525
 
1524
1526
  obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
@@ -1553,7 +1555,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1553
1555
  if(opts.yearSelect){
1554
1556
  obj.splits.push($('<select class="yy"></select>')[0]);
1555
1557
  } else {
1556
- obj.splits.push($('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1558
+ obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
1557
1559
  }
1558
1560
 
1559
1561
  if(opts.monthSelect){
@@ -1561,7 +1563,10 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1561
1563
  } else {
1562
1564
  obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
1563
1565
  if(opts.onlyMonthDigits){
1564
- $(obj.splits[1]).attr({inputmode: 'numeric', size: 2, maxlength: 2});
1566
+ $().attr({inputmode: 'numeric', size: 2, maxlength: 2});
1567
+ try {
1568
+ obj.splits[1].setAttribute('type', numericType);
1569
+ } catch(e){}
1565
1570
  }
1566
1571
  }
1567
1572
 
@@ -1584,7 +1589,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
1584
1589
  }
1585
1590
  }
1586
1591
  };
1587
-
1592
+
1588
1593
  var nowDate = new Date(new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 ));
1589
1594
  var nowYear = nowDate.getFullYear();
1590
1595
  nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), nowDate.getHours()).getTime();
@@ -2404,7 +2409,11 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2404
2409
  } else if(!isNaN(this.maxAsNumber) && start > this.maxAsNumber){
2405
2410
  start = this.maxAsNumber;
2406
2411
  }
2407
- this.elemHelper.prop('valueAsNumber', start);
2412
+ try {
2413
+ this.elemHelper.prop('valueAsNumber', start);
2414
+ } catch(e){
2415
+ webshims.warn('valueAsNumber set: '+e);
2416
+ }
2408
2417
  this.options.defValue = this.elemHelper.prop('value');
2409
2418
  },
2410
2419
  reorderInputs: function(){
@@ -2428,7 +2437,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2428
2437
  _beforeValue: function(val){
2429
2438
  this.valueAsNumber = this.asNumber(val);
2430
2439
  this.options.value = val;
2431
-
2440
+
2432
2441
  if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
2433
2442
  this._setStartInRange();
2434
2443
  } else {
@@ -2544,9 +2553,9 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2544
2553
  touchEnd = function(e){
2545
2554
  var ret, touch;
2546
2555
  e = e.originalEvent || {};
2547
- $(this).off('touchend', touchEnd);
2556
+ $(this).off('touchend touchcancel', touchEnd);
2548
2557
  var changedTouches = e.changedTouches || e.touches;
2549
- if(!touchData || !changedTouches || changedTouches.length != 1){
2558
+ if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
2550
2559
  return;
2551
2560
  }
2552
2561
 
@@ -2577,7 +2586,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2577
2586
  y: touch.pageY,
2578
2587
  now: Date.now()
2579
2588
  };
2580
- elemTarget.on('touchend', touchEnd);
2589
+ elemTarget.on('touchend touchcancel', touchEnd);
2581
2590
  };
2582
2591
 
2583
2592
  this.each(function(){
@@ -2691,7 +2700,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2691
2700
  cancel: function(val, popover, data){
2692
2701
  if(!data.options.inlinePicker){
2693
2702
  popover.stopOpen = true;
2694
- if(assumeVirtualKeyBoard){
2703
+ if(!popover.openedByFocus && assumeVirtualKeyBoard){
2695
2704
  $('button', data.buttonWrapper).trigger('focus');
2696
2705
  } else {
2697
2706
  data.element.getShadowFocusElement().trigger('focus');
@@ -2791,14 +2800,6 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2791
2800
  var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, $.extend(options.popover || {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element}));
2792
2801
  var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
2793
2802
 
2794
- if(options.widgetPosition){
2795
- webshims.error('options.widgetPosition was removed use options.popover.position instead');
2796
- }
2797
-
2798
- if(options.openOnFocus && popover.options && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
2799
- webshims.error('openOnFocus and popover.appendTo "auto/element" can prduce a11y problems try to change appendTo to body or similiar or use openOnMouseFocus instead');
2800
- }
2801
-
2802
2803
  var showPickerContent = function(){
2803
2804
  (picker[data.type].showPickerContent || picker.showPickerContent)(data, popover);
2804
2805
  };
@@ -2867,9 +2868,28 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
2867
2868
  stopPropagation.apply(this, arguments);
2868
2869
  popover.preventBlur();
2869
2870
  },
2870
- focus: function(){
2871
- popover.preventBlur();
2872
- }
2871
+ keydown: function(e){
2872
+ if(e.keyCode == 40 && e.altKey){
2873
+ open();
2874
+ }
2875
+ },
2876
+ 'focus mousedown': (function(){
2877
+ var allowClose = true;
2878
+ var reset = function(){
2879
+ allowClose = true;
2880
+ };
2881
+ return function(e){
2882
+ if(e.type == 'mousedown'){
2883
+ allowClose = false;
2884
+ setTimeout(reset);
2885
+ }
2886
+ if(e.type == 'focus' && allowClose && options.openOnFocus && popover.openedByFocus && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
2887
+ popover.hide();
2888
+ } else {
2889
+ popover.preventBlur();
2890
+ }
2891
+ };
2892
+ })()
2873
2893
  })
2874
2894
  ;
2875
2895
 
@@ -3116,6 +3136,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3116
3136
  }
3117
3137
 
3118
3138
  };
3139
+ oriStyleO.webkitAppearance = 'none';
3119
3140
  data.element.onWSOff('updateshadowdom', updateStyles, true);
3120
3141
  };
3121
3142
 
@@ -3123,13 +3144,14 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3123
3144
  var implementType = function(){
3124
3145
 
3125
3146
  var type = $.prop(this, 'type');
3126
-
3127
3147
  var i, opts, data, optsName, labels, cNames, hasInitialFocus;
3128
- if(inputTypes[type] && webshims.implement(this, 'inputwidgets')){
3148
+
3149
+ if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!modernizrInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
3129
3150
  data = {};
3130
3151
  optsName = type;
3131
3152
  hasInitialFocus = $(this).is(':focus');
3132
3153
  labels = $(this).jProp('labels');
3154
+
3133
3155
  opts = $.extend(webshims.getOptions(this, type, [options.widgets, options[type], $($.prop(this, 'form')).data(type)]), {
3134
3156
  orig: this,
3135
3157
  type: type,
@@ -3162,6 +3184,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3162
3184
  opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
3163
3185
  }
3164
3186
  }
3187
+
3165
3188
  if(opts.formatMonthNames){
3166
3189
  webshims.error('formatMonthNames was renamded to monthNames');
3167
3190
  }
@@ -3185,11 +3208,11 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
3185
3208
  cNames = cNames.replace('form-control', '');
3186
3209
  }
3187
3210
 
3188
- data.shim.element.on('change input', stopPropagation).addClass(cNames);
3211
+ data.shim.element.on('change input', stopPropagation).addClass(cNames+' '+webshims.shadowClass);
3189
3212
 
3190
3213
  if(data.shim.buttonWrapper){
3191
3214
 
3192
- data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length));
3215
+ data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length)+' '+webshims.shadowClass);
3193
3216
 
3194
3217
  if(data.shim.buttonWrapper.filter(isVisible).length){
3195
3218
  data.shim.element.addClass('has-input-buttons');