webshims-rails 1.12.7 → 1.13.0

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 (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'){