webshims-rails 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/lib/webshims-rails/version.rb +2 -2
  2. data/vendor/assets/javascripts/webshims/extras/mousepress.js +1 -1
  3. data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +1 -1
  4. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +1 -1
  5. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +1 -1
  6. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +1 -1
  7. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +1 -1
  8. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +1 -1
  9. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +1 -1
  10. data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +1 -1
  11. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +1 -1
  12. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +1 -1
  13. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +1 -1
  14. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +1 -1
  15. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +1 -1
  16. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +1 -1
  17. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +1 -1
  18. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +1 -1
  19. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +1 -1
  20. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +1 -1
  21. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +1 -1
  22. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +1 -1
  23. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +1 -1
  24. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +1 -1
  25. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +1 -1
  26. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +1 -1
  27. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +1 -1
  28. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +1 -1
  29. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +1 -1
  30. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +1 -1
  31. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +1 -1
  32. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +1 -1
  33. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +1 -1
  34. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +1 -1
  35. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +1 -1
  36. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +1 -1
  37. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +1 -1
  38. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +1 -1
  39. data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +1 -1
  40. data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +1 -1
  41. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +1 -1
  42. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +1 -1
  43. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +1 -1
  44. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +1 -1
  45. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +1 -1
  46. data/vendor/assets/javascripts/webshims/minified/shims/track.js +1 -1
  47. data/vendor/assets/javascripts/webshims/polyfiller.js +10 -7
  48. data/vendor/assets/javascripts/webshims/shims/combos/1.js +51 -48
  49. data/vendor/assets/javascripts/webshims/shims/combos/10.js +126 -105
  50. data/vendor/assets/javascripts/webshims/shims/combos/11.js +50 -47
  51. data/vendor/assets/javascripts/webshims/shims/combos/12.js +97 -86
  52. data/vendor/assets/javascripts/webshims/shims/combos/13.js +49 -45
  53. data/vendor/assets/javascripts/webshims/shims/combos/14.js +2 -2
  54. data/vendor/assets/javascripts/webshims/shims/combos/15.js +1 -1
  55. data/vendor/assets/javascripts/webshims/shims/combos/16.js +168 -155
  56. data/vendor/assets/javascripts/webshims/shims/combos/17.js +168 -155
  57. data/vendor/assets/javascripts/webshims/shims/combos/18.js +9 -24
  58. data/vendor/assets/javascripts/webshims/shims/combos/19.js +121 -116
  59. data/vendor/assets/javascripts/webshims/shims/combos/2.js +82 -93
  60. data/vendor/assets/javascripts/webshims/shims/combos/20.js +75 -57
  61. data/vendor/assets/javascripts/webshims/shims/combos/21.js +11 -24
  62. data/vendor/assets/javascripts/webshims/shims/combos/22.js +77 -60
  63. data/vendor/assets/javascripts/webshims/shims/combos/23.js +59 -65
  64. data/vendor/assets/javascripts/webshims/shims/combos/24.js +169 -157
  65. data/vendor/assets/javascripts/webshims/shims/combos/25.js +99 -87
  66. data/vendor/assets/javascripts/webshims/shims/combos/26.js +170 -156
  67. data/vendor/assets/javascripts/webshims/shims/combos/27.js +128 -106
  68. data/vendor/assets/javascripts/webshims/shims/combos/3.js +83 -95
  69. data/vendor/assets/javascripts/webshims/shims/combos/4.js +71 -69
  70. data/vendor/assets/javascripts/webshims/shims/combos/5.js +71 -69
  71. data/vendor/assets/javascripts/webshims/shims/combos/59.js +72 -71
  72. data/vendor/assets/javascripts/webshims/shims/combos/6.js +8 -22
  73. data/vendor/assets/javascripts/webshims/shims/combos/7.js +8 -22
  74. data/vendor/assets/javascripts/webshims/shims/combos/8.js +97 -86
  75. data/vendor/assets/javascripts/webshims/shims/combos/9.js +124 -102
  76. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +49 -45
  77. data/vendor/assets/javascripts/webshims/shims/es5.js +2 -3
  78. data/vendor/assets/javascripts/webshims/shims/form-core.js +72 -70
  79. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  80. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +8 -22
  81. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +11 -24
  82. data/vendor/assets/javascripts/webshims/shims/geolocation.js +1 -1
  83. data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
  84. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +48 -41
  85. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +26 -15
  86. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +27 -16
  87. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +18 -6
  88. data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -1
  89. data/vendor/assets/javascripts/webshims/shims/track.js +2 -1
  90. metadata +2 -2
