webshims-rails 1.11.6.1 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +126 -72
  4. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +9 -4
  5. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +32 -26
  6. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
  7. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +25 -4
  8. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +9 -3
  9. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +9 -4
  10. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
  11. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
  12. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +36 -30
  13. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +25 -4
  14. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +9 -3
  15. data/vendor/assets/javascripts/webshims/shims/combos/1.js +13 -6
  16. data/vendor/assets/javascripts/webshims/shims/combos/10.js +156 -143
  17. data/vendor/assets/javascripts/webshims/shims/combos/11.js +97 -84
  18. data/vendor/assets/javascripts/webshims/shims/combos/12.js +2 -4
  19. data/vendor/assets/javascripts/webshims/shims/combos/13.js +1 -2
  20. data/vendor/assets/javascripts/webshims/shims/combos/14.js +956 -2819
  21. data/vendor/assets/javascripts/webshims/shims/combos/15.js +73 -67
  22. data/vendor/assets/javascripts/webshims/shims/combos/16.js +75 -71
  23. data/vendor/assets/javascripts/webshims/shims/combos/17.js +118 -89
  24. data/vendor/assets/javascripts/webshims/shims/combos/18.js +119 -91
  25. data/vendor/assets/javascripts/webshims/shims/combos/19.js +62 -65
  26. data/vendor/assets/javascripts/webshims/shims/combos/2.js +73 -67
  27. data/vendor/assets/javascripts/webshims/shims/combos/20.js +61 -63
  28. data/vendor/assets/javascripts/webshims/shims/combos/21.js +3 -6
  29. data/vendor/assets/javascripts/webshims/shims/combos/22.js +1 -2
  30. data/vendor/assets/javascripts/webshims/shims/combos/23.js +1 -2
  31. data/vendor/assets/javascripts/webshims/shims/combos/24.js +22 -12
  32. data/vendor/assets/javascripts/webshims/shims/combos/25.js +63 -67
  33. data/vendor/assets/javascripts/webshims/shims/combos/26.js +59 -59
  34. data/vendor/assets/javascripts/webshims/shims/combos/27.js +1 -2
  35. data/vendor/assets/javascripts/webshims/shims/combos/28.js +1915 -0
  36. data/vendor/assets/javascripts/webshims/shims/combos/29.js +817 -0
  37. data/vendor/assets/javascripts/webshims/shims/combos/3.js +71 -63
  38. data/vendor/assets/javascripts/webshims/shims/combos/30.js +72 -65
  39. data/vendor/assets/javascripts/webshims/shims/combos/31.js +71 -63
  40. data/vendor/assets/javascripts/webshims/shims/combos/32.js +2343 -0
  41. data/vendor/assets/javascripts/webshims/shims/combos/33.js +897 -0
  42. data/vendor/assets/javascripts/webshims/shims/combos/4.js +59 -59
  43. data/vendor/assets/javascripts/webshims/shims/combos/5.js +119 -91
  44. data/vendor/assets/javascripts/webshims/shims/combos/6.js +120 -93
  45. data/vendor/assets/javascripts/webshims/shims/combos/7.js +74 -69
  46. data/vendor/assets/javascripts/webshims/shims/combos/8.js +73 -67
  47. data/vendor/assets/javascripts/webshims/shims/combos/9.js +157 -145
  48. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +58 -57
  49. data/vendor/assets/javascripts/webshims/shims/form-combat.js +0 -1
  50. data/vendor/assets/javascripts/webshims/shims/form-core.js +12 -3
  51. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +4 -3
  52. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +20 -3
  53. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +78 -71
  54. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +21 -10
  55. data/vendor/assets/javascripts/webshims/shims/form-validation.js +39 -27
  56. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +173 -128
  57. data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-ch-ZN.js → formcfg-ch-CN.js} +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -2
  59. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +65 -0
  60. data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +1 -1
  61. data/vendor/assets/javascripts/webshims/shims/range-ui.js +18 -11
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +221 -153
  63. data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
  64. data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
  65. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +5 -0
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +273 -177
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +113 -98
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +114 -88
  69. data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -2
  70. metadata +10 -7
  71. data/vendor/assets/javascripts/webshims/extras/mousepress.js +0 -60
  72. data/vendor/assets/javascripts/webshims/shims/jpicker/images/Thumbs.db +0 -0
  73. data/vendor/assets/javascripts/webshims/shims/json-storage.js +0 -316
  74. data/vendor/assets/javascripts/webshims/shims/mediagroup.js +0 -29
