webshims-rails 1.10.6 → 1.10.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +14 -7
  4. data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -0
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +153 -155
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +168 -136
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +116 -44
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +100 -95
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +100 -95
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +51 -91
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +129 -232
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +228 -326
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +116 -44
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +116 -44
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +210 -214
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +204 -246
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +210 -214
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +59 -28
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +100 -95
  20. data/vendor/assets/javascripts/webshims/shims/combos/24.js +2 -2
  21. data/vendor/assets/javascripts/webshims/shims/combos/25.js +210 -214
  22. data/vendor/assets/javascripts/webshims/shims/combos/26.js +51 -91
  23. data/vendor/assets/javascripts/webshims/shims/combos/28.js +110 -119
  24. data/vendor/assets/javascripts/webshims/shims/combos/29.js +6 -0
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +126 -156
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +126 -155
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +104 -151
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +73 -96
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +116 -44
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +116 -44
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +226 -250
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +226 -250
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +168 -136
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +51 -91
  35. data/vendor/assets/javascripts/webshims/shims/form-core.js +53 -60
  36. data/vendor/assets/javascripts/webshims/shims/form-message.js +22 -5
  37. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +87 -30
  38. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +2 -76
  39. data/vendor/assets/javascripts/webshims/shims/form-validation.js +2 -2
  40. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
  41. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +18 -8
  42. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +100 -95
  43. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +59 -28
  44. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +9 -2
  45. data/vendor/assets/javascripts/webshims/shims/range-ui.js +29 -14
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +21 -7
  47. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -15
  48. data/vendor/assets/javascripts/webshims/shims/track-ui.js +6 -0
  49. metadata +2 -2
@@ -11,10 +11,15 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
11
11
  if(!$.parseHTML){
12
12
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
13
13
  }
14
+
15
+ if(webshims.cfg.extendNative == 1){
16
+ webshims.warn("extendNative configuration will be set to false by default with next release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
17
+ }
18
+
14
19
  if (!webshims.cfg.no$Switch) {
15
20
  var switch$ = function(){
16
21
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
17
- webshims.error("jQuery was included more than once. Make sure to include it only once! Webshims and other Plugins might not work properly.");
22
+ webshims.error("jQuery was included more than once. Make sure to include it only once or try the $.noConflict(extreme) feature! Webshims and other Plugins might not work properly..");
18
23
  if (window.$) {
19
24
  window.$ = webshims.$;
20
25
  }
@@ -32,7 +37,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
32
37
  };
33
38
  switch$();
34
39
  setTimeout(switch$, 90);
40
+ webshims.ready('DOM', switch$);
35
41
  $(switch$);
42
+ webshims.ready('WINDOWLOAD', switch$);
43
+
36
44
  }
37
45
  // (function(){
38
46
  // var hostNames = {
@@ -140,6 +148,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
140
148
  $(evtDel).off(evt, fn);
141
149
  }
142
150
  });
151
+ return this;
143
152
  };
144
153
 
145
154
  var dataID = '_webshimsLib'+ (Math.round(Math.random() * 1000));
@@ -174,57 +183,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
174
183
  };
175
184
  });
176
185
 