@@ -16,6 +16,11 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
16
16
  var singleVal = function(elem, name, val, pass, _argless){
17
17
  return (_argless) ? oldVal.call($(elem)) : oldVal.call($(elem), val);
18
18
  };
19
+
20
+ $.fn.onTrigger = function(evt, fn){
21
+ return this.on(evt, fn).each(fn);
22
+ };
23
+
19
24
  $.fn.val = function(val){
20
25
  var elem = this[0];
21
26
  if(arguments.length && val == null){
@@ -210,14 +215,14 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
210
215
  });
211
216
 
212
217
  //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
213
- var isExtendNativeSave = (!$.browser.msie || parseInt($.browser.version, 10) > 8);
218
+ var isExtendNativeSave = Modernizr.ES5;
214
219
  var extendNativeValue = (function(){
215
220
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
216
221
  var has = Object.prototype.hasOwnProperty;
217
222
  return function(nodeName, prop, desc){
218
- var elem = document.createElement(nodeName);
219
- var elemProto = webshims.getPrototypeOf(elem);
220
- if( isExtendNativeSave && elemProto && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
223
+ var elem;
224
+ var elemProto;
225
+ if( isExtendNativeSave && (elem = document.createElement(nodeName)) && (elemProto = webshims.getPrototypeOf(elem)) && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
221
226
  var sup = elem[prop];
222
227
  desc._supvalue = function(){
223
228
  if(sup && sup.apply){
@@ -417,7 +422,7 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
417
422
  docObserve.width = docObserve.getWidth();
418
423
 
419
424
  }
420
- $.event.trigger('updateshadowdom');
425
+ $(document).triggerHandler('updateshadowdom');
421
426
  }, (e.type == 'resize') ? 50 : 9);
422
427
  },
423
428
  _create: function(){
@@ -461,7 +466,6 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
461
466
  };
462
467
 
463
468
 
464
- $.event.customEvent.updateshadowdom = true;
465
469
  webshims.docObserve = function(){
466
470
  webshims.ready('DOM', function(){
467
471
  docObserve.start();
@@ -905,52 +909,53 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
905
909
  });
906
910
  //html5a11y
907
911
  (function($, document){
908
- var browserVersion = $.webshims.browserVersion;
909
- if($.browser.mozilla && browserVersion > 5){return;}
910
- if (!$.browser.msie || (browserVersion < 12 && browserVersion > 7)) {
911
- var elemMappings = {
912
- article: "article",
913
- aside: "complementary",
914
- section: "region",
915
- nav: "navigation",
916
- address: "contentinfo"
917
- };
918
- var addRole = function(elem, role){
919
- var hasRole = elem.getAttribute('role');
920
- if (!hasRole) {
921
- elem.setAttribute('role', role);
922
- }
923
- };
924
-
925
- $.webshims.addReady(function(context, contextElem){
926
- $.each(elemMappings, function(name, role){
927
- var elems = $(name, context).add(contextElem.filter(name));
928
- for (var i = 0, len = elems.length; i < len; i++) {
929
- addRole(elems[i], role);
930
- }
931
- });
932
- if (context === document) {
933
- var header = document.getElementsByTagName('header')[0];
934
- var footers = document.getElementsByTagName('footer');
935
- var footerLen = footers.length;
936
- if (header && !$(header).closest('section, article')[0]) {
937
- addRole(header, 'banner');
938
- }
939
- if (!footerLen) {
940
- return;
941
- }
942
- var footer = footers[footerLen - 1];
943
- if (!$(footer).closest('section, article')[0]) {
944
- addRole(footer, 'contentinfo');
945
- }
912
+ //if we support basic styleing or do not support ARIA (assumed) abort
913
+ if(!Modernizr.localstorage || ('hidden' in document.createElement('a'))){return;}
914
+
915
+ var elemMappings = {
916
+ article: "article",
917
+ aside: "complementary",
918
+ section: "region",
919
+ nav: "navigation",
920
+ address: "contentinfo"
921
+ };
922
+ var addRole = function(elem, role){
923
+ var hasRole = elem.getAttribute('role');
924
+ if (!hasRole) {
925
+ elem.setAttribute('role', role);
926
+ }
927
+ };
928
+
929
+ $.webshims.addReady(function(context, contextElem){
930
+ $.each(elemMappings, function(name, role){
931
+ var elems = $(name, context).add(contextElem.filter(name));
932
+ for (var i = 0, len = elems.length; i < len; i++) {
933
+ addRole(elems[i], role);
946
934
  }
947
935
  });
948
- }
936
+ if (context === document) {
937
+ var header = document.getElementsByTagName('header')[0];
938
+ var footers = document.getElementsByTagName('footer');
939
+ var footerLen = footers.length;
940
+ if (header && !$(header).closest('section, article')[0]) {
941
+ addRole(header, 'banner');
942
+ }
943
+ if (!footerLen) {
944
+ return;
945
+ }
946
+ var footer = footers[footerLen - 1];
947
+ if (!$(footer).closest('section, article')[0]) {
948
+ addRole(footer, 'contentinfo');
949
+ }
950
+ }
951
+ });
952
+
949
953
  })(jQuery, document);
950
954
 
951
955
  //additional tests for partial implementation of forms features
952
956
  (function($){
953
957
  "use strict";
958
+ var isWebkit = /webkit/i.test(navigator.userAgent);
954
959
  var Modernizr = window.Modernizr;
955
960
  var webshims = $.webshims;
956
961
  var bugs = webshims.bugs;
@@ -993,80 +998,80 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
993
998
 
994
999
  if(!Modernizr.formvalidation || bugs.bustedValidity){
995
1000
  testRequiredFind();
996
- return;
997
- }
998
-
999
- //create delegatable events
1000
- webshims.capturingEvents(['input']);
1001
- webshims.capturingEvents(['invalid'], true);
1002
-
1003
- if(window.opera || window.testGoodWithFix){
1001
+ } else {
1002
+ //create delegatable events
1003
+ webshims.capturingEvents(['input']);
1004
+ webshims.capturingEvents(['invalid'], true);
1004
1005
 
1005
- form.appendTo('head');
1006
-
1007
- testRequiredFind();
1008
- bugs.validationMessage = !(inputElem.prop('validationMessage'));
1009
-
1010
- webshims.reTest(['form-native-extend', 'form-message']);
1011
-
1012
- form.remove();
1006
+ if(window.opera || window.testGoodWithFix){
1013
1007
 
1014
- $(function(){
1015
- onDomextend(function(){
1016
-
1017
- //Opera shows native validation bubbles in case of input.checkValidity()
1018
- // Opera 11.6/12 hasn't fixed this issue right, it's buggy
1019
- var preventDefault = function(e){
1020
- e.preventDefault();
1021
- };
1008
+ form.appendTo('head');
1009
+
1010
+ testRequiredFind();
1011
+ bugs.validationMessage = !(inputElem.prop('validationMessage'));
1012
+
1013
+ webshims.reTest(['form-native-extend', 'form-message']);
1014
+
1015
+ form.remove();
1022
1016
 
1023
- ['form', 'input', 'textarea', 'select'].forEach(function(name){
1024
- var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
1025
- prop: {
1026
- value: function(){
1027
- if (!webshims.fromSubmit) {
1028
- $(this).on('invalid.checkvalidity', preventDefault);
1029
- }
1030
-
1031
- webshims.fromCheckValidity = true;
1032
- var ret = desc.prop._supvalue.apply(this, arguments);
1033
- if (!webshims.fromSubmit) {
1034
- $(this).unbind('invalid.checkvalidity', preventDefault);
1017
+ $(function(){
1018
+ onDomextend(function(){
1019
+
1020
+ //Opera shows native validation bubbles in case of input.checkValidity()
1021
+ // Opera 11.6/12 hasn't fixed this issue right, it's buggy
1022
+ var preventDefault = function(e){
1023
+ e.preventDefault();
1024
+ };
1025
+
1026
+ ['form', 'input', 'textarea', 'select'].forEach(function(name){
1027
+ var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
1028
+ prop: {
1029
+ value: function(){
1030
+ if (!webshims.fromSubmit) {
1031
+ $(this).on('invalid.checkvalidity', preventDefault);
1032
+ }
1033
+
1034
+ webshims.fromCheckValidity = true;
1035
+ var ret = desc.prop._supvalue.apply(this, arguments);
1036
+ if (!webshims.fromSubmit) {
1037
+ $(this).unbind('invalid.checkvalidity', preventDefault);
1038
+ }
1039
+ webshims.fromCheckValidity = false;
1040
+ return ret;
1035
1041
  }
1036
- webshims.fromCheckValidity = false;
1037
- return ret;
1038
1042
  }
1039
- }
1043
+ });
1040
1044
  });
1045
+
1041
1046
  });
1042
-
1043
1047
  });
1044
- });
1048
+ }
1049
+
1050
+ if(isWebkit && !webshims.bugs.bustedValidity){
1051
+ (function(){
1052
+ var elems = /^(?:textarea|input)$/i;
1053
+ var form = false;
1054
+
1055
+ document.addEventListener('contextmenu', function(e){
1056
+ if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
1057
+ setTimeout(function(){
1058
+ form = false;
1059
+ }, 1);
1060
+ }
1061
+ }, false);
1062
+
1063
+ $(window).on('invalid', function(e){
1064
+ if(e.originalEvent && form && form == e.target.form){
1065
+ e.wrongWebkitInvalid = true;
1066
+ e.stopImmediatePropagation();
1067
+ }
1068
+ });
1069
+
1070
+ })();
1071
+ }
1045
1072
  }
1046
1073
 
1047
- if($.browser.webkit && !webshims.bugs.bustedValidity){
1048
- (function(){
1049
- var elems = /^(?:textarea|input)$/i;
1050
- var form = false;
1051
-
1052
- document.addEventListener('contextmenu', function(e){
1053
- if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
1054
- setTimeout(function(){
1055
- form = false;
1056
- }, 1);
1057
- }
1058
- }, false);
1059
-
1060
- $(window).on('invalid', function(e){
1061
- if(e.originalEvent && form && form == e.target.form){
1062
- e.wrongWebkitInvalid = true;
1063
- e.stopImmediatePropagation();
1064
- }
1065
- });
1066
-
1067
- })();
1068
- }
1069
- })(jQuery);
1074
+
1070
1075
 
1071
1076
  jQuery.webshims.register('form-core', function($, webshims, window, document, undefined, options){
1072
1077
  "use strict";
@@ -1181,7 +1186,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1181
1186
  return false;
1182
1187
  };
1183
1188
 
1184
- if(Modernizr.formvalidation && $.browser.webkit && !webshims.bugs.bustedValidity && webshims.browserVersion < 27){
1189
+ if(Modernizr.formvalidation && isWebkit && !webshims.bugs.bustedValidity){
1185
1190
  (function(){
1186
1191
  var retriggerRadioValidity = function(){
1187
1192
  var validity;
@@ -1360,7 +1365,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1360
1365
 
1361
1366
 
1362
1367
  var setRoot = function(){
1363
- webshims.scrollRoot = ($.browser.webkit || document.compatMode == 'BackCompat') ?
1368
+ webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ?
1364
1369
  $(document.body) :
1365
1370
  $(document.documentElement)
1366
1371
  ;
@@ -1382,7 +1387,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1382
1387
 
1383
1388
  /* some extra validation UI */
1384
1389
  webshims.validityAlert = (function(){
1385
- var alertElem = (!$.browser.msie || parseInt($.browser.version, 10) > 7) ? 'span' : 'label';
1390
+ var alertElem = 'span';
1386
1391
  var errorBubble;
1387
1392
  var hideTimer = false;
1388
1393
  var focusTimer = false;
@@ -1497,7 +1502,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1497
1502
  errorBubble = api.errorBubble = $('<'+alertElem+' class="validity-alert-wrapper" role="alert"><span class="validity-alert"><span class="va-arrow"><span class="va-arrow-box"></span></span><span class="va-box"></span></span></'+alertElem+'>').css({position: 'absolute', display: 'none'});
1498
1503
  webshims.ready('DOM', function(){
1499
1504
  errorBubble.appendTo('body');
1500
- if($.fn.bgIframe && $.browser.msie && parseInt($.browser.version, 10) < 7){
1505
+ if($.fn.bgIframe){
1501
1506
  errorBubble.bgIframe();
1502
1507
  }
1503
1508
  });
@@ -1577,8 +1582,9 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1577
1582
  });
1578
1583
  });
1579
1584
  }
1580
-
1581
1585
  });
1586
+
1587
+ })(jQuery);
1582
1588
  jQuery.webshims.register('form-datalist', function($, webshims, window, document, undefined){
1583
1589
  "use strict";
1584
1590
  var doc = document;
@@ -1797,7 +1803,6 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
1797
1803
  range: 1,
1798
1804
  date: 1
1799
1805
  };
1800
- var lteie6 = ($.browser.msie && parseInt($.browser.version, 10) < 7);
1801
1806
  var globStoredOptions = {};
1802
1807
  var getStoredOptions = function(name){
1803
1808
  if(!name){return [];}
@@ -2081,7 +2086,7 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
2081
2086
  this.arrayOptions = allOptions;
2082
2087
  this.shadowList.html('<div class="datalist-outer-box"><div class="datalist-box"><ul role="list">'+ list.join("\n") +'</ul></div></div>');
2083
2088
 
2084
- if($.fn.bgIframe && lteie6){
2089
+ if($.fn.bgIframe){
2085
2090
  this.shadowList.bgIframe();
2086
2091
  }
2087
2092
 
@@ -1,6 +1,7 @@
1
1
  //additional tests for partial implementation of forms features
2
2
  (function($){
3
3
  "use strict";
4
+ var isWebkit = /webkit/i.test(navigator.userAgent);
4
5
  var Modernizr = window.Modernizr;
5
6
  var webshims = $.webshims;
6
7
  var bugs = webshims.bugs;
@@ -43,80 +44,80 @@
43
44
 
44
45
  if(!Modernizr.formvalidation || bugs.bustedValidity){
45
46
  testRequiredFind();
46
- return;
47
- }
48
-
49
- //create delegatable events
50
- webshims.capturingEvents(['input']);
51
- webshims.capturingEvents(['invalid'], true);
52
-
53
- if(window.opera || window.testGoodWithFix){
54
-
55
- form.appendTo('head');
56
-
57
- testRequiredFind();
58
- bugs.validationMessage = !(inputElem.prop('validationMessage'));
59
-
60
- webshims.reTest(['form-native-extend', 'form-message']);
47
+ } else {
48
+ //create delegatable events
49
+ webshims.capturingEvents(['input']);
50
+ webshims.capturingEvents(['invalid'], true);
61
51
 
62
- form.remove();
52
+ if(window.opera || window.testGoodWithFix){
63
53
 
64
- $(function(){
65
- onDomextend(function(){
66
-
67
- //Opera shows native validation bubbles in case of input.checkValidity()
68
- // Opera 11.6/12 hasn't fixed this issue right, it's buggy
69
- var preventDefault = function(e){
70
- e.preventDefault();
71
- };
54
+ form.appendTo('head');
55
+
56
+ testRequiredFind();
57
+ bugs.validationMessage = !(inputElem.prop('validationMessage'));
58
+
59
+ webshims.reTest(['form-native-extend', 'form-message']);
60
+
61
+ form.remove();
72
62
 
73
- ['form', 'input', 'textarea', 'select'].forEach(function(name){
74
- var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
75
- prop: {
76
- value: function(){
77
- if (!webshims.fromSubmit) {
78
- $(this).on('invalid.checkvalidity', preventDefault);
79
- }
80
-
81
- webshims.fromCheckValidity = true;
82
- var ret = desc.prop._supvalue.apply(this, arguments);
83
- if (!webshims.fromSubmit) {
84
- $(this).unbind('invalid.checkvalidity', preventDefault);
63
+ $(function(){
64
+ onDomextend(function(){
65
+
66
+ //Opera shows native validation bubbles in case of input.checkValidity()
67
+ // Opera 11.6/12 hasn't fixed this issue right, it's buggy
68
+ var preventDefault = function(e){
69
+ e.preventDefault();
70
+ };
71
+
72
+ ['form', 'input', 'textarea', 'select'].forEach(function(name){
73
+ var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
74
+ prop: {
75
+ value: function(){
76
+ if (!webshims.fromSubmit) {
77
+ $(this).on('invalid.checkvalidity', preventDefault);
78
+ }
79
+
80
+ webshims.fromCheckValidity = true;
81
+ var ret = desc.prop._supvalue.apply(this, arguments);
82
+ if (!webshims.fromSubmit) {
83
+ $(this).unbind('invalid.checkvalidity', preventDefault);
84
+ }
85
+ webshims.fromCheckValidity = false;
86
+ return ret;
85
87
  }
86
- webshims.fromCheckValidity = false;
87
- return ret;
88
88
  }
89
- }
89
+ });
90
90
  });
91
+
91
92
  });
92
-
93
93
  });
94
- });
94
+ }
95
+
96
+ if(isWebkit && !webshims.bugs.bustedValidity){
97
+ (function(){
98
+ var elems = /^(?:textarea|input)$/i;
99
+ var form = false;
100
+
101
+ document.addEventListener('contextmenu', function(e){
102
+ if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
103
+ setTimeout(function(){
104
+ form = false;
105
+ }, 1);
106
+ }
107
+ }, false);
108
+
109
+ $(window).on('invalid', function(e){
110
+ if(e.originalEvent && form && form == e.target.form){
111
+ e.wrongWebkitInvalid = true;
112
+ e.stopImmediatePropagation();
113
+ }
114
+ });
115
+
116
+ })();
117
+ }
95
118
  }
96
119
 
97
- if($.browser.webkit && !webshims.bugs.bustedValidity){
98
- (function(){
99
- var elems = /^(?:textarea|input)$/i;
100
- var form = false;
101
-
102
- document.addEventListener('contextmenu', function(e){
103
- if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
104
- setTimeout(function(){
105
- form = false;
106
- }, 1);
107
- }
108
- }, false);
109
-
110
- $(window).on('invalid', function(e){
111
- if(e.originalEvent && form && form == e.target.form){
112
- e.wrongWebkitInvalid = true;
113
- e.stopImmediatePropagation();
114
- }
115
- });
116
-
117
- })();
118
- }
119
- })(jQuery);
120
+
120
121
 
121
122
  jQuery.webshims.register('form-core', function($, webshims, window, document, undefined, options){
122
123
  "use strict";
@@ -231,7 +232,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
231
232
  return false;
232
233
  };
233
234
 
234
- if(Modernizr.formvalidation && $.browser.webkit && !webshims.bugs.bustedValidity && webshims.browserVersion < 27){
235
+ if(Modernizr.formvalidation && isWebkit && !webshims.bugs.bustedValidity){
235
236
  (function(){
236
237
  var retriggerRadioValidity = function(){
237
238
  var validity;
@@ -410,7 +411,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
410
411
 
411
412
 
412
413
  var setRoot = function(){
413
- webshims.scrollRoot = ($.browser.webkit || document.compatMode == 'BackCompat') ?
414
+ webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ?
414
415
  $(document.body) :
415
416
  $(document.documentElement)
416
417
  ;
@@ -432,7 +433,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
432
433
 
433
434
  /* some extra validation UI */
434
435
  webshims.validityAlert = (function(){
435
- var alertElem = (!$.browser.msie || parseInt($.browser.version, 10) > 7) ? 'span' : 'label';
436
+ var alertElem = 'span';
436
437
  var errorBubble;
437
438
  var hideTimer = false;
438
439
  var focusTimer = false;
@@ -547,7 +548,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
547
548
  errorBubble = api.errorBubble = $('<'+alertElem+' class="validity-alert-wrapper" role="alert"><span class="validity-alert"><span class="va-arrow"><span class="va-arrow-box"></span></span><span class="va-box"></span></span></'+alertElem+'>').css({position: 'absolute', display: 'none'});
548
549
  webshims.ready('DOM', function(){
549
550
  errorBubble.appendTo('body');
550
- if($.fn.bgIframe && $.browser.msie && parseInt($.browser.version, 10) < 7){
551
+ if($.fn.bgIframe){
551
552
  errorBubble.bgIframe();
552
553
  }
553
554
  });
@@ -627,8 +628,9 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
627
628
  });
628
629
  });
629
630
  }
630
-
631
631
  });
632
+
633
+ })(jQuery);
632
634
  if(!Modernizr.formvalidation || jQuery.webshims.bugs.bustedValidity){
633
635
  jQuery.webshims.register('form-shim-extend', function($, webshims, window, document){
634
636
  "use strict";
@@ -982,7 +984,7 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'requir
982
984
  set: function(value){
983
985
  $(this).getShadowFocusElement().attr('aria-required', !!(value)+'');
984
986
  },
985
- initAttr: (!$.browser.msie || webshims.browserVersion > 7)//only if we have aria-support
987
+ initAttr: (Modernizr.localstorage)//only if we have aria-support
986
988
  });
987
989
 
988
990
  webshims.reflectProperties(['input'], ['pattern']);
@@ -1297,14 +1299,13 @@ webshims.defineNodeNameProperty('form', 'noValidate', {
1297
1299
  }
1298
1300
  });
1299
1301
 
1300
- if($.browser.webkit && Modernizr.inputtypes.date){
1302
+ if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
1301
1303
  (function(){
1302
1304
 
1303
1305
  var noInputTriggerEvts = {updateInput: 1, input: 1},
1304
1306
  fixInputTypes = {
1305
1307
  date: 1,
1306
- time: 1,
1307
- "datetime-local": 1
1308
+ time: 1
1308
1309
  },
1309
1310
  noFocusEvents = {
1310
1311
  focusout: 1,
@@ -1728,8 +1729,7 @@ try {
1728
1729
 
1729
1730
  (function(){
1730
1731
  Modernizr.textareaPlaceholder = !!('placeholder' in $('<textarea />')[0]);
1731
- var bustedTextarea = $.browser.webkit && Modernizr.textareaPlaceholder && webshims.browserVersion < 535;
1732
- if(Modernizr.input.placeholder && Modernizr.textareaPlaceholder && !bustedTextarea){return;}
1732
+ if(Modernizr.input.placeholder && Modernizr.textareaPlaceholder){return;}
1733
1733
 
1734
1734
  var isOver = (webshims.cfg.forms.placeholderType == 'over');
1735
1735
  var isResponsive = (webshims.cfg.forms.responsivePlaceholder);
@@ -1931,8 +1931,8 @@ try {
1931
1931
  data.text.css('padding'+ side, size);
1932
1932
  });
1933
1933
 
1934
- $(elem)
1935
- .on('updateshadowdom', function(){
1934
+ $(document)
1935
+ .onTrigger('updateshadowdom', function(){
1936
1936
  var height, width;
1937
1937
  if((width = elem.offsetWidth) || (height = elem.offsetHeight)){
1938
1938
  data.text
@@ -1944,7 +1944,6 @@ try {
1944
1944
  ;
1945
1945
  }
1946
1946
  })
1947
- .triggerHandler('updateshadowdom')
1948
1947
  ;
1949
1948
 
1950
1949
  } else {
@@ -2000,17 +1999,11 @@ try {
2000
1999
  attr: {
2001
2000
  set: function(val){
2002
2001
  var elem = this;
2003
- if(bustedTextarea){
2004
- webshims.data(elem, 'textareaPlaceholder', val);
2005
- elem.placeholder = '';
2006
- } else {
2007
- webshims.contentAttr(elem, 'placeholder', val);
2008
- }
2002
+ webshims.contentAttr(elem, 'placeholder', val);
2009
2003
  pHolder.update(elem, val);
2010
2004
  },
2011
2005
  get: function(){
2012
- var ret = (bustedTextarea) ? webshims.data(this, 'textareaPlaceholder') : '';
2013
- return ret || webshims.contentAttr(this, 'placeholder');
2006
+ return webshims.contentAttr(this, 'placeholder');
2014
2007
  }
2015
2008
  },
2016
2009
  reflect: true,
@@ -2026,13 +2019,9 @@ try {
2026
2019
  placeholderValueDesc[propType] = {
2027
2020
  set: function(val){
2028
2021
  var elem = this;
2029
- var placeholder;
2030
- if(bustedTextarea){
2031
- placeholder = webshims.data(elem, 'textareaPlaceholder');
2032
- }
2033
- if(!placeholder){
2034
- placeholder = webshims.contentAttr(elem, 'placeholder');
2035
- }
2022
+ var placeholder = webshims.contentAttr(elem, 'placeholder');
2023
+
2024
+
2036
2025
  $.removeData(elem, 'cachedValidity');
2037
2026
  var ret = desc[propType]._supset.call(elem, val);
2038
2027
  if(placeholder && 'value' in elem){