@@ -40,34 +40,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
40
40
  webshims.ready('WINDOWLOAD', switch$);
41
41
 
42
42
  }
43
- // (function(){
44
- // var hostNames = {
45
- // 'afarkas.github.io': 1,
46
- // localhost: 1,
47
- // '127.0.0.1': 1
48
- // };
49
- //
50
- // if( webshims.cfg.debug && (hostNames[location.hostname] || location.protocol == 'file:') ){
51
- // var list = $('<ul class="webshims-debug-list" />');
52
- // webshims.errorLog.push = function(message){
53
- // list.appendTo('body');
54
- // $('<li style="display: none;">'+ message +'</li>')
55
- // .appendTo(list)
56
- // .slideDown()
57
- // .delay(3000)
58
- // .slideUp(function(){
59
- // $(this).remove();
60
- // if(!$('li', list).length){
61
- // list.detach();
62
- // }
63
- // })
64
- // ;
65
- // };
66
- // $.each(webshims.errorLog, function(i, message){
67
- // webshims.errorLog.push(message);
68
- // });
69
- // }
70
- // })();
71
43
 
72
44
  //shortcus
73
45
  var modules = webshims.modules;
@@ -509,11 +481,22 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
509
481
  });
510
482
  },
511
483
  getOptions: (function(){
484
+ var normalName = /\-([a-z])/g;
512
485
  var regs = {};
486
+ var nameRegs = {};
513
487
  var regFn = function(f, upper){
514
488
  return upper.toLowerCase();
515
489
  };
516
- return function(elem, name, bases){
490
+ var nameFn = function(f, dashed){
491
+ return dashed.toUpperCase();
492
+ };
493
+ return function(elem, name, bases, stringAllowed){
494
+ if(nameRegs[name]){
495
+ name = nameRegs[name];
496
+ } else {
497
+ nameRegs[name] = name.replace(normalName, nameFn);
498
+ name = nameRegs[name];
499
+ }
517
500
  var data = elementData(elem, 'cfg'+name);
518
501
  var dataName;
519
502
  var cfg = {};
@@ -522,7 +505,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
522
505
  return data;
523
506
  }
524
507
  data = $(elem).data();
525
-
508
+ if(data && typeof data[name] == 'string'){
509
+ if(stringAllowed){
510
+ return elementData(elem, 'cfg'+name, data[name]);
511
+ }
512
+ webshims.error('data-'+ name +' attribute has to be a valid JSON, was: '+ data[name]);
513
+ }
526
514
  if(!bases){
527
515
  bases = [true, {}];
528
516
  } else if(!Array.isArray(bases)){
@@ -531,12 +519,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
531
519
  bases.unshift(true, {});
532
520
  }
533
521
 
534
- if(data && data[name]){
535
- if(typeof data[name] == 'object'){
536
- bases.push(data[name]);
537
- } else {
538
- webshims.error('data-'+ name +' attribute has to be a valid JSON, was: '+ data[name]);
539
- }
522
+ if(data && typeof data[name] == 'object'){
523
+ bases.push(data[name]);
540
524
  }
541
525
 
542
526
  if(!regs[name]){
@@ -549,7 +533,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
549
533
  }
550
534
  }
551
535
  bases.push(cfg);
552
-
553
536
  return elementData(elem, 'cfg'+name, $.extend.apply($, bases));
554
537
  };
555
538
  })(),
@@ -579,7 +562,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
579
562
  var resizeTimer;
580
563
  var lastHeight;
581
564
  var lastWidth;
582
-
565
+ var $window = $(window);
583
566
  var docObserve = {
584
567
  init: false,
585
568
  runs: 0,
@@ -599,25 +582,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
599
582
  docObserve.runs = 0;
600
583
  }
601
584
  },