177
- if($.Tween.propHooks._default && $.css){
178
- (function(){
179
- var isjQ8 = false;
180
- try {
181
- isjQ8 = $.css($('<b style="width: 10px" />')[0], 'width', '') == '10px';
182
- } catch(er){
183
- webshims.error(er);
184
- }
185
- var css = isjQ8 ?
186
- function(elem, prop){
187
- return $.css( elem, prop, false, "" );
188
- } :
189
- function(elem, prop){
190
- return $.css( elem, prop, "" );
191
- }
192
- ;
193
-
194
- $.extend($.Tween.propHooks._default, {
195
- get: function( tween ) {
196
- var result;
197
-
198
- if ( (tween.elem[ tween.prop ] != null || havePolyfill[ tween.prop ]) &&
199
- (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
200
- return havePolyfill[ tween.prop ] ? $.prop(tween.elem, tween.prop) : tween.elem[ tween.prop ];
201
- }
202
-
203
- // passing an empty string as a 3rd parameter to .css will automatically
204
- // attempt a parseFloat and fallback to a string if the parse fails
205
- // so, simple values such as "10px" are parsed to Float.
206
- // complex values such as "rotate(1rad)" are returned as is.
207
- result = css( tween.elem, tween.prop );
208
- // Empty strings, null, undefined and "auto" are converted to 0.
209
- return !result || result === "auto" ? 0 : result;
210
- },
211
- set: function( tween ) {
212
- // use step hook for back compat - use cssHook if its there - use .style if its
213
- // available and use plain properties where available
214
- if ( jQuery.fx.step[ tween.prop ] ) {
215
- jQuery.fx.step[ tween.prop ]( tween );
216
- } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
217
- jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
218
- } else if( !havePolyfill[ tween.prop ] ) {
219
- tween.elem[ tween.prop ] = tween.now;
220
- } else {
221
- $.prop(tween.elem, tween.prop, tween.now);
222
- }
223
- }
224
- });
225
- })();
226
- }
227
-
228
186
 
229
187
  ['removeAttr', 'prop', 'attr'].forEach(function(type){
230
188
  olds[type] = $[type];
@@ -628,48 +586,50 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
628
586
  });
629
587
  };
