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
@@ -209,8 +209,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
209
209
  });
210
210
 
211
211
 
212
- });
213
- webshims.register('form-number-date-api', function($, webshims, window, document, undefined, options){
212
+ });;webshims.register('form-number-date-api', function($, webshims, window, document, undefined, options){
214
213
  "use strict";
215
214
  if(!webshims.addInputType){
216
215
  webshims.error("you can not call forms-ext feature after calling forms feature. call both at once instead: $.webshims.polyfill('forms forms-ext')");
@@ -275,7 +274,8 @@ webshims.register('form-number-date-api', function($, webshims, window, document
275
274
  cache.type = getType(input[0]);
276
275
  }
277
276
  if(cache.type == 'week'){return false;}
278
- var ret = (validityState || {}).stepMismatch || false, base;
277
+ var base, attrVal;
278
+ var ret = (validityState || {}).stepMismatch || false;
279
279
  if(typeModels[cache.type] && typeModels[cache.type].step){
280
280
  if( !('step' in cache) ){
281
281
  cache.step = webshims.getStep(input[0], cache.type);
@@ -290,6 +290,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
290
290
 
291
291
  addMinMaxNumberToCache('min', input, cache);
292
292
  base = cache.minAsNumber;
293
+
294
+ if(isNaN(base) && (attrVal = input.prop('defaultValue'))){
295
+ base = typeModels[cache.type].asNumber( attrVal );
296
+ }
297
+
293
298
  if(isNaN(base)){
294
299
  base = typeModels[cache.type].stepBase || 0;
295
300
  }
@@ -404,7 +409,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
404
409
  var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
405
410
  prop: {
406
411
  value: function(factor){
407
- var step, val, dateVal, valModStep, alignValue, cache;
412
+ var step, val, dateVal, valModStep, alignValue, cache, base, attrVal;
408
413
  var type = getType(this);
409
414
  if(typeModels[type] && typeModels[type].asNumber){
410
415
  cache = {type: type};
@@ -431,10 +436,21 @@ webshims.register('form-number-date-api', function($, webshims, window, document
431
436
  webshims.addMinMaxNumberToCache('min', $(this), cache);
432
437
  webshims.addMinMaxNumberToCache('max', $(this), cache);
433
438
 
439
+ base = cache.minAsNumber;
440
+
441
+ if(isNaN(base) && (attrVal = $.prop(this, 'defaultValue'))){
442
+ base = typeModels[type].asNumber( attrVal );
443
+ }
444
+
445
+ if(!base){
446
+ base = 0;
447
+ }
448
+
434
449
  step *= factor;
435
450
 
436
451
  val = (val + step).toFixed(5) * 1;
437
- valModStep = (val - (cache.minAsNumber || 0)) % step;
452
+
453
+ valModStep = (val - base) % step;
438
454
 
439
455
  if ( valModStep && (Math.abs(valModStep) > EPS) ) {
440
456
  alignValue = val - valModStep;
@@ -798,8 +814,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
798
814
  });
799
815
  }
800
816
 
801
- });
802
- (function($){
817
+ });;(function($){
803
818
 
804
819
  var id = 0;
805
820
  var isNumber = function(string){
@@ -819,7 +834,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
819
834
 
820
835
  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>');
821
836
  this.trail = $('.ws-range-track', this.element);
822
- this.range = $('.ws-range-progress ', this.element);
837
+ this.range = $('.ws-range-progress', this.element);
823
838
  this.thumb = $('.ws-range-thumb', this.trail);
824
839
 
825
840
  this.updateMetrics();
@@ -839,7 +854,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
839
854
  },
840
855
  value: $.noop,
841
856
  _value: function(val, _noNormalize, animate){
842
- var left, posDif;
857
+ var left, posDif, textValue;
843
858
  var o = this.options;
844
859
  var oVal = val;
845
860
  var thumbStyle = {};
@@ -888,9 +903,15 @@ webshims.register('form-number-date-api', function($, webshims, window, document
888
903
  if(this.orig && (oVal != val || (!this._init && this.orig.value != val)) ){
889
904
  this.options._change(val);
890
905
  }
906
+
907
+ textValue = this.options.textValue ? this.options.textValue(this.options.value) : this.options.options[this.options.value] || this.options.value;
891
908
  this.element.attr({
892
909
  'aria-valuenow': this.options.value,
893
- 'aria-valuetext': this.options.textValue ? this.options.textValue(this.options.value) : this.options.options[this.options.value] || this.options.value
910
+ 'aria-valuetext': textValue
911
+ });
912
+ this.thumb.attr({
913
+ 'data-value': this.options.value,
914
+ 'data-valuetext': textValue
894
915
  });
895
916
  },
896
917
  initDataList: function(){
@@ -934,13 +955,19 @@ webshims.register('form-number-date-api', function($, webshims, window, document
934
955
  $.each(o.options, function(val, label){
935
956
  if(!isNumber(val) || val < min || val > max){return;}
936
957
  var left = 100 * ((val - min) / (max - min));
937
- var title = o.showLabels && label ? ' title="'+ label +'"' : '';
958
+ var attr = '';
959
+ if(label){
960
+ attr += 'data-label="'+label+'"';
961
+ if(o.showLabels){
962
+ attr += ' title="'+label+'"';
963
+ }
964
+ }
938
965
  if(that.vertical){
939
966
  left = Math.abs(left - 100);
940
967
  }
941
968
 
942
969
  that.posCenter(
943
- $('<span class="ws-range-ticks"'+ title +' data-label="'+label+'" style="'+(that.dirs.left)+': '+left+'%;" />').appendTo(trail)
970
+ $('<span class="ws-range-ticks"'+ attr +' style="'+(that.dirs.left)+': '+left+'%;" />').appendTo(trail)
944
971
  );
945
972
  });
946
973
  },
@@ -1349,33 +1376,36 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1349
1376
  });
1350
1377
  };
1351
1378
  if(window.webshims && webshims.isReady){
1352
- webshims.ready('es5', function(){
1353
- webshims.isReady('range-ui', true);
1354
- });
1355
- if(webshims._polyfill){
1356
- webshims._polyfill(['es5']);
1357
- }
1379
+ webshims.isReady('range-ui', true);
1358
1380
  }
1359
- })(window.webshims ? webshims.$ : jQuery);
1360
- webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
1381
+ })(window.webshims ? webshims.$ : jQuery);;webshims.register('form-number-date-ui', function($, webshims, window, document, undefined, options){
1361
1382
  "use strict";
1362
1383
  var curCfg;
1363
1384
  var formcfg = webshims.formcfg;
1385
+ var hasFormValidation = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
1364
1386
  var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
1365
1387
  var stopPropagation = function(e){
1366
1388
  e.stopImmediatePropagation();
1367
1389
  };
1368
- var getMonthOptions = (function(){
1369
- var str;
1370
- return function(){
1371
- if(!str){
1372
- str = ('<option value=""></option>')+$.map(monthDigits, function(val){
1373
- return '<option value="'+val+'"]>'+val+'</option>';
1374
- }).join('');
1375
- }
1376
- return str;
1377
- };
1378
- })();
1390
+ var getMonthOptions = function(opts){
1391
+ var selectName = 'monthSelect'+opts.formatMonthNames;
1392
+ if(!curCfg[selectName]){
1393
+ var labels = curCfg.date[opts.formatMonthNames] || monthDigits;
1394
+ curCfg[selectName] = ('<option value=""></option>')+$.map(monthDigits, function(val, i){
1395
+ return '<option value="'+val+'"]>'+labels[i]+'</option>';
1396
+ }).join('');
1397
+ }
1398
+ return curCfg[selectName];
1399
+ };
1400
+ var daySelect = '<select class="dd"><option value=""></option>'+ (function(){
1401
+ var i = 1;
1402
+ var opts = [];
1403
+ while(i < 32){
1404
+ opts.push('<option>'+ ((i < 10) ? '0'+ i : i) +'</option>' );
1405
+ i++;
1406
+ }
1407
+ return opts.join('');
1408
+ })() +'</select>';
1379
1409
  var createFormat = function(name){
1380
1410
  if(!curCfg.patterns[name+'Obj']){
1381
1411
  var obj = {};
@@ -1389,15 +1419,19 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1389
1419
  date: {
1390
1420
  _create: function(opts){
1391
1421
  var obj = {
1392
- splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" />')[0]]
1422
+ splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]]
1393
1423
  };
1424
+
1394
1425
  if(opts.monthSelect){
1395
1426
  obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
1396
1427
  } else {
1397
1428
  obj.splits.push($('<input type="text" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
1398
1429
  }
1399
- obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1400
-
1430
+ if(opts.daySelect){
1431
+ obj.splits.push($(daySelect)[0]);
1432
+ } else {
1433
+ obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
1434
+ }
1401
1435
 
1402
1436
  obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
1403
1437
  return obj;
@@ -1427,7 +1461,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1427
1461
  splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0]]
1428
1462
  };
1429
1463
  if(opts.monthSelect){
1430
- obj.splits.push($('<select class="mm ws-spin">'+getMonthOptions(opts)+'</select>')[0]);
1464
+ obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
1431
1465
  } else {
1432
1466
  obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
1433
1467
  if(opts.onlyMonthDigits){
@@ -1831,18 +1865,30 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1831
1865
  },
1832
1866
  date: function(val, opts, noCorrect){
1833
1867
  createFormat('d');
1834
- var i;
1835
- var obj;
1868
+ var tmp, obj;
1869
+ var ret = '';
1836
1870
  if(opts.splitInput){
1837
1871
  obj = {yy: 0, mm: 1, dd: 2};
1838
1872
  } else {
1839
1873
  obj = curCfg.patterns.dObj;
1840
1874
  val = val.split(curCfg.dFormat);
1841
1875
  }
1842
-
1843
- 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))) ?
1844
- ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-') :
1845
- ''
1876
+ 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))){
1877
+ if(val[obj.mm] > 12 && val[obj.dd] < 13){
1878
+ tmp = val[obj.dd];
1879
+ val[obj.dd] = val[obj.mm];
1880
+ val[obj.mm] = tmp;
1881
+ }
1882
+ if(val[obj.yy].length < 4){
1883
+ tmp = ((new Date()).getFullYear() +'').substr(0, 4 - val[obj.yy].length);
1884
+ if(val[obj.yy] > 50){
1885
+ tmp--;
1886
+ }
1887
+ val[obj.yy] = tmp + val[obj.yy];
1888
+ }
1889
+ ret = ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-');
1890
+ }
1891
+ return ret
1846
1892
  ;
1847
1893
  },
1848
1894
  color: function(val, opts){
@@ -1942,7 +1988,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1942
1988
  this.buttonWrapper = $('<span class="input-buttons '+this.type+'-input-buttons"></span>').insertAfter(this.element);
1943
1989
  this.options.containerElements.push(this.buttonWrapper[0]);
1944
1990
 
1945
- o.mirrorValidity = o.mirrorValidity && this.orig && Modernizr.formvalidation && !webshims.bugs.bustedValidity;
1991
+ o.mirrorValidity = o.mirrorValidity && this.orig && hasFormValidation;
1946
1992
 
1947
1993
  if(o.splitInput && this._addSplitInputs){
1948
1994
  if(o.monthSelect){
@@ -2046,7 +2092,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2046
2092
 
2047
2093
  if(this.type != 'color'){
2048
2094
  (function(){
2049
- var localeChange ;
2095
+ var localeChange, select, selectVal;
2050
2096
  if(!o.splitInput){
2051
2097
  localeChange = function(){
2052
2098
 
@@ -2061,6 +2107,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2061
2107
  } else {
2062
2108
  localeChange = function(){
2063
2109
  that.reorderInputs();
2110
+ if(o.monthSelect){
2111
+ select = that.inputElements.filter('select.mm');
2112
+ selectVal = select.prop('value');
2113
+ select.html(getMonthOptions(o));
2114
+ select.prop('value', selectVal);
2115
+ }
2064
2116
  };
2065
2117
  that.reorderInputs();
2066
2118
  }
@@ -2094,7 +2146,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2094
2146
  }
2095
2147
  if(options.splitInput && typeof placeholder == 'object'){
2096
2148
  $.each(this.splits, function(i, elem){
2097
- $.prop(elem, 'placeholder', placeholder[i]);
2149
+ if($.nodeName(elem, 'select')){
2150
+ $(elem).children('option:first-child').text(placeholder[i]);
2151
+ } else {
2152
+ $.prop(elem, 'placeholder', placeholder[i]);
2153
+ }
2098
2154
  });
2099
2155
  } else {
2100
2156
  this.element.prop('placeholder', placeholder);
@@ -2178,14 +2234,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2178
2234
  }
2179
2235
 
2180
2236
 
2181
- if(!o.min && typeof o.relMin == 'number'){
2182
- o.min = this.asValue(this.getRelNumber(o.relMin));
2183
- $.prop(this.orig, 'min', o.min);
2184
- }
2185
2237
 
2186
- if(!o.max && typeof o.relMax == 'number'){
2187
- o.max = this.asValue(this.getRelNumber(o.relMax));
2188
- $.prop(this.orig, 'max', o.max);
2238
+ if((!o.max && typeof o.relMax == 'number') || (!o.min && typeof o.relMin == 'number')){
2239
+ webshims.error('relMax/relMin are not supported anymore')
2189
2240
  }
2190
2241
  this._init = true;
2191
2242
  },
@@ -2254,6 +2305,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2254
2305
  if(!this._init || force || this.options[name] !== val){
2255
2306
  if(isValue){
2256
2307
  this._beforeValue(val);
2308
+ } else {
2309
+ this.elemHelper.prop(name, val);
2257
2310
  }
2258
2311
 
2259
2312
  val = formatVal[this.type](val, this.options);
@@ -2304,9 +2357,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2304
2357
 
2305
2358
  $.fn.spinbtnUI = function(opts){
2306
2359
  opts = $.extend({
2307
- monthNames: 'monthNames',
2308
- size: 1,
2309
- startView: 0
2360
+ monthNames: 'monthNames'
2310
2361
  }, opts);
2311
2362
  return this.each(function(){
2312
2363
  $.webshims.objectCreate(spinBtnProto, {
@@ -2378,10 +2429,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2378
2429
 
2379
2430
 
2380
2431
  picker.commonInit = function(data, popover){
2432
+ if(data._commonInit){return;}
2433
+ data._commonInit = true;
2381
2434
  var tabbable;
2382
2435
 
2383
2436
  popover.isDirty = true;
2384
-
2437
+
2385
2438
  popover.element.on('updatepickercontent pickerchange', function(){
2386
2439
  tabbable = false;
2387
2440
  });
@@ -2421,6 +2474,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2421
2474
  return function(prop){
2422
2475
  if(prop == 'value' && !data.options.inlinePicker){return;}
2423
2476
  popover.isDirty = true;
2477
+
2424
2478
  if(popover.isVisible){
2425
2479
  clearTimeout(timer);
2426
2480
  timer = setTimeout(update, 9);
@@ -2488,30 +2542,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2488
2542
 
2489
2543
  options.containerElements.push(popover.element[0]);
2490
2544
 
2491
- if(data.type != 'color'){
2492
- if(options.yearButtons){
2493
- options.startView = 2;
2494
- }
2495
- if(!options.startView){
2496
- options.startView = 0;
2497
- }
2498
-
2499
- if(data.type == 'time'){
2500
- options.minView = 3;
2501
- options.startView = 3;
2502
- }
2503
- if(!options.minView){
2504
- options.minView = 0;
2505
- }
2506
- if(options.startView < options.minView){
2507
- options.startView = options.minView;
2508
- webshims.warn("wrong config for minView/startView.");
2509
- }
2510
- if(!options.size){
2511
- options.size = 1;
2512
- }
2513
- }
2514
-
2515
2545
  popover.element
2516
2546
  .addClass(data.type+'-popover input-picker')
2517
2547
  .attr({role: 'application'})
@@ -2572,12 +2602,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2572
2602
  };
2573
2603
  data.inputElements.on({
2574
2604
  keydown: function(e){
2575
- if(e.keyCode == 40 && e.altKey){
2605
+ if(e.keyCode == 40 && e.altKey && !$.nodeName(e.target, 'select')){
2576
2606
  open();
2577
2607
  }
2578
2608
  },
2579
- focus: function(){
2580
- if(!popover.stopOpen && (options.buttonOnly || options.openOnFocus || (mouseFocus && options.openOnMouseFocus))){
2609
+ focus: function(e){
2610
+ if(!popover.stopOpen && (options.buttonOnly || options.openOnFocus || (mouseFocus && options.openOnMouseFocus)) && !$.nodeName(e.target, 'select')){
2581
2611
  popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
2582
2612
  show();
2583
2613
  } else {
@@ -2594,7 +2624,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2594
2624
  popover.activeElement.focus();
2595
2625
  }, 4);
2596
2626
  }
2597
- if(data.element.is(':focus')){
2627
+ if(data.element.is(':focus') && !$.nodeName(e.target, 'select')){
2598
2628
  popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
2599
2629
  show();
2600
2630
  }
@@ -2822,10 +2852,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2822
2852
  opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
2823
2853
  }
2824
2854
  }
2825
- if(opts.monthSelect){
2826
- opts.onlyMonthDigits = true;
2827
- }
2828
- if(opts.onlyMonthDigits){
2855
+
2856
+ if(opts.onlyMonthDigits || (!opts.formatMonthNames && opts.monthSelect)){
2829
2857
  opts.formatMonthNames = 'monthDigits';
2830
2858
  }
2831
2859
  data.shim = inputTypes[type]._create(opts);
@@ -2875,11 +2903,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2875
2903
 
2876
2904
  data.shim.element.on('change input', stopPropagation);
2877
2905
 
2878
- if(Modernizr.formvalidation){
2906
+ if(hasFormValidation){
2879
2907
  $(opts.orig).on('firstinvalid', function(e){
2880
2908
  if(!webshims.fromSubmit && isCheckValidity){return;}
2881
2909
  $(opts.orig).off('invalid.replacedwidgetbubble').on('invalid.replacedwidgetbubble', function(evt){
2882
- if(!e.isInvalidUIPrevented() && !evt.isDefaultPrevented()){
2910
+ if(!evt.isDefaultPrevented()){
2883
2911
  webshims.validityAlert.showFor( e.target );
2884
2912
  e.preventDefault();
2885
2913
  evt.preventDefault();
@@ -2906,7 +2934,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2906
2934
  };
2907
2935
 
2908
2936
 
2909
- if(Modernizr.formvalidation){
2937
+ if(hasFormValidation){
2910
2938
  ['input', 'form'].forEach(function(name){
2911
2939
  var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
2912
2940
  prop: {
@@ -2957,7 +2985,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2957
2985
  if(!modernizrInputTypes[name] || replace[name]){
2958
2986
  extendType(name, {
2959
2987
  _create: function(opts, set){
2960
- if(opts.monthSelect){
2988
+ if(opts.monthSelect || opts.daySelect){
2961
2989
  opts.splitInput = true;
2962
2990
  }
2963
2991
  if(opts.splitInput && !splitInputs[name]){
@@ -3000,8 +3028,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3000
3028
  })();
3001
3029
  });
3002
3030
 
3003
-
3004
- webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
3031
+ ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
3005
3032
  "use strict";
3006
3033
  var doc = document;
3007
3034
  var lazyLoad = function(name){