webshims-rails 1.10.6 → 1.10.9

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.
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
@@ -1131,16 +1131,20 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1131
1131
  this.thumb.on({
1132
1132
  mousedown: add
1133
1133
  });
1134
- $(function(){
1135
- webshims.ready('dom-support', function(){
1136
- that.element.onWSOff('updateshadowdom', function(){
1137
- that.updateMetrics();
1134
+ if (window.webshims) {
1135
+ webshims.ready('WINDOWLOAD', function(){
1136
+ webshims.ready('dom-support', function(){
1137
+ if ($.fn.onWSOff) {
1138
+ that.element.onWSOff('updateshadowdom', function(){
1139
+ that.updateMetrics();
1140
+ });
1141
+ }
1138
1142
  });
1143
+ if (!$.fn.onWSOff && webshims._polyfill) {
1144
+ webshims._polyfill(['dom-support']);
1145
+ }
1139
1146
  });
1140
- if(!$.fn.onWSOff){
1141
- webshims._polyfill(['dom-support']);
1142
- }
1143
- });
1147
+ }
1144
1148
  },
1145
1149
  posCenter: function(elem, outerWidth){
1146
1150
  var temp;
@@ -1182,6 +1186,12 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1182
1186
  }
1183
1187
  };
1184
1188
 
1189
+ var oCreate = function (o) {
1190
+ function F() {}
1191
+ F.prototype = o;
1192
+ return new F();
1193
+ };
1194
+
1185
1195
  $.fn.rangeUI = function(opts){
1186
1196
  opts = $.extend({
1187
1197
  readonly: false,
@@ -1200,14 +1210,19 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1200
1210
  calcTrail: true
1201
1211
  }, opts);
1202
1212
  return this.each(function(){
1203
- webshims.objectCreate(rangeProto, {
1204
- element: {
1205
- value: $(this)
1206
- }
1207
- }, opts);
1213
+ var obj = $.extend(oCreate(rangeProto), {element: $(this)});
1214
+ obj.options = opts;
1215
+ obj._create.call(obj);
1208
1216
  });
1209
1217
  };
1210
- webshims.isReady('range-ui', true);
1218
+ if(window.webshims && webshims.isReady){
1219
+ webshims.ready('es5', function(){
1220
+ webshims.isReady('range-ui', true);
1221
+ });
1222
+ if(webshims._polyfill){
1223
+ webshims._polyfill(['es5']);
1224
+ }
1225
+ }
1211
1226
  })(jQuery);
1212
1227
  webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
1213
1228
  "use strict";
@@ -1254,10 +1269,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1254
1269
  }
1255
1270
  },
1256
1271
  month: {
1257
- _create: function(){
1272
+ _create: function(opts){
1273
+
1258
1274
  var obj = {
1259
1275
  splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0], $('<input type="text" class="mm ws-spin" />')[0]]
1260
1276
  };
1277
+ if(opts.onlyMonthDigits){
1278
+ $(obj.splits[1]).attr({inputmode: 'numeric', size: 2, maxlength: 2});
1279
+ }
1261
1280
  obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1]];
1262
1281
  return obj;
1263
1282
  },
@@ -1277,6 +1296,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1277
1296
  }
1278
1297
  };
1279
1298
 
1299
+ var nowDate = new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 );
1280
1300
  var steps = {
1281
1301
  number: {
1282
1302
  step: 1
@@ -1286,11 +1306,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1286
1306
  },
1287
1307
  month: {
1288
1308
  step: 1,
1289
- start: new Date()
1309
+ start: new Date(nowDate)
1290
1310
  },
1291
1311
  date: {
1292
1312
  step: 1,
1293
- start: new Date()
1313
+ start: new Date(nowDate)
1294
1314
  }
1295
1315
  };
