webshims-rails 1.12.5 → 1.12.7

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 +111 -132
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
  23. data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
  24. data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
  25. data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
  26. data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
  40. data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
  45. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
  46. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
  48. data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
  49. data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
  50. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
  51. data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
  52. data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
  53. data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
  55. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
  56. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
  58. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
  60. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
  61. data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
  63. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
  64. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
  65. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
  69. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
  71. data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
  72. metadata +12 -5
  73. data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
  74. data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2087
@@ -1,17 +1,18 @@
1
1
  webshims.register('form-validation', function($, webshims, window, document, undefined, options){
2
2
  "use strict";
3
-
3
+
4
4
  var isWebkit = 'webkitURL' in window;
5
5
  var hasNative = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
6
6
  var chromeBugs = isWebkit && hasNative;
7
7
  var webkitVersion = chromeBugs && parseFloat((navigator.userAgent.match(/Safari\/([\d\.]+)/) || ['', '999999'])[1], 10);
8
8
 
9
9
  var iVal = options.iVal;
10
+
10
11
  if(!iVal.fieldWrapper){
11
- iVal.fieldWrapper = ':not(span), :not(label), :not(em), :not(strong), :not(p)';
12
+ iVal.fieldWrapper = ':not(span):not(label):not(em):not(strong):not(p)';
12
13
  }
13
14
  var invalidClass = iVal.errorClass || (iVal.errorClass = 'user-error');
14
- var validClass = iVal.successClass || 'user-success';
15
+ var validClass = iVal.successClass || (iVal.successClass = 'user-success');
15
16
 
16
17
  var invalidWrapperClass = iVal.errorWrapperClass || (iVal.errorWrapperClass = 'ws-invalid');
17
18
  var successWrapperClass = iVal.successWrapperClass || (iVal.successWrapperClass = 'ws-success');
@@ -24,9 +25,6 @@ webshims.register('form-validation', function($, webshims, window, document, und
24
25
  var addModule = loader.addModule;
25
26
 
26
27
  var emptyJ = $([]);
27
- var isValid = function(elem){
28
- return ($.prop(elem, 'validity') || {valid: 1}).valid;
29
- };
30
28
 
31
29
  var nonFormFilter = function(){
32
30
  return !$.prop(this, 'form');
@@ -92,6 +90,11 @@ webshims.register('form-validation', function($, webshims, window, document, und
92
90
  week: 1,
93
91
  'datetime-local': 1
94
92
  };
93
+ var updateValidationEvents = {
94
+ refreshvalidityui: 1,
95
+ updatevalidation: 1
96
+ };
97
+ var iValClasses = '.'+ iVal.errorClass +', .'+iVal.successClass;
95
98
  var switchValidityClass = function(e){
96
99
  if(!iVal.sel){return;}
97
100
  var elem, timer, shadowElem, shadowType;
@@ -111,7 +114,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
111
114
  return;
112
115
  }
113
116
  if(webshims.refreshCustomValidityRules && webshims.refreshCustomValidityRules(elem) == 'async'){
114
- $(elem).one('refreshvalidityui', switchValidityClass);
117
+ $(elem).one('updatevalidation', switchValidityClass);
115
118
  return;
116
119
  }
117
120
 
@@ -169,32 +172,64 @@ webshims.register('form-validation', function($, webshims, window, document, und
169
172
  if(timer){
170
173
  clearTimeout(timer);
171
174
  }
172
- if(e.type == 'refreshvalidityui'){
175
+ if(updateValidationEvents[e.type]){
176
+ if(e.type == 'refreshvalidityui'){
177
+ webshims.warn('refreshvalidityui was renamed to updatevalidation');
178
+ }
173
179
  switchClass();
174
180
  } else {
175
181
  $.data(elem, 'webshimsswitchvalidityclass', setTimeout(switchClass, 9));
176
182
  }
177
183
  }
178
184
  };
179
-
185
+ var eachReset = function(){
186
+ webshims.errorbox.reset(this);
187
+ };
188
+ if('validityUIEvents' in options){
189
+ webshims.warn('validityUIEvents was renamed to iVal.events');
190
+ iVal.events = options.validityUIEvents;
191
+ }
192
+ if('events' in iVal){
193
+ iVal.events = iVal.events || '';
194
+ } else {
195
+ iVal.events = 'focusout change';
196
+ }
197
+
198
+ if(iVal.events){
199
+ iVal.events += ' ';
200
+ }
201
+
180
202
  $(document.body || 'html')
181
- .on(options.validityUIEvents || 'focusout change refreshvalidityui invalid', switchValidityClass)
182
- .on('reset resetvalui', function(e){
203
+ .on(iVal.events+'refreshvalidityui updatevalidation.webshims invalid', switchValidityClass)
204
+ .on('reset resetvalidation.webshims resetvalui', function(e){
205
+ var noIValTrigger;
183
206
  var elems = $(e.target);
207
+ if(e.type == 'resetvalui'){
208
+ webshims.warn('resetvalui was renamed to resetvalidation');
209
+ }
184
210
  if(elems.is('form, fieldset')){
211
+ if(elems[0].nodeName.toLowerCase() == 'form'){
212
+ noIValTrigger = !elems.is(iVal.sel);
213
+ }
185
214
  elems = elems.jProp('elements');
186
215
  }
187
- elems
188
- .filter('.user-error, .user-success')
216
+ elems = elems
217
+ .filter(iValClasses)
189
218
  .removeAttr('aria-invalid')
190
- .removeClass('user-error')
191
- .removeClass('user-success')
219
+ .removeClass(iVal.errorClass +' '+ iVal.successClass)
192
220
  .getNativeElement()
193
221
  .each(function(){
194
222
  $.removeData(this, 'webshimsinvalidcause');
195
223
  })
196
- .trigger('resetvalidityui')
197
224
  ;
225
+
226
+ if(!noIValTrigger){
227
+ if(noIValTrigger === false){
228
+ elems.each(eachReset);
229
+ } else {
230
+ elems.trigger('resetvalidityui.webshims');
231
+ }
232
+ }
198
233
  })
199
234
  ;
200
235
 
@@ -218,6 +253,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
218
253
  var rtlReplace = function(ret){
219
254
  return ret == 'left' ? 'right' : 'left';
220
255
  };
256
+
221
257
  webshims.getRelOffset = function(posElem, relElem, opts){
222
258
  var offset, bodyOffset, dirs;
223
259
  posElem = $(posElem);
@@ -297,6 +333,11 @@ webshims.register('form-validation', function($, webshims, window, document, und
297
333
  element = $(element || this.options.prepareFor).getNativeElement() ;
298
334
 
299
335
  var that = this;
336
+ var closeOnOutSide = function(e){
337
+ if(that.options.hideOnBlur && !that.stopBlur && !that.isInElement([that.lastElement[0], element[0], that.element[0]], e.target)){
338
+ that.hide();
339
+ }
340
+ };
300
341
  var visual = $(element).getShadowElement();
301
342
  var delayedRepos = function(e){
302
343
  clearTimeout(that.timers.repos);
@@ -317,12 +358,13 @@ webshims.register('form-validation', function($, webshims, window, document, und
317
358
  that.element.addClass('ws-po-visible').trigger('wspopovershow');
318
359
  }, 14);
319
360
  }, 4);
320
-
321
- $(document.body || document).on('focusin'+this.eventns+' mousedown'+this.eventns, function(e){
322
- if(that.options.hideOnBlur && !that.stopBlur && !that.isInElement([that.lastElement[0], element[0], that.element[0]], e.target)){
323
- that.hide();
324
- }
325
- });
361
+
362
+ $(document.body)
363
+ .on('focusin'+this.eventns+' mousedown'+this.eventns, closeOnOutSide)
364
+ //http://www.quirksmode.org/m/tests/eventdelegation2.html
365
+ .children(':not(script), :not(iframe), :not(noscript)')
366
+ .on('mousedown'+this.eventns, closeOnOutSide)
367
+ ;
326
368
 
327
369
  this.element.off('pospopover').on('pospopover', delayedRepos);
328
370
  $(window).on('resize'+this.eventns + ' pospopover'+this.eventns, delayedRepos);
@@ -396,7 +438,11 @@ webshims.register('form-validation', function($, webshims, window, document, und
396
438
  clear: function(){
397
439
  $(window).off(this.eventns);
398
440
  $(document).off(this.eventns);
399
- $(document.body).off(this.eventns);
441
+ $(document.body)
442
+ .off(this.eventns)
443
+ .children(':not(script), :not(iframe), :not(noscript)')
444
+ .off(this.eventns)
445
+ ;
400
446
  this.element.off('transitionend'+this.eventns);
401
447
  this.stopBlur = false;
402
448
  this.lastOpts = false;
@@ -444,9 +490,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
444
490
  collision: 'none'
445
491
  }, options.messagePopover.position || {});
446
492
 
447
- var focusTimer = false;
448
-
449
- var api = webshims.objectCreate(webshims.wsPopover, {}, options.messagePopover);
493
+ var api = webshims.objectCreate(webshims.wsPopover, undefined, options.messagePopover);
450
494
  var boundHide = api.hide.bind(api);
451
495
 
452
496
  api.element.addClass('validity-alert').attr({role: 'alert'});
@@ -667,7 +711,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
667
711
  if(fieldWrapper.hasClass(invalidWrapperClass)){
668
712
  $(elem).filter('input').off('.recheckinvalid');
669
713
  if(!reset && (invalid = $('input:invalid, select:invalid, textarea:invalid', fieldWrapper)[0])){
670
- $(invalid).trigger('refreshvalidityui');
714
+ $(invalid).trigger('updatevalidation.webshims');
671
715
  } else {
672
716
  errorBox = this.get(elem, fieldWrapper);
673
717
  fieldWrapper.removeClass(invalidWrapperClass);
@@ -762,7 +806,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
762
806
  }
763
807
  }
764
808
  },
765
- resetvalidityui: function(e){
809
+ 'resetvalidityui.webshims': function(e){
766
810
  if (iVal.sel) {
767
811
  var form = $(e.target).jProp('form');
768
812
  if (form.is(iVal.sel)) {
@@ -851,151 +895,11 @@ webshims.register('form-validation', function($, webshims, window, document, und
851
895
  jElm = null;
852
896
  });
853
897
  })();
854
-
855
-
856
- if(!$.event.special.change && !$.event.special.input && Modernizr.inputtypes && options.fixRangeChange){
857
- var rangeChange = {
858
-
859
- trigger: function(e){
860
- if(rangeChange.blockElement){
861
- rangeChange.blockElement = false;
862
- setTimeout(function(){
863
- if(rangeChange.requestedChange && rangeChange.value != rangeChange.requestedChange.value){
864
- $(rangeChange.requestedChange).trigger('change');
865
- }
866
- rangeChange.value = false;
867
- }, 9);
868
- }
869
-
870
- },
871
- lastValue: false,
872
- updateInputValue: function(e){
873
- rangeChange.lastValue = e.target.value;
874
- },
875
- triggerInput: function(e){
876
- if(rangeChange.lastValue !== false && rangeChange.lastValue != e.target.value){
877
- $(e.target).trigger('input');
878
- }
879
- },
880
- inputTeardown: function(e){
881
- $(e.target)
882
- .off('input', rangeChange.updateInputValue)
883
- .off('blur', rangeChange.inputTeardown)
884
- ;
885
- rangeChange.lastValue = false;
886
- },
887
- inputSetup: function(e){
888
-
889
- if(e.target.type == 'range'){
890
- rangeChange.inputTeardown(e);
891
- rangeChange.lastValue = e.target.value;
892
- $(e.target)
893
- .on('input', rangeChange.updateInputValue)
894
- .on('blur', rangeChange.inputTeardown)
895
- ;
896
- }
897
- }
898
- };
899
-
900
-
901
- $.each([{name: 'key', evt: 'keyup'}, {name: 'mouse', evt: 'mouseup'}, {name: 'touch', evt: 'touchend'}], function(i, obj){
902
- var setup = obj.name + 'Setup';
903
- var commit = obj.name + 'Commit';
904
- rangeChange[obj.name+'Block'] = function(e){
905
-
906
- if(!rangeChange.blockElement && e.target.type == 'range'){
907
-
908
- rangeChange.blockElement = e.target;
909
- rangeChange.value = e.target.value;
910
- $(rangeChange.blockElement)
911
- .off('blur', rangeChange.trigger)
912
- .on('blur', rangeChange.trigger)
913
- ;
914
-
915
- $(document.body)
916
- .off(obj.evt, rangeChange[commit])
917
- .on(obj.evt, rangeChange[commit])
918
- ;
919
- }
920
- };
921
-
922
- rangeChange[commit] = function(e){
923
- $(document.body).off(obj.evt, rangeChange[commit]);
924
- rangeChange.trigger();
925
- };
926
-
927
- });
928
-
929
- $(document.body || 'html').on({
930
- mousedown: rangeChange.mouseBlock,
931
- 'keydown kepress': function(e){
932
- if(e.keyCode < 45 && e.keyCode > 30){
933
- rangeChange.keyBlock(e);
934
- }
935
- },
936
- 'touchstart': rangeChange.touchBlock,
937
- focusin: rangeChange.inputSetup
938
- });
939
-
940
- $.extend(true, $.event.special, {
941
- change: {
942
- handle: function(e){
943
-
944
- if(!e.isTrigger && rangeChange.blockElement == e.target){
945
- rangeChange.requestedChange = e.target;
946
- rangeChange.triggerInput(e);
947
- return false;
948
- } else if(rangeChange.requestedChange == e.target){
949
- rangeChange.requestedChange = false;
950
- }
951
- e.handleObj.handler.apply(this, arguments);
952
- }
953
- },
954
- input: {
955
- handle: (function(){
956
- var lastValue, lastElement;
957
-
958
- var remove = function(){
959
- if(lastElement){
960
- $(lastElement).off('change', remove);
961
- }
962
- lastValue = false;
963
- lastElement = false;
964
- };
965
-
966
- var setup = function(e){
967
- remove(e);
968
- lastElement = e.target;
969
- lastValue = e.target.value;
970
- $(e.target).on('change', remove);
971
- };
972
-
973
- return function(e){
974
- var value;
975
- if(!e.isTrigger && e.target.type == 'range'){
976
-
977
- if(lastElement != e.target){
978
- setup(e);
979
- } else if(lastElement == e.target){
980
- if(lastValue == (value = e.target.value)){
981
- return false;
982
- }
983
- lastValue = e.target.value;
984
- }
985
- }
986
- e.handleObj.handler.apply(this, arguments);
987
- };
988
- })()
989
- }
990
- });
991
- }
992
- if(webshims.cfg.debug !== false && iVal.sel != '.ws-instantvalidation'){
993
- $(function(){
994
- if($('form.ws-instantvalidation').length){
995
- webshims.error('.ws-instantvalidation was renamed to .ws-validate');
996
- }
997
- });
998
- }
898
+
899
+ addModule('form-fixrangechange', {
900
+ test: !(!$.event.special.change && !$.event.special.input && Modernizr.inputtypes && Modernizr.inputtypes.range && options.fixRangeChange)
901
+ });
902
+
999
903
  addModule('form-combat', {
1000
904
  d: ['dom-support'],
1001
905
  test: !(($.mobile && ($.mobile.selectmenu || $.mobile.checkboxradio)) || $.fn.select2 || $.fn.chosen || $.fn.selectpicker || $.fn.selectBoxIt)
@@ -1006,5 +910,5 @@ webshims.register('form-validation', function($, webshims, window, document, und
1006
910
  test: !!($.position && $.position.getScrollInfo)
1007
911
  });
1008
912
 
1009
- loader.loadList(['form-combat', 'position']);
913
+ loader.loadList(['form-combat', 'position', 'form-fixrangechange']);
1010
914
  });
@@ -1,15 +1,16 @@
1
1
  webshims.register('form-validators', function($, webshims, window, document, undefined, options){
2
2
  "use strict";
3
-
3
+ var iValClasses = '.'+ options.iVal.errorClass +', .'+options.iVal.successClass;
4
4
  (function(){
5
5
  if(webshims.refreshCustomValidityRules){
6
6
  webshims.error("form-validators already included. please remove custom-validity.js");
7
7
  }
8
-
8
+
9
9
  var customValidityRules = {};
10
10
  var formReady = false;
11
11
  var blockCustom;
12
12
  var initTest;
13
+ var elemSels = 'input, select, textarea, fieldset[data-dependent-validation]';
13
14
  var onEventTest = function(e){
14
15
  webshims.refreshCustomValidityRules(e.target);
15
16
  };
@@ -25,21 +26,28 @@ webshims.register('form-validators', function($, webshims, window, document, und
25
26
  };
26
27
 
27
28
  webshims.customErrorMessages = {};
28
- webshims.addCustomValidityRule = function(name, test, defaultMessage){
29
- customValidityRules[name] = test;
30
- if(!webshims.customErrorMessages[name]){
31
- webshims.customErrorMessages[name] = [];
32
- webshims.customErrorMessages[name][''] = defaultMessage || name;
33
- }
34
- if(formReady){
35
- $('input, select, textarea, fieldset[data-dependent-validation]')
29
+ webshims.addCustomValidityRule = (function(){
30
+ var timer;
31
+ var reTest = function(){
32
+ $(document.querySelectorAll(elemSels))
36
33
  .filter(noValidate)
37
34
  .each(function(){
38
35
  testValidityRules(this);
39
36
  })
40
37
  ;
41
- }
42
- };
38
+ };
39
+ return function(name, test, defaultMessage){
40
+ customValidityRules[name] = test;
41
+ if(!webshims.customErrorMessages[name]){
42
+ webshims.customErrorMessages[name] = [];
43
+ webshims.customErrorMessages[name][''] = defaultMessage || name;
44
+ }
45
+ if(formReady){
46
+ clearTimeout(timer);
47
+ timer = setTimeout(reTest);
48
+ }
49
+ };
50
+ })();
43
51
  webshims.refreshCustomValidityRules = function(elem){
44
52
  if(!initTest){return;}
45
53
  var val, setMessage;
@@ -100,7 +108,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
100
108
  var activeElement = document.activeElement;
101
109
 
102
110
  if(activeElement != e.target && $.data(activeElement, 'webshimsswitchvalidityclass')){
103
- $(activeElement).trigger('refreshvalidityui');
111
+ $(activeElement).trigger('updatevalidation.webshims');
104
112
  }
105
113
  }
106
114
  });
@@ -116,12 +124,11 @@ webshims.register('form-validators', function($, webshims, window, document, und
116
124
  return null;
117
125
  }
118
126
  };
119
-
120
-
127
+
121
128
  setTimeout(function(){
122
129
  webshims.addReady(function(context, selfElement){
123
130
  initTest = true;
124
- $('input, select, textarea, fieldset[data-dependent-validation]', context).add(selfElement.filter('input, select, textarea, fieldset[data-dependent-validation]'))
131
+ $(context.querySelectorAll(elemSels)).add(selfElement.filter(elemSels))
125
132
  .filter(noValidate)
126
133
  .each(function(){
127
134
  testValidityRules(this);
@@ -131,7 +138,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
131
138
  formReady = true;
132
139
  });
133
140
  $(document).on('refreshCustomValidityRules', onEventTest);
134
- }, 9);
141
+ }, 29);
135
142
 
136
143
  });
137
144
 
@@ -163,7 +170,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
163
170
  if(!val || !data.minlength){return;}
164
171
 
165
172
  if($.nodeName(elem, 'input')){
166
- webshims.warn('depreacated data-minlength usage: Use pattern=".{'+ data.minlength +'3,}" instead.');
173
+ webshims.warn('depreacated data-minlength usage: Use pattern=".{'+ data.minlength +',}" instead.');
167
174
  }
168
175
  return data.minlength > val.length;
169
176
  }, 'Entered value is too short.');
@@ -238,7 +245,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
238
245
  }
239
246
  $.prop( elem, data.prop, val);
240
247
  if(e){
241
- $(elem).getShadowElement().filter('.user-error, .user-success').trigger('refreshvalidityui');
248
+ $(elem).getShadowElement().filter(iValClasses).trigger('updatevalidation.webshims');
242
249
  }
243
250
  };
244
251
 
@@ -279,8 +286,8 @@ webshims.register('form-validators', function($, webshims, window, document, und
279
286
  webshims.refreshCustomValidityRules(elem);
280
287
  $(elem)
281
288
  .getShadowElement()
282
- .filter('.user-error, .user-success')
283
- .trigger('refreshvalidityui')
289
+ .filter(iValClasses)
290
+ .trigger('updatevalidation.webshims')
284
291
  ;
285
292
  });
286
293
  }
@@ -307,6 +314,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
307
314
  if(!val || !data.ajaxvalidate){return;}
308
315
  var opts;
309
316
  if(!data.remoteValidate){
317
+ webshims.loader.loadList(['jajax']);
310
318
  if(typeof data.ajaxvalidate == 'string'){
311
319
  data.ajaxvalidate = {url: data.ajaxvalidate, depends: $([])};
312
320
  } else {
@@ -334,15 +342,15 @@ webshims.register('form-validators', function($, webshims, window, document, und
334
342
  this.restartAjax = false;
335
343
  this.ajaxLoading = true;
336
344
  $.ajax(
337
- $.extend({}, opts, {
345
+ $.extend({dataType: 'json'}, opts, {
338
346
  url: opts.url,
339
- dataType: 'json',
340
347
  depData: remoteData,
341
348
  data: formCFG.fullRemoteForm || opts.fullForm ?
342
349
  $(elem).jProp('form').serializeArray() :
343
350
  remoteData,
344
351
  success: this.getResponse,
345
- complete: this._complete
352
+ complete: this._complete,
353
+ timeout: 3000
346
354
  })
347
355
  );
348
356
  }
@@ -355,16 +363,21 @@ webshims.register('form-validators', function($, webshims, window, document, und
355
363
  remoteValidate.restartAjax = false;
356
364
  },
357
365
  getResponse: function(data){
366
+ if(options.transformAjaxValidate){
367
+ data = options.transformAjaxValidate(data);
368
+ }
358
369
  if(!data){
359
370
  data = {message: '', valid: true};
360
371
  } else if(typeof data == 'string'){
361
- data = JSON.parse(data);
372
+ try {
373
+ data = JSON.parse(data);
374
+ } catch (er){}
362
375
  }
363
376
 
364
377
  remoteValidate.message = ('message' in data) ? data.message : !data.valid;
365
378
  remoteValidate.lastMessage = remoteValidate.message;
366
379
  remoteValidate.blockUpdate = true;
367
- $(elem).triggerHandler('refreshvalidityui');
380
+ $(elem).triggerHandler('updatevalidation.webshims');
368
381
  remoteValidate.message = 'async';
369
382
  remoteValidate.blockUpdate = false;
370
383
  },