630
588
  return function(nativeElem, shadowElem, opts){
631
- opts = opts || {};
632
- if(nativeElem.jquery){
633
- nativeElem = nativeElem[0];
634
- }
635
- if(shadowElem.jquery){
636
- shadowElem = shadowElem[0];
637
- }
638
- var nativeData = $.data(nativeElem, dataID) || $.data(nativeElem, dataID, {});
639
- var shadowData = $.data(shadowElem, dataID) || $.data(shadowElem, dataID, {});
640
- var shadowFocusElementData = {};
641
- if(!opts.shadowFocusElement){
642
- opts.shadowFocusElement = shadowElem;
643
- } else if(opts.shadowFocusElement){
644
- if(opts.shadowFocusElement.jquery){
645
- opts.shadowFocusElement = opts.shadowFocusElement[0];
646
- }
647
- shadowFocusElementData = $.data(opts.shadowFocusElement, dataID) || $.data(opts.shadowFocusElement, dataID, shadowFocusElementData);
648
- }
649
-
650
- $(nativeElem).on('remove', function(e){
651
- if (!e.originalEvent) {
652
- $(shadowElem).remove();
589
+ if(nativeElem && shadowElem){
590
+ opts = opts || {};
591
+ if(nativeElem.jquery){
592
+ nativeElem = nativeElem[0];
593
+ }
594
+ if(shadowElem.jquery){
595
+ shadowElem = shadowElem[0];
596
+ }
597
+ var nativeData = $.data(nativeElem, dataID) || $.data(nativeElem, dataID, {});
598
+ var shadowData = $.data(shadowElem, dataID) || $.data(shadowElem, dataID, {});
599
+ var shadowFocusElementData = {};
600
+ if(!opts.shadowFocusElement){
601
+ opts.shadowFocusElement = shadowElem;
602
+ } else if(opts.shadowFocusElement){
603
+ if(opts.shadowFocusElement.jquery){
604
+ opts.shadowFocusElement = opts.shadowFocusElement[0];
605
+ }
606
+ shadowFocusElementData = $.data(opts.shadowFocusElement, dataID) || $.data(opts.shadowFocusElement, dataID, shadowFocusElementData);
653
607
  }
654
- });
655
-
656
- nativeData.hasShadow = shadowElem;
657
- shadowFocusElementData.nativeElement = shadowData.nativeElement = nativeElem;
658
- shadowFocusElementData.shadowData = shadowData.shadowData = nativeData.shadowData = {
659
- nativeElement: nativeElem,
660
- shadowElement: shadowElem,
661
- shadowFocusElement: opts.shadowFocusElement
662
- };
663
- if(opts.shadowChilds){
664
- opts.shadowChilds.each(function(){
665
- elementData(this, 'shadowData', shadowData.shadowData);
608
+
609
+ $(nativeElem).on('remove', function(e){
610
+ if (!e.originalEvent) {
611
+ $(shadowElem).remove();
612
+ }
666
613
  });
614
+
615
+ nativeData.hasShadow = shadowElem;
616
+ shadowFocusElementData.nativeElement = shadowData.nativeElement = nativeElem;
617
+ shadowFocusElementData.shadowData = shadowData.shadowData = nativeData.shadowData = {
618
+ nativeElement: nativeElem,
619
+ shadowElement: shadowElem,
620
+ shadowFocusElement: opts.shadowFocusElement
621
+ };
622
+ if(opts.shadowChilds){
623
+ opts.shadowChilds.each(function(){
624
+ elementData(this, 'shadowData', shadowData.shadowData);
625
+ });
626
+ }
627
+
628
+ if(opts.data){
629
+ shadowFocusElementData.shadowData.data = shadowData.shadowData.data = nativeData.shadowData.data = opts.data;
630
+ }
631
+ opts = null;
667
632
  }
668
-
669
- if(opts.data){
670
- shadowFocusElementData.shadowData.data = shadowData.shadowData.data = nativeData.shadowData.data = opts.data;
671
- }
672
- opts = null;
673
633
  webshims.docObserve();
674
634
  };
675
635
  })(),
@@ -953,7 +913,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
953
913
  // register: moduleName:string,
954
914
  // callback: callback:function
955
915
  // });
956
- // get/set including removeLang
916
+ // get/set including remoteLang
957
917
  // - webshims.activeLang({
958
918
  // module: moduleName:string,
959
919
  // callback: callback:function,
@@ -1531,16 +1491,20 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1531
1491
  this.thumb.on({
1532
1492
  mousedown: add
1533
1493
  });
1534
- $(function(){
1535
- webshims.ready('dom-support', function(){
1536
- that.element.onWSOff('updateshadowdom', function(){
1537
- that.updateMetrics();
1494
+ if (window.webshims) {
1495
+ webshims.ready('WINDOWLOAD', function(){
1496
+ webshims.ready('dom-support', function(){
1497
+ if ($.fn.onWSOff) {
1498
+ that.element.onWSOff('updateshadowdom', function(){
1499
+ that.updateMetrics();
1500
+ });
1501
+ }
1538
1502
  });
1503
+ if (!$.fn.onWSOff && webshims._polyfill) {
1504
+ webshims._polyfill(['dom-support']);
1505
+ }
1539
1506
  });
1540
- if(!$.fn.onWSOff){
1541
- webshims._polyfill(['dom-support']);
1542
- }
1543
- });
1507
+ }
1544
1508
  },
1545
1509
  posCenter: function(elem, outerWidth){
1546
1510
  var temp;
@@ -1582,6 +1546,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1582
1546
  }
1583
1547
  };
1584
1548
 
1549
+ var oCreate = function (o) {
1550
+ function F() {}
1551
+ F.prototype = o;
1552
+ return new F();
1553
+ };
1554
+
1585
1555
  $.fn.rangeUI = function(opts){
1586
1556
  opts = $.extend({
1587
1557
  readonly: false,
@@ -1600,14 +1570,19 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1600
1570
  calcTrail: true
1601
1571
  }, opts);
1602
1572
  return this.each(function(){
1603
- webshims.objectCreate(rangeProto, {
1604
- element: {
1605
- value: $(this)
1606
- }
1607
- }, opts);
1573
+ var obj = $.extend(oCreate(rangeProto), {element: $(this)});
1574
+ obj.options = opts;
1575
+ obj._create.call(obj);
1608
1576
  });
1609
1577
  };
1610
- webshims.isReady('range-ui', true);
1578
+ if(window.webshims && webshims.isReady){
1579
+ webshims.ready('es5', function(){
1580
+ webshims.isReady('range-ui', true);
1581
+ });
1582
+ if(webshims._polyfill){
1583
+ webshims._polyfill(['es5']);
1584
+ }
1585
+ }
1611
1586
  })(jQuery);
1612
1587
  webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
1613
1588
  "use strict";
@@ -1654,10 +1629,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1654
1629
  }
1655
1630
  },
