webshims-rails 1.10.10 → 1.10.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/MIT_LICENSE.txt +3 -1
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +8 -9
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +91 -58
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +247 -101
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +241 -96
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +79 -58
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +79 -12
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +68 -75
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +147 -133
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +288 -143
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +288 -143
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +85 -63
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +97 -91
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +85 -17
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +17 -17
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +79 -58
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +17 -16
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +85 -63
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +0 -46
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +13 -6
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +47 -31
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +47 -59
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +18 -33
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +35 -31
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +304 -157
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +304 -185
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +126 -117
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +126 -89
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +247 -129
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/form-core.js +12 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -28
- data/vendor/assets/javascripts/webshims/shims/form-message.js +29 -26
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +16 -14
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +47 -47
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +241 -96
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +21 -16
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +17 -16
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +173 -41
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +17 -17
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +35 -33
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-ZN.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.txt +17 -13
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.txt +4 -1
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +30 -28
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +35 -32
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +37 -36
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +5 -2
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +33 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +3 -1
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +79 -12
- data/vendor/assets/javascripts/webshims/shims/styles/forms.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +126 -121
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +100 -111
- data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -46
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +13 -6
- data/webshims-rails.gemspec +1 -0
- metadata +4 -3
@@ -1,8 +1,9 @@
|
|
1
1
|
//DOM-Extension helper
|
2
2
|
webshims.register('dom-extend', function($, webshims, window, document, undefined){
|
3
3
|
"use strict";
|
4
|
-
|
5
|
-
|
4
|
+
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
5
|
+
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
6
|
+
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
6
7
|
|
7
8
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
8
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");
|
@@ -12,8 +13,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
12
13
|
webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
|
13
14
|
}
|
14
15
|
|
15
|
-
if(webshims.cfg.extendNative ===
|
16
|
-
webshims.warn("extendNative configuration
|
16
|
+
if(webshims.cfg.extendNative === undefined){
|
17
|
+
webshims.warn("extendNative configuration was set to false by default with this release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
|
17
18
|
}
|
18
19
|
|
19
20
|
if (!webshims.cfg.no$Switch) {
|
@@ -685,7 +686,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
685
686
|
|
686
687
|
anchor.setAttribute('href', href+'' );
|
687
688
|
|
688
|
-
if(
|
689
|
+
if(!supportHrefNormalized){
|
689
690
|
try {
|
690
691
|
$(anchor).insertAfter(this);
|
691
692
|
ret = anchor.getAttribute('href', 4);
|
@@ -1591,10 +1592,21 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1591
1592
|
"use strict";
|
1592
1593
|
var curCfg;
|
1593
1594
|
var formcfg = webshims.formcfg;
|
1594
|
-
|
1595
|
+
var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
|
1595
1596
|
var stopPropagation = function(e){
|
1596
1597
|
e.stopImmediatePropagation();
|
1597
1598
|
};
|
1599
|
+
var getMonthOptions = (function(){
|
1600
|
+
var str;
|
1601
|
+
return function(){
|
1602
|
+
if(!str){
|
1603
|
+
str = ('<option></option>')+$.map(monthDigits, function(val){
|
1604
|
+
return '<option>'+val+'</option>';
|
1605
|
+
}).join('');
|
1606
|
+
}
|
1607
|
+
return str;
|
1608
|
+
};
|
1609
|
+
})();
|
1598
1610
|
var createFormat = function(name){
|
1599
1611
|
if(!curCfg.patterns[name+'Obj']){
|
1600
1612
|
var obj = {};
|
@@ -1606,10 +1618,18 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1606
1618
|
};
|
1607
1619
|
var splitInputs = {
|
1608
1620
|
date: {
|
1609
|
-
_create: function(){
|
1621
|
+
_create: function(opts){
|
1610
1622
|
var obj = {
|
1611
|
-
splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" />')[0]
|
1623
|
+
splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" />')[0]]
|
1612
1624
|
};
|
1625
|
+
if(opts.monthSelect){
|
1626
|
+
obj.splits.push($('<select class="mm">'+getMonthOptions()+'</select>')[0]);
|
1627
|
+
} else {
|
1628
|
+
obj.splits.push($('<input type="text" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
1629
|
+
}
|
1630
|
+
obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
1631
|
+
|
1632
|
+
|
1613
1633
|
obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
|
1614
1634
|
return obj;
|
1615
1635
|
},
|
@@ -1617,7 +1637,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1617
1637
|
createFormat('d');
|
1618
1638
|
var i = 0;
|
1619
1639
|
var seperators = $('.ws-input-seperator', element).html(curCfg.dFormat);
|
1620
|
-
var inputs = $('input', element);
|
1640
|
+
var inputs = $('input, select', element);
|
1621
1641
|
$.each(curCfg.patterns.dObj, function(name, value){
|
1622
1642
|
var input = inputs.filter('.'+ name);
|
1623
1643
|
if(input[0]){
|
@@ -1635,17 +1655,23 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1635
1655
|
_create: function(opts){
|
1636
1656
|
|
1637
1657
|
var obj = {
|
1638
|
-
splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0]
|
1658
|
+
splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0]]
|
1639
1659
|
};
|
1640
|
-
if(opts.
|
1641
|
-
|
1660
|
+
if(opts.monthSelect){
|
1661
|
+
obj.splits.push($('<select class="mm ws-spin">'+getMonthOptions()+'</select>')[0]);
|
1662
|
+
} else {
|
1663
|
+
obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
|
1664
|
+
if(opts.onlyMonthDigits){
|
1665
|
+
$(obj.splits[1]).attr({inputmode: 'numeric', size: 2, maxlength: 2});
|
1666
|
+
}
|
1642
1667
|
}
|
1668
|
+
|
1643
1669
|
obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1]];
|
1644
1670
|
return obj;
|
1645
1671
|
},
|
1646
1672
|
sort: function(element){
|
1647
1673
|
var seperator = $('.ws-input-seperator', element).html(curCfg.dFormat);
|
1648
|
-
var mm = $('input.mm', element);
|
1674
|
+
var mm = $('input.mm, select.mm', element);
|
1649
1675
|
var action;
|
1650
1676
|
if(curCfg.date.showMonthAfterYear){
|
1651
1677
|
mm.appendTo(element);
|
@@ -1659,7 +1685,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1659
1685
|
}
|
1660
1686
|
};
|
1661
1687
|
|
1662
|
-
var nowDate = new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 );
|
1688
|
+
var nowDate = new Date(new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 ));
|
1689
|
+
nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), nowDate.getHours()).getTime()
|
1663
1690
|
var steps = {
|
1664
1691
|
number: {
|
1665
1692
|
step: 1
|
@@ -1668,6 +1695,10 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1668
1695
|
// step: 1,
|
1669
1696
|
// start: new Date(nowDate)
|
1670
1697
|
// },
|
1698
|
+
'datetime-local': {
|
1699
|
+
step: 60,
|
1700
|
+
start: new Date(nowDate).getTime()
|
1701
|
+
},
|
1671
1702
|
time: {
|
1672
1703
|
step: 60
|
1673
1704
|
},
|
@@ -1703,7 +1734,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1703
1734
|
|
1704
1735
|
|
1705
1736
|
(function(){
|
1706
|
-
var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
|
1707
1737
|
|
1708
1738
|
formcfg.de = $.extend(true, {
|
1709
1739
|
numberFormat: {
|
@@ -1753,6 +1783,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1753
1783
|
patterns: {
|
1754
1784
|
d: "mm/dd/yy"
|
1755
1785
|
},
|
1786
|
+
meridian: ['AM', 'PM'],
|
1756
1787
|
month: {
|
1757
1788
|
currentText: 'This month'
|
1758
1789
|
},
|
@@ -1806,12 +1837,18 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1806
1837
|
langCfg.date.monthkeys = {};
|
1807
1838
|
langCfg.date.monthDigits = monthDigits;
|
1808
1839
|
langCfg.numberSigns += '-';
|
1840
|
+
if(langCfg.meridian){
|
1841
|
+
langCfg.timeSigns += langCfg.meridian[0] + langCfg.meridian[1];
|
1842
|
+
}
|
1809
1843
|
$.each(langCfg.date.monthNames, create);
|
1810
1844
|
$.each(langCfg.date.monthNamesShort, create);
|
1811
1845
|
}
|
1812
1846
|
if(!langCfg.colorSigns){
|
1813
1847
|
langCfg.colorSigns = '#abcdefABCDEF';
|
1814
1848
|
}
|
1849
|
+
if(!langCfg['datetime-localSigns']){
|
1850
|
+
langCfg['datetime-localSigns'] = langCfg.dateSigns+langCfg.timeSigns;
|
1851
|
+
}
|
1815
1852
|
};
|
1816
1853
|
var triggerLocaleChange = function(){
|
1817
1854
|
processLangCFG(curCfg);
|
@@ -1868,11 +1905,31 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1868
1905
|
return (val+'').replace(/\,/g, '').replace(/\./, curCfg.numberFormat['.']);
|
1869
1906
|
},
|
1870
1907
|
time: function(val){
|
1908
|
+
var fVal;
|
1909
|
+
if(val && curCfg.meridian){
|
1910
|
+
val = val.split(':');
|
1911
|
+
fVal = (val[0] * 1);
|
1912
|
+
if(fVal && fVal >= 12){
|
1913
|
+
val[0] = addZero(fVal - 12+'');
|
1914
|
+
fVal = 1;
|
1915
|
+
|
1916
|
+
} else {
|
1917
|
+
fVal = 0;
|
1918
|
+
}
|
1919
|
+
val = $.trim(val.join(':')) + ' '+ curCfg.meridian[fVal];
|
1920
|
+
}
|
1871
1921
|
return val;
|
1872
1922
|
},
|
1873
|
-
|
1923
|
+
'datetime-local': function(val, o){
|
1924
|
+
var fVal = $.trim(val || '').split('T');
|
1925
|
+
if(fVal.length == 2){
|
1926
|
+
val = this.date(fVal[0], o) +' '+this.time(fVal[1], o);
|
1927
|
+
}
|
1874
1928
|
return val;
|
1875
1929
|
},
|
1930
|
+
// week: function(val){
|
1931
|
+
// return val;
|
1932
|
+
// },
|
1876
1933
|
//todo empty val for month/split
|
1877
1934
|
month: function(val, options){
|
1878
1935
|
var names;
|
@@ -1925,7 +1982,32 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1925
1982
|
// week: function(val){
|
1926
1983
|
// return val;
|
1927
1984
|
// },
|
1985
|
+
'datetime-local': function(val, o){
|
1986
|
+
var tmp;
|
1987
|
+
var fVal = $.trim(val || '').split(/\s+/);
|
1988
|
+
if(fVal.length == 2){
|
1989
|
+
if(fVal[0].indexOf(':') != -1 && fVal[1].indexOf(':') == -1){
|
1990
|
+
tmp = fVal[1];
|
1991
|
+
fVal[1] = fVal[0];
|
1992
|
+
fVal[0] = tmp;
|
1993
|
+
}
|
1994
|
+
val = this.date(fVal[0], o) +'T'+ this.time(fVal[1], o);
|
1995
|
+
}
|
1996
|
+
return val;
|
1997
|
+
},
|
1928
1998
|
time: function(val){
|
1999
|
+
var fVal;
|
2000
|
+
if(val && curCfg.meridian){
|
2001
|
+
if(val.indexOf(curCfg.meridian[1]) != -1){
|
2002
|
+
val = val.split(':');
|
2003
|
+
fVal = (val[0] * 1);
|
2004
|
+
if(!isNaN(fVal)){
|
2005
|
+
val[0] = fVal + 12;
|
2006
|
+
}
|
2007
|
+
val = val.join(':');
|
2008
|
+
}
|
2009
|
+
val = $.trim(val.replace(curCfg.meridian[0], '').replace(curCfg.meridian[1], ''));
|
2010
|
+
}
|
1929
2011
|
return val;
|
1930
2012
|
},
|
1931
2013
|
month: function(val, opts, noCorrect){
|
@@ -2026,8 +2108,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2026
2108
|
var type = (typeof val == 'object') ? 'valueAsDate' : 'valueAsNumber';
|
2027
2109
|
return input.prop(type, val).prop('value');
|
2028
2110
|
},
|
2029
|
-
isValid: function(val){
|
2030
|
-
|
2111
|
+
isValid: function(val, attrs){
|
2112
|
+
if(attrs && (attrs.nodeName || attrs.jquery)){
|
2113
|
+
attrs = {
|
2114
|
+
min: $(attrs).prop('min') || '',
|
2115
|
+
max: $(attrs).prop('max') || '',
|
2116
|
+
step: $(attrs).prop('step') || 'any'
|
2117
|
+
};
|
2118
|
+
}
|
2119
|
+
attrs = $.extend({step: 'any', min: '', max: ''}, attrs || {});
|
2120
|
+
return input.attr(attrs).prop('value', val).is(':valid') && input.prop('value') == val;
|
2031
2121
|
}
|
2032
2122
|
};
|
2033
2123
|
}
|
@@ -2052,6 +2142,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2052
2142
|
o.mirrorValidity = o.mirrorValidity && this.orig && Modernizr.formvalidation && !webshims.bugs.bustedValidity;
|
2053
2143
|
|
2054
2144
|
if(o.splitInput && this._addSplitInputs){
|
2145
|
+
if(o.monthSelect){
|
2146
|
+
this.element.addClass('ws-month-select');
|
2147
|
+
}
|
2055
2148
|
this._addSplitInputs();
|
2056
2149
|
} else {
|
2057
2150
|
this.inputElements = this.element;
|
@@ -2303,7 +2396,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2303
2396
|
try {
|
2304
2397
|
$(this)
|
2305
2398
|
.next()
|
2306
|
-
.next('input')
|
2399
|
+
.next('input, select')
|
2307
2400
|
.each(select)
|
2308
2401
|
;
|
2309
2402
|
} catch(er){}
|
@@ -2381,7 +2474,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2381
2474
|
}
|
2382
2475
|
};
|
2383
2476
|
spinEvents.keydown = function(e){
|
2384
|
-
if(o.list || e.isDefaultPrevented() || $.attr(this, 'list')){return;}
|
2477
|
+
if(o.list || e.isDefaultPrevented() || (e.altKey && e.keyCode == 40) || $.attr(this, 'list')){return;}
|
2385
2478
|
var stepped = true;
|
2386
2479
|
var code = e.keyCode;
|
2387
2480
|
if (code == 38) {
|
@@ -2504,7 +2597,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2504
2597
|
return [options, datalist.data('label')];
|
2505
2598
|
},
|
2506
2599
|
list: function(val){
|
2507
|
-
if(this.type == 'number'
|
2600
|
+
if(this.type == 'number'){
|
2508
2601
|
this.element.attr('list', $.attr(this.orig, 'list'));
|
2509
2602
|
}
|
2510
2603
|
this.options.list = val;
|
@@ -2587,7 +2680,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2587
2680
|
if(!this.inputElements){
|
2588
2681
|
var create = splitInputs[this.type]._create(this.options);
|
2589
2682
|
this.splits = create.splits;
|
2590
|
-
this.inputElements = $(create.elements).prependTo(this.element).filter('input');
|
2683
|
+
this.inputElements = $(create.elements).prependTo(this.element).filter('input, select');
|
2591
2684
|
}
|
2592
2685
|
},
|
2593
2686
|
|
@@ -2613,11 +2706,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2613
2706
|
reorderInputs: function(){
|
2614
2707
|
if(splitInputs[this.type]){
|
2615
2708
|
var element = this.element;
|
2616
|
-
splitInputs[this.type].sort(element);
|
2709
|
+
splitInputs[this.type].sort(element, this.options);
|
2617
2710
|
setTimeout(function(){
|
2618
2711
|
var data = webshims.data(element);
|
2619
2712
|
if(data && data.shadowData){
|
2620
|
-
data.shadowData.shadowFocusElement = element.find('input')[0] || element[0];
|
2713
|
+
data.shadowData.shadowFocusElement = element.find('input, select')[0] || element[0];
|
2621
2714
|
}
|
2622
2715
|
}, 9);
|
2623
2716
|
}
|
@@ -2720,8 +2813,21 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2720
2813
|
options: options
|
2721
2814
|
});
|
2722
2815
|
|
2816
|
+
webshims.inlinePopover = {
|
2817
|
+
_create: function(){
|
2818
|
+
this.element = $('<div class="ws-inline-picker"><div class="ws-po-box" /></div>').data('wspopover', this);
|
2819
|
+
this.contentElement = $('.ws-po-box', this.element);
|
2820
|
+
this.element.insertAfter(this.options.prepareFor);
|
2821
|
+
},
|
2822
|
+
show: $.noop,
|
2823
|
+
hide: $.noop,
|
2824
|
+
preventBlur: $.noop,
|
2825
|
+
isVisible: true
|
2826
|
+
};
|
2827
|
+
|
2723
2828
|
picker._genericSetFocus = function(element, _noFocus){
|
2724
2829
|
element = $(element || this.activeButton);
|
2830
|
+
|
2725
2831
|
if(!this.popover.openedByFocus && !_noFocus){
|
2726
2832
|
var that = this;
|
2727
2833
|
var setFocus = function(noTrigger){
|
@@ -2746,12 +2852,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2746
2852
|
data.setChange(val);
|
2747
2853
|
},
|
2748
2854
|
cancel: function(val, popover, data){
|
2749
|
-
|
2750
|
-
|
2751
|
-
|
2752
|
-
|
2753
|
-
|
2754
|
-
|
2855
|
+
if(!data.options.inlinePicker){
|
2856
|
+
popover.stopOpen = true;
|
2857
|
+
data.element.getShadowFocusElement().focus();
|
2858
|
+
setTimeout(function(){
|
2859
|
+
popover.stopOpen = false;
|
2860
|
+
}, 9);
|
2861
|
+
popover.hide();
|
2862
|
+
}
|
2755
2863
|
}
|
2756
2864
|
};
|
2757
2865
|
|
@@ -2764,28 +2872,31 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2764
2872
|
popover.element.on('updatepickercontent pickerchange', function(){
|
2765
2873
|
tabbable = false;
|
2766
2874
|
});
|
2767
|
-
|
2768
|
-
|
2769
|
-
|
2770
|
-
|
2771
|
-
|
2772
|
-
|
2773
|
-
|
2774
|
-
|
2775
|
-
tabbable.
|
2776
|
-
|
2777
|
-
|
2778
|
-
|
2779
|
-
|
2875
|
+
|
2876
|
+
if(!data.options.inlinePicker){
|
2877
|
+
popover.contentElement.on({
|
2878
|
+
keydown: function(e){
|
2879
|
+
if(e.keyCode == 9){
|
2880
|
+
if(!tabbable){
|
2881
|
+
tabbable = $('input:not(:disabled), [tabindex="0"]:not(:disabled)', this).filter(':visible');
|
2882
|
+
}
|
2883
|
+
var index = tabbable.index(e.target);
|
2884
|
+
if(e.shiftKey && index <= 0){
|
2885
|
+
tabbable.last().focus();
|
2886
|
+
return false;
|
2887
|
+
}
|
2888
|
+
if(!e.shiftKey && index >= tabbable.length - 1){
|
2889
|
+
tabbable.first().focus();
|
2890
|
+
return false;
|
2891
|
+
}
|
2892
|
+
} else if(e.keyCode == 27){
|
2893
|
+
data.element.getShadowFocusElement().focus();
|
2894
|
+
popover.hide();
|
2780
2895
|
return false;
|
2781
2896
|
}
|
2782
|
-
} else if(e.keyCode == 27){
|
2783
|
-
data.element.getShadowFocusElement().focus();
|
2784
|
-
popover.hide();
|
2785
|
-
return false;
|
2786
2897
|
}
|
2787
|
-
}
|
2788
|
-
}
|
2898
|
+
});
|
2899
|
+
}
|
2789
2900
|
|
2790
2901
|
data._propertyChange = (function(){
|
2791
2902
|
var timer;
|
@@ -2795,7 +2906,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2795
2906
|
}
|
2796
2907
|
};
|
2797
2908
|
return function(prop){
|
2798
|
-
if(prop == 'value'){return;}
|
2909
|
+
if(prop == 'value' && !data.options.inlinePicker){return;}
|
2799
2910
|
popover.isDirty = true;
|
2800
2911
|
if(popover.isVisible){
|
2801
2912
|
clearTimeout(timer);
|
@@ -2832,7 +2943,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2832
2943
|
|
2833
2944
|
picker._common = function(data){
|
2834
2945
|
var options = data.options;
|
2835
|
-
var popover = webshims.objectCreate(webshims.wsPopover, {}, {prepareFor: data.element, position: options.widgetPosition});
|
2946
|
+
var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element, position: options.widgetPosition});
|
2836
2947
|
var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
|
2837
2948
|
|
2838
2949
|
|
@@ -2841,18 +2952,34 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2841
2952
|
};
|
2842
2953
|
var show = function(){
|
2843
2954
|
var type = loadPicker(data.type, 'DOM');
|
2844
|
-
if(!options.disabled && !options.readonly && !popover.isVisible){
|
2955
|
+
if(!options.disabled && !options.readonly && (options.inlinePicker || !popover.isVisible)){
|
2845
2956
|
webshims.ready(type, showPickerContent);
|
2846
2957
|
popover.show(data.element);
|
2847
2958
|
}
|
2848
2959
|
};
|
2960
|
+
var open = function(){
|
2961
|
+
if((options.inlinePicker || popover.isVisible) && popover.activeElement){
|
2962
|
+
popover.openedByFocus = false;
|
2963
|
+
popover.activeElement.focus();
|
2964
|
+
}
|
2965
|
+
show();
|
2966
|
+
};
|
2967
|
+
|
2849
2968
|
|
2850
2969
|
options.containerElements.push(popover.element[0]);
|
2851
2970
|
|
2852
2971
|
if(data.type != 'color'){
|
2972
|
+
if(options.yearButtons){
|
2973
|
+
options.startView = 2;
|
2974
|
+
}
|
2853
2975
|
if(!options.startView){
|
2854
2976
|
options.startView = 0;
|
2855
2977
|
}
|
2978
|
+
|
2979
|
+
if(data.type == 'time'){
|
2980
|
+
options.minView = 3;
|
2981
|
+
options.startView = 3;
|
2982
|
+
}
|
2856
2983
|
if(!options.minView){
|
2857
2984
|
options.minView = 0;
|
2858
2985
|
}
|
@@ -2882,6 +3009,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2882
3009
|
if(popover.activeElement){
|
2883
3010
|
popover.activeElement.removeClass('ws-focus');
|
2884
3011
|
}
|
3012
|
+
if(options.inlinePicker){
|
3013
|
+
popover.openedByFocus = true;
|
3014
|
+
}
|
2885
3015
|
}
|
2886
3016
|
})
|
2887
3017
|
;
|
@@ -2897,57 +3027,63 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2897
3027
|
opener.prop({disabled: true});
|
2898
3028
|
}
|
2899
3029
|
|
2900
|
-
opener
|
2901
|
-
.on({
|
2902
|
-
mousedown: function(){
|
2903
|
-
stopPropagation.apply(this, arguments);
|
2904
|
-
popover.preventBlur();
|
2905
|
-
},
|
2906
|
-
click: function(){
|
2907
|
-
if(popover.isVisible && popover.activeElement){
|
2908
|
-
popover.openedByFocus = false;
|
2909
|
-
popover.activeElement.focus();
|
2910
|
-
}
|
2911
|
-
show();
|
2912
|
-
},
|
2913
|
-
focus: function(){
|
2914
|
-
popover.preventBlur();
|
2915
|
-
}
|
2916
|
-
})
|
2917
|
-
;
|
2918
3030
|
|
2919
|
-
(
|
2920
|
-
|
2921
|
-
|
2922
|
-
|
2923
|
-
|
2924
|
-
|
2925
|
-
|
2926
|
-
|
2927
|
-
|
2928
|
-
|
2929
|
-
}
|
3031
|
+
opener.on({click: open});
|
3032
|
+
|
3033
|
+
if(options.inlinePicker){
|
3034
|
+
popover.openedByFocus = true;
|
3035
|
+
} else {
|
3036
|
+
opener
|
3037
|
+
.on({
|
3038
|
+
mousedown: function(){
|
3039
|
+
stopPropagation.apply(this, arguments);
|
3040
|
+
popover.preventBlur();
|
3041
|
+
},
|
3042
|
+
focus: function(){
|
2930
3043
|
popover.preventBlur();
|
2931
3044
|
}
|
2932
|
-
}
|
2933
|
-
|
2934
|
-
|
2935
|
-
|
2936
|
-
|
2937
|
-
|
2938
|
-
|
3045
|
+
})
|
3046
|
+
;
|
3047
|
+
|
3048
|
+
(function(){
|
3049
|
+
var mouseFocus = false;
|
3050
|
+
var resetMouseFocus = function(){
|
3051
|
+
mouseFocus = false;
|
3052
|
+
};
|
3053
|
+
data.inputElements.on({
|
3054
|
+
keydown: function(e){
|
3055
|
+
if(e.keyCode == 40 && e.altKey){
|
3056
|
+
open();
|
3057
|
+
}
|
3058
|
+
},
|
3059
|
+
focus: function(){
|
3060
|
+
if(!popover.stopOpen && (options.buttonOnly || options.openOnFocus || (mouseFocus && options.openOnMouseFocus))){
|
3061
|
+
popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
|
3062
|
+
show();
|
3063
|
+
} else {
|
3064
|
+
popover.preventBlur();
|
3065
|
+
}
|
3066
|
+
},
|
3067
|
+
mousedown: function(){
|
3068
|
+
mouseFocus = true;
|
3069
|
+
setTimeout(resetMouseFocus, 9);
|
3070
|
+
if(options.buttonOnly && popover.isVisible && popover.activeElement){
|
2939
3071
|
popover.openedByFocus = false;
|
2940
|
-
|
2941
|
-
|
2942
|
-
|
2943
|
-
|
2944
|
-
|
2945
|
-
|
3072
|
+
setTimeout(function(){
|
3073
|
+
popover.openedByFocus = false;
|
3074
|
+
popover.activeElement.focus();
|
3075
|
+
}, 4);
|
3076
|
+
}
|
3077
|
+
if(data.element.is(':focus')){
|
3078
|
+
popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
|
3079
|
+
show();
|
3080
|
+
}
|
3081
|
+
popover.preventBlur();
|
2946
3082
|
}
|
2947
|
-
|
2948
|
-
|
2949
|
-
|
2950
|
-
|
3083
|
+
});
|
3084
|
+
})();
|
3085
|
+
}
|
3086
|
+
|
2951
3087
|
data.popover = popover;
|
2952
3088
|
data.opener = opener;
|
2953
3089
|
$(data.orig).on('remove', function(e){
|
@@ -2958,12 +3094,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2958
3094
|
}, 4);
|
2959
3095
|
}
|
2960
3096
|
});
|
2961
|
-
|
3097
|
+
if(options.inlinePicker){
|
3098
|
+
show();
|
3099
|
+
}
|
2962
3100
|
loadPicker(data.type, 'WINDOWLOAD');
|
2963
3101
|
};
|
2964
3102
|
|
2965
3103
|
picker.month = picker._common;
|
2966
3104
|
picker.date = picker._common;
|
3105
|
+
picker.time = picker._common;
|
3106
|
+
picker['datetime-local'] = picker._common;
|
2967
3107
|
// picker.week = picker._common;
|
2968
3108
|
picker.color = function(data){
|
2969
3109
|
var ret = picker._common.apply(this, arguments);
|
@@ -3147,6 +3287,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
3147
3287
|
opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
|
3148
3288
|
}
|
3149
3289
|
}
|
3290
|
+
if(opts.monthSelect){
|
3291
|
+
opts.onlyMonthDigits = true;
|
3292
|
+
}
|
3150
3293
|
if(opts.onlyMonthDigits){
|
3151
3294
|
opts.formatMonthNames = 'monthDigits';
|
3152
3295
|
}
|
@@ -3252,11 +3395,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
3252
3395
|
});
|
3253
3396
|
}
|
3254
3397
|
|
3255
|
-
var isStupid = navigator.userAgent.indexOf('
|
3256
|
-
['number', 'time', 'month', 'date', 'color'].forEach(function(name){
|
3398
|
+
var isStupid = modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && (/MSIE 1[0|1]\.\d/.test(navigator.userAgent) || /Trident\/7\.0/.test(navigator.userAgent));
|
3399
|
+
['number', 'time', 'month', 'date', 'color', 'datetime-local'].forEach(function(name){
|
3257
3400
|
if(!modernizrInputTypes[name] || options.replaceUI || (name == 'number' && isStupid)){
|
3258
3401
|
extendType(name, {
|
3259
3402
|
_create: function(opts, set){
|
3403
|
+
if(opts.monthSelect){
|
3404
|
+
opts.splitInput = true;
|
3405
|
+
}
|
3260
3406
|
if(opts.splitInput && !splitInputs[name]){
|
3261
3407
|
webshims.warn('splitInput not supported for '+ name);
|
3262
3408
|
opts.splitInput = false;
|
@@ -3389,34 +3535,6 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
3389
3535
|
}
|
3390
3536
|
};
|
3391
3537
|
|
3392
|
-
if(formsCFG.customDatalist && (!listSupport || !('selectedOption' in $('<input />')[0]))){
|
3393
|
-
//currently not supported x-browser (FF4 has not implemented and is not polyfilled )
|
3394
|
-
inputListProto.selectedOption = {
|
3395
|
-
prop: {
|
3396
|
-
writeable: false,
|
3397
|
-
get: function(){
|
3398
|
-
var elem = this;
|
3399
|
-
var list = $.prop(elem, 'list');
|
3400
|
-
var ret = null;
|
3401
|
-
var value, options;
|
3402
|
-
if(!list){return ret;}
|
3403
|
-
value = $.prop(elem, 'value');
|
3404
|
-
if(!value){return ret;}
|
3405
|
-
options = $.prop(list, 'options');
|
3406
|
-
if(!options.length){return ret;}
|
3407
|
-
$.each(options, function(i, option){
|
3408
|
-
if(value == $.prop(option, 'value')){
|
3409
|
-
ret = option;
|
3410
|
-
return false;
|
3411
|
-
}
|
3412
|
-
});
|
3413
|
-
return ret;
|
3414
|
-
}
|
3415
|
-
}
|
3416
|
-
};
|
3417
|
-
}
|
3418
|
-
|
3419
|
-
|
3420
3538
|
if(listSupport){
|
3421
3539
|
//options only return options, if option-elements are rooted: but this makes this part of HTML5 less backwards compatible
|
3422
3540
|
if(!($('<datalist><select><option></option></select></datalist>').prop('options') || []).length ){
|