webshims-rails 1.14.3 → 1.14.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) 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 +4 -0
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +141 -139
  5. data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -3
  6. data/vendor/assets/javascripts/webshims/shims/combos/1.js +22 -33
  7. data/vendor/assets/javascripts/webshims/shims/combos/10.js +76 -73
  8. data/vendor/assets/javascripts/webshims/shims/combos/11.js +73 -61
  9. data/vendor/assets/javascripts/webshims/shims/combos/12.js +37 -41
  10. data/vendor/assets/javascripts/webshims/shims/combos/13.js +36 -40
  11. data/vendor/assets/javascripts/webshims/shims/combos/14.js +7 -7
  12. data/vendor/assets/javascripts/webshims/shims/combos/15.js +23 -32
  13. data/vendor/assets/javascripts/webshims/shims/combos/16.js +36 -57
  14. data/vendor/assets/javascripts/webshims/shims/combos/17.js +73 -61
  15. data/vendor/assets/javascripts/webshims/shims/combos/18.js +611 -4604
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +27 -47
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +61 -31
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +24 -16
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +13 -25
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +40 -27
  21. data/vendor/assets/javascripts/webshims/shims/combos/27.js +167 -166
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +11 -12
  23. data/vendor/assets/javascripts/webshims/shims/combos/29.js +5 -5
  24. data/vendor/assets/javascripts/webshims/shims/combos/3.js +14 -22
  25. data/vendor/assets/javascripts/webshims/shims/combos/30.js +16 -24
  26. data/vendor/assets/javascripts/webshims/shims/combos/31.js +14 -22
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +2 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +27 -28
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +5 -14
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +78 -66
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +80 -68
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +29 -49
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +27 -47
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +78 -75
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +42 -29
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +116 -40
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +112 -38
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +3 -12
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -4
  40. data/vendor/assets/javascripts/webshims/shims/es6.js +1887 -0
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +9 -8
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +2 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-inputmode.js +52 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +2 -2
  45. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +4 -5
  46. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +73 -61
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +7 -8
  48. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +164 -163
  49. data/vendor/assets/javascripts/webshims/shims/form-validation.js +121 -144
  50. data/vendor/assets/javascripts/webshims/shims/jme/_icons.scss +3 -0
  51. data/vendor/assets/javascripts/webshims/shims/jme/alternate-media.js +184 -0
  52. data/vendor/assets/javascripts/webshims/shims/jme/{b.js → base.js} +38 -27
  53. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +129 -39
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +145 -44
  55. data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
  56. data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +0 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
  58. data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
  59. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +448 -90
  60. data/vendor/assets/javascripts/webshims/shims/jme/{c.js → mediacontrols.js} +74 -11
  61. data/vendor/assets/javascripts/webshims/shims/jme/{p.js → playlist.js} +4 -2
  62. data/vendor/assets/javascripts/webshims/shims/matchMedia.js +122 -0
  63. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +12 -24
  64. data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +1 -1
  65. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +37 -15
  66. data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +3 -3
  67. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +4 -5
  68. data/vendor/assets/javascripts/webshims/shims/picture.js +13 -54
  69. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +13 -20
  70. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +24 -18
  71. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +32 -10
  72. data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +43 -47
  73. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -18
  74. data/vendor/assets/javascripts/webshims/shims/styles/transparent.png +0 -0
  75. data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
  76. data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +0 -0
  77. data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
  78. data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
  79. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  80. data/vendor/assets/javascripts/webshims/shims/swfmini.js +1 -1
  81. data/vendor/assets/javascripts/webshims/shims/track-ui.js +4 -5
  82. data/vendor/assets/javascripts/webshims/shims/track.js +24 -16
  83. metadata +9 -8
  84. data/vendor/assets/javascripts/webshims/shims/combos/19.js +0 -4745
  85. data/vendor/assets/javascripts/webshims/shims/combos/20.js +0 -4522
  86. data/vendor/assets/javascripts/webshims/shims/combos/32.js +0 -2443
  87. data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +0 -1