1296
1316
  var labelWidth = (function(){
@@ -1386,9 +1406,19 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1386
1406
  "showMonthAfterYear": false,
1387
1407
  "yearSuffix": ""
1388
1408
  }
1389
- }, formcfg['en'] || {});
1409
+ }, formcfg.en || {});
1410
+
1390
1411
  if(!formcfg['en-US']){
1391
- formcfg['en-US'] = formcfg['en'];
1412
+ formcfg['en-US'] = $.extend(true, {}, formcfg['en']);
1413
+ }
1414
+ if(!formcfg['en-GB']){
1415
+ formcfg['en-GB'] = $.extend(true, {}, formcfg.en, {
1416
+ date: {firstDay: 1},
1417
+ patterns: {d: "dd/mm/yy"}
1418
+ });
1419
+ }
1420
+ if(!formcfg['en-AU']){
1421
+ formcfg['en-AU'] = $.extend(true, {}, formcfg['en-GB']);
1392
1422
  }
1393
1423
  if(!formcfg['']){
1394
1424
  formcfg[''] = formcfg['en-US'];
@@ -1416,22 +1446,37 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1416
1446
  langCfg.colorSigns = '#abcdefABCDEF';
1417
1447
  }
1418
1448
  };
1449
+ var triggerLocaleChange = function(){
1450
+ processLangCFG(curCfg);
1451
+ $(document).triggerHandler('wslocalechange');
1452
+ };
1419
1453
 
1420
- processLangCFG(curCfg);
1454
+ triggerLocaleChange();
1421
1455
 
1422
- $.webshims.activeLang({
1423
- register: 'form-core',
1456
+ webshims.activeLang({
1457
+ register: 'form-core',
1424
1458
  callback: function(){
1425
1459
  $.each(arguments, function(i, val){
1426
1460
  if(formcfg[val]){
1427
- curCfg = formcfg[val];
1428
- processLangCFG(curCfg);
1429
- $(document).triggerHandler('wslocalechange');
1461
+ if(formcfg[val] != curCfg){
1462
+ curCfg = formcfg[val];
1463
+ triggerLocaleChange();
1464
+ }
1430
1465
  return false;
1431
1466
  }
1432
1467
  });
1433
1468
  }
1434
1469
  });
1470
+ webshims.activeLang({
1471
+ langObj: formcfg,
1472
+ module: 'form-core',
1473
+ callback: function(val){
1474
+ if(curCfg != val){
1475
+ curCfg = val;
1476
+ triggerLocaleChange();
1477
+ }
1478
+ }
1479
+ });
1435
1480
  })();
1436
1481
 
1437
1482
 
@@ -1470,6 +1515,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1470
1515
  } else if(p[1]){
1471
1516
  val = curCfg.date.showMonthAfterYear ? p.join(' ') : p[1]+' '+p[0];
1472
1517
  }
1518
+ } else if(options && options.splitInput){
1519
+ val = [p[0] || '', p[1] || ''];
1473
1520
  }
1474
1521
  return val;
1475
1522
  },
@@ -1508,16 +1555,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1508
1555
  time: function(val){
1509
1556
  return val;
1510
1557
  },
