webshims-rails 1.12.0 → 1.12.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +440 -440
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +132 -91
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +248 -91
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +237 -84
  7. data/vendor/assets/javascripts/webshims/shims/combos/15.js +21 -8
  8. data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -8
  9. data/vendor/assets/javascripts/webshims/shims/combos/17.js +237 -84
  10. data/vendor/assets/javascripts/webshims/shims/combos/18.js +237 -84
  11. data/vendor/assets/javascripts/webshims/shims/combos/19.js +11 -7
  12. data/vendor/assets/javascripts/webshims/shims/combos/2.js +18 -8
  13. data/vendor/assets/javascripts/webshims/shims/combos/20.js +11 -7
  14. data/vendor/assets/javascripts/webshims/shims/combos/21.js +1 -1
  15. data/vendor/assets/javascripts/webshims/shims/combos/22.js +1 -1
  16. data/vendor/assets/javascripts/webshims/shims/combos/24.js +9 -6
  17. data/vendor/assets/javascripts/webshims/shims/combos/25.js +11 -7
  18. data/vendor/assets/javascripts/webshims/shims/combos/26.js +11 -7
  19. data/vendor/assets/javascripts/webshims/shims/combos/28.js +10 -1
  20. data/vendor/assets/javascripts/webshims/shims/combos/3.js +11 -7
  21. data/vendor/assets/javascripts/webshims/shims/combos/30.js +18 -8
  22. data/vendor/assets/javascripts/webshims/shims/combos/31.js +18 -8
  23. data/vendor/assets/javascripts/webshims/shims/combos/32.js +7 -1
  24. data/vendor/assets/javascripts/webshims/shims/combos/33.js +7 -1
  25. data/vendor/assets/javascripts/webshims/shims/combos/4.js +11 -7
  26. data/vendor/assets/javascripts/webshims/shims/combos/5.js +237 -84
  27. data/vendor/assets/javascripts/webshims/shims/combos/6.js +244 -85
  28. data/vendor/assets/javascripts/webshims/shims/combos/7.js +18 -8
  29. data/vendor/assets/javascripts/webshims/shims/combos/8.js +11 -7
  30. data/vendor/assets/javascripts/webshims/shims/combos/9.js +255 -92
  31. data/vendor/assets/javascripts/webshims/shims/details.js +1 -1
  32. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +10 -7
  33. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +53 -56
  34. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +7 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +175 -60
  36. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +3 -0
  37. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +6 -6
  38. data/vendor/assets/javascripts/webshims/shims/form-validation.js +77 -28
  39. data/vendor/assets/javascripts/webshims/shims/form-validators.js +24 -16
  40. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +40 -68
  41. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +4 -4
  42. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +13 -6
  43. data/vendor/assets/javascripts/webshims/shims/range-ui.js +61 -24
  44. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +278 -95
  45. data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +203 -0
  47. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +115 -0
  48. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +18 -2
  49. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +227 -113
  50. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +168 -159
  51. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +106 -69
  52. metadata +4 -7
  53. data/vendor/assets/javascripts/webshims/shims/styles/details-arrows.png +0 -0
  54. data/vendor/assets/javascripts/webshims/shims/styles/polyfill-loader.gif +0 -0
  55. data/vendor/assets/javascripts/webshims/shims/styles/range-track.png +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/styles/vertical-range.png +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/swf/localStorage.swf +0 -0
@@ -222,6 +222,9 @@ $.event.special.invalid = {
222
222
  var notValid = !($(e.target).callProp('reportValidity'));
223
223
  if(notValid){
224
224
  e.stopImmediatePropagation();
225
+ if(!options.noFormInvalid){
226
+ $(e.target).trigger('invalid');
227
+ }
225
228
  return false;
226
229
  }
227
230
  }
