webshims-rails 1.13.0 → 1.14.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +0 -0
- data/vendor/assets/javascripts/webshims/polyfiller.js +45 -26
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/color-picker.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +33 -2
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +82 -29
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +115 -43
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +115 -43
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +33 -3
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +65 -4
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +33 -3
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +492 -2580
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +8314 -1432
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +1642 -556
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +50 -39
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +65 -4
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +32 -2
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +33 -3
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +82 -29
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +1 -0
- data/vendor/assets/javascripts/webshims/shims/details.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +32 -2
- data/vendor/assets/javascripts/webshims/shims/es5.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/excanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/filereader.js +441 -362
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +19 -7
- data/vendor/assets/javascripts/webshims/shims/form-core.js +33 -2
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +49 -38
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +45 -14
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +105 -7
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +212 -134
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +15 -12
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-cs.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-BR.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/b.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/c.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +3 -3
- data/vendor/assets/javascripts/webshims/shims/jme/p.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ChangeLog.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ReadMe.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/mappoint.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/picker.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/rangearrows.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/js/moxie.js +7994 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
- data/vendor/assets/javascripts/webshims/shims/picture.js +50 -43
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/promise.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/config.rb +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +7 -2
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +219 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +115 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +31 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +583 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +736 -0
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +105 -21
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +91 -19
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/swf/filereader.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/track.js +0 -0
- metadata +13 -2
@@ -669,6 +669,8 @@
|
|
669
669
|
;
|
670
670
|
}
|
671
671
|
};
|
672
|
+
var numericType = Modernizr.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
|
673
|
+
'tel' : 'text';
|
672
674
|
var splitInputs = {
|
673
675
|
date: {
|
674
676
|
_create: function(opts){
|
@@ -679,18 +681,18 @@
|
|
679
681
|
if(opts.yearSelect){
|
680
682
|
obj.splits.push($('<select class="yy"></select>')[0]);
|
681
683
|
} else {
|
682
|
-
obj.splits.push($('<input type="
|
684
|
+
obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
|
683
685
|
}
|
684
686
|
|
685
687
|
if(opts.monthSelect){
|
686
688
|
obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
|
687
689
|
} else {
|
688
|
-
obj.splits.push($('<input type="
|
690
|
+
obj.splits.push($('<input type="'+ numericType +'" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
689
691
|
}
|
690
692
|
if(opts.daySelect){
|
691
693
|
obj.splits.push($(daySelect)[0]);
|
692
694
|
} else {
|
693
|
-
obj.splits.push($('<input type="
|
695
|
+
obj.splits.push($('<input type="'+ numericType +'" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
694
696
|
}
|
695
697
|
|
696
698
|
obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
|
@@ -725,7 +727,7 @@
|
|
725
727
|
if(opts.yearSelect){
|
726
728
|
obj.splits.push($('<select class="yy"></select>')[0]);
|
727
729
|
} else {
|
728
|
-
obj.splits.push($('<input type="
|
730
|
+
obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
|
729
731
|
}
|
730
732
|
|
731
733
|
if(opts.monthSelect){
|
@@ -733,7 +735,10 @@
|
|
733
735
|
} else {
|
734
736
|
obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
|
735
737
|
if(opts.onlyMonthDigits){
|
736
|
-
$(
|
738
|
+
$().attr({inputmode: 'numeric', size: 2, maxlength: 2});
|
739
|
+
try {
|
740
|
+
obj.splits[1].setAttribute('type', numericType);
|
741
|
+
} catch(e){}
|
737
742
|
}
|
738
743
|
}
|
739
744
|
|
@@ -756,7 +761,7 @@
|
|
756
761
|
}
|
757
762
|
}
|
758
763
|
};
|
759
|
-
|
764
|
+
|
760
765
|
var nowDate = new Date(new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 ));
|
761
766
|
var nowYear = nowDate.getFullYear();
|
762
767
|
nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), nowDate.getHours()).getTime();
|
@@ -1576,7 +1581,11 @@
|
|
1576
1581
|
} else if(!isNaN(this.maxAsNumber) && start > this.maxAsNumber){
|
1577
1582
|
start = this.maxAsNumber;
|
1578
1583
|
}
|
1579
|
-
|
1584
|
+
try {
|
1585
|
+
this.elemHelper.prop('valueAsNumber', start);
|
1586
|
+
} catch(e){
|
1587
|
+
webshims.warn('valueAsNumber set: '+e);
|
1588
|
+
}
|
1580
1589
|
this.options.defValue = this.elemHelper.prop('value');
|
1581
1590
|
},
|
1582
1591
|
reorderInputs: function(){
|
@@ -1600,7 +1609,7 @@
|
|
1600
1609
|
_beforeValue: function(val){
|
1601
1610
|
this.valueAsNumber = this.asNumber(val);
|
1602
1611
|
this.options.value = val;
|
1603
|
-
|
1612
|
+
|
1604
1613
|
if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
|
1605
1614
|
this._setStartInRange();
|
1606
1615
|
} else {
|
@@ -1716,9 +1725,9 @@
|
|
1716
1725
|
touchEnd = function(e){
|
1717
1726
|
var ret, touch;
|
1718
1727
|
e = e.originalEvent || {};
|
1719
|
-
$(this).off('touchend', touchEnd);
|
1728
|
+
$(this).off('touchend touchcancel', touchEnd);
|
1720
1729
|
var changedTouches = e.changedTouches || e.touches;
|
1721
|
-
if(!touchData || !changedTouches || changedTouches.length != 1){
|
1730
|
+
if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
|
1722
1731
|
return;
|
1723
1732
|
}
|
1724
1733
|
|
@@ -1749,7 +1758,7 @@
|
|
1749
1758
|
y: touch.pageY,
|
1750
1759
|
now: Date.now()
|
1751
1760
|
};
|
1752
|
-
elemTarget.on('touchend', touchEnd);
|
1761
|
+
elemTarget.on('touchend touchcancel', touchEnd);
|
1753
1762
|
};
|
1754
1763
|
|
1755
1764
|
this.each(function(){
|
@@ -1863,7 +1872,7 @@
|
|
1863
1872
|
cancel: function(val, popover, data){
|
1864
1873
|
if(!data.options.inlinePicker){
|
1865
1874
|
popover.stopOpen = true;
|
1866
|
-
if(assumeVirtualKeyBoard){
|
1875
|
+
if(!popover.openedByFocus && assumeVirtualKeyBoard){
|
1867
1876
|
$('button', data.buttonWrapper).trigger('focus');
|
1868
1877
|
} else {
|
1869
1878
|
data.element.getShadowFocusElement().trigger('focus');
|
@@ -1963,14 +1972,6 @@
|
|
1963
1972
|
var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, $.extend(options.popover || {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element}));
|
1964
1973
|
var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
|
1965
1974
|
|
1966
|
-
if(options.widgetPosition){
|
1967
|
-
webshims.error('options.widgetPosition was removed use options.popover.position instead');
|
1968
|
-
}
|
1969
|
-
|
1970
|
-
if(options.openOnFocus && popover.options && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
|
1971
|
-
webshims.error('openOnFocus and popover.appendTo "auto/element" can prduce a11y problems try to change appendTo to body or similiar or use openOnMouseFocus instead');
|
1972
|
-
}
|
1973
|
-
|
1974
1975
|
var showPickerContent = function(){
|
1975
1976
|
(picker[data.type].showPickerContent || picker.showPickerContent)(data, popover);
|
1976
1977
|
};
|
@@ -2039,9 +2040,28 @@
|
|
2039
2040
|
stopPropagation.apply(this, arguments);
|
2040
2041
|
popover.preventBlur();
|
2041
2042
|
},
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2043
|
+
keydown: function(e){
|
2044
|
+
if(e.keyCode == 40 && e.altKey){
|
2045
|
+
open();
|
2046
|
+
}
|
2047
|
+
},
|
2048
|
+
'focus mousedown': (function(){
|
2049
|
+
var allowClose = true;
|
2050
|
+
var reset = function(){
|
2051
|
+
allowClose = true;
|
2052
|
+
};
|
2053
|
+
return function(e){
|
2054
|
+
if(e.type == 'mousedown'){
|
2055
|
+
allowClose = false;
|
2056
|
+
setTimeout(reset);
|
2057
|
+
}
|
2058
|
+
if(e.type == 'focus' && allowClose && options.openOnFocus && popover.openedByFocus && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
|
2059
|
+
popover.hide();
|
2060
|
+
} else {
|
2061
|
+
popover.preventBlur();
|
2062
|
+
}
|
2063
|
+
};
|
2064
|
+
})()
|
2045
2065
|
})
|
2046
2066
|
;
|
2047
2067
|
|
@@ -2288,6 +2308,7 @@
|
|
2288
2308
|
}
|
2289
2309
|
|
2290
2310
|
};
|
2311
|
+
oriStyleO.webkitAppearance = 'none';
|
2291
2312
|
data.element.onWSOff('updateshadowdom', updateStyles, true);
|
2292
2313
|
};
|
2293
2314
|
|
@@ -2295,13 +2316,14 @@
|
|
2295
2316
|
var implementType = function(){
|
2296
2317
|
|
2297
2318
|
var type = $.prop(this, 'type');
|
2298
|
-
|
2299
2319
|
var i, opts, data, optsName, labels, cNames, hasInitialFocus;
|
2300
|
-
|
2320
|
+
|
2321
|
+
if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!modernizrInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
|
2301
2322
|
data = {};
|
2302
2323
|
optsName = type;
|
2303
2324
|
hasInitialFocus = $(this).is(':focus');
|
2304
2325
|
labels = $(this).jProp('labels');
|
2326
|
+
|
2305
2327
|
opts = $.extend(webshims.getOptions(this, type, [options.widgets, options[type], $($.prop(this, 'form')).data(type)]), {
|
2306
2328
|
orig: this,
|
2307
2329
|
type: type,
|
@@ -2334,6 +2356,7 @@
|
|
2334
2356
|
opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
|
2335
2357
|
}
|
2336
2358
|
}
|
2359
|
+
|
2337
2360
|
if(opts.formatMonthNames){
|
2338
2361
|
webshims.error('formatMonthNames was renamded to monthNames');
|
2339
2362
|
}
|
@@ -2357,11 +2380,11 @@
|
|
2357
2380
|
cNames = cNames.replace('form-control', '');
|
2358
2381
|
}
|
2359
2382
|
|
2360
|
-
data.shim.element.on('change input', stopPropagation).addClass(cNames);
|
2383
|
+
data.shim.element.on('change input', stopPropagation).addClass(cNames+' '+webshims.shadowClass);
|
2361
2384
|
|
2362
2385
|
if(data.shim.buttonWrapper){
|
2363
2386
|
|
2364
|
-
data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length));
|
2387
|
+
data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length)+' '+webshims.shadowClass);
|
2365
2388
|
|
2366
2389
|
if(data.shim.buttonWrapper.filter(isVisible).length){
|
2367
2390
|
data.shim.element.addClass('has-input-buttons');
|
File without changes
|
File without changes
|
@@ -427,7 +427,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
|
|
427
427
|
if(message && message.indexOf('{%') != -1){
|
428
428
|
['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
|
429
429
|
if(message.indexOf('{%'+attr) === -1){return;}
|
430
|
-
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
|
430
|
+
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr) || $.attr(elem, attr) || '') || '';
|
431
431
|
val = ''+val;
|
432
432
|
|
433
433
|
|
@@ -179,8 +179,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
179
179
|
});
|
180
180
|
return this;
|
181
181
|
};
|
182
|
-
|
183
|
-
var dataID = '
|
182
|
+
var idCount = 0;
|
183
|
+
var dataID = '_webshims'+ (Math.round(Math.random() * 1000));
|
184
184
|
var elementData = function(elem, key, val){
|
185
185
|
elem = elem.jquery ? elem[0] : elem;
|
186
186
|
if(!elem){return val || {};}
|
@@ -211,6 +211,35 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
211
211
|
return this.pushStack(elems);
|
212
212
|
};
|
213
213
|
});
|
214
|
+
|
215
|
+
function clone(elem, dataAndEvents, uniqueIds){
|
216
|
+
var cloned = $.clone( elem, dataAndEvents, false );
|
217
|
+
$(cloned.querySelectorAll('.'+webshims.shadowClass)).detach();
|
218
|
+
if(uniqueIds){
|
219
|
+
idCount++;
|
220
|
+
$(cloned.querySelectorAll('[id]')).prop('id', function(i, id){
|
221
|
+
return id +idCount;
|
222
|
+
});
|
223
|
+
} else {
|
224
|
+
$(cloned.querySelectorAll('audio[id^="ID-"], video[id^="ID-"], label[id^="ID-"]')).removeAttr('id');
|
225
|
+
}
|
226
|
+
return cloned;
|
227
|
+
}
|
228
|
+
|
229
|
+
$.fn.clonePolyfill = function(dataAndEvents, uniqueIds){
|
230
|
+
dataAndEvents = dataAndEvents || false;
|
231
|
+
return this
|
232
|
+
.map(function() {
|
233
|
+
var cloned = clone( this, dataAndEvents, uniqueIds );
|
234
|
+
setTimeout(function(){
|
235
|
+
if($.contains(document.body, cloned)){
|
236
|
+
$(cloned).updatePolyfill();
|
237
|
+
}
|
238
|
+
});
|
239
|
+
return cloned;
|
240
|
+
})
|
241
|
+
;
|
242
|
+
};
|
214
243
|
|
215
244
|
//add support for $('video').trigger('play') in case extendNative is set to false
|
216
245
|
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
@@ -522,6 +551,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
522
551
|
return id;
|
523
552
|
};
|
524
553
|
})(),
|
554
|
+
shadowClass: 'wsshadow-'+(Date.now()),
|
525
555
|
implement: function(elem, type){
|
526
556
|
var data = elementData(elem, 'implemented') || elementData(elem, 'implemented', {});
|
527
557
|
if(data[type]){
|
@@ -1333,6 +1363,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1333
1363
|
addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
|
1334
1364
|
|
1335
1365
|
addModule('form-validators', $.extend({}, formExtras));
|
1366
|
+
|
1367
|
+
|
1336
1368
|
|
1337
1369
|
if($.expr.filters){
|
1338
1370
|
extendSels();
|
@@ -1453,13 +1485,22 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1453
1485
|
};
|
1454
1486
|
|
1455
1487
|
$.event.special.valuevalidation = {
|
1488
|
+
setup: function(){
|
1489
|
+
webshims.error('valuevalidation was renamed to validatevalue!');
|
1490
|
+
}
|
1491
|
+
};
|
1492
|
+
|
1493
|
+
|
1494
|
+
$.event.special.validatevalue = {
|
1456
1495
|
setup: function(){
|
1457
1496
|
var data = $(this).data() || $.data(this, {});
|
1458
|
-
if(!('
|
1459
|
-
data.
|
1497
|
+
if(!('validatevalue' in data)){
|
1498
|
+
data.validatevalue = true;
|
1460
1499
|
}
|
1461
1500
|
}
|
1462
1501
|
};
|
1502
|
+
|
1503
|
+
|
1463
1504
|
|
1464
1505
|
$(document).on('focusin.lazyloadvalidation', function(e){
|
1465
1506
|
if('form' in e.target){
|
@@ -1472,6 +1513,26 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1472
1513
|
if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
|
1473
1514
|
webshims.isReady('form-number-date-ui', true);
|
1474
1515
|
}
|
1516
|
+
|
1517
|
+
webshims.ready('DOM', function(){
|
1518
|
+
if(document.querySelector('.ws-custom-file')){
|
1519
|
+
webshims.reTest(['form-validation']);
|
1520
|
+
}
|
1521
|
+
});
|
1522
|
+
|
1523
|
+
$(function(){
|
1524
|
+
var fileReaderReady = ('FileReader' in window && 'FormData' in window);
|
1525
|
+
if(!fileReaderReady){
|
1526
|
+
webshims.addReady(function(context){
|
1527
|
+
if(!fileReaderReady && !modules.filereader.loaded && !modules.moxie.loaded){
|
1528
|
+
if(context.querySelector('input.ws-filereader')){
|
1529
|
+
webshims.reTest(['filereader', 'moxie']);
|
1530
|
+
fileReaderReady = true;
|
1531
|
+
}
|
1532
|
+
}
|
1533
|
+
});
|
1534
|
+
}
|
1535
|
+
});
|
1475
1536
|
});
|
1476
1537
|
;webshims.register('form-shim-extend', function($, webshims, window, document, undefined, options){
|
1477
1538
|
"use strict";
|
@@ -1479,17 +1540,21 @@ webshims.inputTypes = webshims.inputTypes || {};
|
|
1479
1540
|
//some helper-functions
|
1480
1541
|
var cfg = webshims.cfg.forms;
|
1481
1542
|
var bugs = webshims.bugs;
|
1482
|
-
|
1483
|
-
var
|
1484
|
-
return (typeof string == 'number' || (string && string == string * 1));
|
1485
|
-
},
|
1486
|
-
typeModels = webshims.inputTypes,
|
1543
|
+
var splitReg = /\s*,\s*/g;
|
1544
|
+
var typeModels = webshims.inputTypes,
|
1487
1545
|
checkTypes = {
|
1488
1546
|
radio: 1,
|
1489
1547
|
checkbox: 1
|
1490
1548
|
},
|
1491
|
-
getType = function(
|
1492
|
-
|
1549
|
+
getType = function(){
|
1550
|
+
var elem = this;
|
1551
|
+
var type = (elem.getAttribute('type') || '').toLowerCase();
|
1552
|
+
return (webshims.inputTypes[type]) ? type : elem.type;
|
1553
|
+
},
|
1554
|
+
cacheType = function(cache, input){
|
1555
|
+
if(!('type' in cache)){
|
1556
|
+
cache.type = getType.call(input);
|
1557
|
+
}
|
1493
1558
|
}
|
1494
1559
|
;
|
1495
1560
|
|
@@ -1569,6 +1634,7 @@ var isPlaceholderOptionSelected = function(select){
|
|
1569
1634
|
};
|
1570
1635
|
|
1571
1636
|
var emptyJ = $([]);
|
1637
|
+
//TODO: cache + perftest
|
1572
1638
|
var getGroupElements = function(elem){
|
1573
1639
|
elem = $(elem);
|
1574
1640
|
var name, form;
|
@@ -1593,9 +1659,7 @@ var validityRules = {
|
|
1593
1659
|
valueMissing: function(input, val, cache){
|
1594
1660
|
if(!input.prop('required')){return false;}
|
1595
1661
|
var ret = false;
|
1596
|
-
|
1597
|
-
cache.type = getType(input[0]);
|
1598
|
-
}
|
1662
|
+
cacheType(cache, input[0]);
|
1599
1663
|
if(cache.nodeName == 'select'){
|
1600
1664
|
ret = (!val && (input[0].selectedIndex < 0 || isPlaceholderOptionSelected(input[0]) ));
|
1601
1665
|
} else if(checkTypes[cache.type]){
|
@@ -1606,21 +1670,32 @@ var validityRules = {
|
|
1606
1670
|
return ret;
|
1607
1671
|
},
|
1608
1672
|
patternMismatch: function(input, val, cache) {
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1612
|
-
|
1613
|
-
|
1673
|
+
var i;
|
1674
|
+
var ret = false;
|
1675
|
+
if(val === '' || cache.nodeName == 'select'){return ret;}
|
1676
|
+
|
1677
|
+
cacheType(cache, input[0]);
|
1678
|
+
|
1679
|
+
if(!patternTypes[cache.type]){return ret;}
|
1614
1680
|
var pattern = input.attr('pattern');
|
1615
|
-
if(!pattern){return
|
1681
|
+
if(!pattern){return ret;}
|
1616
1682
|
try {
|
1617
1683
|
pattern = new RegExp('^(?:' + pattern + ')$');
|
1618
1684
|
} catch(er){
|
1619
1685
|
webshims.error('invalid pattern value: "'+ pattern +'" | '+ er);
|
1620
|
-
pattern =
|
1686
|
+
pattern = ret;
|
1687
|
+
}
|
1688
|
+
if(!pattern){return ret;}
|
1689
|
+
|
1690
|
+
val = cache.type == 'email' && input.prop('multiple') ? val.split(splitReg) : [val];
|
1691
|
+
|
1692
|
+
for(i = 0; i < val.length; i++){
|
1693
|
+
if(!pattern.test(val[i])){
|
1694
|
+
ret = true;
|
1695
|
+
break;
|
1696
|
+
}
|
1621
1697
|
}
|
1622
|
-
|
1623
|
-
return !(pattern.test(val));
|
1698
|
+
return ret;
|
1624
1699
|
}
|
1625
1700
|
}
|
1626
1701
|
;
|
@@ -1629,9 +1704,9 @@ $.each({tooShort: ['minLength', -1], tooLong: ['maxLength', 1]}, function(name,
|
|
1629
1704
|
validityRules[name] = function(input, val, cache){
|
1630
1705
|
//defaultValue is not the same as dirty flag, but very similiar
|
1631
1706
|
if(cache.nodeName == 'select' || input.prop('defaultValue') == val){return false;}
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1707
|
+
|
1708
|
+
cacheType(cache, input[0]);
|
1709
|
+
|
1635
1710
|
if(!lengthTypes[cache.type]){return false;}
|
1636
1711
|
var prop = input.prop(props[0]);
|
1637
1712
|
|
@@ -1643,9 +1718,8 @@ $.each({typeMismatch: 'mismatch', badInput: 'bad'}, function(name, fn){
|
|
1643
1718
|
validityRules[name] = function (input, val, cache){
|
1644
1719
|
if(val === '' || cache.nodeName == 'select'){return false;}
|
1645
1720
|
var ret = false;
|
1646
|
-
|
1647
|
-
|
1648
|
-
}
|
1721
|
+
|
1722
|
+
cacheType(cache, input[0]);
|
1649
1723
|
|
1650
1724
|
if(typeModels[cache.type] && typeModels[cache.type][fn]){
|
1651
1725
|
ret = typeModels[cache.type][fn](val, input);
|
@@ -1713,6 +1787,7 @@ $.extend($.event.special.submit, {
|
|
1713
1787
|
return submitSetup.apply(this, arguments);
|
1714
1788
|
}
|
1715
1789
|
});
|
1790
|
+
|
1716
1791
|
webshims.ready('form-shim-extend2 WINDOWLOAD', function(){
|
1717
1792
|
$(window).on('invalid', $.noop);
|
1718
1793
|
});
|
@@ -1722,15 +1797,16 @@ webshims.addInputType('email', {
|
|
1722
1797
|
mismatch: (function(){
|
1723
1798
|
//taken from http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
|
1724
1799
|
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])?)*$/;
|
1725
|
-
var splitReg = /\s*,\s*/g;
|
1726
1800
|
return function(val, input){
|
1801
|
+
var i;
|
1727
1802
|
var ret = false;
|
1728
|
-
|
1729
|
-
|
1730
|
-
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1803
|
+
if(val){
|
1804
|
+
val = input.prop('multiple') ? val.split(splitReg) : [val];
|
1805
|
+
for(i = 0; i < val.length; i++){
|
1806
|
+
if(!test.test(val[i])){
|
1807
|
+
ret = true;
|
1808
|
+
break;
|
1809
|
+
}
|
1734
1810
|
}
|
1735
1811
|
}
|
1736
1812
|
return ret;
|
@@ -1743,18 +1819,14 @@ webshims.addInputType('url', {
|
|
1743
1819
|
//taken from scott gonzales
|
1744
1820
|
var test = cfg.urlReg || /^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;
|
1745
1821
|
return function(val){
|
1746
|
-
return !test.test(val);
|
1822
|
+
return val && !test.test(val);
|
1747
1823
|
};
|
1748
1824
|
})()
|
1749
1825
|
});
|
1750
1826
|
|
1751
1827
|
webshims.defineNodeNameProperty('input', 'type', {
|
1752
1828
|
prop: {
|
1753
|
-
get:
|
1754
|
-
var elem = this;
|
1755
|
-
var type = (elem.getAttribute('type') || '').toLowerCase();
|
1756
|
-
return (webshims.inputTypes[type]) ? type : elem.type;
|
1757
|
-
}
|
1829
|
+
get: getType
|
1758
1830
|
}
|
1759
1831
|
});
|
1760
1832
|
|
@@ -2485,7 +2557,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
|
|
2485
2557
|
if(message && message.indexOf('{%') != -1){
|
2486
2558
|
['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
|
2487
2559
|
if(message.indexOf('{%'+attr) === -1){return;}
|
2488
|
-
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
|
2560
|
+
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr) || $.attr(elem, attr) || '') || '';
|
2489
2561
|
val = ''+val;
|
2490
2562
|
|
2491
2563
|
|