602
- handler: function(e){
603
- clearTimeout(resizeTimer);
604
- resizeTimer = setTimeout(function(){
605
- if(e.type == 'resize'){
606
- var width = $(window).width();
607
- var height = $(window).width();
608
- if(height == lastHeight && width == lastWidth){
609
- return;
585
+ handler: (function(){
586
+ var trigger = function(){
587
+ $(document).triggerHandler('updateshadowdom');
588
+ };
589
+ return function(e){
590
+ clearTimeout(resizeTimer);
591
+ resizeTimer = setTimeout(function(){
592
+ if(e.type == 'resize'){
593
+ var width = $window.width();
594
+ var height = $window.width();
595
+
596
+ if(height == lastHeight && width == lastWidth){
597
+ return;
598
+ }
599
+ lastHeight = height;
600
+ lastWidth = width;
601
+
602
+ docObserve.height = docObserve.getHeight();
603
+ docObserve.width = docObserve.getWidth();
604
+ }
605
+
606
+ if(window.requestAnimationFrame){
607
+ requestAnimationFrame(trigger);
608
+ } else {
609
+ setTimeout(trigger, 0);
610
610
  }
611
- lastHeight = height;
612
- lastWidth = width;
613
-
614
- docObserve.height = docObserve.getHeight();
615
- docObserve.width = docObserve.getWidth();
616
611
 
617
- }
618
- $(document).triggerHandler('updateshadowdom');
619
- }, (e.type == 'resize') ? 50 : 9);
620
- },
612
+ }, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 0);
613
+ };
614
+ })(),
621
615
  _create: function(){
622
616
  $.each({ Height: "getHeight", Width: "getWidth" }, function(name, type){
623
617
  var body = document.body;
@@ -955,13 +949,17 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
955
949
  webshims.defineNodeNamesProperty(elementNames, prop, {
956
950
  attr: {
957
951
  set: function(val){
958
- this.setAttribute(prop, val);
952
+ if(descs.useContentAttribute){
953
+ webshims.contentAttr(this, prop, val);
954
+ } else {
955
+ this.setAttribute(prop, val);
956
+ }
959
957
  if(descs.set){
960
958
  descs.set.call(this, true);
961
959
  }
962
960
  },
963
961
  get: function(){
964
- var ret = this.getAttribute(prop);
962
+ var ret = (descs.useContentAttribute) ? webshims.contentAttr(this, prop) : this.getAttribute(prop);
965
963
  return (ret == null) ? undefined : prop;
966
964
  }
967
965
  },
@@ -1018,6 +1016,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1018
1016
  });
1019
1017
  }
1020
1018
  };
1019
+
1021
1020
  var select = function(obj){
1022
1021
  var oldLang = obj.__active;
1023
1022
  var selectLang = function(i, lang){
@@ -1025,6 +1024,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1025
1024
  if(obj[lang] || obj.availableLangs.indexOf(lang) != -1){
1026
1025
  if(obj[lang]){
1027
1026
  obj.__active = obj[lang];
1027
+ obj.__activeName = lang;
1028
1028
  } else {
1029
1029
  load(obj.langSrc+lang, obj, curLang.join());
1030
1030
  }
@@ -1034,6 +1034,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1034
1034
  $.each(curLang, selectLang);
1035
1035
  if(!obj.__active){
1036
1036
  obj.__active = obj[''];
1037
+ obj.__activeName = '';
1037
1038
  }
1038
1039
  if(oldLang != obj.__active){
1039
1040
  $(obj).trigger('change');
@@ -1138,8 +1139,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1138
1139
  }
1139
1140
  });
1140
1141
 
1141
- })(webshims.$, document);
1142
- (function($){
1142
+ })(webshims.$, document);;(function($){
1143
1143
 
1144
1144
  var id = 0;
1145
1145
  var isNumber = function(string){
@@ -1159,7 +1159,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1159
1159
 
1160
1160
  this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb" /></span>');
1161
1161
  this.trail = $('.ws-range-track', this.element);
1162
- this.range = $('.ws-range-progress ', this.element);
1162
+ this.range = $('.ws-range-progress', this.element);
1163
1163
  this.thumb = $('.ws-range-thumb', this.trail);
1164
1164
 
1165
1165
  this.updateMetrics();
@@ -1179,7 +1179,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1179
1179
  },
1180
1180
  value: $.noop,
1181
1181
  _value: function(val, _noNormalize, animate){
1182
- var left, posDif;
1182
+ var left, posDif, textValue;
1183
1183
  var o = this.options;
1184
1184
  var oVal = val;
1185
1185
  var thumbStyle = {};
@@ -1228,9 +1228,15 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1228
1228
  if(this.orig && (oVal != val || (!this._init && this.orig.value != val)) ){
1229
1229
  this.options._change(val);
1230
1230
  }
1231
+
1232
+ textValue = this.options.textValue ? this.options.textValue(this.options.value) : this.options.options[this.options.value] || this.options.value;
1231
1233
  this.element.attr({
1232
1234
  'aria-valuenow': this.options.value,
1233
- 'aria-valuetext': this.options.textValue ? this.options.textValue(this.options.value) : this.options.options[this.options.value] || this.options.value
1235
+ 'aria-valuetext': textValue
1236
+ });
1237
+ this.thumb.attr({
1238
+ 'data-value': this.options.value,
1239
+ 'data-valuetext': textValue
1234
1240
  });
1235
1241
  },
1236
1242
  initDataList: function(){
@@ -1274,13 +1280,19 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1274
1280
  $.each(o.options, function(val, label){
1275
1281
  if(!isNumber(val) || val < min || val > max){return;}
1276
1282
  var left = 100 * ((val - min) / (max - min));
1277
- var title = o.showLabels && label ? ' title="'+ label +'"' : '';
1283
+ var attr = '';
1284
+ if(label){
1285
+ attr += 'data-label="'+label+'"';
1286
+ if(o.showLabels){
1287
+ attr += ' title="'+label+'"';
1288
+ }
1289
+ }
1278
1290
  if(that.vertical){
1279
1291
  left = Math.abs(left - 100);
1280
1292
  }
1281
1293
 
1282
1294
  that.posCenter(
1283
- $('<span class="ws-range-ticks"'+ title +' data-label="'+label+'" style="'+(that.dirs.left)+': '+left+'%;" />').appendTo(trail)
1295
+ $('<span class="ws-range-ticks"'+ attr +' style="'+(that.dirs.left)+': '+left+'%;" />').appendTo(trail)
1284
1296
  );
1285
1297
  });
1286
1298
  },
@@ -1689,33 +1701,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1689
1701
  });
1690
1702
  };