@@ -481,10 +481,7 @@ if(!Modernizr.formattribute || !Modernizr.fieldsetdisabled || !Modernizr.fieldse
481
481
  var nan = parseInt('NaN', 10);
482
482
 
483
483
  var updateProgress = function(progress){
484
- var position;
485
-
486
-
487
- position = $.prop(progress, 'position');
484
+ var position = $.prop(progress, 'position');
488
485
 
489
486
  $.attr(progress, 'data-position', position);
490
487
  $('> span', progress).css({width: (position < 0 ? 100 : position * 100) +'%'});
@@ -508,8 +505,9 @@ if(!Modernizr.formattribute || !Modernizr.fieldsetdisabled || !Modernizr.fieldse
508
505
  $.attr(this, 'aria-valuemax', max);
509
506
  }
510
507
  }
508
+ $(this).removeClass('ws-indeterminate');
511
509
  } else if(updateProgress.isInChange) {
512
- $(this).removeAttr('aria-valuenow');
510
+ $(this).removeAttr('aria-valuenow').addClass('ws-indeterminate');
513
511
  }
514
512
  return ret;
515
513
  },
@@ -584,7 +582,9 @@ if(!Modernizr.formattribute || !Modernizr.fieldsetdisabled || !Modernizr.fieldse
584
582
  } else {
585
583
  webshims.info("you should use label elements for your prgogress elements");
586
584
  }
587
-
585
+ if($(this).css('direction') == 'rtl'){
586
+ $(this).addClass('ws-is-rtl');
587
+ }
588
588
  updateProgress.isInChange = 'max';
589
589
  updateProgress(this);
590
590
  updateProgress.isInChange = false;
