webshims-rails 1.13.0 → 1.14.1
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/extras/modernizr-custom.js +0 -0
- data/vendor/assets/javascripts/webshims/polyfiller.js +45 -26
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/color-picker.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +33 -2
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +82 -29
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +115 -43
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +115 -43
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +33 -3
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +65 -4
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +33 -3
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +492 -2580
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +8314 -1432
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +1642 -556
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +50 -39
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +65 -4
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +32 -2
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +33 -3
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +66 -5
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +82 -29
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +1 -0
- data/vendor/assets/javascripts/webshims/shims/details.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +32 -2
- data/vendor/assets/javascripts/webshims/shims/es5.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/excanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/filereader.js +441 -362
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +19 -7
- data/vendor/assets/javascripts/webshims/shims/form-core.js +33 -2
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +50 -27
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +49 -38
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +45 -14
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +105 -7
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +212 -134
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +15 -12
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-cs.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-BR.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/b.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/c.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +3 -3
- data/vendor/assets/javascripts/webshims/shims/jme/p.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ChangeLog.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ReadMe.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/mappoint.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/picker.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/rangearrows.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/js/moxie.js +7994 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
- data/vendor/assets/javascripts/webshims/shims/picture.js +50 -43
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/promise.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/config.rb +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +7 -2
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +219 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +115 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +31 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +583 -0
- 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 +736 -0
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +105 -21
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +91 -19
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/swf/filereader.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/track.js +0 -0
- metadata +13 -2
@@ -75,20 +75,27 @@ webshims.register('form-combat', function($,webshims){
|
|
75
75
|
shadow: 'label',
|
76
76
|
shadowFocus: 'element'
|
77
77
|
});
|
78
|
-
|
79
|
-
|
78
|
+
|
79
|
+
var uiSelect = {
|
80
80
|
shadow: 'button',
|
81
|
-
shadowFocus: function(data
|
81
|
+
shadowFocus: function(data){
|
82
82
|
return data.options.nativeMenu ? data.element : data.button;
|
83
83
|
},
|
84
84
|
_create: function(elem, shadow, shadowFocus, widgetData){
|
85
|
-
|
85
|
+
var menuName;
|
86
|
+
if(('menu' in widgetData)){
|
87
|
+
menuName = 'menuName';
|
88
|
+
} else if(('listbox' in widgetData)){
|
89
|
+
menuName = 'listbox';
|
90
|
+
}
|
91
|
+
if(menuName){
|
92
|
+
|
86
93
|
var onValidate = function(e){
|
87
|
-
if (!webshims.wsPopover.isInElement([elem, shadow, shadowFocus, $(widgetData
|
94
|
+
if (!webshims.wsPopover.isInElement([elem, shadow, shadowFocus, $(widgetData[menuName]).parent()], e.target)) {
|
88
95
|
$(elem).trigger('updatevalidation.webshims');
|
89
96
|
}
|
90
97
|
};
|
91
|
-
|
98
|
+
|
92
99
|
$(shadow).on('wsallowinstantvalidation', function(e, data){
|
93
100
|
if(data.type == 'focusout' && data.target != elem && widgetData.isOpen){
|
94
101
|
setTimeout(function(){
|
@@ -99,7 +106,12 @@ webshims.register('form-combat', function($,webshims){
|
|
99
106
|
});
|
100
107
|
}
|
101
108
|
}
|
102
|
-
}
|
109
|
+
};
|
110
|
+
|
111
|
+
addReplacement('selectmenu', 'mobileSelectmenu', uiSelect);
|
112
|
+
|
113
|
+
addReplacement('selectmenu', 'uiSelectmenu', uiSelect);
|
114
|
+
|
103
115
|
|
104
116
|
function find(context){
|
105
117
|
$('select:not(.ui-select-nativeonly), input[type="radio"], input[type="checkbox"]', context).each(find.detectReplacement);
|
@@ -142,6 +142,8 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
142
142
|
addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
|
143
143
|
|
144
144
|
addModule('form-validators', $.extend({}, formExtras));
|
145
|
+
|
146
|
+
|
145
147
|
|
146
148
|
if($.expr.filters){
|
147
149
|
extendSels();
|
@@ -262,13 +264,22 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
262
264
|
};
|
263
265
|
|
264
266
|
$.event.special.valuevalidation = {
|
267
|
+
setup: function(){
|
268
|
+
webshims.error('valuevalidation was renamed to validatevalue!');
|
269
|
+
}
|
270
|
+
};
|
271
|
+
|
272
|
+
|
273
|
+
$.event.special.validatevalue = {
|
265
274
|
setup: function(){
|
266
275
|
var data = $(this).data() || $.data(this, {});
|
267
|
-
if(!('
|
268
|
-
data.
|
276
|
+
if(!('validatevalue' in data)){
|
277
|
+
data.validatevalue = true;
|
269
278
|
}
|
270
279
|
}
|
271
280
|
};
|
281
|
+
|
282
|
+
|
272
283
|
|
273
284
|
$(document).on('focusin.lazyloadvalidation', function(e){
|
274
285
|
if('form' in e.target){
|
@@ -281,4 +292,24 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
281
292
|
if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
|
282
293
|
webshims.isReady('form-number-date-ui', true);
|
283
294
|
}
|
295
|
+
|
296
|
+
webshims.ready('DOM', function(){
|
297
|
+
if(document.querySelector('.ws-custom-file')){
|
298
|
+
webshims.reTest(['form-validation']);
|
299
|
+
}
|
300
|
+
});
|
301
|
+
|
302
|
+
$(function(){
|
303
|
+
var fileReaderReady = ('FileReader' in window && 'FormData' in window);
|
304
|
+
if(!fileReaderReady){
|
305
|
+
webshims.addReady(function(context){
|
306
|
+
if(!fileReaderReady && !modules.filereader.loaded && !modules.moxie.loaded){
|
307
|
+
if(context.querySelector('input.ws-filereader')){
|
308
|
+
webshims.reTest(['filereader', 'moxie']);
|
309
|
+
fileReaderReady = true;
|
310
|
+
}
|
311
|
+
}
|
312
|
+
});
|
313
|
+
}
|
314
|
+
});
|
284
315
|
});
|
File without changes
|
File without changes
|
File without changes
|
@@ -216,7 +216,7 @@ webshims.register('form-message', function($, webshims, window, document, undefi
|
|
216
216
|
if(message && message.indexOf('{%') != -1){
|
217
217
|
['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
|
218
218
|
if(message.indexOf('{%'+attr) === -1){return;}
|
219
|
-
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
|
219
|
+
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr) || $.attr(elem, attr) || '') || '';
|
220
220
|
val = ''+val;
|
221
221
|
|
222
222
|
|
File without changes
|
File without changes
|
@@ -55,6 +55,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
55
55
|
;
|
56
56
|
}
|
57
57
|
};
|
58
|
+
var numericType = Modernizr.inputtypes.tel && navigator.userAgent.indexOf('Mobile') != -1 && !('inputMode' in document.createElement('input') && !('inputmode' in document.createElement('input'))) ?
|
59
|
+
'tel' : 'text';
|
58
60
|
var splitInputs = {
|
59
61
|
date: {
|
60
62
|
_create: function(opts){
|
@@ -65,18 +67,18 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
65
67
|
if(opts.yearSelect){
|
66
68
|
obj.splits.push($('<select class="yy"></select>')[0]);
|
67
69
|
} else {
|
68
|
-
obj.splits.push($('<input type="
|
70
|
+
obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
|
69
71
|
}
|
70
72
|
|
71
73
|
if(opts.monthSelect){
|
72
74
|
obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
|
73
75
|
} else {
|
74
|
-
obj.splits.push($('<input type="
|
76
|
+
obj.splits.push($('<input type="'+ numericType +'" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
75
77
|
}
|
76
78
|
if(opts.daySelect){
|
77
79
|
obj.splits.push($(daySelect)[0]);
|
78
80
|
} else {
|
79
|
-
obj.splits.push($('<input type="
|
81
|
+
obj.splits.push($('<input type="'+ numericType +'" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
80
82
|
}
|
81
83
|
|
82
84
|
obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
|
@@ -111,7 +113,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
111
113
|
if(opts.yearSelect){
|
112
114
|
obj.splits.push($('<select class="yy"></select>')[0]);
|
113
115
|
} else {
|
114
|
-
obj.splits.push($('<input type="
|
116
|
+
obj.splits.push($('<input type="'+ numericType +'" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
|
115
117
|
}
|
116
118
|
|
117
119
|
if(opts.monthSelect){
|
@@ -119,7 +121,10 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
119
121
|
} else {
|
120
122
|
obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
|
121
123
|
if(opts.onlyMonthDigits){
|
122
|
-
$(
|
124
|
+
$().attr({inputmode: 'numeric', size: 2, maxlength: 2});
|
125
|
+
try {
|
126
|
+
obj.splits[1].setAttribute('type', numericType);
|
127
|
+
} catch(e){}
|
123
128
|
}
|
124
129
|
}
|
125
130
|
|
@@ -142,7 +147,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
142
147
|
}
|
143
148
|
}
|
144
149
|
};
|
145
|
-
|
150
|
+
|
146
151
|
var nowDate = new Date(new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 ));
|
147
152
|
var nowYear = nowDate.getFullYear();
|
148
153
|
nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), nowDate.getHours()).getTime();
|
@@ -962,7 +967,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
962
967
|
} else if(!isNaN(this.maxAsNumber) && start > this.maxAsNumber){
|
963
968
|
start = this.maxAsNumber;
|
964
969
|
}
|
965
|
-
|
970
|
+
try {
|
971
|
+
this.elemHelper.prop('valueAsNumber', start);
|
972
|
+
} catch(e){
|
973
|
+
webshims.warn('valueAsNumber set: '+e);
|
974
|
+
}
|
966
975
|
this.options.defValue = this.elemHelper.prop('value');
|
967
976
|
},
|
968
977
|
reorderInputs: function(){
|
@@ -986,7 +995,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
986
995
|
_beforeValue: function(val){
|
987
996
|
this.valueAsNumber = this.asNumber(val);
|
988
997
|
this.options.value = val;
|
989
|
-
|
998
|
+
|
990
999
|
if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
|
991
1000
|
this._setStartInRange();
|
992
1001
|
} else {
|
@@ -1102,9 +1111,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1102
1111
|
touchEnd = function(e){
|
1103
1112
|
var ret, touch;
|
1104
1113
|
e = e.originalEvent || {};
|
1105
|
-
$(this).off('touchend', touchEnd);
|
1114
|
+
$(this).off('touchend touchcancel', touchEnd);
|
1106
1115
|
var changedTouches = e.changedTouches || e.touches;
|
1107
|
-
if(!touchData || !changedTouches || changedTouches.length != 1){
|
1116
|
+
if(e.type == 'touchcancel' || !touchData || !changedTouches || changedTouches.length != 1){
|
1108
1117
|
return;
|
1109
1118
|
}
|
1110
1119
|
|
@@ -1135,7 +1144,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1135
1144
|
y: touch.pageY,
|
1136
1145
|
now: Date.now()
|
1137
1146
|
};
|
1138
|
-
elemTarget.on('touchend', touchEnd);
|
1147
|
+
elemTarget.on('touchend touchcancel', touchEnd);
|
1139
1148
|
};
|
1140
1149
|
|
1141
1150
|
this.each(function(){
|
@@ -1249,7 +1258,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1249
1258
|
cancel: function(val, popover, data){
|
1250
1259
|
if(!data.options.inlinePicker){
|
1251
1260
|
popover.stopOpen = true;
|
1252
|
-
if(assumeVirtualKeyBoard){
|
1261
|
+
if(!popover.openedByFocus && assumeVirtualKeyBoard){
|
1253
1262
|
$('button', data.buttonWrapper).trigger('focus');
|
1254
1263
|
} else {
|
1255
1264
|
data.element.getShadowFocusElement().trigger('focus');
|
@@ -1349,14 +1358,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1349
1358
|
var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, $.extend(options.popover || {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element}));
|
1350
1359
|
var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
|
1351
1360
|
|
1352
|
-
if(options.widgetPosition){
|
1353
|
-
webshims.error('options.widgetPosition was removed use options.popover.position instead');
|
1354
|
-
}
|
1355
|
-
|
1356
|
-
if(options.openOnFocus && popover.options && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
|
1357
|
-
webshims.error('openOnFocus and popover.appendTo "auto/element" can prduce a11y problems try to change appendTo to body or similiar or use openOnMouseFocus instead');
|
1358
|
-
}
|
1359
|
-
|
1360
1361
|
var showPickerContent = function(){
|
1361
1362
|
(picker[data.type].showPickerContent || picker.showPickerContent)(data, popover);
|
1362
1363
|
};
|
@@ -1425,9 +1426,28 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1425
1426
|
stopPropagation.apply(this, arguments);
|
1426
1427
|
popover.preventBlur();
|
1427
1428
|
},
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1429
|
+
keydown: function(e){
|
1430
|
+
if(e.keyCode == 40 && e.altKey){
|
1431
|
+
open();
|
1432
|
+
}
|
1433
|
+
},
|
1434
|
+
'focus mousedown': (function(){
|
1435
|
+
var allowClose = true;
|
1436
|
+
var reset = function(){
|
1437
|
+
allowClose = true;
|
1438
|
+
};
|
1439
|
+
return function(e){
|
1440
|
+
if(e.type == 'mousedown'){
|
1441
|
+
allowClose = false;
|
1442
|
+
setTimeout(reset);
|
1443
|
+
}
|
1444
|
+
if(e.type == 'focus' && allowClose && options.openOnFocus && popover.openedByFocus && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
|
1445
|
+
popover.hide();
|
1446
|
+
} else {
|
1447
|
+
popover.preventBlur();
|
1448
|
+
}
|
1449
|
+
};
|
1450
|
+
})()
|
1431
1451
|
})
|
1432
1452
|
;
|
1433
1453
|
|
@@ -1674,6 +1694,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1674
1694
|
}
|
1675
1695
|
|
1676
1696
|
};
|
1697
|
+
oriStyleO.webkitAppearance = 'none';
|
1677
1698
|
data.element.onWSOff('updateshadowdom', updateStyles, true);
|
1678
1699
|
};
|
1679
1700
|
|
@@ -1681,13 +1702,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1681
1702
|
var implementType = function(){
|
1682
1703
|
|
1683
1704
|
var type = $.prop(this, 'type');
|
1684
|
-
|
1685
1705
|
var i, opts, data, optsName, labels, cNames, hasInitialFocus;
|
1686
|
-
|
1706
|
+
|
1707
|
+
if(inputTypes[type] && webshims.implement(this, 'inputwidgets') && (!modernizrInputTypes[type] || !$(this).hasClass('ws-noreplace'))){
|
1687
1708
|
data = {};
|
1688
1709
|
optsName = type;
|
1689
1710
|
hasInitialFocus = $(this).is(':focus');
|
1690
1711
|
labels = $(this).jProp('labels');
|
1712
|
+
|
1691
1713
|
opts = $.extend(webshims.getOptions(this, type, [options.widgets, options[type], $($.prop(this, 'form')).data(type)]), {
|
1692
1714
|
orig: this,
|
1693
1715
|
type: type,
|
@@ -1720,6 +1742,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1720
1742
|
opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
|
1721
1743
|
}
|
1722
1744
|
}
|
1745
|
+
|
1723
1746
|
if(opts.formatMonthNames){
|
1724
1747
|
webshims.error('formatMonthNames was renamded to monthNames');
|
1725
1748
|
}
|
@@ -1743,11 +1766,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1743
1766
|
cNames = cNames.replace('form-control', '');
|
1744
1767
|
}
|
1745
1768
|
|
1746
|
-
data.shim.element.on('change input', stopPropagation).addClass(cNames);
|
1769
|
+
data.shim.element.on('change input', stopPropagation).addClass(cNames+' '+webshims.shadowClass);
|
1747
1770
|
|
1748
1771
|
if(data.shim.buttonWrapper){
|
1749
1772
|
|
1750
|
-
data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length));
|
1773
|
+
data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length)+' '+webshims.shadowClass);
|
1751
1774
|
|
1752
1775
|
if(data.shim.buttonWrapper.filter(isVisible).length){
|
1753
1776
|
data.shim.element.addClass('has-input-buttons');
|
@@ -4,17 +4,21 @@ webshims.inputTypes = webshims.inputTypes || {};
|
|
4
4
|
//some helper-functions
|
5
5
|
var cfg = webshims.cfg.forms;
|
6
6
|
var bugs = webshims.bugs;
|
7
|
-
|
8
|
-
var
|
9
|
-
return (typeof string == 'number' || (string && string == string * 1));
|
10
|
-
},
|
11
|
-
typeModels = webshims.inputTypes,
|
7
|
+
var splitReg = /\s*,\s*/g;
|
8
|
+
var typeModels = webshims.inputTypes,
|
12
9
|
checkTypes = {
|
13
10
|
radio: 1,
|
14
11
|
checkbox: 1
|
15
12
|
},
|
16
|
-
getType = function(
|
17
|
-
|
13
|
+
getType = function(){
|
14
|
+
var elem = this;
|
15
|
+
var type = (elem.getAttribute('type') || '').toLowerCase();
|
16
|
+
return (webshims.inputTypes[type]) ? type : elem.type;
|
17
|
+
},
|
18
|
+
cacheType = function(cache, input){
|
19
|
+
if(!('type' in cache)){
|
20
|
+
cache.type = getType.call(input);
|
21
|
+
}
|
18
22
|
}
|
19
23
|
;
|
20
24
|
|
@@ -94,6 +98,7 @@ var isPlaceholderOptionSelected = function(select){
|
|
94
98
|
};
|
95
99
|
|
96
100
|
var emptyJ = $([]);
|
101
|
+
//TODO: cache + perftest
|
97
102
|
var getGroupElements = function(elem){
|
98
103
|
elem = $(elem);
|
99
104
|
var name, form;
|
@@ -118,9 +123,7 @@ var validityRules = {
|
|
118
123
|
valueMissing: function(input, val, cache){
|
119
124
|
if(!input.prop('required')){return false;}
|
120
125
|
var ret = false;
|
121
|
-
|
122
|
-
cache.type = getType(input[0]);
|
123
|
-
}
|
126
|
+
cacheType(cache, input[0]);
|
124
127
|
if(cache.nodeName == 'select'){
|
125
128
|
ret = (!val && (input[0].selectedIndex < 0 || isPlaceholderOptionSelected(input[0]) ));
|
126
129
|
} else if(checkTypes[cache.type]){
|
@@ -131,21 +134,32 @@ var validityRules = {
|
|
131
134
|
return ret;
|
132
135
|
},
|
133
136
|
patternMismatch: function(input, val, cache) {
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
137
|
+
var i;
|
138
|
+
var ret = false;
|
139
|
+
if(val === '' || cache.nodeName == 'select'){return ret;}
|
140
|
+
|
141
|
+
cacheType(cache, input[0]);
|
142
|
+
|
143
|
+
if(!patternTypes[cache.type]){return ret;}
|
139
144
|
var pattern = input.attr('pattern');
|
140
|
-
if(!pattern){return
|
145
|
+
if(!pattern){return ret;}
|
141
146
|
try {
|
142
147
|
pattern = new RegExp('^(?:' + pattern + ')$');
|
143
148
|
} catch(er){
|
144
149
|
webshims.error('invalid pattern value: "'+ pattern +'" | '+ er);
|
145
|
-
pattern =
|
150
|
+
pattern = ret;
|
151
|
+
}
|
152
|
+
if(!pattern){return ret;}
|
153
|
+
|
154
|
+
val = cache.type == 'email' && input.prop('multiple') ? val.split(splitReg) : [val];
|
155
|
+
|
156
|
+
for(i = 0; i < val.length; i++){
|
157
|
+
if(!pattern.test(val[i])){
|
158
|
+
ret = true;
|
159
|
+
break;
|
160
|
+
}
|
146
161
|
}
|
147
|
-
|
148
|
-
return !(pattern.test(val));
|
162
|
+
return ret;
|
149
163
|
}
|
150
164
|
}
|
151
165
|
;
|
@@ -154,9 +168,9 @@ $.each({tooShort: ['minLength', -1], tooLong: ['maxLength', 1]}, function(name,
|
|
154
168
|
validityRules[name] = function(input, val, cache){
|
155
169
|
//defaultValue is not the same as dirty flag, but very similiar
|
156
170
|
if(cache.nodeName == 'select' || input.prop('defaultValue') == val){return false;}
|
157
|
-
|
158
|
-
|
159
|
-
|
171
|
+
|
172
|
+
cacheType(cache, input[0]);
|
173
|
+
|
160
174
|
if(!lengthTypes[cache.type]){return false;}
|
161
175
|
var prop = input.prop(props[0]);
|
162
176
|
|
@@ -168,9 +182,8 @@ $.each({typeMismatch: 'mismatch', badInput: 'bad'}, function(name, fn){
|
|
168
182
|
validityRules[name] = function (input, val, cache){
|
169
183
|
if(val === '' || cache.nodeName == 'select'){return false;}
|
170
184
|
var ret = false;
|
171
|
-
|
172
|
-
|
173
|
-
}
|
185
|
+
|
186
|
+
cacheType(cache, input[0]);
|
174
187
|
|
175
188
|
if(typeModels[cache.type] && typeModels[cache.type][fn]){
|
176
189
|
ret = typeModels[cache.type][fn](val, input);
|
@@ -238,6 +251,7 @@ $.extend($.event.special.submit, {
|
|
238
251
|
return submitSetup.apply(this, arguments);
|
239
252
|
}
|
240
253
|
});
|
254
|
+
|
241
255
|
webshims.ready('form-shim-extend2 WINDOWLOAD', function(){
|
242
256
|
$(window).on('invalid', $.noop);
|
243
257
|
});
|
@@ -247,15 +261,16 @@ webshims.addInputType('email', {
|
|
247
261
|
mismatch: (function(){
|
248
262
|
//taken from http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
|
249
263
|
var test = cfg.emailReg || /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
250
|
-
var splitReg = /\s*,\s*/g;
|
251
264
|
return function(val, input){
|
265
|
+
var i;
|
252
266
|
var ret = false;
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
267
|
+
if(val){
|
268
|
+
val = input.prop('multiple') ? val.split(splitReg) : [val];
|
269
|
+
for(i = 0; i < val.length; i++){
|
270
|
+
if(!test.test(val[i])){
|
271
|
+
ret = true;
|
272
|
+
break;
|
273
|
+
}
|
259
274
|
}
|
260
275
|
}
|
261
276
|
return ret;
|
@@ -268,18 +283,14 @@ webshims.addInputType('url', {
|
|
268
283
|
//taken from scott gonzales
|
269
284
|
var test = cfg.urlReg || /^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;
|
270
285
|
return function(val){
|
271
|
-
return !test.test(val);
|
286
|
+
return val && !test.test(val);
|
272
287
|
};
|
273
288
|
})()
|
274
289
|
});
|
275
290
|
|
276
291
|
webshims.defineNodeNameProperty('input', 'type', {
|
277
292
|
prop: {
|
278
|
-
get:
|
279
|
-
var elem = this;
|
280
|
-
var type = (elem.getAttribute('type') || '').toLowerCase();
|
281
|
-
return (webshims.inputTypes[type]) ? type : elem.type;
|
282
|
-
}
|
293
|
+
get: getType
|
283
294
|
}
|
284
295
|
});
|
285
296
|
|