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.
- checksums.yaml +4 -4
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +111 -132
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
- data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
- data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
- data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
- data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
- data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
- data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
- metadata +12 -5
- data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
- 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)
|
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('
|
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
|
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(
|
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(
|
216
|
+
elems = elems
|
217
|
+
.filter(iValClasses)
|
189
218
|
.removeAttr('aria-invalid')
|
190
|
-
.removeClass('
|
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
|
322
|
-
|
323
|
-
|
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)
|
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
|
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('
|
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
|
-
|
857
|
-
|
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(
|
29
|
-
|
30
|
-
|
31
|
-
|
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('
|
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
|
-
$(
|
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
|
-
},
|
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 +'
|
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(
|
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(
|
283
|
-
.trigger('
|
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
|
-
|
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('
|
380
|
+
$(elem).triggerHandler('updatevalidation.webshims');
|
368
381
|
remoteValidate.message = 'async';
|
369
382
|
remoteValidate.blockUpdate = false;
|
370
383
|
},
|