1511
- month: function(val, opts){
1558
+ month: function(val, opts, noCorrect){
1512
1559
 
1513
1560
  var p = (!opts.splitInput) ? val.trim().split(/[\.\s-\/\\]+/) : val;
1514
1561
 
1515
1562
  if(p.length == 2 && p[0] && p[1]){
1516
- p[0] = curCfg.date.monthkeys[p[0]] || p[0];
1517
- p[1] = curCfg.date.monthkeys[p[1]] || p[1];
1518
- if(p[1].length == 2){
1563
+ p[0] = !noCorrect && curCfg.date.monthkeys[p[0]] || p[0];
1564
+ p[1] = !noCorrect && curCfg.date.monthkeys[p[1]] || p[1];
1565
+ if(p[1].length == 2 && p[0].length > 3){
1519
1566
  val = p[0]+'-'+p[1];
1520
- } else if(p[0].length == 2){
1567
+ } else if(p[0].length == 2 && p[1].length > 3){
1521
1568
  val = p[1]+'-'+p[0];
1522
1569
  } else {
1523
1570
  val = '';
@@ -1527,7 +1574,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1527
1574
  }
1528
1575
  return val;
1529
1576
  },
1530
- date: function(val, opts){
1577
+ date: function(val, opts, noCorrect){
1531
1578
  createFormat('d');
1532
1579
  var i;
1533
1580
  var obj;
@@ -1538,7 +1585,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1538
1585
  val = val.split(curCfg.dFormat);
1539
1586
  }
1540
1587
 
1541
- return (val.length == 3 && val[0] && val[1] && val[2]) ?
1588
+ 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))) ?
1542
1589
  ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-') :
1543
1590
  ''
1544
1591
  ;
@@ -1596,7 +1643,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1596
1643
  return function(type){
1597
1644
  var input;
1598
1645
  if(!types[type]){
1599
- input = $('<input type="'+type+'" />');
1646
+ input = $('<input type="'+type+'" step="any" />');
1600
1647
  types[type] = {
1601
1648
  asNumber: function(val){
1602
1649
  var type = (typeof val == 'object') ? 'valueAsDate' : 'value';
@@ -1825,6 +1872,22 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1825
1872
  e.preventDefault();
1826
1873
  }
1827
1874
  },
1875
+ input: (this.type == 'color' && this.isValid) ?
1876
+ $.noop :
1877
+ (function(){
1878
+ var timer;
1879
+ var check = function(){
1880
+ var val = that.parseValue(true);
1881
+ if(val && that.isValid(val)){
1882
+ that.setInput(val);
1883
+ }
1884
+
1885
+ };
1886
+ return function(){
1887
+ clearTimeout(timer);
1888
+ timer = setTimeout(check, 200);
1889
+ };
1890
+ })(),
1828
1891
  'input keydown keypress': (function(){
1829
1892
  var timer;
1830
1893
  var isStopped = false;
@@ -1842,8 +1905,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1842
1905
  timer = setTimeout(releaseTab, 300);
1843
1906
  };
1844
1907
  var select = function(){
1845
- this.focus();
1846
- this.select();
1908
+ var elem = this;
1909
+ setTimeout(function(){
1910
+ elem.focus();
1911
+ elem.select();
1912
+ }, 4);
1913
+
1847
1914
  stopTab();
1848
1915
  };
1849
1916
 
@@ -1964,8 +2031,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1964
2031
  var localeChange ;
1965
2032
  if(!o.splitInput){
1966
2033
  localeChange = function(){
2034
+
1967
2035
  if(o.value){
1968
- that.value(o.value);
2036
+ that.value(o.value, true);
1969
2037
  }
1970
2038
 
1971
2039
  if(placeholderFormat[that.type] && o.placeholder){
@@ -1984,8 +2052,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1984
2052
 
1985
2053
  initChangeEvents();
1986
2054
  },
1987
- value: function(val){
1988
- if(!this._init || val !== this.options.value){
2055
+ value: function(val, force){
2056
+ if(!this._init || force || val !== this.options.value){
1989
2057
  this.element.val(this.formatValue(val));
1990
2058
  this.options.value = val;
1991
2059
  this._propertyChange('value');
@@ -1997,14 +2065,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1997
2065
  this.inputElements.attr({'aria-required': ''+boolVal});
1998
2066
  this.mirrorValidity();
1999
2067
  },
2000
- parseValue: function(){
2068
+ parseValue: function(noCorrect){
2001
2069
  var value = this.inputElements.map(function(){
2002
2070
  return $.prop(this, 'value');
2003
2071
  }).get();
2004
2072
  if(!this.options.splitInput){
2005
2073
  value = value[0];
2006
2074
  }
2007
- return parseVal[this.type](value, this.options);
2075
+ return parseVal[this.type](value, this.options, noCorrect);
2008
2076
  },
2009
2077
  formatValue: function(val, noSplit){
2010
2078
  return formatVal[this.type](val, noSplit === false ? false : this.options);
@@ -2102,6 +2170,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2102
2170
  this.elemHelper = $('<input type="'+ o.type+'" />');
2103
2171
  this.asNumber = helper.asNumber;
2104
2172
  this.asValue = helper.asValue;
2173
+ this.isValid = helper.isValid;
2174
+
2105
2175
 
2106
2176
  wsWidgetProto._create.apply(this, arguments);
2107
2177
  this._init = false;
@@ -2127,7 +2197,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2127
2197
  createOpts: ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'value', 'required'],
2128
2198
  _addSplitInputs: function(){
2129
2199
  if(!this.inputElements){
2130
- var create = splitInputs[this.type]._create();
2200
+ var create = splitInputs[this.type]._create(this.options);
2131
2201
  this.splits = create.splits;
2132
2202
  this.inputElements = $(create.elements).prependTo(this.element).filter('input');
2133
2203
  }
@@ -2164,9 +2234,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2164
2234
  }, 9);
2165
2235
  }
2166
2236
  },
2167
- value: function(val){
2237
+ value: function(val, force){
2168
2238
 
2169
- if(!this._init || this.options.value !== val){
2239
+ if(!this._init || force || this.options.value !== val){
2170
2240
  this.valueAsNumber = this.asNumber(val);
2171
2241
  this.options.value = val;
2172
2242
 
@@ -2678,7 +2748,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2678
2748
  opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
2679
2749
  }
2680
2750
  }
2681
-
2751
+ if(opts.onlyMonthDigits){
2752
+ opts.formatMonthNames = 'monthDigits';
2753
+ }
2682
2754
  data.shim = inputTypes[type]._create(opts);
2683
2755
 
2684
2756
  webshims.addShadowDom(this, data.shim.element, {
@@ -1131,16 +1131,20 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1131
1131
  this.thumb.on({
1132
1132
  mousedown: add
1133
1133
  });
1134
- $(function(){
1135
- webshims.ready('dom-support', function(){
1136
- that.element.onWSOff('updateshadowdom', function(){
1137
- that.updateMetrics();
1134
+ if (window.webshims) {
1135
+ webshims.ready('WINDOWLOAD', function(){
1136
+ webshims.ready('dom-support', function(){
1137
+ if ($.fn.onWSOff) {
1138
+ that.element.onWSOff('updateshadowdom', function(){
1139
+ that.updateMetrics();
1140
+ });
1141
+ }
1138
1142
  });
1143
+ if (!$.fn.onWSOff && webshims._polyfill) {
1144
+ webshims._polyfill(['dom-support']);
1145
+ }
1139
1146
  });
1140
- if(!$.fn.onWSOff){
1141
- webshims._polyfill(['dom-support']);
1142
- }
1143
- });
1147
+ }
1144
1148
  },
1145
1149
  posCenter: function(elem, outerWidth){
1146
1150
  var temp;
@@ -1182,6 +1186,12 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1182
1186
  }
1183
1187
  };
1184
1188
 
1189
+ var oCreate = function (o) {
1190
+ function F() {}
1191
+ F.prototype = o;
1192
+ return new F();
1193
+ };
1194
+
1185
1195
  $.fn.rangeUI = function(opts){
1186
1196
  opts = $.extend({
1187
1197
  readonly: false,
@@ -1200,14 +1210,19 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1200
1210
  calcTrail: true
1201
1211
  }, opts);
1202
1212
  return this.each(function(){
1203
- webshims.objectCreate(rangeProto, {
1204
- element: {
1205
- value: $(this)
1206
- }
1207
- }, opts);
1213
+ var obj = $.extend(oCreate(rangeProto), {element: $(this)});
1214
+ obj.options = opts;
1215
+ obj._create.call(obj);
1208
1216
  });
1209
1217
  };
1210
- webshims.isReady('range-ui', true);
1218
+ if(window.webshims && webshims.isReady){
1219
+ webshims.ready('es5', function(){
1220
+ webshims.isReady('range-ui', true);
1221
+ });
1222
+ if(webshims._polyfill){
1223
+ webshims._polyfill(['es5']);
1224
+ }
1225
+ }
1211
1226
  })(jQuery);
1212
1227
  webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
1213
1228
  "use strict";
@@ -1254,10 +1269,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1254
1269
  }
1255
1270
  },
1256
1271
  month: {
1257
- _create: function(){
1272
+ _create: function(opts){
1273
+
1258
1274
  var obj = {
1259
1275
  splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0], $('<input type="text" class="mm ws-spin" />')[0]]
1260
1276
  };
1277
+ if(opts.onlyMonthDigits){
1278
+ $(obj.splits[1]).attr({inputmode: 'numeric', size: 2, maxlength: 2});
1279
+ }
1261
1280
  obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1]];
1262
1281
  return obj;
1263
1282
  },
@@ -1277,6 +1296,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1277
1296
  }
1278
1297
  };
1279
1298
 
1299
+ var nowDate = new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 );
1280
1300
  var steps = {
1281
1301
  number: {
1282
1302
  step: 1
@@ -1286,11 +1306,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1286
1306
  },
1287
1307
  month: {
1288
1308
  step: 1,
1289
- start: new Date()
1309
+ start: new Date(nowDate)
1290
1310
  },
1291
1311
  date: {
1292
1312
  step: 1,
1293
- start: new Date()
1313
+ start: new Date(nowDate)
1294
1314
  }
1295
1315
  };
1296
1316
  var labelWidth = (function(){
@@ -1386,9 +1406,19 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1386
1406
  "showMonthAfterYear": false,
1387
1407
  "yearSuffix": ""
1388
1408
  }
1389
- }, formcfg['en'] || {});
1409
+ }, formcfg.en || {});
1410
+
1390
1411
  if(!formcfg['en-US']){
1391
- formcfg['en-US'] = formcfg['en'];
1412
+ formcfg['en-US'] = $.extend(true, {}, formcfg['en']);
1413
+ }
1414
+ if(!formcfg['en-GB']){
1415
+ formcfg['en-GB'] = $.extend(true, {}, formcfg.en, {
1416
+ date: {firstDay: 1},
1417
+ patterns: {d: "dd/mm/yy"}
1418
+ });
1419
+ }
1420
+ if(!formcfg['en-AU']){
1421
+ formcfg['en-AU'] = $.extend(true, {}, formcfg['en-GB']);
1392
1422
  }
1393
1423
  if(!formcfg['']){
1394
1424
  formcfg[''] = formcfg['en-US'];
@@ -1416,22 +1446,37 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1416
1446
  langCfg.colorSigns = '#abcdefABCDEF';
1417
1447
  }
1418
1448
  };