1691
1703
  if(window.webshims && webshims.isReady){
1692
- webshims.ready('es5', function(){
1693
- webshims.isReady('range-ui', true);
1694
- });
1695
- if(webshims._polyfill){
1696
- webshims._polyfill(['es5']);
1697
- }
1704
+ webshims.isReady('range-ui', true);
1698
1705
  }
1699
- })(window.webshims ? webshims.$ : jQuery);
1700
- webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
1706
+ })(window.webshims ? webshims.$ : jQuery);;webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
1701
1707
  "use strict";
1702
1708
  var curCfg;
1703
1709
  var formcfg = webshims.formcfg;
1710
+ var hasFormValidation = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
1704
1711
  var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
1705
1712
  var stopPropagation = function(e){
1706
1713
  e.stopImmediatePropagation();
1707
1714
  };
1708
- var getMonthOptions = (function(){
1709
- var str;
1710
- return function(){
1711
- if(!str){
1712
- str = ('<option value=""></option>')+$.map(monthDigits, function(val){
1713
- return '<option value="'+val+'"]>'+val+'</option>';
1714
- }).join('');
1715
- }
1716
- return str;
1717
- };
1718
- })();
1715
+ var getMonthOptions = function(opts){
1716
+ var selectName = 'monthSelect'+opts.formatMonthNames;
1717
+ if(!curCfg[selectName]){
1718
+ var labels = curCfg.date[opts.formatMonthNames] || monthDigits;
1719
+ curCfg[selectName] = ('<option value=""></option>')+$.map(monthDigits, function(val, i){
1720
+ return '<option value="'+val+'"]>'+labels[i]+'</option>';
1721
+ }).join('');
1722
+ }
1723
+ return curCfg[selectName];
1724
+ };
1725
+ var daySelect = '<select class="dd"><option value=""></option>'+ (function(){
1726
+ var i = 1;
1727
+ var opts = [];
1728
+ while(i < 32){
1729
+ opts.push('<option>'+ ((i < 10) ? '0'+ i : i) +'</option>' );
1730
+ i++;
1731
+ }
1732
+ return opts.join('');
1733
+ })() +'</select>';
1719
1734
  var createFormat = function(name){
1720
1735
  if(!curCfg.patterns[name+'Obj']){
1721
1736
  var obj = {};
@@ -1729,15 +1744,19 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1729
1744
  date: {
1730
1745
  _create: function(opts){
1731
1746
  var obj = {
1732
- splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" />')[0]]
1747
+ splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]]
1733
1748
  };
1749
+
1734
1750
  if(opts.monthSelect){
1735
1751
  obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
1736
1752
  } else {
1737
1753
  obj.splits.push($('<input type="text" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
1738
1754
  }
1739
- obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1740
-
1755
+ if(opts.daySelect){
1756
+ obj.splits.push($(daySelect)[0]);
1757
+ } else {
1758
+ obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1759
+ }
1741
1760
 
1742
1761
  obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
1743
1762
  return obj;
@@ -1767,7 +1786,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1767
1786
  splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0]]
1768
1787
  };
1769
1788
  if(opts.monthSelect){
1770
- obj.splits.push($('<select class="mm ws-spin">'+getMonthOptions(opts)+'</select>')[0]);
1789
+ obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
1771
1790
  } else {
1772
1791
  obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
1773
1792
  if(opts.onlyMonthDigits){
@@ -2171,18 +2190,30 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2171
2190
  },
2172
2191
  date: function(val, opts, noCorrect){
2173
2192
  createFormat('d');
2174
- var i;
2175
- var obj;
2193
+ var tmp, obj;
2194
+ var ret = '';
2176
2195
  if(opts.splitInput){
2177
2196
  obj = {yy: 0, mm: 1, dd: 2};
2178
2197
  } else {
2179
2198
  obj = curCfg.patterns.dObj;
2180
2199
  val = val.split(curCfg.dFormat);
2181
2200
  }
2182
-
2183
- 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))) ?
2184
- ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-') :
2185
- ''
2201
+ if(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))){
2202
+ if(val[obj.mm] > 12 && val[obj.dd] < 13){
2203
+ tmp = val[obj.dd];
2204
+ val[obj.dd] = val[obj.mm];
2205
+ val[obj.mm] = tmp;
2206
+ }
2207
+ if(val[obj.yy].length < 4){
2208
+ tmp = ((new Date()).getFullYear() +'').substr(0, 4 - val[obj.yy].length);
2209
+ if(val[obj.yy] > 50){
2210
+ tmp--;
2211
+ }
2212
+ val[obj.yy] = tmp + val[obj.yy];
2213
+ }
2214
+ ret = ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-');
2215
+ }
2216
+ return ret
2186
2217
  ;