1656
1631
  month: {
1657
- _create: function(){
1632
+ _create: function(opts){
1633
+
1658
1634
  var obj = {
1659
1635
  splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0], $('<input type="text" class="mm ws-spin" />')[0]]
1660
1636
  };
1637
+ if(opts.onlyMonthDigits){
1638
+ $(obj.splits[1]).attr({inputmode: 'numeric', size: 2, maxlength: 2});
1639
+ }
1661
1640
  obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1]];
1662
1641
  return obj;
1663
1642
  },
@@ -1677,6 +1656,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1677
1656
  }
1678
1657
  };
1679
1658
 
1659
+ var nowDate = new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 );
1680
1660
  var steps = {
1681
1661
  number: {
1682
1662
  step: 1
@@ -1686,11 +1666,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1686
1666
  },
1687
1667
  month: {
1688
1668
  step: 1,
1689
- start: new Date()
1669
+ start: new Date(nowDate)
1690
1670
  },
1691
1671
  date: {
1692
1672
  step: 1,
1693
- start: new Date()
1673
+ start: new Date(nowDate)
1694
1674
  }
1695
1675
  };
1696
1676
  var labelWidth = (function(){
@@ -1786,9 +1766,19 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1786
1766
  "showMonthAfterYear": false,
1787
1767
  "yearSuffix": ""
1788
1768
  }
1789
- }, formcfg['en'] || {});
1769
+ }, formcfg.en || {});
1770
+
1790
1771
  if(!formcfg['en-US']){
1791
- formcfg['en-US'] = formcfg['en'];
1772
+ formcfg['en-US'] = $.extend(true, {}, formcfg['en']);
1773
+ }
1774
+ if(!formcfg['en-GB']){
1775
+ formcfg['en-GB'] = $.extend(true, {}, formcfg.en, {
1776
+ date: {firstDay: 1},
1777
+ patterns: {d: "dd/mm/yy"}
1778
+ });
1779
+ }
1780
+ if(!formcfg['en-AU']){
1781
+ formcfg['en-AU'] = $.extend(true, {}, formcfg['en-GB']);
1792
1782
  }
1793
1783
  if(!formcfg['']){
1794
1784
  formcfg[''] = formcfg['en-US'];
@@ -1816,22 +1806,37 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1816
1806
  langCfg.colorSigns = '#abcdefABCDEF';
1817
1807
  }
1818
1808
  };
1809
+ var triggerLocaleChange = function(){
1810
+ processLangCFG(curCfg);
1811
+ $(document).triggerHandler('wslocalechange');
1812
+ };
1819
1813
 
1820
- processLangCFG(curCfg);
1814
+ triggerLocaleChange();
1821
1815
 
1822
- $.webshims.activeLang({
1823
- register: 'form-core',
1816
+ webshims.activeLang({
1817
+ register: 'form-core',
1824
1818
  callback: function(){
1825
1819
  $.each(arguments, function(i, val){
1826
1820
  if(formcfg[val]){
1827
- curCfg = formcfg[val];
1828
- processLangCFG(curCfg);
1829
- $(document).triggerHandler('wslocalechange');
1821
+ if(formcfg[val] != curCfg){
1822
+ curCfg = formcfg[val];
1823
+ triggerLocaleChange();
1824
+ }
1830
1825
  return false;
1831
1826
  }
1832
1827
  });
1833
1828
  }
1834
1829
  });
1830
+ webshims.activeLang({
1831
+ langObj: formcfg,
1832
+ module: 'form-core',
1833
+ callback: function(val){
1834
+ if(curCfg != val){
1835
+ curCfg = val;
1836
+ triggerLocaleChange();
1837
+ }
1838
+ }
1839
+ });
1835
1840
  })();