1449
+ var triggerLocaleChange = function(){
1450
+ processLangCFG(curCfg);
1451
+ $(document).triggerHandler('wslocalechange');
1452
+ };
1419
1453
 
1420
- processLangCFG(curCfg);
1454
+ triggerLocaleChange();
1421
1455
 
1422
- $.webshims.activeLang({
1423
- register: 'form-core',
1456
+ webshims.activeLang({
1457
+ register: 'form-core',
1424
1458
  callback: function(){
1425
1459
  $.each(arguments, function(i, val){
1426
1460
  if(formcfg[val]){
1427
- curCfg = formcfg[val];
1428
- processLangCFG(curCfg);
1429
- $(document).triggerHandler('wslocalechange');
1461
+ if(formcfg[val] != curCfg){
1462
+ curCfg = formcfg[val];
1463
+ triggerLocaleChange();
1464
+ }
1430
1465
  return false;
1431
1466
  }
1432
1467
  });
1433
1468
  }
1434
1469
  });
1470
+ webshims.activeLang({
1471
+ langObj: formcfg,
1472
+ module: 'form-core',
1473
+ callback: function(val){
1474
+ if(curCfg != val){
1475
+ curCfg = val;
1476
+ triggerLocaleChange();
1477
+ }
1478
+ }
1479
+ });
1435
1480
  })();
