webshims-rails 1.11.1 → 1.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +41 -20
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +212 -42
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +196 -37
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +17 -6
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +234 -1247
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +234 -1247
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +202 -45
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +202 -45
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +1689 -997
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +202 -45
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +237 -51
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +247 -48
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +17 -5
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +21 -3
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +35 -6
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +6 -8
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +134 -24
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +152 -1205
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +1076 -0
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +47 -20
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-de.txt → formcfg-de.js} +3 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-en.txt → formcfg-en.js} +5 -1
- data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +62 -13
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +610 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +10 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +743 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +1 -755
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +0 -606
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +36 -23
- data/vendor/assets/javascripts/webshims/shims/track.js +82 -36
- metadata +8 -6
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +0 -2196
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -1167
@@ -809,7 +809,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
809
809
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
810
810
|
|
811
811
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
812
|
-
webshims.error("IE browser modes are busted in IE10
|
812
|
+
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");
|
813
813
|
}
|
814
814
|
|
815
815
|
if(!$.parseHTML){
|
@@ -1362,7 +1362,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1362
1362
|
$(this.test);
|
1363
1363
|
webshims.ready('WINDOWLOAD', this.test);
|
1364
1364
|
$(document).on('updatelayout', this.handler);
|
1365
|
-
$(window).
|
1365
|
+
$(window).on('resize', this.handler);
|
1366
1366
|
(function(){
|
1367
1367
|
var oldAnimate = $.fn.animate;
|
1368
1368
|
var animationTimer;
|
@@ -1384,6 +1384,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1384
1384
|
webshims.docObserve = function(){
|
1385
1385
|
webshims.ready('DOM', function(){
|
1386
1386
|
docObserve.start();
|
1387
|
+
if($.support.boxSizing == null){
|
1388
|
+
$(function(){
|
1389
|
+
if($.support.boxSizing){
|
1390
|
+
docObserve.handler({type: 'boxsizing'});
|
1391
|
+
}
|
1392
|
+
});
|
1393
|
+
}
|
1387
1394
|
});
|
1388
1395
|
};
|
1389
1396
|
return function(nativeElem, shadowElem, opts){
|
@@ -1544,7 +1551,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1544
1551
|
havePolyfill[prop] = true;
|
1545
1552
|
|
1546
1553
|
if(descs.reflect){
|
1547
|
-
webshims.propTypes[descs.propType
|
1554
|
+
if(descs.propType && !webshims.propTypes[descs.propType]){
|
1555
|
+
webshims.error('could not finde propType '+ descs.propType);
|
1556
|
+
} else {
|
1557
|
+
webshims.propTypes[descs.propType || 'standard'](descs, prop);
|
1558
|
+
}
|
1559
|
+
|
1548
1560
|
}
|
1549
1561
|
|
1550
1562
|
['prop', 'attr', 'removeAttr'].forEach(function(type){
|
@@ -1730,7 +1742,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1730
1742
|
var notLocal = /:\/\/|^\.*\//;
|
1731
1743
|
var loadRemoteLang = function(data, lang, options){
|
1732
1744
|
var langSrc;
|
1733
|
-
if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
|
1745
|
+
if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
|
1734
1746
|
data.loading = true;
|
1735
1747
|
langSrc = options.langSrc;
|
1736
1748
|
if(!notLocal.test(langSrc)){
|
@@ -1891,7 +1903,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1891
1903
|
|
1892
1904
|
})(webshims.$, document);
|
1893
1905
|
|
1894
|
-
|
1895
1906
|
//JSON
|
1896
1907
|
(function(){
|
1897
1908
|
if('JSON'in window && JSON.stringify && JSON.parse){return;}
|
@@ -1904,7 +1915,7 @@ if(!this.JSON){this.JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(t
|
|
1904
1915
|
//using window.name for sessionStorage and cookies for localStorage
|
1905
1916
|
|
1906
1917
|
(function () {
|
1907
|
-
var $ = jQuery;
|
1918
|
+
var $ = webshims.$ || jQuery;
|
1908
1919
|
if ('localStorage' in window && 'sessionStorage' in window) {
|
1909
1920
|
$.webshims.isReady('json-storage', true);
|
1910
1921
|
return;
|
@@ -6,7 +6,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
6
6
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
7
7
|
|
8
8
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
9
|
-
webshims.error("IE browser modes are busted in IE10
|
9
|
+
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");
|
10
10
|
}
|
11
11
|
|
12
12
|
if(!$.parseHTML){
|
@@ -559,7 +559,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
559
559
|
$(this.test);
|
560
560
|
webshims.ready('WINDOWLOAD', this.test);
|
561
561
|
$(document).on('updatelayout', this.handler);
|
562
|
-
$(window).
|
562
|
+
$(window).on('resize', this.handler);
|
563
563
|
(function(){
|
564
564
|
var oldAnimate = $.fn.animate;
|
565
565
|
var animationTimer;
|
@@ -581,6 +581,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
581
581
|
webshims.docObserve = function(){
|
582
582
|
webshims.ready('DOM', function(){
|
583
583
|
docObserve.start();
|
584
|
+
if($.support.boxSizing == null){
|
585
|
+
$(function(){
|
586
|
+
if($.support.boxSizing){
|
587
|
+
docObserve.handler({type: 'boxsizing'});
|
588
|
+
}
|
589
|
+
});
|
590
|
+
}
|
584
591
|
});
|
585
592
|
};
|
586
593
|
return function(nativeElem, shadowElem, opts){
|
@@ -741,7 +748,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
741
748
|
havePolyfill[prop] = true;
|
742
749
|
|
743
750
|
if(descs.reflect){
|
744
|
-
webshims.propTypes[descs.propType
|
751
|
+
if(descs.propType && !webshims.propTypes[descs.propType]){
|
752
|
+
webshims.error('could not finde propType '+ descs.propType);
|
753
|
+
} else {
|
754
|
+
webshims.propTypes[descs.propType || 'standard'](descs, prop);
|
755
|
+
}
|
756
|
+
|
745
757
|
}
|
746
758
|
|
747
759
|
['prop', 'attr', 'removeAttr'].forEach(function(type){
|
@@ -927,7 +939,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
927
939
|
var notLocal = /:\/\/|^\.*\//;
|
928
940
|
var loadRemoteLang = function(data, lang, options){
|
929
941
|
var langSrc;
|
930
|
-
if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
|
942
|
+
if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
|
931
943
|
data.loading = true;
|
932
944
|
langSrc = options.langSrc;
|
933
945
|
if(!notLocal.test(langSrc)){
|
@@ -1087,7 +1099,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1087
1099
|
});
|
1088
1100
|
|
1089
1101
|
})(webshims.$, document);
|
1090
|
-
|
1091
1102
|
webshims.register('form-core', function($, webshims, window, document, undefined, options){
|
1092
1103
|
"use strict";
|
1093
1104
|
|
@@ -1301,7 +1312,6 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1301
1312
|
|
1302
1313
|
});
|
1303
1314
|
|
1304
|
-
if(!Modernizr.formvalidation || webshims.bugs.bustedValidity){
|
1305
1315
|
webshims.register('form-shim-extend', function($, webshims, window, document, undefined, options){
|
1306
1316
|
"use strict";
|
1307
1317
|
webshims.inputTypes = webshims.inputTypes || {};
|
@@ -1396,7 +1406,7 @@ var isPlaceholderOptionSelected = function(select){
|
|
1396
1406
|
}
|
1397
1407
|
return false;
|
1398
1408
|
};
|
1399
|
-
|
1409
|
+
|
1400
1410
|
var emptyJ = $([]);
|
1401
1411
|
var getGroupElements = function(elem){
|
1402
1412
|
elem = $(elem);
|
@@ -1516,36 +1526,6 @@ $.event.special.invalid = {
|
|
1516
1526
|
}
|
1517
1527
|
};
|
1518
1528
|
|
1519
|
-
var supportSubmitBubbles = !('submitBubbles' in $.support) || $.support.submitBubbles;
|
1520
|
-
var addSubmitBubbles = function(form){
|
1521
|
-
if (!supportSubmitBubbles && form && typeof form == 'object' && !form._submit_attached ) {
|
1522
|
-
|
1523
|
-
$.event.add( form, 'submit._submit', function( event ) {
|
1524
|
-
event._submit_bubble = true;
|
1525
|
-
});
|
1526
|
-
|
1527
|
-
form._submit_attached = true;
|
1528
|
-
}
|
1529
|
-
};
|
1530
|
-
if(!supportSubmitBubbles && $.event.special.submit){
|
1531
|
-
$.event.special.submit.setup = function() {
|
1532
|
-
// Only need this for delegated form submit events
|
1533
|
-
if ( $.nodeName( this, "form" ) ) {
|
1534
|
-
return false;
|
1535
|
-
}
|
1536
|
-
|
1537
|
-
// Lazy-add a submit handler when a descendant form may potentially be submitted
|
1538
|
-
$.event.add( this, "click._submit keypress._submit", function( e ) {
|
1539
|
-
// Node name check avoids a VML-related crash in IE (#9807)
|
1540
|
-
var elem = e.target,
|
1541
|
-
form = $.nodeName( elem, 'input' ) || $.nodeName( elem, 'button' ) ? $.prop(elem, 'form') : undefined;
|
1542
|
-
addSubmitBubbles(form);
|
1543
|
-
|
1544
|
-
});
|
1545
|
-
// return undefined since we don't need an event listener
|
1546
|
-
};
|
1547
|
-
}
|
1548
|
-
|
1549
1529
|
$.event.special.submit = $.event.special.submit || {setup: function(){return false;}};
|
1550
1530
|
var submitSetup = $.event.special.submit.setup;
|
1551
1531
|
$.extend($.event.special.submit, {
|
@@ -1558,24 +1538,27 @@ $.extend($.event.special.submit, {
|
|
1558
1538
|
return submitSetup.apply(this, arguments);
|
1559
1539
|
}
|
1560
1540
|
});
|
1561
|
-
|
1562
|
-
$(window).on('invalid', $.noop);
|
1541
|
+
webshims.ready('form-shim-extend2 WINDOWLOAD', function(){
|
1542
|
+
$(window).on('invalid', $.noop);
|
1543
|
+
});
|
1563
1544
|
|
1564
1545
|
|
1565
1546
|
webshims.addInputType('email', {
|
1566
1547
|
mismatch: (function(){
|
1567
1548
|
//taken from http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
|
1568
1549
|
var test = cfg.emailReg || /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
1569
|
-
|
1570
|
-
|
1571
|
-
|
1572
|
-
|
1573
|
-
|
1574
|
-
|
1575
|
-
|
1576
|
-
|
1550
|
+
var splitReg = /\s*,\s*/g;
|
1551
|
+
return function(val, input){
|
1552
|
+
var ret = false;
|
1553
|
+
val = $(input).prop('multiple') ? val.split(splitReg) : [val];
|
1554
|
+
|
1555
|
+
for(var i = 0; i < val.length; i++){
|
1556
|
+
if(!test.test(val[i])){
|
1557
|
+
ret = true;
|
1558
|
+
break;
|
1559
|
+
}
|
1577
1560
|
}
|
1578
|
-
return
|
1561
|
+
return ret;
|
1579
1562
|
};
|
1580
1563
|
})()
|
1581
1564
|
});
|
@@ -1737,106 +1720,184 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'requir
|
|
1737
1720
|
},
|
1738
1721
|
initAttr: Modernizr.localstorage //only if we have aria-support
|
1739
1722
|
});
|
1723
|
+
webshims.defineNodeNamesBooleanProperty(['input'], 'multiple');
|
1740
1724
|
|
1741
|
-
webshims.
|
1742
|
-
|
1743
|
-
|
1744
|
-
if( !('maxLength' in document.createElement('textarea')) ){
|
1745
|
-
var constrainMaxLength = (function(){
|
1746
|
-
var timer;
|
1747
|
-
var curLength = 0;
|
1748
|
-
var lastElement = $([]);
|
1749
|
-
var max = 1e9;
|
1750
|
-
var constrainLength = function(){
|
1751
|
-
var nowValue = lastElement.prop('value');
|
1752
|
-
var nowLen = nowValue.length;
|
1753
|
-
if(nowLen > curLength && nowLen > max){
|
1754
|
-
nowLen = Math.max(curLength, max);
|
1755
|
-
lastElement.prop('value', nowValue.substr(0, nowLen ));
|
1756
|
-
}
|
1757
|
-
curLength = nowLen;
|
1758
|
-
};
|
1759
|
-
var remove = function(){
|
1760
|
-
clearTimeout(timer);
|
1761
|
-
lastElement.unbind('.maxlengthconstraint');
|
1762
|
-
};
|
1763
|
-
return function(element, maxLength){
|
1764
|
-
remove();
|
1765
|
-
if(maxLength > -1){
|
1766
|
-
max = maxLength;
|
1767
|
-
curLength = $.prop(element, 'value').length;
|
1768
|
-
lastElement = $(element);
|
1769
|
-
lastElement.on({
|
1770
|
-
'keydown.maxlengthconstraint keypress.maxlengthconstraint paste.maxlengthconstraint cut.maxlengthconstraint': function(e){
|
1771
|
-
setTimeout(constrainLength, 0);
|
1772
|
-
},
|
1773
|
-
'keyup.maxlengthconstraint': constrainLength,
|
1774
|
-
'blur.maxlengthconstraint': remove
|
1775
|
-
});
|
1776
|
-
timer = setInterval(constrainLength, 200);
|
1777
|
-
}
|
1778
|
-
};
|
1779
|
-
})();
|
1780
|
-
|
1781
|
-
constrainMaxLength.update = function(element, maxLength){
|
1782
|
-
if($(element).is(':focus')){
|
1783
|
-
if(!maxLength){
|
1784
|
-
maxLength = $.prop(element, 'maxlength');
|
1785
|
-
}
|
1786
|
-
constrainMaxLength(element, maxLength);
|
1787
|
-
}
|
1788
|
-
};
|
1789
|
-
|
1790
|
-
$(document).on('focusin', function(e){
|
1791
|
-
var maxLength;
|
1792
|
-
if(e.target.nodeName == "TEXTAREA" && (maxLength = $.prop(e.target, 'maxlength')) > -1){
|
1793
|
-
constrainMaxLength(e.target, maxLength);
|
1794
|
-
}
|
1795
|
-
});
|
1725
|
+
if(webshims.bugs.bustedValidity){
|
1796
1726
|
|
1797
|
-
webshims.defineNodeNameProperty('
|
1727
|
+
webshims.defineNodeNameProperty('form', 'novalidate', {
|
1798
1728
|
attr: {
|
1799
1729
|
set: function(val){
|
1800
|
-
|
1801
|
-
constrainMaxLength.update(this);
|
1730
|
+
webshims.data(this, 'bustedNoValidate', ''+val);
|
1802
1731
|
},
|
1803
1732
|
get: function(){
|
1804
|
-
var ret =
|
1733
|
+
var ret = webshims.data(this, 'bustedNoValidate');
|
1805
1734
|
return ret == null ? undefined : ret;
|
1806
1735
|
}
|
1807
1736
|
},
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1811
|
-
|
1812
|
-
|
1813
|
-
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1817
|
-
|
1818
|
-
|
1819
|
-
|
1820
|
-
|
1737
|
+
removeAttr: {
|
1738
|
+
value: function(){
|
1739
|
+
webshims.data(this, 'bustedNoValidate', null);
|
1740
|
+
}
|
1741
|
+
}
|
1742
|
+
});
|
1743
|
+
|
1744
|
+
$.each(['rangeUnderflow', 'rangeOverflow', 'stepMismatch'], function(i, name){
|
1745
|
+
validityRules[name] = function(elem){
|
1746
|
+
return (elem[0].validity || {})[name] || false;
|
1747
|
+
};
|
1748
|
+
});
|
1749
|
+
|
1750
|
+
}
|
1751
|
+
|
1752
|
+
webshims.defineNodeNameProperty('form', 'noValidate', {
|
1753
|
+
prop: {
|
1754
|
+
set: function(val){
|
1755
|
+
val = !!val;
|
1756
|
+
if(val){
|
1757
|
+
$.attr(this, 'novalidate', 'novalidate');
|
1758
|
+
} else {
|
1759
|
+
$(this).removeAttr('novalidate');
|
1760
|
+
}
|
1761
|
+
},
|
1762
|
+
get: function(){
|
1763
|
+
return $.attr(this, 'novalidate') != null;
|
1764
|
+
}
|
1765
|
+
}
|
1766
|
+
});
|
1767
|
+
|
1768
|
+
if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
|
1769
|
+
(function(){
|
1770
|
+
|
1771
|
+
var noInputTriggerEvts = {updateInput: 1, input: 1},
|
1772
|
+
fixInputTypes = {
|
1773
|
+
date: 1,
|
1774
|
+
time: 1,
|
1775
|
+
month: 1,
|
1776
|
+
week: 1,
|
1777
|
+
"datetime-local": 1
|
1821
1778
|
},
|
1822
|
-
|
1823
|
-
|
1824
|
-
|
1779
|
+
noFocusEvents = {
|
1780
|
+
focusout: 1,
|
1781
|
+
blur: 1
|
1782
|
+
},
|
1783
|
+
changeEvts = {
|
1784
|
+
updateInput: 1,
|
1785
|
+
change: 1
|
1786
|
+
},
|
1787
|
+
observe = function(input){
|
1788
|
+
var timer,
|
1789
|
+
focusedin = true,
|
1790
|
+
lastInputVal = input.prop('value'),
|
1791
|
+
lastChangeVal = lastInputVal,
|
1792
|
+
trigger = function(e){
|
1793
|
+
//input === null
|
1794
|
+
if(!input){return;}
|
1795
|
+
var newVal = input.prop('value');
|
1796
|
+
|
1797
|
+
if(newVal !== lastInputVal){
|
1798
|
+
lastInputVal = newVal;
|
1799
|
+
if(!e || !noInputTriggerEvts[e.type]){
|
1800
|
+
input.trigger('input');
|
1801
|
+
}
|
1802
|
+
}
|
1803
|
+
if(e && changeEvts[e.type]){
|
1804
|
+
lastChangeVal = newVal;
|
1805
|
+
}
|
1806
|
+
if(!focusedin && newVal !== lastChangeVal){
|
1807
|
+
input.trigger('change');
|
1808
|
+
}
|
1809
|
+
},
|
1810
|
+
extraTimer,
|
1811
|
+
extraTest = function(){
|
1812
|
+
clearTimeout(extraTimer);
|
1813
|
+
extraTimer = setTimeout(trigger, 9);
|
1814
|
+
},
|
1815
|
+
unbind = function(e){
|
1816
|
+
clearInterval(timer);
|
1817
|
+
setTimeout(function(){
|
1818
|
+
if(e && noFocusEvents[e.type]){
|
1819
|
+
focusedin = false;
|
1820
|
+
}
|
1821
|
+
if(input){
|
1822
|
+
input.unbind('focusout blur', unbind).unbind('input change updateInput', trigger);
|
1823
|
+
trigger();
|
1824
|
+
}
|
1825
|
+
input = null;
|
1826
|
+
}, 1);
|
1827
|
+
|
1828
|
+
}
|
1829
|
+
;
|
1825
1830
|
|
1831
|
+
clearInterval(timer);
|
1832
|
+
timer = setInterval(trigger, 160);
|
1833
|
+
extraTest();
|
1834
|
+
input
|
1835
|
+
.off({
|
1836
|
+
'focusout blur': unbind,
|
1837
|
+
'input change updateInput': trigger
|
1838
|
+
})
|
1839
|
+
.on({
|
1840
|
+
'focusout blur': unbind,
|
1841
|
+
'input updateInput change': trigger
|
1842
|
+
})
|
1843
|
+
;
|
1844
|
+
}
|
1845
|
+
;
|
1846
|
+
|
1847
|
+
|
1848
|
+
$(document)
|
1849
|
+
.on('focusin', function(e){
|
1850
|
+
if( e.target && fixInputTypes[e.target.type] && !e.target.readOnly && !e.target.disabled ){
|
1851
|
+
observe($(e.target));
|
1852
|
+
}
|
1853
|
+
})
|
1854
|
+
;
|
1855
|
+
|
1856
|
+
|
1857
|
+
})();
|
1858
|
+
}
|
1859
|
+
|
1860
|
+
webshims.addReady(function(context, contextElem){
|
1861
|
+
//start constrain-validation
|
1862
|
+
var focusElem;
|
1863
|
+
$('form', context)
|
1864
|
+
.add(contextElem.filter('form'))
|
1865
|
+
.bind('invalid', $.noop)
|
1866
|
+
;
|
1867
|
+
|
1868
|
+
try {
|
1869
|
+
if(context == document && !('form' in (document.activeElement || {}))) {
|
1870
|
+
focusElem = $('input[autofocus], select[autofocus], textarea[autofocus]', context).eq(0).getShadowFocusElement()[0];
|
1871
|
+
if (focusElem && focusElem.offsetHeight && focusElem.offsetWidth) {
|
1872
|
+
focusElem.focus();
|
1826
1873
|
}
|
1827
1874
|
}
|
1828
|
-
}
|
1829
|
-
|
1875
|
+
}
|
1876
|
+
catch (er) {}
|
1877
|
+
|
1878
|
+
});
|
1879
|
+
|
1880
|
+
if(!Modernizr.input.list){
|
1881
|
+
webshims.defineNodeNameProperty('datalist', 'options', {
|
1830
1882
|
prop: {
|
1831
|
-
|
1832
|
-
$.prop(this, 'maxlength', val);
|
1833
|
-
},
|
1883
|
+
writeable: false,
|
1834
1884
|
get: function(){
|
1835
|
-
|
1885
|
+
var elem = this;
|
1886
|
+
var select = $('select', elem);
|
1887
|
+
var options;
|
1888
|
+
if(select[0]){
|
1889
|
+
options = $.makeArray(select[0].options || []);
|
1890
|
+
} else {
|
1891
|
+
options = $('option', elem).get();
|
1892
|
+
if(options.length){
|
1893
|
+
webshims.warn('you should wrap your option-elements for a datalist in a select element to support IE and other old browsers.');
|
1894
|
+
}
|
1895
|
+
}
|
1896
|
+
return options;
|
1836
1897
|
}
|
1837
1898
|
}
|
1838
1899
|
});
|
1839
|
-
}
|
1900
|
+
}
|
1840
1901
|
|
1841
1902
|
|
1842
1903
|
|
@@ -1994,1119 +2055,16 @@ switch(desc.proptype) {
|
|
1994
2055
|
|
1995
2056
|
webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors);
|
1996
2057
|
|
2058
|
+
}); //webshims.ready end
|
1997
2059
|
|
1998
|
-
|
1999
|
-
|
2000
|
-
|
2001
|
-
|
2002
|
-
|
2003
|
-
|
2004
|
-
get: function(){
|
2005
|
-
var ret = this.getAttribute('novalidate');
|
2006
|
-
return ret == null ? undefined : ret;
|
2007
|
-
}
|
2008
|
-
}
|
2009
|
-
});
|
2010
|
-
} else if(webshims.bugs.bustedValidity){
|
2011
|
-
|
2012
|
-
webshims.defineNodeNameProperty('form', 'novalidate', {
|
2013
|
-
attr: {
|
2014
|
-
set: function(val){
|
2015
|
-
webshims.data(this, 'bustedNoValidate', ''+val);
|
2016
|
-
},
|
2017
|
-
get: function(){
|
2018
|
-
var ret = webshims.data(this, 'bustedNoValidate');
|
2019
|
-
return ret == null ? undefined : ret;
|
2020
|
-
}
|
2021
|
-
},
|
2022
|
-
removeAttr: {
|
2023
|
-
value: function(){
|
2024
|
-
webshims.data(this, 'bustedNoValidate', null);
|
2025
|
-
}
|
2026
|
-
}
|
2027
|
-
});
|
2060
|
+
webshims.register('form-message', function($, webshims, window, document, undefined, options){
|
2061
|
+
"use strict";
|
2062
|
+
if(options.lazyCustomMessages){
|
2063
|
+
options.customMessages = true;
|
2064
|
+
}
|
2065
|
+
var validityMessages = webshims.validityMessages;
|
2028
2066
|
|
2029
|
-
|
2030
|
-
validityRules[name] = function(elem){
|
2031
|
-
return (elem[0].validity || {})[name] || false;
|
2032
|
-
};
|
2033
|
-
});
|
2034
|
-
|
2035
|
-
}
|
2036
|
-
|
2037
|
-
webshims.defineNodeNameProperty('form', 'noValidate', {
|
2038
|
-
prop: {
|
2039
|
-
set: function(val){
|
2040
|
-
val = !!val;
|
2041
|
-
if(val){
|
2042
|
-
$.attr(this, 'novalidate', 'novalidate');
|
2043
|
-
} else {
|
2044
|
-
$(this).removeAttr('novalidate');
|
2045
|
-
}
|
2046
|
-
},
|
2047
|
-
get: function(){
|
2048
|
-
return $.attr(this, 'novalidate') != null;
|
2049
|
-
}
|
2050
|
-
}
|
2051
|
-
});
|
2052
|
-
|
2053
|
-
if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
|
2054
|
-
(function(){
|
2055
|
-
|
2056
|
-
var noInputTriggerEvts = {updateInput: 1, input: 1},
|
2057
|
-
fixInputTypes = {
|
2058
|
-
date: 1,
|
2059
|
-
time: 1,
|
2060
|
-
month: 1,
|
2061
|
-
week: 1,
|
2062
|
-
"datetime-local": 1
|
2063
|
-
},
|
2064
|
-
noFocusEvents = {
|
2065
|
-
focusout: 1,
|
2066
|
-
blur: 1
|
2067
|
-
},
|
2068
|
-
changeEvts = {
|
2069
|
-
updateInput: 1,
|
2070
|
-
change: 1
|
2071
|
-
},
|
2072
|
-
observe = function(input){
|
2073
|
-
var timer,
|
2074
|
-
focusedin = true,
|
2075
|
-
lastInputVal = input.prop('value'),
|
2076
|
-
lastChangeVal = lastInputVal,
|
2077
|
-
trigger = function(e){
|
2078
|
-
//input === null
|
2079
|
-
if(!input){return;}
|
2080
|
-
var newVal = input.prop('value');
|
2081
|
-
|
2082
|
-
if(newVal !== lastInputVal){
|
2083
|
-
lastInputVal = newVal;
|
2084
|
-
if(!e || !noInputTriggerEvts[e.type]){
|
2085
|
-
input.trigger('input');
|
2086
|
-
}
|
2087
|
-
}
|
2088
|
-
if(e && changeEvts[e.type]){
|
2089
|
-
lastChangeVal = newVal;
|
2090
|
-
}
|
2091
|
-
if(!focusedin && newVal !== lastChangeVal){
|
2092
|
-
input.trigger('change');
|
2093
|
-
}
|
2094
|
-
},
|
2095
|
-
extraTimer,
|
2096
|
-
extraTest = function(){
|
2097
|
-
clearTimeout(extraTimer);
|
2098
|
-
extraTimer = setTimeout(trigger, 9);
|
2099
|
-
},
|
2100
|
-
unbind = function(e){
|
2101
|
-
clearInterval(timer);
|
2102
|
-
setTimeout(function(){
|
2103
|
-
if(e && noFocusEvents[e.type]){
|
2104
|
-
focusedin = false;
|
2105
|
-
}
|
2106
|
-
if(input){
|
2107
|
-
input.unbind('focusout blur', unbind).unbind('input change updateInput', trigger);
|
2108
|
-
trigger();
|
2109
|
-
}
|
2110
|
-
input = null;
|
2111
|
-
}, 1);
|
2112
|
-
|
2113
|
-
}
|
2114
|
-
;
|
2115
|
-
|
2116
|
-
clearInterval(timer);
|
2117
|
-
timer = setInterval(trigger, 160);
|
2118
|
-
extraTest();
|
2119
|
-
input
|
2120
|
-
.off({
|
2121
|
-
'focusout blur': unbind,
|
2122
|
-
'input change updateInput': trigger
|
2123
|
-
})
|
2124
|
-
.on({
|
2125
|
-
'focusout blur': unbind,
|
2126
|
-
'input updateInput change': trigger
|
2127
|
-
})
|
2128
|
-
;
|
2129
|
-
}
|
2130
|
-
;
|
2131
|
-
|
2132
|
-
|
2133
|
-
$(document)
|
2134
|
-
.on('focusin', function(e){
|
2135
|
-
if( e.target && fixInputTypes[e.target.type] && !e.target.readOnly && !e.target.disabled ){
|
2136
|
-
observe($(e.target));
|
2137
|
-
}
|
2138
|
-
})
|
2139
|
-
;
|
2140
|
-
|
2141
|
-
|
2142
|
-
})();
|
2143
|
-
}
|
2144
|
-
|
2145
|
-
webshims.addReady(function(context, contextElem){
|
2146
|
-
//start constrain-validation
|
2147
|
-
var focusElem;
|
2148
|
-
$('form', context)
|
2149
|
-
.add(contextElem.filter('form'))
|
2150
|
-
.bind('invalid', $.noop)
|
2151
|
-
;
|
2152
|
-
|
2153
|
-
try {
|
2154
|
-
if(context == document && !('form' in (document.activeElement || {}))) {
|
2155
|
-
focusElem = $('input[autofocus], select[autofocus], textarea[autofocus]', context).eq(0).getShadowFocusElement()[0];
|
2156
|
-
if (focusElem && focusElem.offsetHeight && focusElem.offsetWidth) {
|
2157
|
-
focusElem.focus();
|
2158
|
-
}
|
2159
|
-
}
|
2160
|
-
}
|
2161
|
-
catch (er) {}
|
2162
|
-
|
2163
|
-
});
|
2164
|
-
|
2165
|
-
if(!Modernizr.input.list){
|
2166
|
-
webshims.defineNodeNameProperty('datalist', 'options', {
|
2167
|
-
prop: {
|
2168
|
-
writeable: false,
|
2169
|
-
get: function(){
|
2170
|
-
var elem = this;
|
2171
|
-
var select = $('select', elem);
|
2172
|
-
var options;
|
2173
|
-
if(select[0]){
|
2174
|
-
options = select[0].options;
|
2175
|
-
} else {
|
2176
|
-
options = $('option', elem).get();
|
2177
|
-
if(options.length){
|
2178
|
-
webshims.warn('you should wrap your option-elements for a datalist in a select element to support IE and other old browsers.');
|
2179
|
-
}
|
2180
|
-
}
|
2181
|
-
return options;
|
2182
|
-
}
|
2183
|
-
}
|
2184
|
-
});
|
2185
|
-
|
2186
|
-
webshims.ready('form-datalist', function(){
|
2187
|
-
webshims.defineNodeNameProperties('input', {
|
2188
|
-
list: {
|
2189
|
-
attr: {
|
2190
|
-
get: function(){
|
2191
|
-
var val = webshims.contentAttr(this, 'list');
|
2192
|
-
return (val == null) ? undefined : val;
|
2193
|
-
},
|
2194
|
-
set: function(value){
|
2195
|
-
var elem = this;
|
2196
|
-
webshims.contentAttr(elem, 'list', value);
|
2197
|
-
webshims.objectCreate(options.shadowListProto, undefined, {input: elem, id: value, datalist: $.prop(elem, 'list')});
|
2198
|
-
$(elem).triggerHandler('listdatalistchange');
|
2199
|
-
}
|
2200
|
-
},
|
2201
|
-
initAttr: true,
|
2202
|
-
reflect: true,
|
2203
|
-
propType: 'element',
|
2204
|
-
propNodeName: 'datalist'
|
2205
|
-
}
|
2206
|
-
});
|
2207
|
-
});
|
2208
|
-
|
2209
|
-
}
|
2210
|
-
|
2211
|
-
if(!Modernizr.formattribute || !Modernizr.fieldsetdisabled){
|
2212
|
-
(function(){
|
2213
|
-
(function(prop, undefined){
|
2214
|
-
$.prop = function(elem, name, value){
|
2215
|
-
var ret;
|
2216
|
-
if(elem && elem.nodeType == 1 && value === undefined && $.nodeName(elem, 'form') && elem.id){
|
2217
|
-
ret = document.getElementsByName(name);
|
2218
|
-
if(!ret || !ret.length){
|
2219
|
-
ret = document.getElementById(name);
|
2220
|
-
}
|
2221
|
-
if(ret){
|
2222
|
-
ret = $(ret).filter(function(){
|
2223
|
-
return $.prop(this, 'form') == elem;
|
2224
|
-
}).get();
|
2225
|
-
if(ret.length){
|
2226
|
-
return ret.length == 1 ? ret[0] : ret;
|
2227
|
-
}
|
2228
|
-
}
|
2229
|
-
}
|
2230
|
-
return prop.apply(this, arguments);
|
2231
|
-
};
|
2232
|
-
})($.prop, undefined);
|
2233
|
-
var removeAddedElements = function(form){
|
2234
|
-
var elements = $.data(form, 'webshimsAddedElements');
|
2235
|
-
if(elements){
|
2236
|
-
elements.remove();
|
2237
|
-
$.removeData(form, 'webshimsAddedElements');
|
2238
|
-
}
|
2239
|
-
};
|
2240
|
-
|
2241
|
-
|
2242
|
-
if(!Modernizr.formattribute){
|
2243
|
-
webshims.defineNodeNamesProperty(['input', 'textarea', 'select', 'button', 'fieldset'], 'form', {
|
2244
|
-
prop: {
|
2245
|
-
get: function(){
|
2246
|
-
var form = webshims.contentAttr(this, 'form');
|
2247
|
-
if(form){
|
2248
|
-
form = document.getElementById(form);
|
2249
|
-
if(form && !$.nodeName(form, 'form')){
|
2250
|
-
form = null;
|
2251
|
-
}
|
2252
|
-
}
|
2253
|
-
return form || this.form;
|
2254
|
-
},
|
2255
|
-
writeable: false
|
2256
|
-
}
|
2257
|
-
});
|
2258
|
-
|
2259
|
-
|
2260
|
-
webshims.defineNodeNamesProperty(['form'], 'elements', {
|
2261
|
-
prop: {
|
2262
|
-
get: function(){
|
2263
|
-
var id = this.id;
|
2264
|
-
var elements = $.makeArray(this.elements);
|
2265
|
-
if(id){
|
2266
|
-
elements = $(elements).add('input[form="'+ id +'"], select[form="'+ id +'"], textarea[form="'+ id +'"], button[form="'+ id +'"], fieldset[form="'+ id +'"]').not('.webshims-visual-hide > *').get();
|
2267
|
-
}
|
2268
|
-
return elements;
|
2269
|
-
},
|
2270
|
-
writeable: false
|
2271
|
-
}
|
2272
|
-
});
|
2273
|
-
|
2274
|
-
|
2275
|
-
|
2276
|
-
$(function(){
|
2277
|
-
var stopPropagation = function(e){
|
2278
|
-
e.stopPropagation();
|
2279
|
-
};
|
2280
|
-
$(document).on('submit', function(e){
|
2281
|
-
|
2282
|
-
if(!e.isDefaultPrevented()){
|
2283
|
-
var form = e.target;
|
2284
|
-
var id = form.id;
|
2285
|
-
var elements;
|
2286
|
-
|
2287
|
-
|
2288
|
-
if(id){
|
2289
|
-
removeAddedElements(form);
|
2290
|
-
|
2291
|
-
elements = $('input[form="'+ id +'"], select[form="'+ id +'"], textarea[form="'+ id +'"]')
|
2292
|
-
.filter(function(){
|
2293
|
-
return !this.disabled && this.name && this.form != form;
|
2294
|
-
})
|
2295
|
-
.clone()
|
2296
|
-
;
|
2297
|
-
if(elements.length){
|
2298
|
-
$.data(form, 'webshimsAddedElements', $('<div class="webshims-visual-hide" />').append(elements).appendTo(form));
|
2299
|
-
setTimeout(function(){
|
2300
|
-
removeAddedElements(form);
|
2301
|
-
}, 9);
|
2302
|
-
}
|
2303
|
-
elements = null;
|
2304
|
-
}
|
2305
|
-
}
|
2306
|
-
});
|
2307
|
-
|
2308
|
-
$(document).on('click', function(e){
|
2309
|
-
if(!e.isDefaultPrevented() && $(e.target).is('input[type="submit"][form], button[form], input[type="button"][form], input[type="image"][form], input[type="reset"][form]')){
|
2310
|
-
var trueForm = $.prop(e.target, 'form');
|
2311
|
-
var formIn = e.target.form;
|
2312
|
-
var clone;
|
2313
|
-
if(trueForm && trueForm != formIn){
|
2314
|
-
clone = $(e.target)
|
2315
|
-
.clone()
|
2316
|
-
.removeAttr('form')
|
2317
|
-
.addClass('webshims-visual-hide')
|
2318
|
-
.on('click', stopPropagation)
|
2319
|
-
.appendTo(trueForm)
|
2320
|
-
;
|
2321
|
-
if(formIn){
|
2322
|
-
e.preventDefault();
|
2323
|
-
}
|
2324
|
-
addSubmitBubbles(trueForm);
|
2325
|
-
clone.trigger('click');
|
2326
|
-
setTimeout(function(){
|
2327
|
-
clone.remove();
|
2328
|
-
clone = null;
|
2329
|
-
}, 9);
|
2330
|
-
}
|
2331
|
-
}
|
2332
|
-
});
|
2333
|
-
});
|
2334
|
-
}
|
2335
|
-
|
2336
|
-
if(!Modernizr.fieldsetdisabled){
|
2337
|
-
webshims.defineNodeNamesProperty(['fieldset'], 'elements', {
|
2338
|
-
prop: {
|
2339
|
-
get: function(){
|
2340
|
-
//add listed elements without keygen, object, output
|
2341
|
-
return $('input, select, textarea, button, fieldset', this).get() || [];
|
2342
|
-
},
|
2343
|
-
writeable: false
|
2344
|
-
}
|
2345
|
-
});
|
2346
|
-
}
|
2347
|
-
|
2348
|
-
if(!$.fn.finish && parseFloat($.fn.jquery, 10) < 1.9){
|
2349
|
-
var rCRLF = /\r?\n/g,
|
2350
|
-
rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
|
2351
|
-
rselectTextarea = /^(?:select|textarea)/i;
|
2352
|
-
$.fn.serializeArray = function() {
|
2353
|
-
return this.map(function(){
|
2354
|
-
var elements = $.prop(this, 'elements');
|
2355
|
-
return elements ? $.makeArray( elements ) : this;
|
2356
|
-
})
|
2357
|
-
.filter(function(){
|
2358
|
-
return this.name && !this.disabled &&
|
2359
|
-
( this.checked || rselectTextarea.test( this.nodeName ) ||
|
2360
|
-
rinput.test( this.type ) );
|
2361
|
-
})
|
2362
|
-
.map(function( i, elem ){
|
2363
|
-
var val = $( this ).val();
|
2364
|
-
|
2365
|
-
return val == null ?
|
2366
|
-
null :
|
2367
|
-
$.isArray( val ) ?
|
2368
|
-
$.map( val, function( val, i ){
|
2369
|
-
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
2370
|
-
}) :
|
2371
|
-
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
2372
|
-
}).get();
|
2373
|
-
};
|
2374
|
-
}
|
2375
|
-
|
2376
|
-
})();
|
2377
|
-
}
|
2378
|
-
|
2379
|
-
if($('<input />').prop('labels') == null){
|
2380
|
-
webshims.defineNodeNamesProperty('button, input, keygen, meter, output, progress, select, textarea', 'labels', {
|
2381
|
-
prop: {
|
2382
|
-
get: function(){
|
2383
|
-
if(this.type == 'hidden'){return null;}
|
2384
|
-
var id = this.id;
|
2385
|
-
var labels = $(this)
|
2386
|
-
.closest('label')
|
2387
|
-
.filter(function(){
|
2388
|
-
var hFor = (this.attributes['for'] || {});
|
2389
|
-
return (!hFor.specified || hFor.value == id);
|
2390
|
-
})
|
2391
|
-
;
|
2392
|
-
|
2393
|
-
if(id) {
|
2394
|
-
labels = labels.add('label[for="'+ id +'"]');
|
2395
|
-
}
|
2396
|
-
return labels.get();
|
2397
|
-
},
|
2398
|
-
writeable: false
|
2399
|
-
}
|
2400
|
-
});
|
2401
|
-
}
|
2402
|
-
|
2403
|
-
if(!('value' in document.createElement('progress'))){
|
2404
|
-
(function(){
|
2405
|
-
|
2406
|
-
var nan = parseInt('NaN', 10);
|
2407
|
-
|
2408
|
-
var updateProgress = function(progress){
|
2409
|
-
var position;
|
2410
|
-
|
2411
|
-
|
2412
|
-
position = $.prop(progress, 'position');
|
2413
|
-
|
2414
|
-
$.attr(progress, 'data-position', position);
|
2415
|
-
$('> span', progress).css({width: (position < 0 ? 100 : position * 100) +'%'});
|
2416
|
-
};
|
2417
|
-
var desc = {
|
2418
|
-
position: {
|
2419
|
-
prop: {
|
2420
|
-
get: function(){
|
2421
|
-
var max;
|
2422
|
-
//jQuery 1.8.x try's to normalize "0" to 0
|
2423
|
-
var val = this.getAttribute('value');
|
2424
|
-
var ret = -1;
|
2425
|
-
|
2426
|
-
val = val ? (val * 1) : nan;
|
2427
|
-
if(!isNaN(val)){
|
2428
|
-
max = $.prop(this, 'max');
|
2429
|
-
ret = Math.max(Math.min(val / max, 1), 0);
|
2430
|
-
if(updateProgress.isInChange){
|
2431
|
-
$.attr(this, 'aria-valuenow', ret * 100);
|
2432
|
-
if(updateProgress.isInChange == 'max'){
|
2433
|
-
$.attr(this, 'aria-valuemax', max);
|
2434
|
-
}
|
2435
|
-
}
|
2436
|
-
} else if(updateProgress.isInChange) {
|
2437
|
-
$(this).removeAttr('aria-valuenow');
|
2438
|
-
}
|
2439
|
-
return ret;
|
2440
|
-
},
|
2441
|
-
writeable: false
|
2442
|
-
}
|
2443
|
-
}
|
2444
|
-
};
|
2445
|
-
|
2446
|
-
$.each({value: 0, max: 1}, function(name, defValue){
|
2447
|
-
var removeProp = (name == 'value' && !$.fn.finish);
|
2448
|
-
desc[name] = {
|
2449
|
-
attr: {
|
2450
|
-
set: function(value){
|
2451
|
-
var ret = desc[name].attr._supset.call(this, value);
|
2452
|
-
updateProgress.isInChange = name;
|
2453
|
-
updateProgress(this);
|
2454
|
-
updateProgress.isInChange = false;
|
2455
|
-
return ret;
|
2456
|
-
}
|
2457
|
-
},
|
2458
|
-
removeAttr: {
|
2459
|
-
value: function(){
|
2460
|
-
this.removeAttribute(name);
|
2461
|
-
if(removeProp){
|
2462
|
-
try {
|
2463
|
-
delete this.value;
|
2464
|
-
} catch(er){}
|
2465
|
-
}
|
2466
|
-
updateProgress.isInChange = name;
|
2467
|
-
updateProgress(this);
|
2468
|
-
updateProgress.isInChange = false;
|
2469
|
-
}
|
2470
|
-
},
|
2471
|
-
prop: {
|
2472
|
-
get: function(){
|
2473
|
-
var max;
|
2474
|
-
var ret = (desc[name].attr.get.call(this) * 1);
|
2475
|
-
if(ret < 0 || isNaN(ret)){
|
2476
|
-
ret = defValue;
|
2477
|
-
} else if(name == 'value'){
|
2478
|
-
ret = Math.min(ret, $.prop(this, 'max'));
|
2479
|
-
} else if(ret === 0){
|
2480
|
-
ret = defValue;
|
2481
|
-
}
|
2482
|
-
return ret;
|
2483
|
-
},
|
2484
|
-
set: function(value){
|
2485
|
-
value = value * 1;
|
2486
|
-
if(isNaN(value)){
|
2487
|
-
webshims.error('Floating-point value is not finite.');
|
2488
|
-
}
|
2489
|
-
return desc[name].attr.set.call(this, value);
|
2490
|
-
}
|
2491
|
-
}
|
2492
|
-
};
|
2493
|
-
});
|
2494
|
-
|
2495
|
-
webshims.createElement(
|
2496
|
-
'progress',
|
2497
|
-
function(){
|
2498
|
-
var labels = $(this)
|
2499
|
-
.attr({role: 'progressbar', 'aria-valuemin': '0'})
|
2500
|
-
.html('<span class="progress-value" />')
|
2501
|
-
.jProp('labels')
|
2502
|
-
.map(function(){
|
2503
|
-
return webshims.getID(this);
|
2504
|
-
})
|
2505
|
-
.get()
|
2506
|
-
;
|
2507
|
-
if(labels.length){
|
2508
|
-
$.attr(this, 'aria-labelledby', labels.join(' '));
|
2509
|
-
} else {
|
2510
|
-
webshims.info("you should use label elements for your prgogress elements");
|
2511
|
-
}
|
2512
|
-
|
2513
|
-
updateProgress.isInChange = 'max';
|
2514
|
-
updateProgress(this);
|
2515
|
-
updateProgress.isInChange = false;
|
2516
|
-
},
|
2517
|
-
desc
|
2518
|
-
);
|
2519
|
-
|
2520
|
-
})();
|
2521
|
-
}
|
2522
|
-
|
2523
|
-
try {
|
2524
|
-
document.querySelector(':checked');
|
2525
|
-
} catch(er){
|
2526
|
-
(function(){
|
2527
|
-
$('html').addClass('no-csschecked');
|
2528
|
-
var checkInputs = {
|
2529
|
-
radio: 1,
|
2530
|
-
checkbox: 1
|
2531
|
-
};
|
2532
|
-
var selectChange = function(){
|
2533
|
-
var options = this.options || [];
|
2534
|
-
var i, len, option;
|
2535
|
-
for(i = 0, len = options.length; i < len; i++){
|
2536
|
-
option = $(options[i]);
|
2537
|
-
option[$.prop(options[i], 'selected') ? 'addClass' : 'removeClass']('prop-checked');
|
2538
|
-
}
|
2539
|
-
};
|
2540
|
-
var checkChange = function(){
|
2541
|
-
var fn = $.prop(this, 'checked') ? 'addClass' : 'removeClass';
|
2542
|
-
var className = this.className || '';
|
2543
|
-
var parent;
|
2544
|
-
|
2545
|
-
//IE8- has problems to update styles, we help
|
2546
|
-
if( (className.indexOf('prop-checked') == -1) == (fn == 'addClass')){
|
2547
|
-
$(this)[fn]('prop-checked');
|
2548
|
-
if((parent = this.parentNode)){
|
2549
|
-
parent.className = parent.className;
|
2550
|
-
}
|
2551
|
-
}
|
2552
|
-
};
|
2553
|
-
|
2554
|
-
|
2555
|
-
webshims.onNodeNamesPropertyModify('select', 'value', selectChange);
|
2556
|
-
webshims.onNodeNamesPropertyModify('select', 'selectedIndex', selectChange);
|
2557
|
-
webshims.onNodeNamesPropertyModify('option', 'selected', function(){
|
2558
|
-
$(this).closest('select').each(selectChange);
|
2559
|
-
});
|
2560
|
-
webshims.onNodeNamesPropertyModify('input', 'checked', function(value, boolVal){
|
2561
|
-
var type = this.type;
|
2562
|
-
if(type == 'radio' && boolVal){
|
2563
|
-
getGroupElements(this).each(checkChange);
|
2564
|
-
} else if(checkInputs[type]) {
|
2565
|
-
$(this).each(checkChange);
|
2566
|
-
}
|
2567
|
-
});
|
2568
|
-
|
2569
|
-
$(document).on('change', function(e){
|
2570
|
-
|
2571
|
-
if(checkInputs[e.target.type]){
|
2572
|
-
if(e.target.type == 'radio'){
|
2573
|
-
getGroupElements(e.target).each(checkChange);
|
2574
|
-
} else {
|
2575
|
-
$(e.target)[$.prop(e.target, 'checked') ? 'addClass' : 'removeClass']('prop-checked');
|
2576
|
-
}
|
2577
|
-
} else if(e.target.nodeName.toLowerCase() == 'select'){
|
2578
|
-
$(e.target).each(selectChange);
|
2579
|
-
}
|
2580
|
-
});
|
2581
|
-
|
2582
|
-
webshims.addReady(function(context, contextElem){
|
2583
|
-
$('option, input', context)
|
2584
|
-
.add(contextElem.filter('option, input'))
|
2585
|
-
.each(function(){
|
2586
|
-
var prop;
|
2587
|
-
if(checkInputs[this.type]){
|
2588
|
-
prop = 'checked';
|
2589
|
-
} else if(this.nodeName.toLowerCase() == 'option'){
|
2590
|
-
prop = 'selected';
|
2591
|
-
}
|
2592
|
-
if(prop){
|
2593
|
-
$(this)[$.prop(this, prop) ? 'addClass' : 'removeClass']('prop-checked');
|
2594
|
-
}
|
2595
|
-
|
2596
|
-
})
|
2597
|
-
;
|
2598
|
-
});
|
2599
|
-
})();
|
2600
|
-
}
|
2601
|
-
|
2602
|
-
(function(){
|
2603
|
-
var bustedPlaceholder;
|
2604
|
-
Modernizr.textareaPlaceholder = !!('placeholder' in $('<textarea />')[0]);
|
2605
|
-
if(Modernizr.input.placeholder && options.overridePlaceholder){
|
2606
|
-
bustedPlaceholder = true;
|
2607
|
-
}
|
2608
|
-
if(Modernizr.input.placeholder && Modernizr.textareaPlaceholder && !bustedPlaceholder){
|
2609
|
-
(function(){
|
2610
|
-
var ua = navigator.userAgent;
|
2611
|
-
|
2612
|
-
if(ua.indexOf('Mobile') != -1 && ua.indexOf('Safari') != -1){
|
2613
|
-
$(window).on('orientationchange', (function(){
|
2614
|
-
var timer;
|
2615
|
-
var retVal = function(i, value){
|
2616
|
-
return value;
|
2617
|
-
};
|
2618
|
-
|
2619
|
-
var set = function(){
|
2620
|
-
$('input[placeholder], textarea[placeholder]').attr('placeholder', retVal);
|
2621
|
-
};
|
2622
|
-
return function(e){
|
2623
|
-
clearTimeout(timer);
|
2624
|
-
timer = setTimeout(set, 9);
|
2625
|
-
};
|
2626
|
-
})());
|
2627
|
-
}
|
2628
|
-
})();
|
2629
|
-
|
2630
|
-
//abort
|
2631
|
-
return;
|
2632
|
-
}
|
2633
|
-
|
2634
|
-
var isOver = (webshims.cfg.forms.placeholderType == 'over');
|
2635
|
-
var isResponsive = (webshims.cfg.forms.responsivePlaceholder);
|
2636
|
-
var polyfillElements = ['textarea'];
|
2637
|
-
var debug = webshims.debug !== false;
|
2638
|
-
if(!Modernizr.input.placeholder || bustedPlaceholder){
|
2639
|
-
polyfillElements.push('input');
|
2640
|
-
}
|
2641
|
-
|
2642
|
-
var setSelection = function(elem){
|
2643
|
-
try {
|
2644
|
-
if(elem.setSelectionRange){
|
2645
|
-
elem.setSelectionRange(0, 0);
|
2646
|
-
return true;
|
2647
|
-
} else if(elem.createTextRange){
|
2648
|
-
var range = elem.createTextRange();
|
2649
|
-
range.collapse(true);
|
2650
|
-
range.moveEnd('character', 0);
|
2651
|
-
range.moveStart('character', 0);
|
2652
|
-
range.select();
|
2653
|
-
return true;
|
2654
|
-
}
|
2655
|
-
} catch(er){}
|
2656
|
-
};
|
2657
|
-
|
2658
|
-
var hidePlaceholder = function(elem, data, value, _onFocus){
|
2659
|
-
if(value === false){
|
2660
|
-
value = $.prop(elem, 'value');
|
2661
|
-
}
|
2662
|
-
|
2663
|
-
if(!isOver && elem.type != 'password'){
|
2664
|
-
if(!value && _onFocus && setSelection(elem)){
|
2665
|
-
var selectTimer = setTimeout(function(){
|
2666
|
-
setSelection(elem);
|
2667
|
-
}, 9);
|
2668
|
-
$(elem)
|
2669
|
-
.off('.placeholderremove')
|
2670
|
-
.on({
|
2671
|
-
'keydown.placeholderremove keypress.placeholderremove paste.placeholderremove input.placeholderremove': function(e){
|
2672
|
-
if(e && (e.keyCode == 17 || e.keyCode == 16)){return;}
|
2673
|
-
elem.value = $.prop(elem, 'value');
|
2674
|
-
data.box.removeClass('placeholder-visible');
|
2675
|
-
clearTimeout(selectTimer);
|
2676
|
-
$(elem).unbind('.placeholderremove');
|
2677
|
-
},
|
2678
|
-
'mousedown.placeholderremove drag.placeholderremove select.placeholderremove': function(e){
|
2679
|
-
setSelection(elem);
|
2680
|
-
clearTimeout(selectTimer);
|
2681
|
-
selectTimer = setTimeout(function(){
|
2682
|
-
setSelection(elem);
|
2683
|
-
}, 9);
|
2684
|
-
},
|
2685
|
-
'blur.placeholderremove': function(){
|
2686
|
-
clearTimeout(selectTimer);
|
2687
|
-
$(elem).unbind('.placeholderremove');
|
2688
|
-
}
|
2689
|
-
})
|
2690
|
-
;
|
2691
|
-
return;
|
2692
|
-
} else if(!_onFocus && !value && elem.value){ //especially on submit
|
2693
|
-
elem.value = value;
|
2694
|
-
}
|
2695
|
-
} else if(!value && _onFocus){
|
2696
|
-
$(elem)
|
2697
|
-
.off('.placeholderremove')
|
2698
|
-
.on({
|
2699
|
-
'keydown.placeholderremove keypress.placeholderremove paste.placeholderremove input.placeholderremove': function(e){
|
2700
|
-
if(e && (e.keyCode == 17 || e.keyCode == 16)){return;}
|
2701
|
-
data.box.removeClass('placeholder-visible');
|
2702
|
-
$(elem).unbind('.placeholderremove');
|
2703
|
-
},
|
2704
|
-
'blur.placeholderremove': function(){
|
2705
|
-
$(elem).unbind('.placeholderremove');
|
2706
|
-
}
|
2707
|
-
})
|
2708
|
-
;
|
2709
|
-
return;
|
2710
|
-
}
|
2711
|
-
data.box.removeClass('placeholder-visible');
|
2712
|
-
},
|
2713
|
-
showPlaceholder = function(elem, data, placeholderTxt){
|
2714
|
-
if(placeholderTxt === false){
|
2715
|
-
placeholderTxt = $.prop(elem, 'placeholder');
|
2716
|
-
}
|
2717
|
-
|
2718
|
-
if(!isOver && elem.type != 'password'){
|
2719
|
-
elem.value = placeholderTxt;
|
2720
|
-
}
|
2721
|
-
data.box.addClass('placeholder-visible');
|
2722
|
-
},
|
2723
|
-
changePlaceholderVisibility = function(elem, value, placeholderTxt, data, type){
|
2724
|
-
if(!data){
|
2725
|
-
data = $.data(elem, 'placeHolder');
|
2726
|
-
if(!data){return;}
|
2727
|
-
}
|
2728
|
-
var isVisible = $(elem).hasClass('placeholder-visible');
|
2729
|
-
if(placeholderTxt === false){
|
2730
|
-
placeholderTxt = $.attr(elem, 'placeholder') || '';
|
2731
|
-
}
|
2732
|
-
|
2733
|
-
$(elem).unbind('.placeholderremove');
|
2734
|
-
|
2735
|
-
if(value === false){
|
2736
|
-
value = $.prop(elem, 'value');
|
2737
|
-
}
|
2738
|
-
|
2739
|
-
if(!value && (type == 'focus' || (!type && $(elem).is(':focus')))){
|
2740
|
-
if(elem.type == 'password' || isOver || isVisible){
|
2741
|
-
hidePlaceholder(elem, data, '', true);
|
2742
|
-
}
|
2743
|
-
return;
|
2744
|
-
}
|
2745
|
-
|
2746
|
-
if(value){
|
2747
|
-
hidePlaceholder(elem, data, value);
|
2748
|
-
return;
|
2749
|
-
}
|
2750
|
-
|
2751
|
-
if(placeholderTxt && !value){
|
2752
|
-
showPlaceholder(elem, data, placeholderTxt);
|
2753
|
-
} else {
|
2754
|
-
hidePlaceholder(elem, data, value);
|
2755
|
-
}
|
2756
|
-
},
|
2757
|
-
hasLabel = function(elem){
|
2758
|
-
elem = $(elem);
|
2759
|
-
return !!(elem.prop('title') || elem.attr('aria-labelledby') || elem.attr('aria-label') || elem.jProp('labels').length);
|
2760
|
-
},
|
2761
|
-
createPlaceholder = function(elem){
|
2762
|
-
elem = $(elem);
|
2763
|
-
return $( hasLabel(elem) ? '<span class="placeholder-text"></span>' : '<label for="'+ elem.prop('id') +'" class="placeholder-text"></label>');
|
2764
|
-
},
|
2765
|
-
pHolder = (function(){
|
2766
|
-
var delReg = /\n|\r|\f|\t/g,
|
2767
|
-
allowedPlaceholder = {
|
2768
|
-
text: 1,
|
2769
|
-
search: 1,
|
2770
|
-
url: 1,
|
2771
|
-
email: 1,
|
2772
|
-
password: 1,
|
2773
|
-
tel: 1,
|
2774
|
-
number: 1
|
2775
|
-
}
|
2776
|
-
;
|
2777
|
-
|
2778
|
-
if(modules["form-number-date-ui"].loaded){
|
2779
|
-
delete allowedPlaceholder.number;
|
2780
|
-
}
|
2781
|
-
|
2782
|
-
return {
|
2783
|
-
create: function(elem){
|
2784
|
-
var data = $.data(elem, 'placeHolder');
|
2785
|
-
var form;
|
2786
|
-
var responsiveElem;
|
2787
|
-
if(data){return data;}
|
2788
|
-
data = $.data(elem, 'placeHolder', {});
|
2789
|
-
|
2790
|
-
$(elem).on('focus.placeholder blur.placeholder', function(e){
|
2791
|
-
changePlaceholderVisibility(this, false, false, data, e.type );
|
2792
|
-
data.box[e.type == 'focus' ? 'addClass' : 'removeClass']('placeholder-focused');
|
2793
|
-
});
|
2794
|
-
|
2795
|
-
if((form = $.prop(elem, 'form'))){
|
2796
|
-
$(elem).onWSOff('reset.placeholder', function(e){
|
2797
|
-
setTimeout(function(){
|
2798
|
-
changePlaceholderVisibility(elem, false, false, data, e.type );
|
2799
|
-
}, 0);
|
2800
|
-
}, false, form);
|
2801
|
-
}
|
2802
|
-
|
2803
|
-
if(elem.type == 'password' || isOver){
|
2804
|
-
data.text = createPlaceholder(elem);
|
2805
|
-
if(isResponsive || $(elem).is('.responsive-width') || (elem.currentStyle || {width: ''}).width.indexOf('%') != -1){
|
2806
|
-
responsiveElem = true;
|
2807
|
-
data.box = data.text;
|
2808
|
-
} else {
|
2809
|
-
data.box = $(elem)
|
2810
|
-
.wrap('<span class="placeholder-box placeholder-box-'+ (elem.nodeName || '').toLowerCase() +' placeholder-box-'+$.css(elem, 'float')+'" />')
|
2811
|
-
.parent()
|
2812
|
-
;
|
2813
|
-
}
|
2814
|
-
data.text
|
2815
|
-
.insertAfter(elem)
|
2816
|
-
.on('mousedown.placeholder', function(){
|
2817
|
-
changePlaceholderVisibility(this, false, false, data, 'focus');
|
2818
|
-
try {
|
2819
|
-
setTimeout(function(){
|
2820
|
-
elem.focus();
|
2821
|
-
}, 0);
|
2822
|
-
} catch(e){}
|
2823
|
-
return false;
|
2824
|
-
})
|
2825
|
-
;
|
2826
|
-
|
2827
|
-
|
2828
|
-
$.each(['lineHeight', 'fontSize', 'fontFamily', 'fontWeight'], function(i, style){
|
2829
|
-
var prop = $.css(elem, style);
|
2830
|
-
if(data.text.css(style) != prop){
|
2831
|
-
data.text.css(style, prop);
|
2832
|
-
}
|
2833
|
-
});
|
2834
|
-
$.each(['Left', 'Top'], function(i, side){
|
2835
|
-
var size = (parseInt($.css(elem, 'padding'+ side), 10) || 0) + Math.max((parseInt($.css(elem, 'margin'+ side), 10) || 0), 0) + (parseInt($.css(elem, 'border'+ side +'Width'), 10) || 0);
|
2836
|
-
data.text.css('padding'+ side, size);
|
2837
|
-
});
|
2838
|
-
|
2839
|
-
$(elem)
|
2840
|
-
.onWSOff('updateshadowdom', function(){
|
2841
|
-
var height, width;
|
2842
|
-
if((width = elem.offsetWidth) || (height = elem.offsetHeight)){
|
2843
|
-
data.text
|
2844
|
-
.css({
|
2845
|
-
width: width,
|
2846
|
-
height: height
|
2847
|
-
})
|
2848
|
-
.css($(elem).position())
|
2849
|
-
;
|
2850
|
-
}
|
2851
|
-
}, true)
|
2852
|
-
;
|
2853
|
-
|
2854
|
-
} else {
|
2855
|
-
var reset = function(e){
|
2856
|
-
if($(elem).hasClass('placeholder-visible')){
|
2857
|
-
hidePlaceholder(elem, data, '');
|
2858
|
-
|
2859
|
-
setTimeout(function(){
|
2860
|
-
if(!e || e.type != 'submit' || e.isDefaultPrevented()){
|
2861
|
-
changePlaceholderVisibility(elem, false, false, data );
|
2862
|
-
}
|
2863
|
-
}, 9);
|
2864
|
-
}
|
2865
|
-
};
|
2866
|
-
|
2867
|
-
$(elem).onWSOff('beforeunload', reset, false, window);
|
2868
|
-
data.box = $(elem);
|
2869
|
-
if(form){
|
2870
|
-
$(elem).onWSOff('submit', reset, false, form);
|
2871
|
-
}
|
2872
|
-
}
|
2873
|
-
|
2874
|
-
return data;
|
2875
|
-
},
|
2876
|
-
update: function(elem, val){
|
2877
|
-
var type = ($.attr(elem, 'type') || $.prop(elem, 'type') || '').toLowerCase();
|
2878
|
-
if(!allowedPlaceholder[type] && !$.nodeName(elem, 'textarea')){
|
2879
|
-
webshims.warn('placeholder not allowed on input[type="'+type+'"], but it is a good fallback :-)');
|
2880
|
-
return;
|
2881
|
-
}
|
2882
|
-
|
2883
|
-
|
2884
|
-
var data = pHolder.create(elem);
|
2885
|
-
if(data.text){
|
2886
|
-
data.text.text(val);
|
2887
|
-
}
|
2888
|
-
|
2889
|
-
changePlaceholderVisibility(elem, false, val, data);
|
2890
|
-
}
|
2891
|
-
};
|
2892
|
-
})()
|
2893
|
-
;
|
2894
|
-
|
2895
|
-
$.webshims.publicMethods = {
|
2896
|
-
pHolder: pHolder
|
2897
|
-
};
|
2898
|
-
polyfillElements.forEach(function(nodeName){
|
2899
|
-
var desc = webshims.defineNodeNameProperty(nodeName, 'placeholder', {
|
2900
|
-
attr: {
|
2901
|
-
set: function(val){
|
2902
|
-
var elem = this;
|
2903
|
-
if(bustedPlaceholder){
|
2904
|
-
webshims.data(elem, 'bustedPlaceholder', val);
|
2905
|
-
elem.placeholder = '';
|
2906
|
-
} else {
|
2907
|
-
webshims.contentAttr(elem, 'placeholder', val);
|
2908
|
-
}
|
2909
|
-
pHolder.update(elem, val);
|
2910
|
-
},
|
2911
|
-
get: function(){
|
2912
|
-
var placeholder;
|
2913
|
-
if(bustedPlaceholder){
|
2914
|
-
placeholder = webshims.data(this, 'bustedPlaceholder');
|
2915
|
-
}
|
2916
|
-
return placeholder || webshims.contentAttr(this, 'placeholder');
|
2917
|
-
}
|
2918
|
-
},
|
2919
|
-
reflect: true,
|
2920
|
-
initAttr: true
|
2921
|
-
});
|
2922
|
-
});
|
2923
|
-
|
2924
|
-
|
2925
|
-
polyfillElements.forEach(function(name){
|
2926
|
-
var placeholderValueDesc = {};
|
2927
|
-
var desc;
|
2928
|
-
['attr', 'prop'].forEach(function(propType){
|
2929
|
-
placeholderValueDesc[propType] = {
|
2930
|
-
set: function(val){
|
2931
|
-
var elem = this;
|
2932
|
-
var placeholder;
|
2933
|
-
if(bustedPlaceholder){
|
2934
|
-
placeholder = webshims.data(elem, 'bustedPlaceholder');
|
2935
|
-
}
|
2936
|
-
if(!placeholder){
|
2937
|
-
placeholder = webshims.contentAttr(elem, 'placeholder');
|
2938
|
-
}
|
2939
|
-
$.removeData(elem, 'cachedValidity');
|
2940
|
-
var ret = desc[propType]._supset.call(elem, val);
|
2941
|
-
if(placeholder && 'value' in elem){
|
2942
|
-
changePlaceholderVisibility(elem, val, placeholder);
|
2943
|
-
}
|
2944
|
-
return ret;
|
2945
|
-
},
|
2946
|
-
get: function(){
|
2947
|
-
var elem = this;
|
2948
|
-
return $(elem).hasClass('placeholder-visible') ? '' : desc[propType]._supget.call(elem);
|
2949
|
-
}
|
2950
|
-
};
|
2951
|
-
});
|
2952
|
-
desc = webshims.defineNodeNameProperty(name, 'value', placeholderValueDesc);
|
2953
|
-
});
|
2954
|
-
|
2955
|
-
})();
|
2956
|
-
|
2957
|
-
(function(){
|
2958
|
-
var doc = document;
|
2959
|
-
if( 'value' in document.createElement('output') ){return;}
|
2960
|
-
|
2961
|
-
webshims.defineNodeNameProperty('output', 'value', {
|
2962
|
-
prop: {
|
2963
|
-
set: function(value){
|
2964
|
-
var setVal = $.data(this, 'outputShim');
|
2965
|
-
if(!setVal){
|
2966
|
-
setVal = outputCreate(this);
|
2967
|
-
}
|
2968
|
-
setVal(value);
|
2969
|
-
},
|
2970
|
-
get: function(){
|
2971
|
-
return webshims.contentAttr(this, 'value') || $(this).text() || '';
|
2972
|
-
}
|
2973
|
-
}
|
2974
|
-
});
|
2975
|
-
|
2976
|
-
|
2977
|
-
webshims.onNodeNamesPropertyModify('input', 'value', function(value, boolVal, type){
|
2978
|
-
if(type == 'removeAttr'){return;}
|
2979
|
-
var setVal = $.data(this, 'outputShim');
|
2980
|
-
if(setVal){
|
2981
|
-
setVal(value);
|
2982
|
-
}
|
2983
|
-
});
|
2984
|
-
|
2985
|
-
var outputCreate = function(elem){
|
2986
|
-
if(elem.getAttribute('aria-live')){return;}
|
2987
|
-
elem = $(elem);
|
2988
|
-
var value = (elem.text() || '').trim();
|
2989
|
-
var id = elem.prop('id');
|
2990
|
-
var htmlFor = elem.attr('for');
|
2991
|
-
var shim = $('<input class="output-shim" type="text" disabled name="'+ (elem.attr('name') || '')+'" value="'+value+'" style="display: none !important;" />').insertAfter(elem);
|
2992
|
-
var form = shim[0].form || doc;
|
2993
|
-
var setValue = function(val){
|
2994
|
-
shim[0].value = val;
|
2995
|
-
val = shim[0].value;
|
2996
|
-
elem.text(val);
|
2997
|
-
webshims.contentAttr(elem[0], 'value', val);
|
2998
|
-
};
|
2999
|
-
|
3000
|
-
elem[0].defaultValue = value;
|
3001
|
-
webshims.contentAttr(elem[0], 'value', value);
|
3002
|
-
|
3003
|
-
elem.attr({'aria-live': 'polite'});
|
3004
|
-
if(id){
|
3005
|
-
shim.attr('id', id);
|
3006
|
-
elem.attr('aria-labelledby', elem.jProp('labels').map(function(){
|
3007
|
-
return webshims.getID(this);
|
3008
|
-
}).get().join(' '));
|
3009
|
-
}
|
3010
|
-
if(htmlFor){
|
3011
|
-
id = webshims.getID(elem);
|
3012
|
-
htmlFor.split(' ').forEach(function(control){
|
3013
|
-
control = document.getElementById(control);
|
3014
|
-
if(control){
|
3015
|
-
control.setAttribute('aria-controls', id);
|
3016
|
-
}
|
3017
|
-
});
|
3018
|
-
}
|
3019
|
-
elem.data('outputShim', setValue );
|
3020
|
-
shim.data('outputShim', setValue );
|
3021
|
-
return setValue;
|
3022
|
-
};
|
3023
|
-
|
3024
|
-
webshims.addReady(function(context, contextElem){
|
3025
|
-
$('output', context).add(contextElem.filter('output')).each(function(){
|
3026
|
-
outputCreate(this);
|
3027
|
-
});
|
3028
|
-
});
|
3029
|
-
|
3030
|
-
/*
|
3031
|
-
* Implements input event in all browsers
|
3032
|
-
*/
|
3033
|
-
(function(){
|
3034
|
-
var noInputTriggerEvts = {updateInput: 1, input: 1},
|
3035
|
-
noInputTypes = {
|
3036
|
-
radio: 1,
|
3037
|
-
checkbox: 1,
|
3038
|
-
submit: 1,
|
3039
|
-
button: 1,
|
3040
|
-
image: 1,
|
3041
|
-
reset: 1,
|
3042
|
-
file: 1
|
3043
|
-
|
3044
|
-
//pro forma
|
3045
|
-
,color: 1
|
3046
|
-
//,range: 1
|
3047
|
-
},
|
3048
|
-
observe = function(input){
|
3049
|
-
var timer,
|
3050
|
-
lastVal = input.prop('value'),
|
3051
|
-
trigger = function(e){
|
3052
|
-
//input === null
|
3053
|
-
if(!input){return;}
|
3054
|
-
var newVal = input.prop('value');
|
3055
|
-
if(newVal !== lastVal){
|
3056
|
-
lastVal = newVal;
|
3057
|
-
if(!e || !noInputTriggerEvts[e.type]){
|
3058
|
-
webshims.triggerInlineForm && webshims.triggerInlineForm(input[0], 'input');
|
3059
|
-
}
|
3060
|
-
}
|
3061
|
-
},
|
3062
|
-
extraTimer,
|
3063
|
-
extraTest = function(){
|
3064
|
-
clearTimeout(extraTimer);
|
3065
|
-
extraTimer = setTimeout(trigger, 9);
|
3066
|
-
},
|
3067
|
-
unbind = function(){
|
3068
|
-
input.unbind('focusout', unbind).unbind('keyup keypress keydown paste cut', extraTest).unbind('input change updateInput', trigger);
|
3069
|
-
clearInterval(timer);
|
3070
|
-
setTimeout(function(){
|
3071
|
-
trigger();
|
3072
|
-
input = null;
|
3073
|
-
}, 1);
|
3074
|
-
|
3075
|
-
}
|
3076
|
-
;
|
3077
|
-
|
3078
|
-
clearInterval(timer);
|
3079
|
-
timer = setInterval(trigger, 200);
|
3080
|
-
extraTest();
|
3081
|
-
input.on({
|
3082
|
-
'keyup keypress keydown paste cut': extraTest,
|
3083
|
-
focusout: unbind,
|
3084
|
-
'input updateInput change': trigger
|
3085
|
-
});
|
3086
|
-
}
|
3087
|
-
;
|
3088
|
-
|
3089
|
-
$(doc)
|
3090
|
-
.on('focusin', function(e){
|
3091
|
-
if( e.target && !e.target.readOnly && !e.target.disabled && (e.target.nodeName || '').toLowerCase() == 'input' && !noInputTypes[e.target.type] && !(webshims.data(e.target, 'implemented') || {}).inputwidgets){
|
3092
|
-
observe($(e.target));
|
3093
|
-
}
|
3094
|
-
})
|
3095
|
-
;
|
3096
|
-
})();
|
3097
|
-
})();
|
3098
|
-
|
3099
|
-
}); //webshims.ready end
|
3100
|
-
}//end formvalidation
|
3101
|
-
|
3102
|
-
webshims.register('form-message', function($, webshims, window, document, undefined, options){
|
3103
|
-
"use strict";
|
3104
|
-
if(options.lazyCustomMessages){
|
3105
|
-
options.customMessages = true;
|
3106
|
-
}
|
3107
|
-
var validityMessages = webshims.validityMessages;
|
3108
|
-
|
3109
|
-
var implementProperties = options.customMessages ? ['customValidationMessage'] : [];
|
2067
|
+
var implementProperties = options.customMessages ? ['customValidationMessage'] : [];
|
3110
2068
|
|
3111
2069
|
validityMessages.en = $.extend(true, {
|
3112
2070
|
typeMismatch: {
|
@@ -3367,12 +2325,12 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3367
2325
|
/*
|
3368
2326
|
* implement propType "element" currently only used for list-attribute (will be moved to dom-extend, if needed)
|
3369
2327
|
*/
|
3370
|
-
webshims.propTypes.element = function(descs){
|
2328
|
+
webshims.propTypes.element = function(descs, name){
|
3371
2329
|
webshims.createPropDefault(descs, 'attr');
|
3372
2330
|
if(descs.prop){return;}
|
3373
2331
|
descs.prop = {
|
3374
2332
|
get: function(){
|
3375
|
-
var elem = $.attr(this,
|
2333
|
+
var elem = $.attr(this, name);
|
3376
2334
|
if(elem){
|
3377
2335
|
elem = document.getElementById(elem);
|
3378
2336
|
if(elem && descs.propNodeName && !$.nodeName(elem, descs.propNodeName)){
|
@@ -3396,7 +2354,15 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3396
2354
|
if(listSupport && !formsCFG.customDatalist){return;}
|
3397
2355
|
|
3398
2356
|
var initializeDatalist = function(){
|
3399
|
-
|
2357
|
+
|
2358
|
+
var updateDatlistAndOptions = function(){
|
2359
|
+
var id;
|
2360
|
+
if(!$.data(this, 'datalistWidgetData') && (id = $.prop(this, 'id'))){
|
2361
|
+
$('input[list="'+ id +'"], input[data-wslist="'+ id +'"]').eq(0).attr('list', id);
|
2362
|
+
} else {
|
2363
|
+
$(this).triggerHandler('updateDatalist');
|
2364
|
+
}
|
2365
|
+
};
|
3400
2366
|
|
3401
2367
|
var inputListProto = {
|
3402
2368
|
//override autocomplete
|
@@ -3474,6 +2440,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3474
2440
|
id: value,
|
3475
2441
|
datalist: $.prop(elem, 'list')
|
3476
2442
|
});
|
2443
|
+
elem.setAttribute('data-wslist', value);
|
3477
2444
|
} else {
|
3478
2445
|
elem.setAttribute('list', value);
|
3479
2446
|
}
|
@@ -3485,6 +2452,27 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3485
2452
|
propType: 'element',
|
3486
2453
|
propNodeName: 'datalist'
|
3487
2454
|
};
|
2455
|
+
} else {
|
2456
|
+
webshims.defineNodeNameProperties('input', {
|
2457
|
+
list: {
|
2458
|
+
attr: {
|
2459
|
+
get: function(){
|
2460
|
+
var val = webshims.contentAttr(this, 'list');
|
2461
|
+
return (val == null) ? undefined : val;
|
2462
|
+
},
|
2463
|
+
set: function(value){
|
2464
|
+
var elem = this;
|
2465
|
+
webshims.contentAttr(elem, 'list', value);
|
2466
|
+
webshims.objectCreate(options.shadowListProto, undefined, {input: elem, id: value, datalist: $.prop(elem, 'list')});
|
2467
|
+
$(elem).triggerHandler('listdatalistchange');
|
2468
|
+
}
|
2469
|
+
},
|
2470
|
+
initAttr: true,
|
2471
|
+
reflect: true,
|
2472
|
+
propType: 'element',
|
2473
|
+
propNodeName: 'datalist'
|
2474
|
+
}
|
2475
|
+
});
|
3488
2476
|
}
|
3489
2477
|
|
3490
2478
|
webshims.defineNodeNameProperties('input', inputListProto);
|
@@ -3493,9 +2481,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3493
2481
|
contextElem
|
3494
2482
|
.filter('datalist > select, datalist, datalist > option, datalist > select > option')
|
3495
2483
|
.closest('datalist')
|
3496
|
-
.each(
|
3497
|
-
$(this).triggerHandler('updateDatalist');
|
3498
|
-
})
|
2484
|
+
.each(updateDatlistAndOptions)
|
3499
2485
|
;
|
3500
2486
|
});
|
3501
2487
|
};
|
@@ -3540,6 +2526,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3540
2526
|
this.hasViewableData = true;
|
3541
2527
|
this._autocomplete = $.attr(opts.input, 'autocomplete');
|
3542
2528
|
$.data(opts.input, 'datalistWidget', this);
|
2529
|
+
$.data(datalist, 'datalistWidgetData', this);
|
3543
2530
|
|
3544
2531
|
lazyLoad('WINDOWLOAD');
|
3545
2532
|
|