webshims-rails 1.12.7 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +12 -1
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +4 -1
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +7 -4
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +7 -4
  7. data/vendor/assets/javascripts/webshims/shims/combos/14.js +23 -10
  8. data/vendor/assets/javascripts/webshims/shims/combos/15.js +7 -2
  9. data/vendor/assets/javascripts/webshims/shims/combos/16.js +7 -2
  10. data/vendor/assets/javascripts/webshims/shims/combos/17.js +28 -13
  11. data/vendor/assets/javascripts/webshims/shims/combos/18.js +28 -13
  12. data/vendor/assets/javascripts/webshims/shims/combos/19.js +5 -4
  13. data/vendor/assets/javascripts/webshims/shims/combos/2.js +4 -1
  14. data/vendor/assets/javascripts/webshims/shims/combos/20.js +5 -4
  15. data/vendor/assets/javascripts/webshims/shims/combos/21.js +5 -4
  16. data/vendor/assets/javascripts/webshims/shims/combos/25.js +5 -4
  17. data/vendor/assets/javascripts/webshims/shims/combos/28.js +24 -10
  18. data/vendor/assets/javascripts/webshims/shims/combos/29.js +20 -9
  19. data/vendor/assets/javascripts/webshims/shims/combos/3.js +7 -2
  20. data/vendor/assets/javascripts/webshims/shims/combos/30.js +7 -2
  21. data/vendor/assets/javascripts/webshims/shims/combos/31.js +4 -1
  22. data/vendor/assets/javascripts/webshims/shims/combos/32.js +21 -9
  23. data/vendor/assets/javascripts/webshims/shims/combos/33.js +21 -9
  24. data/vendor/assets/javascripts/webshims/shims/combos/4.js +3 -1
  25. data/vendor/assets/javascripts/webshims/shims/combos/5.js +28 -13
  26. data/vendor/assets/javascripts/webshims/shims/combos/6.js +28 -13
  27. data/vendor/assets/javascripts/webshims/shims/combos/7.js +7 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/8.js +7 -2
  29. data/vendor/assets/javascripts/webshims/shims/combos/9.js +7 -4
  30. data/vendor/assets/javascripts/webshims/shims/form-core.js +4 -1
  31. data/vendor/assets/javascripts/webshims/shims/form-message.js +3 -1
  32. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +20 -9
  33. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +7 -4
  34. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +7 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-validation.js +4 -4
  36. data/vendor/assets/javascripts/webshims/shims/form-validators.js +6 -3
  37. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +16 -13
  38. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +5 -4
  39. data/vendor/assets/javascripts/webshims/shims/picture.js +570 -0
  40. data/vendor/assets/javascripts/webshims/shims/promise.js +684 -0
  41. data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
  42. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +90 -38
  43. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +1039 -0
  44. data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
  45. data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +12 -0
  46. data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
  47. data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
  48. metadata +10 -10
  49. data/vendor/assets/javascripts/webshims/shims/styles/forms.png +0 -0
  50. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +0 -219
  51. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +0 -115
  52. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +0 -31
  53. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +0 -479
  54. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +0 -488
  55. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +0 -2
  56. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +0 -633
@@ -4617,14 +4617,15 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4617
4617
 
4618
4618
 