1436
1481
 
1437
1482
 
@@ -1470,6 +1515,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1470
1515
  } else if(p[1]){
1471
1516
  val = curCfg.date.showMonthAfterYear ? p.join(' ') : p[1]+' '+p[0];
1472
1517
  }
1518
+ } else if(options && options.splitInput){
1519
+ val = [p[0] || '', p[1] || ''];
1473
1520
  }
1474
1521
  return val;
1475
1522
  },
@@ -1508,16 +1555,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1508
1555
  time: function(val){
1509
1556
  return val;
1510
1557
  },
1511
- month: function(val, opts){
1558
+ month: function(val, opts, noCorrect){
1512
1559
 
1513
1560
  var p = (!opts.splitInput) ? val.trim().split(/[\.\s-\/\\]+/) : val;
1514
1561
 
1515
1562
  if(p.length == 2 && p[0] && p[1]){
1516
- p[0] = curCfg.date.monthkeys[p[0]] || p[0];
1517
- p[1] = curCfg.date.monthkeys[p[1]] || p[1];
1518
- if(p[1].length == 2){
1563
+ p[0] = !noCorrect && curCfg.date.monthkeys[p[0]] || p[0];
1564
+ p[1] = !noCorrect && curCfg.date.monthkeys[p[1]] || p[1];
1565
+ if(p[1].length == 2 && p[0].length > 3){
1519
1566
  val = p[0]+'-'+p[1];
1520
- } else if(p[0].length == 2){
1567
+ } else if(p[0].length == 2 && p[1].length > 3){
1521
1568
  val = p[1]+'-'+p[0];
1522
1569
  } else {
1523
1570
  val = '';
@@ -1527,7 +1574,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1527
1574
  }
1528
1575
  return val;
1529
1576
  },
1530
- date: function(val, opts){
1577
+ date: function(val, opts, noCorrect){
1531
1578
  createFormat('d');
1532
1579
  var i;
1533
1580
  var obj;
@@ -1538,7 +1585,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1538
1585
  val = val.split(curCfg.dFormat);
1539
1586
  }
1540
1587
 
1541
- return (val.length == 3 && val[0] && val[1] && val[2]) ?
1588
+ 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))) ?
1542
1589
  ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-') :
1543
1590
  ''
1544
1591
  ;
@@ -1596,7 +1643,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1596
1643
  return function(type){
1597
1644
  var input;
1598
1645
  if(!types[type]){
1599
- input = $('<input type="'+type+'" />');
1646
+ input = $('<input type="'+type+'" step="any" />');
1600
1647
  types[type] = {
1601
1648
  asNumber: function(val){
1602
1649
  var type = (typeof val == 'object') ? 'valueAsDate' : 'value';
@@ -1825,6 +1872,22 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1825
1872
  e.preventDefault();
1826
1873
  }
1827
1874
  },
1875
+ input: (this.type == 'color' && this.isValid) ?
1876
+ $.noop :
1877
+ (function(){
1878
+ var timer;
1879
+ var check = function(){
1880
+ var val = that.parseValue(true);
1881
+ if(val && that.isValid(val)){
1882
+ that.setInput(val);
1883
+ }
1884
+
1885
+ };
1886
+ return function(){
1887
+ clearTimeout(timer);
1888
+ timer = setTimeout(check, 200);
1889
+ };
1890
+ })(),
1828
1891
  'input keydown keypress': (function(){
1829
1892
  var timer;
1830
1893
  var isStopped = false;
@@ -1842,8 +1905,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1842
1905
  timer = setTimeout(releaseTab, 300);
1843
1906
  };
1844
1907
  var select = function(){
1845
- this.focus();
1846
- this.select();
1908
+ var elem = this;
1909
+ setTimeout(function(){
1910
+ elem.focus();
1911
+ elem.select();
1912
+ }, 4);
1913
+
1847
1914
  stopTab();
1848
1915
  };
1849
1916
 
@@ -1964,8 +2031,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1964
2031
  var localeChange ;
1965
2032
  if(!o.splitInput){
1966
2033
  localeChange = function(){
2034
+
1967
2035
  if(o.value){
1968
- that.value(o.value);
2036
+ that.value(o.value, true);
1969
2037
  }
1970
2038
 
1971
2039
  if(placeholderFormat[that.type] && o.placeholder){
@@ -1984,8 +2052,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1984
2052
 
1985
2053
  initChangeEvents();
1986
2054
  },
1987
- value: function(val){
1988
- if(!this._init || val !== this.options.value){
2055
+ value: function(val, force){
2056
+ if(!this._init || force || val !== this.options.value){
1989
2057
  this.element.val(this.formatValue(val));
1990
2058
  this.options.value = val;
1991
2059
  this._propertyChange('value');
@@ -1997,14 +2065,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1997
2065
  this.inputElements.attr({'aria-required': ''+boolVal});
1998
2066
  this.mirrorValidity();
1999
2067
  },
2000
- parseValue: function(){
2068
+ parseValue: function(noCorrect){
2001
2069
  var value = this.inputElements.map(function(){
2002
2070
  return $.prop(this, 'value');
2003
2071
  }).get();
2004
2072
  if(!this.options.splitInput){
2005
2073
  value = value[0];
2006
2074
  }
2007
- return parseVal[this.type](value, this.options);
2075
+ return parseVal[this.type](value, this.options, noCorrect);
2008
2076
  },
2009
2077
  formatValue: function(val, noSplit){
2010
2078
  return formatVal[this.type](val, noSplit === false ? false : this.options);
@@ -2102,6 +2170,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2102
2170
  this.elemHelper = $('<input type="'+ o.type+'" />');
2103
2171
  this.asNumber = helper.asNumber;
2104
2172
  this.asValue = helper.asValue;
2173
+ this.isValid = helper.isValid;
2174
+
2105
2175
 
2106
2176
  wsWidgetProto._create.apply(this, arguments);
2107
2177
  this._init = false;
@@ -2127,7 +2197,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2127
2197
  createOpts: ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'value', 'required'],
2128
2198
  _addSplitInputs: function(){
2129
2199
  if(!this.inputElements){
2130
- var create = splitInputs[this.type]._create();
2200
+ var create = splitInputs[this.type]._create(this.options);
2131
2201
  this.splits = create.splits;
2132
2202
  this.inputElements = $(create.elements).prependTo(this.element).filter('input');
2133
2203
  }
@@ -2164,9 +2234,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2164
2234
  }, 9);
2165
2235
  }
2166
2236
  },
2167
- value: function(val){
2237
+ value: function(val, force){
2168
2238
 
2169
- if(!this._init || this.options.value !== val){
2239
+ if(!this._init || force || this.options.value !== val){
2170
2240
  this.valueAsNumber = this.asNumber(val);
2171
2241
  this.options.value = val;
2172
2242
 
@@ -2678,7 +2748,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2678
2748
  opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
2679
2749
  }
2680
2750
  }
2681
-
2751
+ if(opts.onlyMonthDigits){
2752
+ opts.formatMonthNames = 'monthDigits';
2753
+ }
2682
2754
  data.shim = inputTypes[type]._create(opts);
2683
2755
 
2684
2756
  webshims.addShadowDom(this, data.shim.element, {