@@ -2,7 +2,8 @@ webshims.register('form-validation', function($, webshims, window, document, und
2
2
  "use strict";
3
3
 
4
4
  var isWebkit = 'webkitURL' in window;
5
- var chromeBugs = isWebkit && Modernizr.formvalidation && !webshims.bugs.bustedValidity;
5
+ var hasNative = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
6
+ var chromeBugs = isWebkit && hasNative;
6
7
  var webkitVersion = chromeBugs && parseFloat((navigator.userAgent.match(/Safari\/([\d\.]+)/) || ['', '999999'])[1], 10);
7
8
 
8
9
  var iVal = options.iVal;
@@ -215,25 +216,42 @@ webshims.register('form-validation', function($, webshims, window, document, und
215
216
  setRoot();
216
217
  webshims.ready('DOM', setRoot);
217
218
 
218
-
219
+ var rtlReg = /right|left/g;
220
+ var rtlReplace = function(ret){
221
+ return ret == 'left' ? 'right' : 'left';
222
+ };
219
223
  webshims.getRelOffset = function(posElem, relElem, opts){
220
224
  var offset, bodyOffset, dirs;
221
225
  posElem = $(posElem);
222
- $.swap($(posElem)[0], resetPos, function(){
226
+ $.swap(posElem[0], resetPos, function(){
227
+ var isRtl;
223
228
  if($.position && opts && $.position.getScrollInfo){
224
229
  if(!opts.of){
225
230
  opts.of = relElem;
226
231
  }
227
232
 
233
+ isRtl = $(opts.of).css('direction') == 'rtl';
234
+ if(!opts.isRtl){
235
+ opts.isRtl = false;
236
+ }
237
+ if(opts.isRtl != isRtl){
238
+ opts.my = (opts.my || 'center').replace(rtlReg, rtlReplace);
239
+ opts.at = (opts.at || 'center').replace(rtlReg, rtlReplace);
240
+ opts.isRtl = isRtl;
241
+ }
242
+
243
+ posElem[opts.isRtl ? 'addClass' : 'removeClass']('ws-is-rtl');
244
+
228
245
  opts.using = function(calced, data){
229
246
  posElem.attr({'data-horizontal': data.horizontal, 'data-vertical': data.vertical});
230
247
  offset = calced;
231
248
  };
249
+
232
250
  posElem.attr({
233
251
  'data-horizontal': '',
234
252
  'data-vertical': '',
235
- 'data-my': opts.my || 'center',
236
- 'data-at': opts.at || 'center'
253
+ 'data-my': opts.my,
254
+ 'data-at': opts.at
237
255
  });
238
256
  posElem.position(opts);
239
257
 
@@ -463,6 +481,9 @@ webshims.register('form-validation', function($, webshims, window, document, und
463
481
  try {
464
482
  focusElem[0].focus();
465
483
  } catch(e){}
484
+ if(!focusElem[0].offsetWidth && !focusElem[0].offsetHeight){
485
+ webshims.warn('invalid element seems to be hidden. Make element either visible or use disabled/readonly to bar elements from validation. With fieldset[disabled] a group of elements can be ignored.');
486
+ }
466
487
  api.element.triggerHandler('pospopover');
467
488
  };
468
489
 
@@ -546,6 +567,16 @@ webshims.register('form-validation', function($, webshims, window, document, und
546
567
  return fieldWrapper;
547
568
  },
548
569
  _createContentMessage: (function(){
570
+ var noValidate = function(){
571
+ return !noValidate.types[this.type];
572
+ };
573
+ noValidate.types = {
574
+ hidden: 1,
575
+ image: 1,
576
+ button: 1,
577
+ reset: 1,
578
+ submit: 1
579
+ };
549
580
  var fields = {};
550
581
  var deCamelCase = function(c){
551
582
  return '-'+(c).toLowerCase();
@@ -566,26 +597,36 @@ webshims.register('form-validation', function($, webshims, window, document, und
566
597
  var cName = name.replace(/[A-Z]/, deCamelCase);
567
598
  fields[name] = '.'+cName+', .'+name+', .'+(name).toLowerCase()+', [data-errortype="'+ name +'"]';
568
599
  });
569
- return function(elem, errorBox){
600
+ return function(elem, errorBox, fieldWrapper){
570
601
  var extended = false;
571
- var errorMessages = $(elem).data('errormessage') || {};
572
- if(typeof errorMessages == 'string'){
573
- errorMessages = {defaultMessage: errorMessages};
574
- }
602
+ var descriptiveMessages = {};
603
+
575
604
  $(errorBox).children().each(function(){
576
605
  var name = getErrorName(this);
577
- if(!errorMessages[name]){
578
- extended = true;
579
- errorMessages[name] = $(this).html();
606
+ descriptiveMessages[name] = $(this).html();
607
+ });
608
+
609
+ $('input, select, textarea', fieldWrapper).filter(noValidate).each(function(i, elem){
610
+ var errorMessages = $(elem).data('errormessage') || {};
611
+ if(typeof errorMessages == 'string'){
612
+ errorMessages = {defaultMessage: errorMessages};
613
+ }
614
+
615
+ $.each(descriptiveMessages, function(name, val){
616
+ if(!errorMessages[name]){
617
+ extended = true;
618
+ errorMessages[name] = val;
619
+ }
620
+ });
621
+
622
+ if(extended){
623
+ $(elem).data('errormessage', errorMessages);
624
+ }
625
+ if(webshims.getOptions){
626
+ webshims.getOptions(elem, 'errormessage');
580
627
  }
581
628
  });
582
-
583
- if(extended){
584
- $(elem).data('errormessage', errorMessages);
585
- }
586
- if(webshims.getOptions){
587
- webshims.getOptions(elem, 'errormessage');
588
- }
629
+
589
630
  };
590
631
  })(),
591
632
  initIvalContentMessage: function(elem){
@@ -600,10 +641,10 @@ webshims.register('form-validation', function($, webshims, window, document, und
600
641
  var errorBox = fieldWrapper.data('errorbox');
601
642
  if(!errorBox){
602
643
  errorBox = this.create(elem, fieldWrapper);
603
- this._createContentMessage(elem, errorBox);
644
+ this._createContentMessage(elem, errorBox, fieldWrapper);
604
645
  } else if(typeof errorBox == 'string'){
605
646
  errorBox = $('#'+errorBox);
606
- fieldWrapper.data('errorbox', errorBox);
647
+ fieldWrapper.data('errorbox', errorBox, fieldWrapper);
607
648
  this._createContentMessage(elem, errorBox);
608
649
  }
609
650
  return errorBox;
@@ -622,8 +663,9 @@ webshims.register('form-validation', function($, webshims, window, document, und
622
663
  hideError: function(elem, reset){
623
664
  var invalid;
624
665
  var fieldWrapper = this.getFieldWrapper(elem);
625
- var errorBox = this.get(elem, fieldWrapper);
626
-
666
+ //only if an errorbox was already created! don't use this.get here!
667
+ var errorBox = fieldWrapper.data('errorbox');
668
+
627
669
  if(errorBox && errorBox.jquery){
628
670
  $(elem).filter('input').off('.recheckinvalid');
629
671
  if(!reset && (invalid = $('input:invalid, select:invalid, textarea:invalid', fieldWrapper)[0])){
@@ -726,7 +768,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
726
768
  },
727
769
  firstinvalid: function(e){
728
770
  if(iVal.sel && iVal.handleBubble){
729
- var form = $(e.target).jProp('form');
771
+ var form = $(e.target).jProp('form');
730
772
  if(form.is(iVal.sel)){
731
773
  e.preventDefault();
732
774
  if(iVal.handleBubble != 'none'){
@@ -767,11 +809,11 @@ webshims.register('form-validation', function($, webshims, window, document, und
767
809
  var firstEvent,
768
810
  invalids = [],
769
811
  stopSubmitTimer,
770
- form
812
+ stop
771
813
  ;
772
814
 
773
815
  $(document).on('invalid', function(e){
774
- if(e.wrongWebkitInvalid){return;}
816
+ if(e.wrongWebkitInvalid || stop){return;}
775
817
  var jElm = $(e.target);
776
818
 
777
819
 
@@ -793,7 +835,14 @@ webshims.register('form-validation', function($, webshims, window, document, und
793
835
  //reset firstinvalid
794
836
  firstEvent = false;
795
837
  invalids = [];
838
+ stop = true;
796
839
  $(e.target).trigger(lastEvent, [lastEvent]);
840
+ /*
841
+ if(hasNative && !$.nodeName(e.target, 'form')){
842
+ $(e.target).jProp('form').triggerHandler('invalid');
843
+ }
844
+ */
845
+ stop = false;
797
846
  }, 9);
798
847
  jElm = null;
799
848
  });
@@ -936,7 +985,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
936
985
  }
937
986
  });
938
987
  }
939
- if(webshims.cfg.debug !== false){
988
+ if(webshims.cfg.debug !== false && iVal.sel != '.ws-instantvalidation'){
940
989
  $(function(){
941
990
  if($('form.ws-instantvalidation').length){
942
991
  webshims.error('.ws-instantvalidation was renamed to .ws-validate');
@@ -32,7 +32,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
32
32
  webshims.customErrorMessages[name][''] = defaultMessage || name;
33
33
  }
34
34
  if(formReady){
35
- $('input, select, textarea')
35
+ $('input, select, textarea, fieldset[data-dependent-validation]')
36
36
  .filter(noValidate)
37
37
  .each(function(){
38
38
  testValidityRules(this);
@@ -42,7 +42,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
42
42
  };
43
43
  webshims.refreshCustomValidityRules = function(elem){
44
44
  if(!initTest){return;}
45
-
45
+ var val;
46
46
  var data = $(elem).data() || $.data(elem, {});
47
47
  var customMismatchedRule = data.customMismatchedRule;
48
48
  var validity = $.prop(elem, 'validity') || {};
@@ -75,8 +75,8 @@ webshims.register('form-validators', function($, webshims, window, document, und
75
75
  $(elem).setCustomValidity(message);
76
76
  blockCustom = false;
77
77
  };
78
- if(customMismatchedRule || validity.valid || (data.dependentValidation && !data.dependentValidation._init)){
79
- var val = $(elem).val();
78
+ if(customMismatchedRule || validity.valid){
79
+ val = $(elem).val();
80
80
  $.each(customValidityRules, function(name, test){
81
81
  message = test(elem, val, data, setMessage) || '';
82
82
  customMismatchedRule = name;
@@ -84,6 +84,10 @@ webshims.register('form-validators', function($, webshims, window, document, und
84
84
  return false;
85
85
  }
86
86
  });
87
+
88
+ if(data.dependentValidation && !data.dependentValidation._init && !data.dependentValidation.masterElement){
89
+ customValidityRules.dependent(elem, val, data, $.noop);
90
+ }
87
91
  if(message != 'async' && (message || !validity.valid)){
88
92
  setMessage(message, customMismatchedRule);
89
93
  }
@@ -107,7 +111,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
107
111
  setTimeout(function(){
108
112
  webshims.addReady(function(context, selfElement){
109
113
  initTest = true;
110
- $('input, select, textarea', context).add(selfElement.filter('input, select, textarea'))
114
+ $('input, select, textarea, fieldset[data-dependent-validation]', context).add(selfElement.filter('input, select, textarea, fieldset[data-dependent-validation]'))
111
115
  .filter(noValidate)
112
116
  .each(function(){
113
117
  testValidityRules(this);
@@ -147,6 +151,10 @@ webshims.register('form-validators', function($, webshims, window, document, und
147
151
 
148
152
  addCustomValidityRule('tooShort', function(elem, val, data){
149
153
  if(!val || !data.minlength){return;}
154
+
155
+ if($.nodeName(elem, 'input')){
156
+ webshims.warn('depreacated data-minlength usage: Use pattern=".{'+ data.minlength +'3,}" instead.');
157
+ }
150
158
  return data.minlength > val.length;
151
159
  }, 'Entered value is too short.');
152
160
 
@@ -236,7 +244,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
236
244
 
237
245
 
238
246
  data.masterElement = document.getElementById(data["from"]) || (document.getElementsByName(data["from"] || [])[0]);
239
-
247
+ data._init = true;
240
248
  if (!data.masterElement || !data.masterElement.form) {return;}
241
249
 
242
250
  if(/radio|checkbox/i.test(data.masterElement.type)){
@@ -307,16 +315,16 @@ webshims.register('form-validators', function($, webshims, window, document, und
307
315
  this.restartAjax = false;
308
316
  this.ajaxLoading = true;
309
317
  $.ajax(
310
- $.extend({}, opts, {
311
- url: opts.url,
312
- dataType: 'json',
313
- depData: remoteData,
314
- data: formCFG.fullRemoteForm || opts.fullForm ?
315
- $(elem).jProp('form').serializeArray() :
316
- remoteData,
317
- success: this.getResponse,
318
- complete: this._complete
319
- })
318
+ $.extend({}, opts, {
319
+ url: opts.url,
320
+ dataType: 'json',
321
+ depData: remoteData,
322
+ data: formCFG.fullRemoteForm || opts.fullForm ?
323
+ $(elem).jProp('form').serializeArray() :
324
+ remoteData,
325
+ success: this.getResponse,
326
+ complete: this._complete
327
+ })
320
328
  );
321
329
  }
322
330
  },
@@ -513,7 +513,9 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
513
513
  var elem = this;
514
514
  setTimeout(function(){
515
515
  elem.focus();
516
- elem.select();
516
+ if(elem.select){
517
+ elem.select();
518
+ }
517
519
  }, 4);
518
520
 
519
521
  stopTab();
@@ -526,8 +528,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
526
528
  try {
527
529
  $(this).next().next('input, select').each(select);
528
530
  }
529
- catch (er) {
530
- }
531
+ catch (er) {}
531
532
  }
532
533
  }
533
534
  else
@@ -586,9 +587,13 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
586
587
  mouseDownInit();
587
588
  }
588
589
  var ret = false;
590
+
589
591
  if (!factor) {
590
592
  factor = 1;
591
593
  }
594
+ if(o.stepfactor){
595
+ factor *= o.stepfactor;
596
+ }
592
597
  try {
593
598
  that.elemHelper[name](factor);
594
599
 
@@ -602,6 +607,9 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
602
607
  }
603
608
  if (ret !== false && o.value != ret) {
604
609
  that.value(ret);
610
+ if(o.toFixed && o.type == 'number'){
611
+ that.element[0].value = that.toFixed(that.element[0].value, true);
612
+ }
605
613
  eventTimer.call('input', ret);
606
614
  }
607
615
  return ret;
@@ -928,7 +936,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
928
936
  if(data.options.useDecadeBase == 'max' && max[0]){
929
937
  xthCorrect = 11 - (max[0] % 12);
930
938
  } else if(data.options.useDecadeBase == 'min' && min[0]){
931
- xthCorrect = 11 - (min[0] % 12);
939
+ xthCorrect = 0 - (min[0] % 12);
932
940
  }
933
941
 
934
942
  value = value[0] * 1;
@@ -989,11 +997,11 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
989
997
 
990
998
  picker.getMonthList = function(value, data){
991
999
 
992
- var j, i, name, val, disabled, lis, fullyDisabled, prevDisabled, nextDisabled, classStr, classArray;
1000
+ var j, i, name, val, disabled, lis, prevDisabled, nextDisabled, classStr, classArray;
993
1001
  var o = data.options;
994
1002
  var size = o.size;
995
- var max = o.max.split('-');
996
- var min = o.min.split('-');
1003
+ var max = o.maxS;
1004
+ var min = o.minS;
997
1005
  var cols = o.cols || 4;
998
1006
  var currentValue = o.value.split('-');
999
1007
  var enabled = 0;
@@ -1015,9 +1023,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1015
1023
 
1016
1024
  if( !picker.isInRange([value, '01'], max, min) && !picker.isInRange([value, '12'], max, min)){
1017
1025
  disabled = ' disabled=""';
1018
- fullyDisabled = true;
1019
1026
  } else {
1020
- fullyDisabled = false;
1021
1027
  disabled = '';
1022
1028
  }
1023
1029
 
@@ -1034,7 +1040,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1034
1040
  val = curCfg.date.monthkeys[i+1];
1035
1041
  name = getMonthNameHTML(i);
1036
1042
  classArray = [];
1037
- if(fullyDisabled || !picker.isInRange([value, val], max, min) ){
1043
+ if(!picker.isInRange([value, val], max, min) ){
1038
1044
  disabled = ' disabled=""';
1039
1045
  } else {
1040
1046
  disabled = '';
@@ -1343,47 +1349,6 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1343
1349
  }
1344
1350
  return options;
1345
1351
  };
1346
-
1347
- picker.createYearSelect = function(value, max, min, valueAdd, stepper){
1348
- if(!stepper){
1349
- stepper = {start: value, step: 1, label: value};
1350
- }
1351
- var temp;
1352
- var goUp = true;
1353
- var goDown = true;
1354
- var options = ['<option selected="">'+ stepper.label + '</option>'];
1355
- var i = 0;
1356
- var createOption = function(value, add){
1357
- var value2, label;
1358
- if(stepper.step > 1){
1359
- value2 = value + stepper.step - 1;
1360
- label = value+' – '+value2;
1361
- } else {
1362
- label = value;
1363
- }
1364
-
1365
- if(picker.isInRange([value], max, min) || (value2 && picker.isInRange([value2], max, min))){
1366
- options[add]('<option value="'+ (value+valueAdd) +'">'+ label +'</option>');
1367
- return true;
1368
- }
1369
- };
1370
- if(!valueAdd){
1371
- valueAdd = '';
1372
- }
1373
- while(i < 18 && (goUp || goDown)){
1374
- i++;
1375
- if(goUp){
1376
- temp = stepper.start - (i * stepper.step);
1377
- goUp = createOption(temp, 'unshift');
1378
- }
1379
- if(goDown){
1380
- temp = stepper.start + (i * stepper.step);
1381
- goDown = createOption(temp, 'push');
1382
- }
1383
-
1384
- }
1385
- return options;
1386
- };
1387
1352
 
1388
1353
  (function(){
1389
1354
  var retNames = function(name){
@@ -1401,16 +1366,18 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1401
1366
  };
1402
1367
  var setDirButtons = function(content, popover, dir){
1403
1368
  if(content[dir]){
1404
- popover[dir+'Element']
1405
- .attr(content[dir])
1406
- .prop({disabled: false})
1407
- ;
1408
- } else {
1409
- popover[dir+'Element']
1410
- .removeAttr('data-action')
1411
- .prop({disabled: true})
1412
- ;
1413
- }
1369
+ //set content and idl attribute (content for css + idl for IE8-)
1370
+ popover[dir+'Element']
1371
+ .attr(content[dir])
1372
+ .prop({disabled: false})
1373
+ .prop(content[dir])
1374
+ ;
1375
+ } else {
1376
+ popover[dir+'Element']
1377
+ .removeAttr('data-action')
1378
+ .prop({disabled: true})
1379
+ ;
1380
+ }
1414
1381
  };
1415
1382
 
1416
1383
  $.each({'setYearList' : ['Year', 'Month', 'Day', 'Time'], 'setMonthList': ['Month', 'Day', 'Time'], 'setDayList': ['Day', 'Time'], 'setTimeList': ['Time']}, function(setName, names){
@@ -1427,7 +1394,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1427
1394
  if(i >= startAt){
1428
1395
  var content = picker[item](values, data);
1429
1396
 
1430
- if( values.length < 2 || content.enabled > 1 || stops[data.type] === names[i]){
1397
+ if( values.length < 2 || content.enabled > 1 || content.prev || content.next || stops[data.type] === names[i]){
1431
1398
  popover.element
1432
1399
  .attr({'data-currentview': setNames[i]})
1433
1400
  .addClass('ws-size-'+o.size)
@@ -1580,8 +1547,11 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1580
1547
  popover.yearPrevElement
1581
1548
  .attr({'aria-label': curCfg.date.prevText})
1582
1549
  ;
1583
-
1584
-
1550
+ popover.contentElement.attr({
1551
+ dir: curCfg.date.isRTL ? 'rtl' : 'ltr',
1552
+ lang: webshims.formcfg.__activeName
1553
+ });
1554
+
1585
1555
  generateList(o, o.maxS, o.minS);
1586
1556
 
1587
1557
  if(popover.isVisible){
@@ -1593,7 +1563,6 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1593
1563
  popover.isDirty = false;
1594
1564
  };
1595
1565
 
1596
-
1597
1566
  if(data.type == 'time'){
1598
1567
  o.minView = 3;
1599
1568
  o.startView = 3;
@@ -1620,7 +1589,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1620
1589
 
1621
1590
 
1622
1591
 
1623
- popover.contentElement.html('<div class="prev-controls ws-picker-controls"><button class="ws-super-prev ws-year-btn" tabindex="0"></button><button class="ws-prev" tabindex="0"></button></div> <div class="next-controls ws-picker-controls"><button class="ws-next" tabindex="0"></button><button class="ws-super-next ws-year-btn" tabindex="0"></button></div><div class="ws-picker-body"></div><div class="ws-button-row"><button type="button" class="ws-current" data-action="changeInput" value="'+today[data.type]+'" tabindex="0"></button> <button type="button" data-action="changeInput" value="" class="ws-empty" tabindex="0"></button></div>');
1592
+ popover.contentElement.html('<div class="prev-controls ws-picker-controls"><button class="ws-super-prev ws-year-btn" tabindex="0" type="button"></button><button class="ws-prev" tabindex="0" type="button"></button></div> <div class="next-controls ws-picker-controls"><button class="ws-next" tabindex="0" type="button"></button><button class="ws-super-next ws-year-btn" tabindex="0" type="button"></button></div><div class="ws-picker-body"></div><div class="ws-button-row"><button type="button" class="ws-current" data-action="changeInput" value="'+today[data.type]+'" tabindex="0"></button> <button type="button" data-action="changeInput" value="" class="ws-empty" tabindex="0"></button></div>');
1624
1593
  popover.nextElement = $('button.ws-next', popover.contentElement);
1625
1594
  popover.prevElement = $('button.ws-prev', popover.contentElement);
1626
1595
  popover.yearNextElement = $('button.ws-super-next', popover.contentElement);
@@ -1642,10 +1611,13 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
1642
1611
  }
1643
1612
  });
1644
1613
  $(document).onTrigger('wslocalechange', data._propertyChange);
1645
-
1646
- if(o.inlinePicker){
1614
+ if(o.updateOnInput == null && (o.inlinePicker || o.noChangeDismiss)){
1647
1615
  o.updateOnInput = true;
1648
1616
  }
1617
+ if(o.inlinePicker){
1618
+ popover.element.attr('data-class', $.prop(data.orig, 'className'));
1619
+ popover.element.attr('data-id', $.prop(data.orig, 'id'));
1620
+ }
1649
1621
 
1650
1622
  $(o.orig).trigger('pickercreated');
1651
1623
  };