4619
4619
  if(hasNative && hasFlash && !options.preferFlash){
4620
- var noSwitch = {
4621
- 1: 1
4620
+ var switchErrors = {
4621
+ 3: 1,
4622
+ 4: 1
4622
4623
  };
4623
4624
  var switchOptions = function(e){
4624
4625
  var media, error, parent;
4625
4626
  if(!options.preferFlash &&
4626
4627
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
4627
- (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
4628
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && switchErrors[error.code]
4628
4629
  ){
4629
4630
 
4630
4631
  if(!options.preferFlash){
@@ -4645,7 +4646,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4645
4646
  document.addEventListener('error', switchOptions, true);
4646
4647
  $('audio, video').each(function(){
4647
4648
  var error = $.prop(this, 'error');
4648
- if(error && !noSwitch[error]){
4649
+ if(error && switchErrors[error]){
4649
4650
  switchOptions({target: this});
4650
4651
  return false;
4651
4652
  }
@@ -1622,6 +1622,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1622
1622
 
1623
1623
 
1624
1624
  webshims.getContentValidationMessage = function(elem, validity, key){
1625
+ var customRule;
1625
1626
  if(webshims.errorbox && webshims.errorbox.initIvalContentMessage){
1626
1627
  webshims.errorbox.initIvalContentMessage(elem);
1627
1628
  }
@@ -1636,7 +1637,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1636
1637
  }
1637
1638
  if(typeof message == 'object'){
1638
1639
  validity = validity || $.prop(elem, 'validity') || {valid: 1};
1639
- if(!validity.valid){
1640
+ if(validity.customError && (customRule = $.data(elem, 'customMismatchedRule')) && message[customRule] && typeof message[customRule] == 'string'){
1641
+ message = message[customRule];
1642
+ } else if(!validity.valid){
1640
1643
  $.each(validity, function(name, prop){
1641
1644
  if(prop && name != 'valid' && message[name]){
1642
1645
  message = message[name];
@@ -4394,14 +4394,15 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4394
4394
 
4395
4395
 
4396
4396
  if(hasNative && hasFlash && !options.preferFlash){
4397
- var noSwitch = {
4398
- 1: 1
4397
+ var switchErrors = {
4398
+ 3: 1,
4399
+ 4: 1
4399
4400
  };
4400
4401
  var switchOptions = function(e){
4401
4402
  var media, error, parent;
4402
4403
  if(!options.preferFlash &&
4403
4404
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
4404
- (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
4405
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && switchErrors[error.code]
4405
4406
  ){
4406
4407
 
4407
4408
  if(!options.preferFlash){
@@ -4422,7 +4423,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4422
4423
  document.addEventListener('error', switchOptions, true);
4423
4424
  $('audio, video').each(function(){
4424
4425
  var error = $.prop(this, 'error');
4425
- if(error && !noSwitch[error]){
4426
+ if(error && switchErrors[error]){
4426
4427
  switchOptions({target: this});
4427
4428
  return false;
4428
4429
  }
@@ -1564,14 +1564,15 @@
1564
1564
 
1565
1565
 
1566
1566
  if(hasNative && hasFlash && !options.preferFlash){
1567
- var noSwitch = {
1568
- 1: 1
1567
+ var switchErrors = {
1568
+ 3: 1,
1569
+ 4: 1
1569
1570
  };
1570
1571
  var switchOptions = function(e){
1571
1572
  var media, error, parent;
1572
1573
  if(!options.preferFlash &&
1573
1574
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
1574
- (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
1575
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && switchErrors[error.code]
1575
1576
  ){
1576
1577
 
1577
1578
  if(!options.preferFlash){
@@ -1592,7 +1593,7 @@
1592
1593
  document.addEventListener('error', switchOptions, true);
1593
1594
  $('audio, video').each(function(){
1594
1595
  var error = $.prop(this, 'error');
1595
- if(error && !noSwitch[error]){
1596
+ if(error && switchErrors[error]){
1596
1597
  switchOptions({target: this});
1597
1598
  return false;
1598
1599
  }
@@ -5006,14 +5006,15 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
5006
5006
 
5007
5007
 
5008
5008
  if(hasNative && hasFlash && !options.preferFlash){
5009
- var noSwitch = {
5010
- 1: 1
5009
+ var switchErrors = {
5010
+ 3: 1,
5011
+ 4: 1
5011
5012
  };
5012
5013
  var switchOptions = function(e){
5013
5014
  var media, error, parent;
5014
5015
  if(!options.preferFlash &&
5015
5016
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
5016
- (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
5017
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && switchErrors[error.code]
5017
5018
  ){
5018
5019
 
5019
5020
  if(!options.preferFlash){
@@ -5034,7 +5035,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
5034
5035
  document.addEventListener('error', switchOptions, true);
5035
5036
  $('audio, video').each(function(){
5036
5037
  var error = $.prop(this, 'error');
5037
- if(error && !noSwitch[error]){
5038
+ if(error && switchErrors[error]){
5038
5039
  switchOptions({target: this});
5039
5040
  return false;
5040
5041
  }
@@ -1037,7 +1037,9 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
1037
1037
  }
1038
1038
  if(!message){
1039
1039
  message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1040
- webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1040
+ if(name != 'customError'){
1041
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1042
+ }
1041
1043
  }
1042
1044
  message = webshims.replaceValidationplaceholder(elem, message, name);
1043
1045
 
@@ -1302,7 +1304,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
1302
1304
  var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
1303
1305
  prop: {
1304
1306
  value: function(factor){
1305
- var step, val, dateVal, valModStep, alignValue, cache, base, attrVal;
1307
+ var step, val, valModStep, alignValue, cache, base, attrVal;
1306
1308
  var type = getType(this);
1307
1309
  if(typeModels[type] && typeModels[type].asNumber){
1308
1310
  cache = {type: type};
@@ -1312,12 +1314,9 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
1312
1314
  }
1313
1315
  factor *= stepFactor;
1314
1316
 
1315
- val = $.prop(this, 'valueAsNumber');
1317
+
1316
1318
 
1317
- if(isNaN(val)){
1318
- webshims.info("valueAsNumber is NaN can't apply stepUp/stepDown ");
1319
- throw('invalid state error');
1320
- }
1319
+
1321
1320
 
1322
1321
  step = webshims.getStep(this, type);
1323
1322
 
@@ -1328,7 +1327,21 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
1328
1327
 
1329
1328
  webshims.addMinMaxNumberToCache('min', $(this), cache);
1330
1329
  webshims.addMinMaxNumberToCache('max', $(this), cache);
1331
-
1330
+
1331
+ val = $.prop(this, 'valueAsNumber');
1332
+
1333
+ if(factor > 0 && !isNaN(cache.minAsNumber) && (isNaN(val) || cache.minAsNumber > val)){
1334
+ $.prop(this, 'valueAsNumber', cache.minAsNumber);
1335
+ return;
1336
+ } else if(factor < 0 && !isNaN(cache.maxAsNumber) && (isNaN(val) || cache.maxAsNumber < val)){
1337
+ $.prop(this, 'valueAsNumber', cache.maxAsNumber);
1338
+ return;
1339
+ }
1340
+
1341
+ if(isNaN(val)){
1342
+ val = 0;
1343
+ }
1344
+
1332
1345
  base = cache.minAsNumber;
1333
1346
 
1334
1347
  if(isNaN(base) && (attrVal = $.prop(this, 'defaultValue'))){
@@ -1353,7 +1366,7 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
1353
1366
 
1354
1367
  if( (!isNaN(cache.maxAsNumber) && val > cache.maxAsNumber) || (!isNaN(cache.minAsNumber) && val < cache.minAsNumber) ){
1355
1368
  webshims.info("max/min overflow can't apply stepUp/stepDown");
1356
- throw('invalid state error');
1369
+ return;
1357
1370
  }
1358
1371
 
1359
1372
  $.prop(this, 'valueAsNumber', val);
@@ -1707,7 +1720,8 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
1707
1720
  });
1708
1721
  }
1709
1722
 
1710
- });;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
1723
+ });
1724
+ ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
1711
1725
  "use strict";
1712
1726
  var lazyLoad = function(name){
1713
1727
  if(!name || typeof name != 'string'){
@@ -409,7 +409,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
409
409
  var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
410
410
  prop: {
411
411
  value: function(factor){
412
- var step, val, dateVal, valModStep, alignValue, cache, base, attrVal;
412
+ var step, val, valModStep, alignValue, cache, base, attrVal;
413
413
  var type = getType(this);
414
414
  if(typeModels[type] && typeModels[type].asNumber){
415
415
  cache = {type: type};
@@ -419,12 +419,9 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
419
419
  }
420
420
  factor *= stepFactor;
421
421
 
422
- val = $.prop(this, 'valueAsNumber');
422
+
423
423
 
424
- if(isNaN(val)){
425
- webshims.info("valueAsNumber is NaN can't apply stepUp/stepDown ");
426
- throw('invalid state error');
427
- }
424
+
428
425
 
429
426
  step = webshims.getStep(this, type);
430
427
 
@@ -435,7 +432,21 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
435
432
 
436
433
  webshims.addMinMaxNumberToCache('min', $(this), cache);
437
434
  webshims.addMinMaxNumberToCache('max', $(this), cache);
438
-
435
+
436
+ val = $.prop(this, 'valueAsNumber');
437
+
438
+ if(factor > 0 && !isNaN(cache.minAsNumber) && (isNaN(val) || cache.minAsNumber > val)){
439
+ $.prop(this, 'valueAsNumber', cache.minAsNumber);
440
+ return;
441
+ } else if(factor < 0 && !isNaN(cache.maxAsNumber) && (isNaN(val) || cache.maxAsNumber < val)){
442
+ $.prop(this, 'valueAsNumber', cache.maxAsNumber);
443
+ return;
444
+ }
445
+
446
+ if(isNaN(val)){
447
+ val = 0;
448
+ }
449
+
439
450
  base = cache.minAsNumber;
440
451
 
441
452
  if(isNaN(base) && (attrVal = $.prop(this, 'defaultValue'))){
@@ -460,7 +471,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
460
471
 
461
472
  if( (!isNaN(cache.maxAsNumber) && val > cache.maxAsNumber) || (!isNaN(cache.minAsNumber) && val < cache.minAsNumber) ){
462
473
  webshims.info("max/min overflow can't apply stepUp/stepDown");
463
- throw('invalid state error');
474
+ return;
464
475
  }
465
476
 
466
477
  $.prop(this, 'valueAsNumber', val);
@@ -814,4 +825,4 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
814
825
  });
815
826
  }
816
827
 
817
- });
828
+ });
@@ -1399,6 +1399,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1399
1399
 
1400
1400
 
1401
1401
  webshims.getContentValidationMessage = function(elem, validity, key){
1402
+ var customRule;
1402
1403
  if(webshims.errorbox && webshims.errorbox.initIvalContentMessage){
1403
1404
  webshims.errorbox.initIvalContentMessage(elem);
1404
1405
  }
@@ -1413,7 +1414,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1413
1414
  }
1414
1415
  if(typeof message == 'object'){
1415
1416
  validity = validity || $.prop(elem, 'validity') || {valid: 1};
1416
- if(!validity.valid){
1417
+ if(validity.customError && (customRule = $.data(elem, 'customMismatchedRule')) && message[customRule] && typeof message[customRule] == 'string'){
1418
+ message = message[customRule];
1419
+ } else if(!validity.valid){
1417
1420
  $.each(validity, function(name, prop){
1418
1421
  if(prop && name != 'valid' && message[name]){
1419
1422
  message = message[name];
@@ -1715,7 +1718,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1715
1718
  }
1716
1719
  if(!message){
1717
1720
  message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1718
- webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1721
+ if(name != 'customError'){
1722
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1723
+ }
1719
1724
  }
1720
1725
  message = webshims.replaceValidationplaceholder(elem, message, name);
1721
1726
 
@@ -1399,6 +1399,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1399
1399
 
1400
1400
 
1401
1401
  webshims.getContentValidationMessage = function(elem, validity, key){
1402
+ var customRule;
1402
1403
  if(webshims.errorbox && webshims.errorbox.initIvalContentMessage){
1403
1404
  webshims.errorbox.initIvalContentMessage(elem);
1404
1405
  }
@@ -1413,7 +1414,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1413
1414
  }
1414
1415
  if(typeof message == 'object'){
1415
1416
  validity = validity || $.prop(elem, 'validity') || {valid: 1};
1416
- if(!validity.valid){
1417
+ if(validity.customError && (customRule = $.data(elem, 'customMismatchedRule')) && message[customRule] && typeof message[customRule] == 'string'){
1418
+ message = message[customRule];
1419
+ } else if(!validity.valid){
1417
1420
  $.each(validity, function(name, prop){
1418
1421
  if(prop && name != 'valid' && message[name]){
1419
1422
  message = message[name];
@@ -1715,7 +1718,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1715
1718
  }
1716
1719
  if(!message){
1717
1720
  message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1718
- webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1721
+ if(name != 'customError'){
1722
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1723
+ }
1719
1724
  }
1720
1725
  message = webshims.replaceValidationplaceholder(elem, message, name);
1721
1726
 
@@ -1399,6 +1399,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1399
1399
 
1400
1400
 
1401
1401
  webshims.getContentValidationMessage = function(elem, validity, key){
1402
+ var customRule;
1402
1403
  if(webshims.errorbox && webshims.errorbox.initIvalContentMessage){
1403
1404
  webshims.errorbox.initIvalContentMessage(elem);
1404
1405
  }
@@ -1413,7 +1414,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1413
1414
  }
1414
1415
  if(typeof message == 'object'){
1415
1416
  validity = validity || $.prop(elem, 'validity') || {valid: 1};
1416
- if(!validity.valid){
1417
+ if(validity.customError && (customRule = $.data(elem, 'customMismatchedRule')) && message[customRule] && typeof message[customRule] == 'string'){
1418
+ message = message[customRule];
1419
+ } else if(!validity.valid){
1417
1420
  $.each(validity, function(name, prop){
1418
1421
  if(prop && name != 'valid' && message[name]){
1419
1422
  message = message[name];
@@ -1647,7 +1647,7 @@ webshims.isReady('es5', true);
1647
1647
  var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
1648
1648
  prop: {
1649
1649
  value: function(factor){
1650
- var step, val, dateVal, valModStep, alignValue, cache, base, attrVal;
1650
+ var step, val, valModStep, alignValue, cache, base, attrVal;
1651
1651
  var type = getType(this);
1652
1652
  if(typeModels[type] && typeModels[type].asNumber){
1653
1653
  cache = {type: type};
@@ -1657,12 +1657,9 @@ webshims.isReady('es5', true);
1657
1657
  }
1658
1658
  factor *= stepFactor;
1659
1659
 
1660
- val = $.prop(this, 'valueAsNumber');
1660
+
1661
1661
 
1662
- if(isNaN(val)){
1663
- webshims.info("valueAsNumber is NaN can't apply stepUp/stepDown ");
1664
- throw('invalid state error');
1665
- }
1662
+
1666
1663
 
1667
1664
  step = webshims.getStep(this, type);
1668
1665
 
@@ -1673,7 +1670,21 @@ webshims.isReady('es5', true);
1673
1670
 
1674
1671
  webshims.addMinMaxNumberToCache('min', $(this), cache);
1675
1672
  webshims.addMinMaxNumberToCache('max', $(this), cache);
1676
-
1673
+
1674
+ val = $.prop(this, 'valueAsNumber');
1675
+
1676
+ if(factor > 0 && !isNaN(cache.minAsNumber) && (isNaN(val) || cache.minAsNumber > val)){
1677
+ $.prop(this, 'valueAsNumber', cache.minAsNumber);
1678
+ return;
1679
+ } else if(factor < 0 && !isNaN(cache.maxAsNumber) && (isNaN(val) || cache.maxAsNumber < val)){
1680
+ $.prop(this, 'valueAsNumber', cache.maxAsNumber);
1681
+ return;
1682
+ }
1683
+
1684
+ if(isNaN(val)){
1685
+ val = 0;
1686
+ }
1687
+
1677
1688
  base = cache.minAsNumber;
1678
1689
 
1679
1690
  if(isNaN(base) && (attrVal = $.prop(this, 'defaultValue'))){
@@ -1698,7 +1709,7 @@ webshims.isReady('es5', true);
1698
1709
 
1699
1710
  if( (!isNaN(cache.maxAsNumber) && val > cache.maxAsNumber) || (!isNaN(cache.minAsNumber) && val < cache.minAsNumber) ){
1700
1711
  webshims.info("max/min overflow can't apply stepUp/stepDown");
1701
- throw('invalid state error');
1712
+ return;
1702
1713
  }
1703
1714
 
1704
1715
  $.prop(this, 'valueAsNumber', val);
@@ -2052,7 +2063,8 @@ webshims.isReady('es5', true);
2052
2063
  });
2053
2064
  }
2054
2065
 
2055
- });;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
2066
+ });
2067
+ ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
2056
2068
  "use strict";
2057
2069
  var lazyLoad = function(name){
2058
2070
  if(!name || typeof name != 'string'){
@@ -198,7 +198,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
198
198
  var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
199
199
  prop: {
200
200
  value: function(factor){
201
- var step, val, dateVal, valModStep, alignValue, cache, base, attrVal;
201
+ var step, val, valModStep, alignValue, cache, base, attrVal;
202
202
  var type = getType(this);
203
203
  if(typeModels[type] && typeModels[type].asNumber){
204
204
  cache = {type: type};
@@ -208,12 +208,9 @@ webshims.register('form-number-date-api', function($, webshims, window, document
208
208
  }
209
209
  factor *= stepFactor;
210
210
 
211
- val = $.prop(this, 'valueAsNumber');
211
+
212
212
 
213
- if(isNaN(val)){
214
- webshims.info("valueAsNumber is NaN can't apply stepUp/stepDown ");
215
- throw('invalid state error');
216
- }
213
+
217
214
 
218
215
  step = webshims.getStep(this, type);
219
216
 
@@ -224,7 +221,21 @@ webshims.register('form-number-date-api', function($, webshims, window, document
224
221
 
225
222
  webshims.addMinMaxNumberToCache('min', $(this), cache);
226
223
  webshims.addMinMaxNumberToCache('max', $(this), cache);
227
-
224
+
225
+ val = $.prop(this, 'valueAsNumber');
226
+
227
+ if(factor > 0 && !isNaN(cache.minAsNumber) && (isNaN(val) || cache.minAsNumber > val)){
228
+ $.prop(this, 'valueAsNumber', cache.minAsNumber);
229
+ return;
230
+ } else if(factor < 0 && !isNaN(cache.maxAsNumber) && (isNaN(val) || cache.maxAsNumber < val)){
231
+ $.prop(this, 'valueAsNumber', cache.maxAsNumber);
232
+ return;
233
+ }
234
+
235
+ if(isNaN(val)){
236
+ val = 0;
237
+ }
238
+
228
239
  base = cache.minAsNumber;
229
240
 
230
241
  if(isNaN(base) && (attrVal = $.prop(this, 'defaultValue'))){
@@ -249,7 +260,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
249
260
 
250
261
  if( (!isNaN(cache.maxAsNumber) && val > cache.maxAsNumber) || (!isNaN(cache.minAsNumber) && val < cache.minAsNumber) ){
251
262
  webshims.info("max/min overflow can't apply stepUp/stepDown");
252
- throw('invalid state error');
263
+ return;
253
264
  }
254
265
 
255
266
  $.prop(this, 'valueAsNumber', val);
@@ -603,7 +614,8 @@ webshims.register('form-number-date-api', function($, webshims, window, document
603
614
  });
604
615
  }
605
616
 
606
- });;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
617
+ });
618
+ ;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
607
619
  "use strict";
608
620
  var lazyLoad = function(name){
609
621
  if(!name || typeof name != 'string'){