1836
1841
 
1837
1842
 
@@ -1870,6 +1875,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1870
1875
  } else if(p[1]){
1871
1876
  val = curCfg.date.showMonthAfterYear ? p.join(' ') : p[1]+' '+p[0];
1872
1877
  }
1878
+ } else if(options && options.splitInput){
1879
+ val = [p[0] || '', p[1] || ''];
1873
1880
  }
1874
1881
  return val;
1875
1882
  },
@@ -1908,16 +1915,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1908
1915
  time: function(val){
1909
1916
  return val;
1910
1917
  },
1911
- month: function(val, opts){
1918
+ month: function(val, opts, noCorrect){
1912
1919
 
1913
1920
  var p = (!opts.splitInput) ? val.trim().split(/[\.\s-\/\\]+/) : val;
1914
1921
 
1915
1922
  if(p.length == 2 && p[0] && p[1]){
1916
- p[0] = curCfg.date.monthkeys[p[0]] || p[0];
1917
- p[1] = curCfg.date.monthkeys[p[1]] || p[1];
1918
- if(p[1].length == 2){
1923
+ p[0] = !noCorrect && curCfg.date.monthkeys[p[0]] || p[0];
1924
+ p[1] = !noCorrect && curCfg.date.monthkeys[p[1]] || p[1];
1925
+ if(p[1].length == 2 && p[0].length > 3){
1919
1926
  val = p[0]+'-'+p[1];
1920
- } else if(p[0].length == 2){
1927
+ } else if(p[0].length == 2 && p[1].length > 3){
1921
1928
  val = p[1]+'-'+p[0];
1922
1929
  } else {
1923
1930
  val = '';
@@ -1927,7 +1934,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1927
1934
  }
1928
1935
  return val;
1929
1936
  },
1930
- date: function(val, opts){
1937
+ date: function(val, opts, noCorrect){
1931
1938
  createFormat('d');
1932
1939
  var i;
1933
1940
  var obj;
@@ -1938,7 +1945,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1938
1945
  val = val.split(curCfg.dFormat);
1939
1946
  }
1940
1947
 
1941
- return (val.length == 3 && val[0] && val[1] && val[2]) ?
1948
+ return (val.length == 3 && val[0] && val[1] && val[2] && (!noCorrect || (val[obj.yy].length > 3 && val[obj.mm].length == 2 && val[obj.dd].length == 2))) ?
1942
1949
  ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-') :
1943
1950
  ''
1944
1951
  ;
@@ -1996,7 +2003,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1996
2003
  return function(type){
1997
2004
  var input;
1998
2005
  if(!types[type]){
1999
- input = $('<input type="'+type+'" />');
2006
+ input = $('<input type="'+type+'" step="any" />');
2000
2007
  types[type] = {
2001
2008
  asNumber: function(val){
2002
2009
  var type = (typeof val == 'object') ? 'valueAsDate' : 'value';
@@ -2225,6 +2232,22 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2225
2232
  e.preventDefault();
2226
2233
  }
2227
2234
  },
2235
+ input: (this.type == 'color' && this.isValid) ?
2236
+ $.noop :
2237
+ (function(){
2238
+ var timer;
2239
+ var check = function(){
2240
+ var val = that.parseValue(true);
2241
+ if(val && that.isValid(val)){
2242
+ that.setInput(val);
2243
+ }
2244
+
2245
+ };
2246
+ return function(){
2247
+ clearTimeout(timer);
2248
+ timer = setTimeout(check, 200);
2249
+ };
2250
+ })(),
2228
2251
  'input keydown keypress': (function(){
2229
2252
  var timer;
2230
2253
  var isStopped = false;
@@ -2242,8 +2265,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2242
2265
  timer = setTimeout(releaseTab, 300);
2243
2266
  };
2244
2267
  var select = function(){
2245
- this.focus();
2246
- this.select();
2268
+ var elem = this;
2269
+ setTimeout(function(){
2270
+ elem.focus();
2271
+ elem.select();
2272
+ }, 4);
2273
+
2247
2274
  stopTab();
2248
2275
  };
2249
2276
 
@@ -2364,8 +2391,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2364
2391
  var localeChange ;
2365
2392
  if(!o.splitInput){
2366
2393
  localeChange = function(){
2394
+
2367
2395
  if(o.value){
2368
- that.value(o.value);
2396
+ that.value(o.value, true);
2369
2397
  }
2370
2398
 
2371
2399
  if(placeholderFormat[that.type] && o.placeholder){
@@ -2384,8 +2412,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2384
2412
 
2385
2413
  initChangeEvents();
2386
2414
  },
2387
- value: function(val){
2388
- if(!this._init || val !== this.options.value){
2415
+ value: function(val, force){
2416
+ if(!this._init || force || val !== this.options.value){
2389
2417
  this.element.val(this.formatValue(val));
2390
2418
  this.options.value = val;
2391
2419
  this._propertyChange('value');
@@ -2397,14 +2425,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2397
2425
  this.inputElements.attr({'aria-required': ''+boolVal});
2398
2426
  this.mirrorValidity();
2399
2427
  },
2400
- parseValue: function(){
2428
+ parseValue: function(noCorrect){
2401
2429
  var value = this.inputElements.map(function(){
2402
2430
  return $.prop(this, 'value');
2403
2431
  }).get();
2404
2432
  if(!this.options.splitInput){
2405
2433
  value = value[0];
2406
2434
  }
2407
- return parseVal[this.type](value, this.options);
2435
+ return parseVal[this.type](value, this.options, noCorrect);
2408
2436
  },
2409
2437
  formatValue: function(val, noSplit){
2410
2438
  return formatVal[this.type](val, noSplit === false ? false : this.options);
@@ -2502,6 +2530,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2502
2530
  this.elemHelper = $('<input type="'+ o.type+'" />');
2503
2531
  this.asNumber = helper.asNumber;
2504
2532
  this.asValue = helper.asValue;
2533
+ this.isValid = helper.isValid;
2534
+
2505
2535
 
2506
2536
  wsWidgetProto._create.apply(this, arguments);
2507
2537
  this._init = false;
@@ -2527,7 +2557,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2527
2557
  createOpts: ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'value', 'required'],
2528
2558
  _addSplitInputs: function(){
2529
2559
  if(!this.inputElements){
2530
- var create = splitInputs[this.type]._create();
2560
+ var create = splitInputs[this.type]._create(this.options);
2531
2561
  this.splits = create.splits;
2532
2562
  this.inputElements = $(create.elements).prependTo(this.element).filter('input');
2533
2563
  }
@@ -2564,9 +2594,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2564
2594
  }, 9);
2565
2595
  }
2566
2596
  },
2567
- value: function(val){
2597
+ value: function(val, force){
2568
2598
 
2569
- if(!this._init || this.options.value !== val){
2599
+ if(!this._init || force || this.options.value !== val){
2570
2600
  this.valueAsNumber = this.asNumber(val);
2571
2601
  this.options.value = val;
2572
2602
 
@@ -3078,7 +3108,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3078
3108
  opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
3079
3109
  }
3080
3110
  }
3081
-
3111
+ if(opts.onlyMonthDigits){
3112
+ opts.formatMonthNames = 'monthDigits';
3113
+ }
3082
3114
  data.shim = inputTypes[type]._create(opts);
3083
3115
 
3084
3116
  webshims.addShadowDom(this, data.shim.element, {