2187
2218
  },
2188
2219
  color: function(val, opts){
@@ -2282,7 +2313,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2282
2313
  this.buttonWrapper = $('<span class="input-buttons '+this.type+'-input-buttons"></span>').insertAfter(this.element);
2283
2314
  this.options.containerElements.push(this.buttonWrapper[0]);
2284
2315
 
2285
- o.mirrorValidity = o.mirrorValidity && this.orig && Modernizr.formvalidation && !webshims.bugs.bustedValidity;
2316
+ o.mirrorValidity = o.mirrorValidity && this.orig && hasFormValidation;
2286
2317
 
2287
2318
  if(o.splitInput && this._addSplitInputs){
2288
2319
  if(o.monthSelect){
@@ -2386,7 +2417,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2386
2417
 
2387
2418
  if(this.type != 'color'){
2388
2419
  (function(){
2389
- var localeChange ;
2420
+ var localeChange, select, selectVal;
2390
2421
  if(!o.splitInput){
2391
2422
  localeChange = function(){
2392
2423
 
@@ -2401,6 +2432,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2401
2432
  } else {
2402
2433
  localeChange = function(){
2403
2434
  that.reorderInputs();
2435
+ if(o.monthSelect){
2436
+ select = that.inputElements.filter('select.mm');
2437
+ selectVal = select.prop('value');
2438
+ select.html(getMonthOptions(o));
2439
+ select.prop('value', selectVal);
2440
+ }
2404
2441
  };
2405
2442
  that.reorderInputs();
2406
2443
  }
@@ -2434,7 +2471,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2434
2471
  }
2435
2472
  if(options.splitInput && typeof placeholder == 'object'){
2436
2473
  $.each(this.splits, function(i, elem){
2437
- $.prop(elem, 'placeholder', placeholder[i]);
2474
+ if($.nodeName(elem, 'select')){
2475
+ $(elem).children('option:first-child').text(placeholder[i]);
2476
+ } else {
2477
+ $.prop(elem, 'placeholder', placeholder[i]);
2478
+ }
2438
2479
  });
2439
2480
  } else {
2440
2481
  this.element.prop('placeholder', placeholder);
@@ -2518,14 +2559,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2518
2559
  }
2519
2560
 
2520
2561
 
2521
- if(!o.min && typeof o.relMin == 'number'){
2522
- o.min = this.asValue(this.getRelNumber(o.relMin));
2523
- $.prop(this.orig, 'min', o.min);
2524
- }
2525
2562
 
2526
- if(!o.max && typeof o.relMax == 'number'){
2527
- o.max = this.asValue(this.getRelNumber(o.relMax));
2528
- $.prop(this.orig, 'max', o.max);
2563
+ if((!o.max && typeof o.relMax == 'number') || (!o.min && typeof o.relMin == 'number')){
2564
+ webshims.error('relMax/relMin are not supported anymore')
2529
2565
  }
2530
2566
  this._init = true;
2531
2567
  },
@@ -2594,6 +2630,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2594
2630
  if(!this._init || force || this.options[name] !== val){
2595
2631
  if(isValue){
2596
2632
  this._beforeValue(val);
2633
+ } else {
2634
+ this.elemHelper.prop(name, val);
2597
2635
  }
2598
2636
 
2599
2637
  val = formatVal[this.type](val, this.options);
@@ -2644,9 +2682,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2644
2682
 
2645
2683
  $.fn.spinbtnUI = function(opts){
2646
2684
  opts = $.extend({
2647
- monthNames: 'monthNames',
2648
- size: 1,
2649
- startView: 0
2685
+ monthNames: 'monthNames'
2650
2686
  }, opts);
2651
2687
  return this.each(function(){
2652
2688
  $.webshims.objectCreate(spinBtnProto, {
@@ -2718,10 +2754,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2718
2754
 
2719
2755
 
2720
2756
  picker.commonInit = function(data, popover){
2757
+ if(data._commonInit){return;}
2758
+ data._commonInit = true;
2721
2759
  var tabbable;
2722
2760
 
2723
2761
  popover.isDirty = true;
2724
-
2762
+
2725
2763
  popover.element.on('updatepickercontent pickerchange', function(){
2726
2764
  tabbable = false;
2727
2765
  });
@@ -2761,6 +2799,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2761
2799
  return function(prop){
2762
2800
  if(prop == 'value' && !data.options.inlinePicker){return;}
2763
2801
  popover.isDirty = true;
2802
+
2764
2803
  if(popover.isVisible){
2765
2804
  clearTimeout(timer);
2766
2805
  timer = setTimeout(update, 9);
@@ -2828,30 +2867,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2828
2867
 
2829
2868
  options.containerElements.push(popover.element[0]);
2830
2869
 
2831
- if(data.type != 'color'){
2832
- if(options.yearButtons){
2833
- options.startView = 2;
2834
- }
2835
- if(!options.startView){
2836
- options.startView = 0;
2837
- }
2838
-
2839
- if(data.type == 'time'){
2840
- options.minView = 3;
2841
- options.startView = 3;
2842
- }
2843
- if(!options.minView){
2844
- options.minView = 0;
2845
- }
2846
- if(options.startView < options.minView){
2847
- options.startView = options.minView;
2848
- webshims.warn("wrong config for minView/startView.");
2849
- }
2850
- if(!options.size){
2851
- options.size = 1;
2852
- }
2853
- }
2854
-
2855
2870
  popover.element
2856
2871
  .addClass(data.type+'-popover input-picker')
2857
2872
  .attr({role: 'application'})
@@ -2912,12 +2927,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2912
2927
  };
2913
2928
  data.inputElements.on({
2914
2929
  keydown: function(e){
2915
- if(e.keyCode == 40 && e.altKey){
2930
+ if(e.keyCode == 40 && e.altKey && !$.nodeName(e.target, 'select')){
2916
2931
  open();
2917
2932
  }
2918
2933
  },
2919
- focus: function(){
2920
- if(!popover.stopOpen && (options.buttonOnly || options.openOnFocus || (mouseFocus && options.openOnMouseFocus))){
2934
+ focus: function(e){
2935
+ if(!popover.stopOpen && (options.buttonOnly || options.openOnFocus || (mouseFocus && options.openOnMouseFocus)) && !$.nodeName(e.target, 'select')){
2921
2936
  popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
2922
2937
  show();
2923
2938
  } else {
@@ -2934,7 +2949,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2934
2949
  popover.activeElement.focus();
2935
2950
  }, 4);
2936
2951
  }
2937
- if(data.element.is(':focus')){
2952
+ if(data.element.is(':focus') && !$.nodeName(e.target, 'select')){
2938
2953
  popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
2939
2954
  show();
2940
2955
  }
@@ -3162,10 +3177,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3162
3177
  opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
3163
3178
  }
3164
3179
  }
3165
- if(opts.monthSelect){
3166
- opts.onlyMonthDigits = true;
3167
- }
3168
- if(opts.onlyMonthDigits){
3180
+
3181
+ if(opts.onlyMonthDigits || (!opts.formatMonthNames && opts.monthSelect)){
3169
3182
  opts.formatMonthNames = 'monthDigits';
3170
3183
  }
3171
3184
  data.shim = inputTypes[type]._create(opts);
@@ -3215,11 +3228,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3215
3228
 
3216
3229
  data.shim.element.on('change input', stopPropagation);
3217
3230
 
3218
- if(Modernizr.formvalidation){
3231
+ if(hasFormValidation){
3219
3232
  $(opts.orig).on('firstinvalid', function(e){
3220
3233
  if(!webshims.fromSubmit && isCheckValidity){return;}
3221
3234
  $(opts.orig).off('invalid.replacedwidgetbubble').on('invalid.replacedwidgetbubble', function(evt){
3222
- if(!e.isInvalidUIPrevented() && !evt.isDefaultPrevented()){
3235
+ if(!evt.isDefaultPrevented()){
3223
3236
  webshims.validityAlert.showFor( e.target );
3224
3237
  e.preventDefault();
3225
3238
  evt.preventDefault();
@@ -3246,7 +3259,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3246
3259
  };
3247
3260
 
3248
3261
 
3249
- if(Modernizr.formvalidation){
3262
+ if(hasFormValidation){
3250
3263
  ['input', 'form'].forEach(function(name){
3251
3264
  var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
3252
3265
  prop: {
@@ -3297,7 +3310,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3297
3310
  if(!modernizrInputTypes[name] || replace[name]){
3298
3311
  extendType(name, {
3299
3312
  _create: function(opts, set){
3300
- if(opts.monthSelect){
3313
+ if(opts.monthSelect || opts.daySelect){
3301
3314
  opts.splitInput = true;
3302
3315
  }
3303
3316
  if(opts.splitInput && !splitInputs[name]){
@@ -3340,8 +3353,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3340
3353
  })();
3341
3354
  });
3342
3355
 
3343
-
3344
- webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
3356
+ ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
3345
3357
  "use strict";
3346
3358
  var doc = document;
3347
3359
  var lazyLoad = function(name){