webshims-rails 1.11.3.1 → 1.11.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +114 -104
- data/vendor/assets/javascripts/webshims/extras/mousepress.js +5 -5
- data/vendor/assets/javascripts/webshims/polyfiller.js +156 -207
- data/vendor/assets/javascripts/webshims/shims/$ajax.js +862 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +20 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +20 -0
- data/vendor/assets/javascripts/webshims/shims/color-picker.js +12 -12
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +62 -32
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +192 -509
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +96 -415
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +36 -26
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +36 -26
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +1007 -359
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +310 -235
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +313 -237
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +96 -415
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +1003 -678
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +1085 -387
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +161 -127
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +1086 -388
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +168 -96
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +36 -27
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +411 -172
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +1085 -387
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +96 -94
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +163 -140
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +166 -141
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +159 -126
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +103 -109
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +98 -417
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +101 -418
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +168 -142
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +165 -141
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +195 -510
- data/vendor/assets/javascripts/webshims/shims/details.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +96 -94
- data/vendor/assets/javascripts/webshims/shims/es5.js +908 -264
- data/vendor/assets/javascripts/webshims/shims/excanvas.js +16 -1
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +147 -0
- data/vendor/assets/javascripts/webshims/shims/form-core.js +60 -31
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +114 -33
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +3 -1
- data/vendor/assets/javascripts/webshims/shims/form-message.js +7 -15
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +88 -410
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +143 -93
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +268 -79
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +116 -81
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +23 -10
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +605 -9
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +51 -39
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +78 -33
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +24 -6
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +110 -49
- data/vendor/assets/javascripts/webshims/shims/json-storage.js +3 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +81 -30
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +131 -54
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +497 -0
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +8 -5
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +2026 -0
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +401 -521
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +1 -1
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +94 -82
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +250 -321
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/track.js +34 -25
- metadata +7 -3
@@ -462,8 +462,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
462
462
|
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");
|
463
463
|
}
|
464
464
|
|
465
|
-
if(
|
466
|
-
webshims.error("
|
465
|
+
if('debug' in webshims){
|
466
|
+
webshims.error('Use webshims.setOptions("debug", true||false||"noCombo"); to debug flag');
|
467
467
|
}
|
468
468
|
|
469
469
|
if (!webshims.cfg.no$Switch) {
|
@@ -499,7 +499,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
499
499
|
// '127.0.0.1': 1
|
500
500
|
// };
|
501
501
|
//
|
502
|
-
// if( webshims.debug && (hostNames[location.hostname] || location.protocol == 'file:') ){
|
502
|
+
// if( webshims.cfg.debug && (hostNames[location.hostname] || location.protocol == 'file:') ){
|
503
503
|
// var list = $('<ul class="webshims-debug-list" />');
|
504
504
|
// webshims.errorLog.push = function(message){
|
505
505
|
// list.appendTo('body');
|
@@ -931,7 +931,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
931
931
|
};
|
932
932
|
|
933
933
|
$.extend(webshims, {
|
934
|
-
|
935
934
|
getID: (function(){
|
936
935
|
var ID = new Date().getTime();
|
937
936
|
return function(elem){
|
@@ -961,6 +960,51 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
961
960
|
}
|
962
961
|
});
|
963
962
|
},
|
963
|
+
getOptions: (function(){
|
964
|
+
var regs = {};
|
965
|
+
var regFn = function(f, upper){
|
966
|
+
return upper.toLowerCase();
|
967
|
+
};
|
968
|
+
return function(elem, name, bases){
|
969
|
+
var data = elementData(elem, 'cfg'+name);
|
970
|
+
var dataName;
|
971
|
+
var cfg = {};
|
972
|
+
|
973
|
+
if(data){
|
974
|
+
return data;
|
975
|
+
}
|
976
|
+
data = $(elem).data();
|
977
|
+
|
978
|
+
if(!bases){
|
979
|
+
bases = [true, {}];
|
980
|
+
} else if(!Array.isArray(bases)){
|
981
|
+
bases = [true, {}, bases];
|
982
|
+
} else {
|
983
|
+
bases.unshift(true, {});
|
984
|
+
}
|
985
|
+
|
986
|
+
if(data && data[name]){
|
987
|
+
if(typeof data[name] == 'object'){
|
988
|
+
bases.push(data[name]);
|
989
|
+
} else {
|
990
|
+
webshims.error('data-'+ name +' attribute has to be a valid JSON, was: '+ data[name]);
|
991
|
+
}
|
992
|
+
}
|
993
|
+
|
994
|
+
if(!regs[name]){
|
995
|
+
regs[name] = new RegExp('^'+ name +'([A-Z])');
|
996
|
+
}
|
997
|
+
|
998
|
+
for(dataName in data){
|
999
|
+
if(regs[name].test(dataName)){
|
1000
|
+
cfg[dataName.replace(regs[name], regFn)] = data[dataName];
|
1001
|
+
}
|
1002
|
+
}
|
1003
|
+
bases.push(cfg);
|
1004
|
+
|
1005
|
+
return elementData(elem, 'cfg'+name, $.extend.apply($, bases));
|
1006
|
+
};
|
1007
|
+
})(),
|
964
1008
|
//http://www.w3.org/TR/html5/common-dom-interfaces.html#reflect
|
965
1009
|
createPropDefault: createPropDefault,
|
966
1010
|
data: elementData,
|
@@ -1048,7 +1092,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1048
1092
|
setInterval(this.test, 600);
|
1049
1093
|
$(this.test);
|
1050
1094
|
webshims.ready('WINDOWLOAD', this.test);
|
1051
|
-
$(document).on('updatelayout', this.handler);
|
1095
|
+
$(document).on('updatelayout pageinit collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
|
1052
1096
|
$(window).on('resize', this.handler);
|
1053
1097
|
(function(){
|
1054
1098
|
var oldAnimate = $.fn.animate;
|
@@ -1406,109 +1450,67 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1406
1450
|
}
|
1407
1451
|
},
|
1408
1452
|
|
1409
|
-
// set current Lang:
|
1410
|
-
// - webshims.activeLang(lang:string);
|
1411
|
-
// get current lang
|
1412
|
-
// - webshims.activeLang();
|
1413
|
-
// get current lang
|
1414
|
-
// webshims.activeLang({
|
1415
|
-
// register: moduleName:string,
|
1416
|
-
// callback: callback:function
|
1417
|
-
// });
|
1418
|
-
// get/set including remoteLang
|
1419
|
-
// - webshims.activeLang({
|
1420
|
-
// module: moduleName:string,
|
1421
|
-
// callback: callback:function,
|
1422
|
-
// langObj: languageObj:array/object
|
1423
|
-
// });
|
1424
1453
|
activeLang: (function(){
|
1425
|
-
var
|
1426
|
-
var
|
1427
|
-
var
|
1428
|
-
var
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
webshims.loader.loadScript(langSrc+lang+'.js', function(){
|
1439
|
-
if(data.langObj[lang]){
|
1440
|
-
data.loading = false;
|
1441
|
-
callLang(data, true);
|
1442
|
-
} else {
|
1443
|
-
$(function(){
|
1444
|
-
if(data.langObj[lang]){
|
1445
|
-
callLang(data, true);
|
1446
|
-
}
|
1447
|
-
data.loading = false;
|
1454
|
+
var curLang = [];
|
1455
|
+
var langDatas = [];
|
1456
|
+
var loading = {};
|
1457
|
+
var load = function(src, obj, loadingLang){
|
1458
|
+
obj._isLoading = true;
|
1459
|
+
if(loading[src]){
|
1460
|
+
loading[src].push(obj);
|
1461
|
+
} else {
|
1462
|
+
loading[src] = [obj];
|
1463
|
+
webshims.loader.loadScript(src, function(){
|
1464
|
+
if(loadingLang == curLang.join()){
|
1465
|
+
$.each(loading[src], function(i, obj){
|
1466
|
+
select(obj);
|
1448
1467
|
});
|
1449
1468
|
}
|
1450
|
-
|
1451
|
-
return true;
|
1452
|
-
}
|
1453
|
-
return false;
|
1454
|
-
};
|
1455
|
-
var callRegister = function(module){
|
1456
|
-
if(registeredCallbacks[module]){
|
1457
|
-
registeredCallbacks[module].forEach(function(data){
|
1458
|
-
data.callback(currentLang, shortLang, '');
|
1469
|
+
delete loading[src];
|
1459
1470
|
});
|
1460
1471
|
}
|
1461
1472
|
};
|
1462
|
-
var
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
data.activeLang = '';
|
1474
|
-
data.callback(data.langObj[''], currentLang);
|
1475
|
-
callRegister(data.module);
|
1473
|
+
var select = function(obj){
|
1474
|
+
var oldLang = obj.__active;
|
1475
|
+
var selectLang = function(i, lang){
|
1476
|
+
obj._isLoading = false;
|
1477
|
+
if(obj[lang] || obj.availableLangs.indexOf(lang) != -1){
|
1478
|
+
if(obj[lang]){
|
1479
|
+
obj.__active = obj[lang];
|
1480
|
+
} else {
|
1481
|
+
load(obj.langSrc+lang, obj, curLang.join());
|
1482
|
+
}
|
1483
|
+
return false;
|
1476
1484
|
}
|
1485
|
+
};
|
1486
|
+
$.each(curLang, selectLang);
|
1487
|
+
if(!obj.__active){
|
1488
|
+
obj.__active = obj[''];
|
1489
|
+
}
|
1490
|
+
if(oldLang != obj.__active){
|
1491
|
+
$(obj).trigger('change');
|
1477
1492
|
}
|
1478
1493
|
};
|
1479
|
-
|
1480
|
-
|
1481
|
-
|
1482
|
-
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1486
|
-
|
1487
|
-
shortLang = false;
|
1488
|
-
}
|
1489
|
-
$.each(callbacks, function(i, data){
|
1490
|
-
callLang(data);
|
1491
|
-
});
|
1492
|
-
} else if(typeof lang == 'object'){
|
1493
|
-
|
1494
|
-
if(lang.register){
|
1495
|
-
if(!registeredCallbacks[lang.register]){
|
1496
|
-
registeredCallbacks[lang.register] = [];
|
1494
|
+
return function(lang){
|
1495
|
+
var shortLang;
|
1496
|
+
if(typeof lang == 'string'){
|
1497
|
+
if(curLang[0] != lang){
|
1498
|
+
curLang = [lang];
|
1499
|
+
shortLang = curLang[0].split('-')[0];
|
1500
|
+
if(shortLang && shortLang != lang){
|
1501
|
+
curLang.push(shortLang);
|
1497
1502
|
}
|
1498
|
-
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1502
|
-
|
1503
|
-
|
1504
|
-
callbacks.push(lang);
|
1505
|
-
callLang(lang);
|
1503
|
+
langDatas.forEach(select);
|
1504
|
+
}
|
1505
|
+
} else if(typeof lang == 'object'){
|
1506
|
+
if(!lang.__active){
|
1507
|
+
langDatas.push(lang);
|
1508
|
+
select(lang);
|
1506
1509
|
}
|
1510
|
+
return lang.__active;
|
1507
1511
|
}
|
1508
|
-
return
|
1512
|
+
return curLang[0];
|
1509
1513
|
};
|
1510
|
-
|
1511
|
-
return activeLang;
|
1512
1514
|
})()
|
1513
1515
|
});
|
1514
1516
|
|
@@ -1652,39 +1654,65 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1652
1654
|
return ret;
|
1653
1655
|
};
|
1654
1656
|
|
1655
|
-
|
1656
|
-
"
|
1657
|
-
|
1658
|
-
|
1659
|
-
|
1660
|
-
|
1661
|
-
|
1662
|
-
|
1663
|
-
|
1664
|
-
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1668
|
-
|
1669
|
-
|
1657
|
+
var extendSels = function(){
|
1658
|
+
var exp = $.expr[":"];
|
1659
|
+
$.extend(exp, {
|
1660
|
+
"valid-element": function(elem){
|
1661
|
+
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
|
1662
|
+
},
|
1663
|
+
"invalid-element": function(elem){
|
1664
|
+
return rElementsGroup.test(elem.nodeName || '') ? hasInvalid(elem) : !!($.prop(elem, 'willValidate') && !isValid(elem));
|
1665
|
+
},
|
1666
|
+
"required-element": function(elem){
|
1667
|
+
return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required'));
|
1668
|
+
},
|
1669
|
+
"user-error": function(elem){
|
1670
|
+
return ($.prop(elem, 'willValidate') && $(elem).hasClass('user-error'));
|
1671
|
+
},
|
1672
|
+
"optional-element": function(elem){
|
1673
|
+
return !!($.prop(elem, 'willValidate') && $.prop(elem, 'required') === false);
|
1674
|
+
}
|
1675
|
+
});
|
1676
|
+
|
1677
|
+
['valid', 'invalid', 'required', 'optional'].forEach(function(name){
|
1678
|
+
exp[name] = $.expr[":"][name+"-element"];
|
1679
|
+
});
|
1680
|
+
|
1681
|
+
// sizzle/jQuery has a bug with :disabled/:enabled selectors
|
1682
|
+
if(Modernizr.fieldsetdisabled && !$('<fieldset disabled=""><input /><fieldset>').find('input').is(':disabled')){
|
1683
|
+
$.extend(exp, {
|
1684
|
+
"enabled": function( elem ) {
|
1685
|
+
return elem.disabled === false && !$(elem).is('fieldset[disabled] *');
|
1686
|
+
},
|
1687
|
+
|
1688
|
+
"disabled": function( elem ) {
|
1689
|
+
return elem.disabled === true || ('disabled' in elem && $(elem).is('fieldset[disabled] *'));
|
1690
|
+
}
|
1691
|
+
});
|
1670
1692
|
}
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1680
|
-
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1693
|
+
|
1694
|
+
|
1695
|
+
//bug was partially fixed in 1.10.0 for IE9, but not IE8 (move to es5 as soon as 1.10.2 is used)
|
1696
|
+
if(typeof document.activeElement == 'unknown'){
|
1697
|
+
var pseudoFocus = exp.focus;
|
1698
|
+
exp.focus = function(){
|
1699
|
+
try {
|
1700
|
+
return pseudoFocus.apply(this, arguments);
|
1701
|
+
} catch(e){
|
1702
|
+
webshims.error(e);
|
1703
|
+
}
|
1704
|
+
return false;
|
1705
|
+
};
|
1684
1706
|
}
|
1685
|
-
return false;
|
1686
1707
|
};
|
1687
1708
|
|
1709
|
+
if($.expr.filters){
|
1710
|
+
extendSels();
|
1711
|
+
} else {
|
1712
|
+
webshims.ready('sizzle', extendSels);
|
1713
|
+
}
|
1714
|
+
|
1715
|
+
|
1688
1716
|
webshims.triggerInlineForm = function(elem, event){
|
1689
1717
|
$(elem).trigger(event);
|
1690
1718
|
};
|
@@ -1752,7 +1780,10 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1752
1780
|
|
1753
1781
|
|
1754
1782
|
webshims.getContentValidationMessage = function(elem, validity, key){
|
1755
|
-
|
1783
|
+
if(webshims.errorbox && webshims.errorbox.initIvalContentMessage){
|
1784
|
+
webshims.errorbox.initIvalContentMessage(elem);
|
1785
|
+
}
|
1786
|
+
var message = (webshims.getOptions && webshims.errorbox ? webshims.getOptions(elem, 'errormessage') : $(elem).data('errormessage')) || elem.getAttribute('x-moz-errormessage') || '';
|
1756
1787
|
if(key && message[key]){
|
1757
1788
|
message = message[key];
|
1758
1789
|
} else if(message) {
|
@@ -1798,7 +1829,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1798
1829
|
|
1799
1830
|
|
1800
1831
|
$(document).on('focusin.lazyloadvalidation', function(e){
|
1801
|
-
if('form' in e.target
|
1832
|
+
if('form' in e.target){
|
1802
1833
|
lazyLoad();
|
1803
1834
|
}
|
1804
1835
|
});
|
@@ -1812,7 +1843,6 @@ webshims.inputTypes = webshims.inputTypes || {};
|
|
1812
1843
|
//some helper-functions
|
1813
1844
|
var cfg = webshims.cfg.forms;
|
1814
1845
|
var bugs = webshims.bugs;
|
1815
|
-
var isSubmit;
|
1816
1846
|
|
1817
1847
|
var isNumber = function(string){
|
1818
1848
|
return (typeof string == 'number' || (string && string == string * 1));
|
@@ -1887,6 +1917,7 @@ var validityPrototype = {
|
|
1887
1917
|
rangeOverflow: false,
|
1888
1918
|
stepMismatch: false,
|
1889
1919
|
tooLong: false,
|
1920
|
+
tooShort: false,
|
1890
1921
|
patternMismatch: false,
|
1891
1922
|
valueMissing: false,
|
1892
1923
|
|
@@ -1923,6 +1954,9 @@ var getGroupElements = function(elem){
|
|
1923
1954
|
}
|
1924
1955
|
return ret;
|
1925
1956
|
};
|
1957
|
+
var patternTypes = {url: 1, email: 1, text: 1, search: 1, tel: 1, password: 1};
|
1958
|
+
var lengthTypes = $.extend({textarea: 1}, patternTypes);
|
1959
|
+
|
1926
1960
|
var validityRules = {
|
1927
1961
|
valueMissing: function(input, val, cache){
|
1928
1962
|
if(!input.prop('required')){return false;}
|
@@ -1939,11 +1973,12 @@ var validityRules = {
|
|
1939
1973
|
}
|
1940
1974
|
return ret;
|
1941
1975
|
},
|
1942
|
-
tooLong: function(){
|
1943
|
-
return false;
|
1944
|
-
},
|
1945
1976
|
patternMismatch: function(input, val, cache) {
|
1946
1977
|
if(val === '' || cache.nodeName == 'select'){return false;}
|
1978
|
+
if(!('type' in cache)){
|
1979
|
+
cache.type = getType(input[0]);
|
1980
|
+
}
|
1981
|
+
if(!patternTypes[cache.type]){return false;}
|
1947
1982
|
var pattern = input.attr('pattern');
|
1948
1983
|
if(!pattern){return false;}
|
1949
1984
|
try {
|
@@ -1958,6 +1993,20 @@ var validityRules = {
|
|
1958
1993
|
}
|
1959
1994
|
;
|
1960
1995
|
|
1996
|
+
$.each({tooShort: ['minLength', -1], tooLong: ['maxLength', 1]}, function(name, props){
|
1997
|
+
validityRules[name] = function(input, val, cache){
|
1998
|
+
//defaultValue is not the same as dirty flag, but very similiar
|
1999
|
+
if(cache.nodeName == 'select' || input.prop('defaultValue') == val){return false;}
|
2000
|
+
if(!('type' in cache)){
|
2001
|
+
cache.type = getType(input[0]);
|
2002
|
+
}
|
2003
|
+
if(!lengthTypes[cache.type]){return false;}
|
2004
|
+
var prop = input.prop(props[0]);
|
2005
|
+
|
2006
|
+
return ( prop > 0 && prop * props[1] < val.length * props[1] );
|
2007
|
+
};
|
2008
|
+
});
|
2009
|
+
|
1961
2010
|
$.each({typeMismatch: 'mismatch', badInput: 'bad'}, function(name, fn){
|
1962
2011
|
validityRules[name] = function (input, val, cache){
|
1963
2012
|
if(val === '' || cache.nodeName == 'select'){return false;}
|
@@ -2008,15 +2057,12 @@ $.event.special.invalid = {
|
|
2008
2057
|
|
2009
2058
|
if( e.type != 'submit' || e.testedValidity || !e.originalEvent || !$.nodeName(e.target, 'form') || $.prop(e.target, 'noValidate') ){return;}
|
2010
2059
|
|
2011
|
-
isSubmit = true;
|
2012
2060
|
e.testedValidity = true;
|
2013
|
-
var notValid = !($(e.target).
|
2061
|
+
var notValid = !($(e.target).callProp('reportValidity'));
|
2014
2062
|
if(notValid){
|
2015
2063
|
e.stopImmediatePropagation();
|
2016
|
-
isSubmit = false;
|
2017
2064
|
return false;
|
2018
2065
|
}
|
2019
|
-
isSubmit = false;
|
2020
2066
|
}
|
2021
2067
|
};
|
2022
2068
|
|
@@ -2083,6 +2129,9 @@ webshims.defineNodeNamesProperties(['button', 'fieldset', 'output'], {
|
|
2083
2129
|
checkValidity: {
|
2084
2130
|
value: function(){return true;}
|
2085
2131
|
},
|
2132
|
+
reportValidity: {
|
2133
|
+
value: function(){return true;}
|
2134
|
+
},
|
2086
2135
|
willValidate: {
|
2087
2136
|
value: false
|
2088
2137
|
},
|
@@ -2097,7 +2146,7 @@ webshims.defineNodeNamesProperties(['button', 'fieldset', 'output'], {
|
|
2097
2146
|
}
|
2098
2147
|
}, 'prop');
|
2099
2148
|
|
2100
|
-
var baseCheckValidity = function(elem){
|
2149
|
+
var baseCheckValidity = function(elem, type){
|
2101
2150
|
var e,
|
2102
2151
|
v = $.prop(elem, 'validity')
|
2103
2152
|
;
|
@@ -2109,7 +2158,7 @@ var baseCheckValidity = function(elem){
|
|
2109
2158
|
if( !v.valid ){
|
2110
2159
|
e = $.Event('invalid');
|
2111
2160
|
var jElm = $(elem).trigger(e);
|
2112
|
-
if(
|
2161
|
+
if(type == 'reportValidity' && !baseCheckValidity.unhandledInvalids && !e.isDefaultPrevented()){
|
2113
2162
|
webshims.validityAlert.showFor(jElm);
|
2114
2163
|
baseCheckValidity.unhandledInvalids = true;
|
2115
2164
|
}
|
@@ -2118,95 +2167,111 @@ var baseCheckValidity = function(elem){
|
|
2118
2167
|
return v.valid;
|
2119
2168
|
};
|
2120
2169
|
var rsubmittable = /^(?:select|textarea|input)/i;
|
2121
|
-
|
2122
|
-
|
2123
|
-
|
2124
|
-
|
2125
|
-
|
2126
|
-
|
2127
|
-
|
2128
|
-
|
2129
|
-
|
2130
|
-
|
2131
|
-
|
2132
|
-
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2136
|
-
|
2170
|
+
|
2171
|
+
['checkValidity', 'reportValidity'].forEach(function(name){
|
2172
|
+
webshims.defineNodeNameProperty('form', name, {
|
2173
|
+
prop: {
|
2174
|
+
value: function(){
|
2175
|
+
|
2176
|
+
var ret = true,
|
2177
|
+
elems = $($.prop(this, 'elements')).filter(function(){
|
2178
|
+
if(!rsubmittable.test(this.nodeName)){return false;}
|
2179
|
+
var shadowData = webshims.data(this, 'shadowData');
|
2180
|
+
return !shadowData || !shadowData.nativeElement || shadowData.nativeElement === this;
|
2181
|
+
})
|
2182
|
+
;
|
2183
|
+
|
2184
|
+
baseCheckValidity.unhandledInvalids = false;
|
2185
|
+
for(var i = 0, len = elems.length; i < len; i++){
|
2186
|
+
if( !baseCheckValidity(elems[i], name) ){
|
2187
|
+
ret = false;
|
2188
|
+
}
|
2137
2189
|
}
|
2190
|
+
return ret;
|
2138
2191
|
}
|
2139
|
-
return ret;
|
2140
2192
|
}
|
2141
|
-
}
|
2193
|
+
});
|
2142
2194
|
});
|
2143
2195
|
|
2144
|
-
|
2145
|
-
|
2146
|
-
|
2147
|
-
|
2148
|
-
|
2149
|
-
|
2150
|
-
|
2151
|
-
|
2152
|
-
|
2153
|
-
|
2154
|
-
|
2155
|
-
|
2156
|
-
},
|
2157
|
-
willValidate: {
|
2158
|
-
writeable: false,
|
2159
|
-
get: (function(){
|
2160
|
-
var types = {
|
2161
|
-
button: 1,
|
2162
|
-
reset: 1,
|
2163
|
-
hidden: 1,
|
2164
|
-
image: 1
|
2165
|
-
}
|
2166
|
-
;
|
2167
|
-
return function(){
|
2168
|
-
var elem = $(this).getNativeElement()[0];
|
2169
|
-
//elem.name && <- we don't use to make it easier for developers
|
2170
|
-
return !!(!elem.disabled && !elem.readOnly && !types[elem.type] );
|
2171
|
-
};
|
2172
|
-
})()
|
2173
|
-
},
|
2174
|
-
validity: {
|
2175
|
-
writeable: false,
|
2176
|
-
get: function(){
|
2177
|
-
var jElm = $(this).getNativeElement();
|
2178
|
-
var elem = jElm[0];
|
2179
|
-
var validityState = $.data(elem, 'cachedValidity');
|
2180
|
-
if(validityState){
|
2181
|
-
return validityState;
|
2196
|
+
|
2197
|
+
|
2198
|
+
|
2199
|
+
['input', 'textarea', 'select'].forEach(function(nodeName){
|
2200
|
+
var inputValidationAPI = {
|
2201
|
+
setCustomValidity: {
|
2202
|
+
value: function(error){
|
2203
|
+
$.removeData(this, 'cachedValidity');
|
2204
|
+
webshims.data(this, 'customvalidationMessage', ''+error);
|
2205
|
+
if(bugs.bustedValidity && inputValidationAPI.setCustomValidity.prop._supvalue){
|
2206
|
+
inputValidationAPI.setCustomValidity.prop._supvalue.apply(this, arguments);
|
2207
|
+
}
|
2182
2208
|
}
|
2183
|
-
|
2184
|
-
|
2185
|
-
|
2209
|
+
},
|
2210
|
+
willValidate: {
|
2211
|
+
writeable: false,
|
2212
|
+
get: (function(){
|
2213
|
+
var types = {
|
2214
|
+
button: 1,
|
2215
|
+
reset: 1,
|
2216
|
+
hidden: 1,
|
2217
|
+
image: 1
|
2218
|
+
}
|
2219
|
+
;
|
2220
|
+
return function(){
|
2221
|
+
var elem = $(this).getNativeElement()[0];
|
2222
|
+
return !!(!elem.readOnly && !types[elem.type] && !$(elem).is(':disabled') );
|
2223
|
+
};
|
2224
|
+
})()
|
2225
|
+
},
|
2226
|
+
validity: {
|
2227
|
+
writeable: false,
|
2228
|
+
get: function(){
|
2229
|
+
var jElm = $(this).getNativeElement();
|
2230
|
+
var elem = jElm[0];
|
2231
|
+
var validityState = $.data(elem, 'cachedValidity');
|
2232
|
+
if(validityState){
|
2233
|
+
return validityState;
|
2234
|
+
}
|
2235
|
+
validityState = $.extend({}, validityPrototype);
|
2236
|
+
|
2237
|
+
if( !$.prop(elem, 'willValidate') || elem.type == 'submit' ){
|
2238
|
+
return validityState;
|
2239
|
+
}
|
2240
|
+
var val = jElm.val(),
|
2241
|
+
cache = {nodeName: elem.nodeName.toLowerCase()}
|
2242
|
+
;
|
2243
|
+
|
2244
|
+
validityState.customError = !!(webshims.data(elem, 'customvalidationMessage'));
|
2245
|
+
if( validityState.customError ){
|
2246
|
+
validityState.valid = false;
|
2247
|
+
}
|
2248
|
+
|
2249
|
+
$.each(validityRules, function(rule, fn){
|
2250
|
+
if (fn(jElm, val, cache)) {
|
2251
|
+
validityState[rule] = true;
|
2252
|
+
validityState.valid = false;
|
2253
|
+
}
|
2254
|
+
});
|
2255
|
+
$(this).getShadowFocusElement().attr('aria-invalid', validityState.valid ? 'false' : 'true');
|
2256
|
+
jElm = null;
|
2257
|
+
elem = null;
|
2186
2258
|
return validityState;
|
2187
2259
|
}
|
2188
|
-
|
2189
|
-
|
2190
|
-
|
2191
|
-
|
2192
|
-
|
2193
|
-
|
2194
|
-
|
2260
|
+
}
|
2261
|
+
};
|
2262
|
+
|
2263
|
+
['checkValidity', 'reportValidity'].forEach(function(name){
|
2264
|
+
inputValidationAPI[name] = {
|
2265
|
+
value: function(){
|
2266
|
+
baseCheckValidity.unhandledInvalids = false;
|
2267
|
+
return baseCheckValidity($(this).getNativeElement()[0], name);
|
2195
2268
|
}
|
2196
|
-
|
2197
|
-
$.each(validityRules, function(rule, fn){
|
2198
|
-
if (fn(jElm, val, cache)) {
|
2199
|
-
validityState[rule] = true;
|
2200
|
-
validityState.valid = false;
|
2201
|
-
}
|
2202
|
-
});
|
2203
|
-
$(this).getShadowFocusElement().attr('aria-invalid', validityState.valid ? 'false' : 'true');
|
2204
|
-
jElm = null;
|
2205
|
-
elem = null;
|
2206
|
-
return validityState;
|
2207
2269
|
}
|
2208
|
-
}
|
2209
|
-
|
2270
|
+
});
|
2271
|
+
|
2272
|
+
webshims.defineNodeNameProperties(nodeName, inputValidationAPI, 'prop');
|
2273
|
+
});
|
2274
|
+
|
2210
2275
|
|
2211
2276
|
webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'required', {
|
2212
2277
|
set: function(value){
|
@@ -2216,7 +2281,7 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'requir
|
|
2216
2281
|
});
|
2217
2282
|
webshims.defineNodeNamesBooleanProperty(['input'], 'multiple');
|
2218
2283
|
|
2219
|
-
if(
|
2284
|
+
if(bugs.bustedValidity){
|
2220
2285
|
|
2221
2286
|
webshims.defineNodeNameProperty('form', 'novalidate', {
|
2222
2287
|
attr: {
|
@@ -2259,6 +2324,22 @@ webshims.defineNodeNameProperty('form', 'noValidate', {
|
|
2259
2324
|
}
|
2260
2325
|
});
|
2261
2326
|
|
2327
|
+
webshims.defineNodeNamesProperty(['input', 'textarea'], 'minLength', {
|
2328
|
+
prop: {
|
2329
|
+
set: function(val){
|
2330
|
+
val *= 1;
|
2331
|
+
if(val < 0){
|
2332
|
+
throw('INDEX_SIZE_ERR');
|
2333
|
+
}
|
2334
|
+
this.setAttribute('minlength', val || 0);
|
2335
|
+
},
|
2336
|
+
get: function(){
|
2337
|
+
var val = this.getAttribute('minlength');
|
2338
|
+
return val == null ? -1 : (val * 1) || 0;
|
2339
|
+
}
|
2340
|
+
}
|
2341
|
+
})
|
2342
|
+
|
2262
2343
|
if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
|
2263
2344
|
(function(){
|
2264
2345
|
|
@@ -2313,7 +2394,7 @@ if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
|
|
2313
2394
|
focusedin = false;
|
2314
2395
|
}
|
2315
2396
|
if(input){
|
2316
|
-
input.
|
2397
|
+
input.off('focusout blur', unbind).off('input change updateInput', trigger);
|
2317
2398
|
trigger();
|
2318
2399
|
}
|
2319
2400
|
input = null;
|
@@ -2356,7 +2437,7 @@ webshims.addReady(function(context, contextElem){
|
|
2356
2437
|
var focusElem;
|
2357
2438
|
$('form', context)
|
2358
2439
|
.add(contextElem.filter('form'))
|
2359
|
-
.
|
2440
|
+
.on('invalid', $.noop)
|
2360
2441
|
;
|
2361
2442
|
|
2362
2443
|
try {
|
@@ -2532,7 +2613,7 @@ switch(desc.proptype) {
|
|
2532
2613
|
formSubmitterDescriptors[attrName].attr = {
|
2533
2614
|
set: function(value){
|
2534
2615
|
formSubmitterDescriptors[attrName].attr._supset.call(this, value);
|
2535
|
-
$(this).
|
2616
|
+
$(this).off(eventName).on(eventName, changeSubmitter);
|
2536
2617
|
},
|
2537
2618
|
get: function(){
|
2538
2619
|
return formSubmitterDescriptors[attrName].attr._supget.call(this);
|
@@ -2541,7 +2622,7 @@ switch(desc.proptype) {
|
|
2541
2622
|
formSubmitterDescriptors[attrName].initAttr = true;
|
2542
2623
|
formSubmitterDescriptors[attrName].removeAttr = {
|
2543
2624
|
value: function(){
|
2544
|
-
$(this).
|
2625
|
+
$(this).off(eventName);
|
2545
2626
|
formSubmitterDescriptors[attrName].removeAttr._supvalue.call(this);
|
2546
2627
|
}
|
2547
2628
|
};
|
@@ -2583,6 +2664,7 @@ webshims.register('form-message', function($, webshims, window, document, undefi
|
|
2583
2664
|
},
|
2584
2665
|
stepMismatch: 'Invalid input.',
|
2585
2666
|
tooLong: 'Please enter at most {%maxlength} character(s). You entered {%valueLen}.',
|
2667
|
+
tooShort: 'Please enter at least {%minlength} character(s). You entered {%valueLen}.',
|
2586
2668
|
patternMismatch: 'Invalid input. {%title}',
|
2587
2669
|
valueMissing: {
|
2588
2670
|
defaultMessage: 'Please fill out this field.',
|
@@ -2639,6 +2721,7 @@ webshims.register('form-message', function($, webshims, window, document, undefi
|
|
2639
2721
|
},
|
2640
2722
|
stepMismatch: 'Der Wert {%value} ist in diesem Feld nicht zulässig. Hier sind nur bestimmte Werte zulässig. {%title}',
|
2641
2723
|
tooLong: 'Der eingegebene Text ist zu lang! Sie haben {%valueLen} Zeichen eingegeben, dabei sind {%maxlength} das Maximum.',
|
2724
|
+
tooShort: 'Der eingegebene Text ist zu kurz! Sie haben {%valueLen} Zeichen eingegeben, dabei sind {%minlength} das Minimum.',
|
2642
2725
|
patternMismatch: '{%value} hat für dieses Eingabefeld ein falsches Format. {%title}',
|
2643
2726
|
valueMissing: {
|
2644
2727
|
defaultMessage: 'Bitte geben Sie einen Wert ein.',
|
@@ -2690,7 +2773,7 @@ webshims.register('form-message', function($, webshims, window, document, undefi
|
|
2690
2773
|
webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
|
2691
2774
|
}
|
2692
2775
|
if(message){
|
2693
|
-
['value', 'min', 'max', 'title', 'maxlength', 'label'].forEach(function(attr){
|
2776
|
+
['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
|
2694
2777
|
if(message.indexOf('{%'+attr) === -1){return;}
|
2695
2778
|
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
|
2696
2779
|
if(name == 'patternMismatch' && attr == 'title' && !val){
|
@@ -2720,20 +2803,10 @@ webshims.register('form-message', function($, webshims, window, document, undefi
|
|
2720
2803
|
implementProperties.push('validationMessage');
|
2721
2804
|
}
|
2722
2805
|
|
2723
|
-
webshims.activeLang(
|
2724
|
-
|
2725
|
-
|
2726
|
-
|
2727
|
-
currentValidationMessage = langObj;
|
2728
|
-
}
|
2729
|
-
});
|
2730
|
-
webshims.activeLang({
|
2731
|
-
register: 'form-core',
|
2732
|
-
callback: function(val){
|
2733
|
-
if(validityMessages[val]){
|
2734
|
-
currentValidationMessage = validityMessages[val];
|
2735
|
-
}
|
2736
|
-
}
|
2806
|
+
currentValidationMessage = webshims.activeLang(validityMessages);
|
2807
|
+
|
2808
|
+
$(validityMessages).on('change', function(e, data){
|
2809
|
+
currentValidationMessage = validityMessages.__active;
|
2737
2810
|
});
|
2738
2811
|
|
2739
2812
|
implementProperties.forEach(function(messageProp){
|
@@ -3068,7 +3141,9 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3068
3141
|
noAutoCallback: true,
|
3069
3142
|
options: $.extend(options, {shadowListProto: shadowListProto})
|
3070
3143
|
});
|
3071
|
-
|
3144
|
+
if(!options.list){
|
3145
|
+
options.list = {};
|
3146
|
+
}
|
3072
3147
|
//init datalist update
|
3073
3148
|
initializeDatalist();
|
3074
3149
|
})();
|
@@ -3119,7 +3194,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3119
3194
|
var switchOptions = function(e){
|
3120
3195
|
var media, error, parent;
|
3121
3196
|
if(!options.preferFlash &&
|
3122
|
-
($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source
|
3197
|
+
($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
|
3123
3198
|
(media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
|
3124
3199
|
){
|
3125
3200
|
|
@@ -3627,6 +3702,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
3627
3702
|
if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
|
3628
3703
|
supLoad.prop._supvalue.apply(this, arguments);
|
3629
3704
|
}
|
3705
|
+
$(this).triggerHandler('wsmediareload');
|
3630
3706
|
}
|
3631
3707
|
}
|
3632
3708
|
});
|