@@ -2,28 +2,33 @@ webshims.register('form-validation', function($, webshims, window, document, und
2
2
  "use strict";
3
3
 
4
4
  var isWebkit = 'webkitURL' in window;
5
- var hasNative = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
5
+ var support = webshims.support;
6
+ var hasNative = support.formvalidation && !webshims.bugs.bustedValidity;
6
7
  var chromeBugs = isWebkit && hasNative;
7
8
  var ua = navigator.userAgent;
9
+ var isIE = ua.indexOf('MSIE') != -1;
8
10
  var webkitVersion = chromeBugs && parseFloat((ua.match(/Safari\/([\d\.]+)/) || ['', '999999'])[1], 10);
9
-
11
+
10
12
  var iVal = options.iVal;
11
13
 
12
14
  var invalidClass = iVal.errorClass || (iVal.errorClass = 'user-error');
13
15
  var validClass = iVal.successClass || (iVal.successClass = 'user-success');
14
-
16
+ var markedClases = '.'+validClass+', .'+invalidClass;
17
+
15
18
  var invalidWrapperClass = iVal.errorWrapperClass || (iVal.errorWrapperClass = 'ws-invalid');
16
19
  var successWrapperClass = iVal.successWrapperClass || (iVal.successWrapperClass = 'ws-success');
17
20
  var errorBoxClass = iVal.errorBoxClass || (iVal.errorBoxClass = 'ws-errorbox');
18
21
  var errorMessageClass = iVal.errorMessageClass || (iVal.errorMessageClass = 'ws-errormessage');
19
-
22
+ var errorBoxWrapper = iVal.errorBoxWrapper || (iVal.errorBoxWrapper = 'div');
23
+ var errorMessageWrapper = iVal.errorMessageWrapper || (iVal.errorMessageWrapper = 'p');
24
+
20
25
  var checkTypes = {checkbox: 1, radio: 1};
21
-
26
+
22
27
  var loader = webshims.loader;
23
28
  var addModule = loader.addModule;
24
-
29
+
25
30
  var emptyJ = $([]);
26
-
31
+
27
32
  var nonFormFilter = function(){
28
33
  return !$.prop(this, 'form');
29
34
  };
@@ -46,8 +51,8 @@ webshims.register('form-validation', function($, webshims, window, document, und
46
51
  }
47
52
  return ret;
48
53
  };
49
-
50
-
54
+
55
+
51
56
  var returnValidityCause = function(validity, elem){
52
57
  var ret;
53
58
  $.each(validity, function(name, value){
@@ -58,7 +63,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
58
63
  });
59
64
  return ret;
60
65
  };
61
-
66
+
62
67
  var isInGroup = function(name){
63
68
  var ret;
64
69
  try {
@@ -115,13 +120,13 @@ webshims.register('form-validation', function($, webshims, window, document, und
115
120
  $(elem).one('updatevalidation.webshims', switchValidityClass);
116
121
  return;
117
122
  }
118
-
123
+
119
124
  var validity = $.prop(elem, 'validity');
120
-
125
+
121
126
  var addClass, removeClass, trigger, generaltrigger, validityCause;
122
-
123
-
124
-
127
+
128
+
129
+
125
130
  if(validity.valid){
126
131
  if(!shadowElem.hasClass(validClass)){
127
132
  addClass = validClass;
@@ -150,7 +155,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
150
155
  trigger = 'changedinvalid';
151
156
  }
152
157
  }
153
-
158
+
154
159
  if(addClass){
155
160
  shadowElem.addClass(addClass).removeClass(removeClass);
156
161
  //jQuery 1.6.1 IE9 bug (doubble trigger bug)
@@ -163,7 +168,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
163
168
  $(elem).trigger(generaltrigger);
164
169
  });
165
170
  }
166
-
171
+
167
172
  $.removeData(elem, 'webshimsswitchvalidityclass');
168
173
  };
169
174
  if(shadowElem.triggerHandler('wsallowinstantvalidation', [e]) !== false){
@@ -185,7 +190,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
185
190
  };
186
191
 
187
192
  if('validityUIEvents' in options){
188
- webshims.warn('validityUIEvents was renamed to iVal.events');
193
+ webshims.error('validityUIEvents was renamed to iVal.events');
189
194
  iVal.events = options.validityUIEvents;
190
195
  }
191
196
  if('events' in iVal){
@@ -208,11 +213,16 @@ webshims.register('form-validation', function($, webshims, window, document, und
208
213
 
209
214
  $(document.body || 'html')
210
215
  .on(iVal.events+'refreshvalidityui updatevalidation.webshims invalid', switchValidityClass)
216
+ .on('refreshvalidationui.webshims', function(e){
217
+ if($(e.target).getShadowElement().is(markedClases)){
218
+ switchValidityClass({type: 'updatevalidation', target: e.target});
219
+ }
220
+ })
211
221
  .on('reset resetvalidation.webshims resetvalui', function(e){
212
222
  var noIValTrigger;
213
223
  var elems = $(e.target);
214
224
  if(e.type == 'resetvalui'){
215
- webshims.warn('resetvalui was renamed to resetvalidation');
225
+ webshims.error('resetvalui was renamed to resetvalidation');
216
226
  }
217
227
  if(elems.is('form, fieldset')){
218
228
  if(elems[0].nodeName.toLowerCase() == 'form'){
@@ -239,10 +249,10 @@ webshims.register('form-validation', function($, webshims, window, document, und
239
249
  }
240
250
  })
241
251
  ;
242
-
252
+
243
253
  var setRoot = function(){
244
254
  webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ?
245
- $(document.body) :
255
+ $(document.body) :
246
256
  $(document.documentElement)
247
257
  ;
248
258
  };
@@ -265,7 +275,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
265
275
 
266
276
  setRoot();
267
277
  webshims.ready('DOM', setRoot);
268
-
278
+
269
279
  var rtlReg = /right|left/g;
270
280
  var rtlReplace = function(ret){
271
281
  return ret == 'left' ? 'right' : 'left';
@@ -280,7 +290,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
280
290
  if(!opts.of){
281
291
  opts.of = relElem;
282
292
  }
283
-
293
+
284
294
  isRtl = $(opts.of).css('direction') == 'rtl';
285
295
  if(!opts.isRtl){
286
296
  opts.isRtl = false;
@@ -290,39 +300,39 @@ webshims.register('form-validation', function($, webshims, window, document, und
290
300
  opts.at = (opts.at || 'center').replace(rtlReg, rtlReplace);
291
301
  opts.isRtl = isRtl;
292
302
  }
293
-
303
+
294
304
  posElem[opts.isRtl ? 'addClass' : 'removeClass']('ws-is-rtl');
295
-
305
+
296
306
  opts.using = function(calced, data){
297
307
  posElem.attr({'data-horizontal': data.horizontal, 'data-vertical': data.vertical});
298
308
  offset = calced;
299
309
  };
300
-
310
+
301
311
  posElem.attr({
302
- 'data-horizontal': '',
312
+ 'data-horizontal': '',
303
313
  'data-vertical': '',
304
314
  'data-my': opts.my,
305
315
  'data-at': opts.at
306
316
  });
307
317
  posElem.position(opts);
308
-
318
+
309
319
  } else {
310
320
  offset = $(relElem).offset();
311
321
  bodyOffset = posElem.offset();
312
322
  offset.top -= bodyOffset.top;
313
323
  offset.left -= bodyOffset.left;
314
-
324
+
315
325
  offset.top += relElem.outerHeight();
316
326
  }
317
-
327
+
318
328
  });
319
-
329
+
320
330
  return offset;
321
331
  };
322
-
332
+
323
333
  $.extend(webshims.wsPopover, {
324
-
325
-
334
+
335
+
326
336
  isInElement: function(containers, contained){
327
337
  if(!$.isArray(containers)){
328
338
  containers = [containers];
@@ -355,7 +365,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
355
365
  }
356
366
 
357
367
  element = $(element || this.options.prepareFor).getNativeElement() ;
358
-
368
+
359
369
  var that = this;
360
370
  var closeOnOutSide = function(e){
361
371
  if(that.options.hideOnBlur && !that.stopBlur && !that.isInElement([that.lastElement[0], element[0], that.element[0]], e.target)){
@@ -372,9 +382,9 @@ webshims.register('form-validation', function($, webshims, window, document, und
372
382
 
373
383
  this.clear();
374
384
  this.element.css('display', 'none');
375
-
385
+
376
386
  this.prepareFor(element, visual);
377
-
387
+
378
388
  this.position(visual);
379
389
 
380
390
  if(this.options.inline){
@@ -397,21 +407,21 @@ webshims.register('form-validation', function($, webshims, window, document, und
397
407
  .children(':not(script), :not(iframe), :not(noscript)')
398
408
  .on('mousedown'+this.eventns, closeOnOutSide)
399
409
  ;
400
-
410
+
401
411
  this.element.off('pospopover').on('pospopover', delayedRepos);
402
412
  $(window).on('resize'+this.eventns + ' pospopover'+this.eventns, delayedRepos);
403
413
  },
404
414
  _getAutoAppendElement: (function(){
405
415
  var invalidParent = /^(?:span|i|label|b|p|tr|thead|tbody|table|strong|em|ul|ol|dl|html)$/i;
406
416
  return function(element){
407
-
417
+
408
418
  var appendElement;
409
419
  var parent = element[0];
410
420
  var body = document.body;
411
421
  while((parent = parent[appendElement ? 'offsetParent' : 'parentNode']) && parent.nodeType == 1 && parent != body){
412
422
  if(!appendElement && !invalidParent.test(parent.nodeName)){
413
423
  appendElement = parent;
414
- }
424
+ }
415
425
  if(appendElement && $.css(parent, 'overflow') == 'hidden' && $.css(parent, 'position') != 'static'){
416
426
  appendElement = false;
417
427
  }
@@ -438,7 +448,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
438
448
  this.element.appendTo(parentElem);
439
449
  }
440
450
  }
441
-
451
+
442
452
  this.element.attr({
443
453
  'data-class': element.prop('className'),
444
454
  'data-id': element.prop('id')
@@ -468,13 +478,13 @@ webshims.register('form-validation', function($, webshims, window, document, und
468
478
  that.hide();
469
479
  }
470
480
  };
471
-
481
+
472
482
  that.timers.bindBlur = setTimeout(function(){
473
483
  that.lastElement.off(that.eventns).on('focusout'+that.eventns + ' blur'+that.eventns, onBlur);
474
484
  that.lastElement.getNativeElement().off(that.eventns);
475
485
  }, 10);
476
486
  }
477
-
487
+
478
488
  this.prepared = true;
479
489
  },
480
490
  clear: function(){
@@ -533,39 +543,39 @@ webshims.register('form-validation', function($, webshims, window, document, und
533
543
  }
534
544
  }
535
545
  });
536
-
537
-
538
-
546
+
547
+
548
+
539
549
  /* some extra validation UI */
540
550
  webshims.validityAlert = (function(){
541
-
551
+
542
552
  options.messagePopover.position = $.extend({}, {
543
553
  at: 'left bottom',
544
554
  my: 'left top',
545
555
  collision: 'none'
546
556
  }, options.messagePopover.position || {});
547
-
557
+
548
558
  var api = webshims.objectCreate(webshims.wsPopover, undefined, options.messagePopover);
549
559
  var boundHide = api.hide.bind(api);
550
-
560
+
551
561
  api.element.addClass('validity-alert').attr({role: 'alert'});
552
562
  $.extend(api, {
553
563
  hideDelay: 5000,
554
564
  showFor: function(elem, message, noFocusElem, noBubble){
555
-
565
+
556
566
  elem = $(elem).getNativeElement();
557
567
  this.clear();
558
568
  this.hide();
559
569
  if(!noBubble){
560
570
  this.getMessage(elem, message);
561
-
571
+
562
572
  this.show(elem);
563
573
  if(this.hideDelay){
564
574
  this.timers.delayedHide = setTimeout(boundHide, this.hideDelay);
565
575
  }
566
-
576
+
567
577
  }
568
-
578
+
569
579
  if(!noFocusElem){
570
580
  this.setFocus(elem);
571
581
  }
@@ -583,21 +593,21 @@ webshims.register('form-validation', function($, webshims, window, document, und
583
593
  }
584
594
  api.element.triggerHandler('pospopover');
585
595
  };
586
-
596
+
587
597
  if(scrollTop > elemTop){
588
598
  webshims.scrollRoot.animate(
589
- {scrollTop: elemTop - 5 - (options.viewportOffset || 0)},
599
+ {scrollTop: elemTop - 5 - (options.viewportOffset || 0)},
590
600
  {
591
- queue: false,
601
+ queue: false,
592
602
  duration: Math.max( Math.min( 600, (scrollTop - elemTop) * 1.5 ), 80 ),
593
603
  complete: focus
594
604
  }
595
605
  );
596
-
606
+
597
607
  } else {
598
608
  focus();
599
609
  }
600
-
610
+
601
611
  },
602
612
  getMessage: function(elem, message){
603
613
  if (!message) {
@@ -610,16 +620,16 @@ webshims.register('form-validation', function($, webshims, window, document, und
610
620
  }
611
621
  }
612
622
  });
613
-
614
-
623
+
624
+
615
625
  return api;
616
626
  })();
617
-
627
+
618
628
 
619
629
  if(!iVal.fx || !fx[iVal.fx]){
620
630
  iVal.fx = 'slide';
621
631
  }
622
-
632
+
623
633
  if(!$.fn[fx[iVal.fx].show]){
624
634
  iVal.fx = 'no';
625
635
  }
@@ -629,10 +639,10 @@ webshims.register('form-validation', function($, webshims, window, document, und
629
639
  if(!fieldWrapper){
630
640
  fieldWrapper = this.getFieldWrapper(elem);
631
641
  }
632
- var errorBox = $('div.'+errorBoxClass, fieldWrapper);
633
-
642
+ var errorBox = $('.'+errorBoxClass, fieldWrapper);
643
+
634
644
  if(!errorBox.length){
635
- errorBox = $('<div class="'+ errorBoxClass +'" hidden="hidden" style="display: none;">');
645
+ errorBox = $('<'+errorBoxWrapper+' class="'+ errorBoxClass +'" hidden="hidden" style="display: none;">');
636
646
  fieldWrapper.append(errorBox);
637
647
  }
638
648
  if(!errorBox.prop('id')){
@@ -742,7 +752,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
742
752
  fieldWrapper[hasVal ? 'addClass' : 'removeClass'](successWrapperClass);
743
753
  };
744
754
  var evt = changeTypes[type] ? 'change' : 'blur';
745
-
755
+
746
756
  $(elem).off('.recheckvalid').on(evt+'.recheckinvalid', check);
747
757
  check();
748
758
  },
@@ -770,7 +780,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
770
780
  errorBox[fx[iVal.fx].hide]().each(afterHide);
771
781
  }
772
782
  }
773
-
783
+
774
784
  }
775
785
  if(!reset && !invalid){
776
786
  this.addSuccess(elem, fieldWrapper);
@@ -788,7 +798,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
788
798
  .off('.recheckinvalid')
789
799
  .on('input.recheckinvalid', function(){
790
800
  clearTimeout(timer);
791
- timer = setTimeout(throttle, iVal.recheckDelay);
801
+ timer = setTimeout(throttle, iVal.recheckDelay);
792
802
  })
793
803
  .on('focusout.recheckinvalid', function(){
794
804
  clearTimeout(timer);
@@ -805,7 +815,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
805
815
  if(box.stop){
806
816
  box.stop(true, true);
807
817
  }
808
- box.html('<p class="'+ errorMessageClass +'">'+ message +'</p>');
818
+ box.html('<'+ errorMessageWrapper +' class="'+ errorMessageClass +'">'+ message +'</'+ errorMessageWrapper +'>');
809
819
  box.message = message;
810
820
  fieldWrapper.addClass(invalidWrapperClass).removeClass(successWrapperClass);
811
821
  this.recheckInvalidInput(elem);
@@ -818,12 +828,12 @@ webshims.register('form-validation', function($, webshims, window, document, und
818
828
  .removeAttr('hidden')
819
829
  [fx[iVal.fx].show]()
820
830
  ;
821
-
831
+
822
832
  }
823
833
  }
824
834
  fieldWrapper.removeClass(successWrapperClass);
825
835
  $(elem).off('.recheckvalid');
826
-
836
+
827
837
  return fieldWrapper;
828
838
  },
829
839
  reset: function(elem){
@@ -837,7 +847,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
837
847
  }
838
848
  }
839
849
  };
840
-
850
+
841
851
  $(document.body)
842
852
  .on({
843
853
  'changedvaliditystate': function(e){
@@ -862,7 +872,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
862
872
  if(form.is(iVal.sel)){
863
873
  e.preventDefault();
864
874
  if(iVal.handleBubble != 'none'){
865
- webshims.validityAlert.showFor( e.target, false, false, iVal.handleBubble == 'hide' );
875
+ webshims.validityAlert.showFor( e.target, false, false, iVal.handleBubble == 'hide' );
866
876
  }
867
877
  }
868
878
  }
@@ -875,25 +885,25 @@ webshims.register('form-validation', function($, webshims, window, document, und
875
885
  }
876
886
  })
877
887
  ;
878
-
879
888
 
880
-
889
+
890
+
881
891
  if(/[\s\:\>\~\+]/.test(iVal.sel || '')){
882
892
  webshims.error('please use a simple selector for iVal.sel: for example .validate');
883
893
  }
884
-
894
+
885
895
  if(options.replaceValidationUI){
886
896
  $(document).on('firstinvalid', function(e){
887
897
  if(!e.isDefaultPrevented()){
888
898
  e.preventDefault();
889
-
899
+
890
900
  setTimeout(function(){
891
- webshims.validityAlert.showFor( e.target );
901
+ webshims.validityAlert.showFor( e.target );
892
902
  }, 4);
893
903
  }
894
904
  });
895
905
  }
896
-
906
+
897
907
  /* extension, but also used to fix native implementation workaround/bugfixes */
898
908
  (function(){
899
909
  var firstEvent,
@@ -901,12 +911,12 @@ webshims.register('form-validation', function($, webshims, window, document, und
901
911
  stopSubmitTimer,
902
912
  stop
903
913
  ;
904
-
914
+
905
915
  $(document).on('invalid', function(e){
906
916
  if(e.wrongWebkitInvalid || stop){return;}
907
917
  var jElm = $(e.target);
908
-
909
-
918
+
919
+
910
920
  if(!firstEvent){
911
921
  //trigger firstinvalid
912
922
  firstEvent = $.Event('firstinvalid');
@@ -918,7 +928,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
918
928
  e.preventDefault();
919
929
  }
920
930
  invalids.push(e.target);
921
- e.extraData = 'fix';
931
+ e.extraData = 'fix';
922
932
  clearTimeout(stopSubmitTimer);
923
933
  stopSubmitTimer = setTimeout(function(){
924
934
  var lastEvent = {type: 'lastinvalid', cancelable: false, invalidlist: $(invalids)};
@@ -939,65 +949,13 @@ webshims.register('form-validation', function($, webshims, window, document, und
939
949
  });
940
950
  })();
941
951
 
942
- if(!options.noInputmodeFix && document.addEventListener && Modernizr.inputtypes && Modernizr.inputtypes.tel && ua.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ){
943
- var removeListener = function(elem){
944
- elem.removeEventListener('blur', switchBack, true);
945
- };
946
- var needsPattern = (/iphone|ipod/i).test(ua);
947
- var regPattern = /^[\\d\*|\[0\-9\]]*[\+|\{\d*\,\d*\}|*]*$/;
948
- var stopPatterns = needsPattern || (/ipad|ios/i).test(ua) ?
949
- {
950
- '[0-9]*': 1,
951
- '\\d*': 1
952
- } :
953
- false
954
- ;
955
- var switchBack = function(e){
956
- removeListener(e.target);
957
- e.target.type = 'text';
958
- };
959
- var removeDocListener = function(){
960
- document.removeEventListener('focus', addFix, true);
961
- document.removeEventListener('touchstart', addFix, true);
962
- };
963
- var allowSwitchByPattern = function(elem){
964
- var pattern;
965
- var switchAllowed = true;
966
-
967
- if(stopPatterns){
968
- pattern = elem.getAttribute('pattern') || '';
969
- if(stopPatterns[pattern] || (needsPattern && (!pattern || !regPattern.test(pattern)))){
970
- switchAllowed = false;
971
- }
972
- }
973
-
974
- return switchAllowed;
975
- };
976
-
977
- var addFix = function(e){
978
- if(e.target.type == 'text' && e.target.getAttribute('inputmode') == 'numeric' && allowSwitchByPattern(e.target)){
979
- try{
980
- removeListener(e.target);
981
- e.target.addEventListener('blur', switchBack, true);
982
- e.target.type = 'tel';
983
- } catch (er){
984
- removeDocListener();
985
- }
986
- }
987
- };
988
-
989
- document.addEventListener('focus', addFix, true);
990
- document.addEventListener('touchstart', addFix, true);
991
- }
992
-
993
952
  function getFileNames(file){
994
953
  return file.name;
995
954
  }
996
955
 
997
-
998
-
999
956
  function customFile(){
1000
957
  if($.data(this, 'wsCustomFile')){return;}
958
+
1001
959
  var map = Array.prototype.map;
1002
960
  var $module = $(this);
1003
961
  var $file = $('input[type="file"]', $module);
@@ -1014,13 +972,28 @@ webshims.register('form-validation', function($, webshims, window, document, und
1014
972
  }
1015
973
  };
1016
974
 
975
+
1017
976
  $.data(this, 'wsCustomFile', {showSelected: showSelected});
1018
977
  $('button', $module).attr('tabindex', '-1');
1019
978
 
1020
- $file.on('change.webshim', showSelected).each(showSelected);
1021
- $file.jProp('form').on('reset', function(){
1022
- setTimeout(showSelected);
1023
- });
979
+ $file
980
+ .on('change.webshim', showSelected)
981
+ .each(showSelected)
982
+ .jProp('form')
983
+ .on('reset', function(){
984
+ setTimeout(showSelected);
985
+ })
986
+ ;
987
+ if(isIE){
988
+ $('<div class="ws-coverfile" />')
989
+ .insertAfter($file)
990
+ .on('click.webshim', function(e){
991
+ e.stopImmediatePropagation();
992
+ $file.trigger('click');
993
+ })
994
+ ;
995
+ }
996
+
1024
997
  }
1025
998
 
1026
999
  webshims.addReady(function(context, contextElem){
@@ -1028,18 +1001,22 @@ webshims.register('form-validation', function($, webshims, window, document, und
1028
1001
  });
1029
1002
 
1030
1003
  addModule('form-fixrangechange', {
1031
- test: !(!$.event.special.change && !$.event.special.input && Modernizr.inputtypes && Modernizr.inputtypes.range && options.fixRangeChange)
1004
+ test: !(!$.event.special.change && !$.event.special.input && support.inputtypes.range && options.fixRangeChange)
1005
+ });
1006
+
1007
+ addModule('form-inputmode', {
1008
+ test: !(!options.noInputmodeFix && document.addEventListener && support.inputtypes.number && ua.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) )
1032
1009
  });
1033
1010
 
1034
1011
  addModule('form-combat', {
1035
1012
  d: ['dom-support'],
1036
1013
  test: !(($.mobile && ($.mobile.selectmenu || $.mobile.checkboxradio)) || ($.ui && $.ui.selectmenu) || $.fn.select2 || $.fn.chosen || $.fn.selectpicker || $.fn.selectBoxIt)
1037
1014
  });
1038
-
1015
+
1039
1016
  addModule('position', {
1040
1017
  src: 'plugins/jquery.ui.position.js',
1041
1018
  test: !!($.position && $.position.getScrollInfo)
1042
1019
  });
1043
-
1044
- loader.loadList(['form-combat', 'position', 'form-fixrangechange']);
1020
+
1021
+ loader.loadList(['form-combat', 'position', 'form-fixrangechange', 'form-inputmode']);
1045
1022
  });
@@ -111,6 +111,7 @@
111
111
  content: "\e610";
112
112
  }
113
113
  }
114
+
114
115
  %icon-share {
115
116
  @extend %iconbase;
116
117
  &:before {
@@ -165,12 +166,14 @@
165
166
  content: "\e602";
166
167
  }
167
168
  }
169
+
168
170
  %icon-previous {
169
171
  @extend %iconbase;
170
172
  &:before {
171
173
  content: "\e603";
172
174
  }
173
175
  }
176
+
174
177
  %icon-olist {
175
178
  @extend %iconbase;
176
179
  &:before {