webshims-rails 1.11.6.1 → 1.12.0
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 +126 -72
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +9 -4
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +32 -26
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +25 -4
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +9 -3
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +9 -4
- 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 +36 -30
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +25 -4
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +9 -3
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +13 -6
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +156 -143
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +97 -84
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +2 -4
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +956 -2819
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +73 -67
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +75 -71
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +118 -89
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +119 -91
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +62 -65
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +73 -67
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +61 -63
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +3 -6
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +22 -12
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +63 -67
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +59 -59
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +1915 -0
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +817 -0
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +71 -63
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +72 -65
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +71 -63
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +2343 -0
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +897 -0
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +59 -59
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +119 -91
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +120 -93
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +74 -69
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +73 -67
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +157 -145
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +58 -57
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +0 -1
- data/vendor/assets/javascripts/webshims/shims/form-core.js +12 -3
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +4 -3
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +20 -3
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +78 -71
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +21 -10
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +39 -27
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +173 -128
- data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-ch-ZN.js → formcfg-ch-CN.js} +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -2
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +65 -0
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +18 -11
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +221 -153
- 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/_extends.scss +5 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +273 -177
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +113 -98
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +114 -88
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -2
- metadata +10 -7
- data/vendor/assets/javascripts/webshims/extras/mousepress.js +0 -60
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Thumbs.db +0 -0
- data/vendor/assets/javascripts/webshims/shims/json-storage.js +0 -316
- data/vendor/assets/javascripts/webshims/shims/mediagroup.js +0 -29
@@ -40,34 +40,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
40
40
|
webshims.ready('WINDOWLOAD', switch$);
|
41
41
|
|
42
42
|
}
|
43
|
-
// (function(){
|
44
|
-
// var hostNames = {
|
45
|
-
// 'afarkas.github.io': 1,
|
46
|
-
// localhost: 1,
|
47
|
-
// '127.0.0.1': 1
|
48
|
-
// };
|
49
|
-
//
|
50
|
-
// if( webshims.cfg.debug && (hostNames[location.hostname] || location.protocol == 'file:') ){
|
51
|
-
// var list = $('<ul class="webshims-debug-list" />');
|
52
|
-
// webshims.errorLog.push = function(message){
|
53
|
-
// list.appendTo('body');
|
54
|
-
// $('<li style="display: none;">'+ message +'</li>')
|
55
|
-
// .appendTo(list)
|
56
|
-
// .slideDown()
|
57
|
-
// .delay(3000)
|
58
|
-
// .slideUp(function(){
|
59
|
-
// $(this).remove();
|
60
|
-
// if(!$('li', list).length){
|
61
|
-
// list.detach();
|
62
|
-
// }
|
63
|
-
// })
|
64
|
-
// ;
|
65
|
-
// };
|
66
|
-
// $.each(webshims.errorLog, function(i, message){
|
67
|
-
// webshims.errorLog.push(message);
|
68
|
-
// });
|
69
|
-
// }
|
70
|
-
// })();
|
71
43
|
|
72
44
|
//shortcus
|
73
45
|
var modules = webshims.modules;
|
@@ -509,11 +481,22 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
509
481
|
});
|
510
482
|
},
|
511
483
|
getOptions: (function(){
|
484
|
+
var normalName = /\-([a-z])/g;
|
512
485
|
var regs = {};
|
486
|
+
var nameRegs = {};
|
513
487
|
var regFn = function(f, upper){
|
514
488
|
return upper.toLowerCase();
|
515
489
|
};
|
516
|
-
|
490
|
+
var nameFn = function(f, dashed){
|
491
|
+
return dashed.toUpperCase();
|
492
|
+
};
|
493
|
+
return function(elem, name, bases, stringAllowed){
|
494
|
+
if(nameRegs[name]){
|
495
|
+
name = nameRegs[name];
|
496
|
+
} else {
|
497
|
+
nameRegs[name] = name.replace(normalName, nameFn);
|
498
|
+
name = nameRegs[name];
|
499
|
+
}
|
517
500
|
var data = elementData(elem, 'cfg'+name);
|
518
501
|
var dataName;
|
519
502
|
var cfg = {};
|
@@ -522,7 +505,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
522
505
|
return data;
|
523
506
|
}
|
524
507
|
data = $(elem).data();
|
525
|
-
|
508
|
+
if(data && typeof data[name] == 'string'){
|
509
|
+
if(stringAllowed){
|
510
|
+
return elementData(elem, 'cfg'+name, data[name]);
|
511
|
+
}
|
512
|
+
webshims.error('data-'+ name +' attribute has to be a valid JSON, was: '+ data[name]);
|
513
|
+
}
|
526
514
|
if(!bases){
|
527
515
|
bases = [true, {}];
|
528
516
|
} else if(!Array.isArray(bases)){
|
@@ -531,12 +519,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
531
519
|
bases.unshift(true, {});
|
532
520
|
}
|
533
521
|
|
534
|
-
if(data && data[name]){
|
535
|
-
|
536
|
-
bases.push(data[name]);
|
537
|
-
} else {
|
538
|
-
webshims.error('data-'+ name +' attribute has to be a valid JSON, was: '+ data[name]);
|
539
|
-
}
|
522
|
+
if(data && typeof data[name] == 'object'){
|
523
|
+
bases.push(data[name]);
|
540
524
|
}
|
541
525
|
|
542
526
|
if(!regs[name]){
|
@@ -549,7 +533,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
549
533
|
}
|
550
534
|
}
|
551
535
|
bases.push(cfg);
|
552
|
-
|
553
536
|
return elementData(elem, 'cfg'+name, $.extend.apply($, bases));
|
554
537
|
};
|
555
538
|
})(),
|
@@ -579,7 +562,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
579
562
|
var resizeTimer;
|
580
563
|
var lastHeight;
|
581
564
|
var lastWidth;
|
582
|
-
|
565
|
+
var $window = $(window);
|
583
566
|
var docObserve = {
|
584
567
|
init: false,
|
585
568
|
runs: 0,
|
@@ -599,25 +582,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
599
582
|
docObserve.runs = 0;
|
600
583
|
}
|
601
584
|
},
|
602
|
-
handler: function(
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
585
|
+
handler: (function(){
|
586
|
+
var trigger = function(){
|
587
|
+
$(document).triggerHandler('updateshadowdom');
|
588
|
+
};
|
589
|
+
return function(e){
|
590
|
+
clearTimeout(resizeTimer);
|
591
|
+
resizeTimer = setTimeout(function(){
|
592
|
+
if(e.type == 'resize'){
|
593
|
+
var width = $window.width();
|
594
|
+
var height = $window.width();
|
595
|
+
|
596
|
+
if(height == lastHeight && width == lastWidth){
|
597
|
+
return;
|
598
|
+
}
|
599
|
+
lastHeight = height;
|
600
|
+
lastWidth = width;
|
601
|
+
|
602
|
+
docObserve.height = docObserve.getHeight();
|
603
|
+
docObserve.width = docObserve.getWidth();
|
604
|
+
}
|
605
|
+
|
606
|
+
if(window.requestAnimationFrame){
|
607
|
+
requestAnimationFrame(trigger);
|
608
|
+
} else {
|
609
|
+
setTimeout(trigger, 0);
|
610
610
|
}
|
611
|
-
lastHeight = height;
|
612
|
-
lastWidth = width;
|
613
|
-
|
614
|
-
docObserve.height = docObserve.getHeight();
|
615
|
-
docObserve.width = docObserve.getWidth();
|
616
611
|
|
617
|
-
}
|
618
|
-
|
619
|
-
|
620
|
-
},
|
612
|
+
}, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 0);
|
613
|
+
};
|
614
|
+
})(),
|
621
615
|
_create: function(){
|
622
616
|
$.each({ Height: "getHeight", Width: "getWidth" }, function(name, type){
|
623
617
|
var body = document.body;
|
@@ -955,13 +949,17 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
955
949
|
webshims.defineNodeNamesProperty(elementNames, prop, {
|
956
950
|
attr: {
|
957
951
|
set: function(val){
|
958
|
-
|
952
|
+
if(descs.useContentAttribute){
|
953
|
+
webshims.contentAttr(this, prop, val);
|
954
|
+
} else {
|
955
|
+
this.setAttribute(prop, val);
|
956
|
+
}
|
959
957
|
if(descs.set){
|
960
958
|
descs.set.call(this, true);
|
961
959
|
}
|
962
960
|
},
|
963
961
|
get: function(){
|
964
|
-
var ret = this.getAttribute(prop);
|
962
|
+
var ret = (descs.useContentAttribute) ? webshims.contentAttr(this, prop) : this.getAttribute(prop);
|
965
963
|
return (ret == null) ? undefined : prop;
|
966
964
|
}
|
967
965
|
},
|
@@ -1018,6 +1016,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1018
1016
|
});
|
1019
1017
|
}
|
1020
1018
|
};
|
1019
|
+
|
1021
1020
|
var select = function(obj){
|
1022
1021
|
var oldLang = obj.__active;
|
1023
1022
|
var selectLang = function(i, lang){
|
@@ -1025,6 +1024,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1025
1024
|
if(obj[lang] || obj.availableLangs.indexOf(lang) != -1){
|
1026
1025
|
if(obj[lang]){
|
1027
1026
|
obj.__active = obj[lang];
|
1027
|
+
obj.__activeName = lang;
|
1028
1028
|
} else {
|
1029
1029
|
load(obj.langSrc+lang, obj, curLang.join());
|
1030
1030
|
}
|
@@ -1034,6 +1034,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1034
1034
|
$.each(curLang, selectLang);
|
1035
1035
|
if(!obj.__active){
|
1036
1036
|
obj.__active = obj[''];
|
1037
|
+
obj.__activeName = '';
|
1037
1038
|
}
|
1038
1039
|
if(oldLang != obj.__active){
|
1039
1040
|
$(obj).trigger('change');
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
webshims.register('form-core', function($, webshims, window, document, undefined, options){
|
2
3
|
"use strict";
|
3
4
|
|
@@ -62,6 +63,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
62
63
|
};
|
63
64
|
|
64
65
|
var extendSels = function(){
|
66
|
+
var matches, matchesOverride;
|
65
67
|
var exp = $.expr[":"];
|
66
68
|
$.extend(exp, {
|
67
69
|
"valid-element": function(elem){
|
@@ -86,7 +88,15 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
86
88
|
});
|
87
89
|
|
88
90
|
// sizzle/jQuery has a bug with :disabled/:enabled selectors
|
89
|
-
if(Modernizr.fieldsetdisabled && !$('<fieldset disabled=""><input /><fieldset>').find('
|
91
|
+
if(Modernizr.fieldsetdisabled && !$('<fieldset disabled=""><input /><input /></fieldset>').find(':disabled').filter(':disabled').is(':disabled')){
|
92
|
+
matches = $.find.matches;
|
93
|
+
matchesOverride = {':disabled': 1, ':enabled': 1};
|
94
|
+
$.find.matches = function(expr, elements){
|
95
|
+
if(matchesOverride[expr]){
|
96
|
+
return matches.call(this, '*'+expr, elements);
|
97
|
+
}
|
98
|
+
return matches.apply(this, arguments);
|
99
|
+
};
|
90
100
|
$.extend(exp, {
|
91
101
|
"enabled": function( elem ) {
|
92
102
|
return elem.disabled === false && !$(elem).is('fieldset[disabled] *');
|
@@ -190,7 +200,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
190
200
|
if(webshims.errorbox && webshims.errorbox.initIvalContentMessage){
|
191
201
|
webshims.errorbox.initIvalContentMessage(elem);
|
192
202
|
}
|
193
|
-
var message = (webshims.getOptions && webshims.errorbox ? webshims.getOptions(elem, 'errormessage') : $(elem).data('errormessage')) || elem.getAttribute('x-moz-errormessage') || '';
|
203
|
+
var message = (webshims.getOptions && webshims.errorbox ? webshims.getOptions(elem, 'errormessage', false, true) : $(elem).data('errormessage')) || elem.getAttribute('x-moz-errormessage') || '';
|
194
204
|
if(key && message[key]){
|
195
205
|
message = message[key];
|
196
206
|
} else if(message) {
|
@@ -241,5 +251,4 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
241
251
|
}
|
242
252
|
});
|
243
253
|
webshims.ready('WINDOWLOAD', lazyLoad);
|
244
|
-
|
245
254
|
});
|
@@ -63,7 +63,8 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
63
63
|
$(opts.input)
|
64
64
|
.attr({
|
65
65
|
//role: 'combobox',
|
66
|
-
'aria-haspopup': 'true'
|
66
|
+
'aria-haspopup': 'true',
|
67
|
+
'aria-autocomplete': 'both' //support only list?
|
67
68
|
})
|
68
69
|
.on({
|
69
70
|
'input.datalistWidget': function(){
|
@@ -239,7 +240,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
239
240
|
value: this.options.noHtmlEscape ? value : value.replace(lReg, '<').replace(gReg, '>'),
|
240
241
|
label: $.trim($.attr(rElem, 'label')) || '',
|
241
242
|
className: rElem.className || '',
|
242
|
-
elem:
|
243
|
+
elem: rElem
|
243
244
|
};
|
244
245
|
|
245
246
|
if(rItem.label){
|
@@ -279,7 +280,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
279
280
|
getOptionContent: function(item){
|
280
281
|
var content;
|
281
282
|
var args = [{instance: this, item: item}];
|
282
|
-
if( ( content = $(this.input).triggerHandler('getoptioncontent', args)
|
283
|
+
if( ( content = $(this.input).triggerHandler('getoptioncontent', args) ) && content.indexOf && content.indexOf('option-value') == -1 ){
|
283
284
|
content += '<span class="option-value" style="display: none;">'+ item.value +'</span>';
|
284
285
|
}
|
285
286
|
if(content == null){
|
@@ -63,7 +63,8 @@ webshims.register('form-number-date-api', function($, webshims, window, document
|
|
63
63
|
cache.type = getType(input[0]);
|
64
64
|
}
|
65
65
|
if(cache.type == 'week'){return false;}
|
66
|
-
var
|
66
|
+
var base, attrVal;
|
67
|
+
var ret = (validityState || {}).stepMismatch || false;
|
67
68
|
if(typeModels[cache.type] && typeModels[cache.type].step){
|
68
69
|
if( !('step' in cache) ){
|
69
70
|
cache.step = webshims.getStep(input[0], cache.type);
|
@@ -78,6 +79,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
|
|
78
79
|
|
79
80
|
addMinMaxNumberToCache('min', input, cache);
|
80
81
|
base = cache.minAsNumber;
|
82
|
+
|
83
|
+
if(isNaN(base) && (attrVal = input.prop('defaultValue'))){
|
84
|
+
base = typeModels[cache.type].asNumber( attrVal );
|
85
|
+
}
|
86
|
+
|
81
87
|
if(isNaN(base)){
|
82
88
|
base = typeModels[cache.type].stepBase || 0;
|
83
89
|
}
|
@@ -192,7 +198,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
|
|
192
198
|
var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
|
193
199
|
prop: {
|
194
200
|
value: function(factor){
|
195
|
-
var step, val, dateVal, valModStep, alignValue, cache;
|
201
|
+
var step, val, dateVal, valModStep, alignValue, cache, base, attrVal;
|
196
202
|
var type = getType(this);
|
197
203
|
if(typeModels[type] && typeModels[type].asNumber){
|
198
204
|
cache = {type: type};
|
@@ -219,10 +225,21 @@ webshims.register('form-number-date-api', function($, webshims, window, document
|
|
219
225
|
webshims.addMinMaxNumberToCache('min', $(this), cache);
|
220
226
|
webshims.addMinMaxNumberToCache('max', $(this), cache);
|
221
227
|
|
228
|
+
base = cache.minAsNumber;
|
229
|
+
|
230
|
+
if(isNaN(base) && (attrVal = $.prop(this, 'defaultValue'))){
|
231
|
+
base = typeModels[type].asNumber( attrVal );
|
232
|
+
}
|
233
|
+
|
234
|
+
if(!base){
|
235
|
+
base = 0;
|
236
|
+
}
|
237
|
+
|
222
238
|
step *= factor;
|
223
239
|
|
224
240
|
val = (val + step).toFixed(5) * 1;
|
225
|
-
|
241
|
+
|
242
|
+
valModStep = (val - base) % step;
|
226
243
|
|
227
244
|
if ( valModStep && (Math.abs(valModStep) > EPS) ) {
|
228
245
|
alignValue = val - valModStep;
|
@@ -2,21 +2,30 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2
2
|
"use strict";
|
3
3
|
var curCfg;
|
4
4
|
var formcfg = webshims.formcfg;
|
5
|
+
var hasFormValidation = Modernizr.formvalidation && !webshims.bugs.bustedValidity;
|
5
6
|
var monthDigits = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
|
6
7
|
var stopPropagation = function(e){
|
7
8
|
e.stopImmediatePropagation();
|
8
9
|
};
|
9
|
-
var getMonthOptions =
|
10
|
-
var
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
var getMonthOptions = function(opts){
|
11
|
+
var selectName = 'monthSelect'+opts.formatMonthNames;
|
12
|
+
if(!curCfg[selectName]){
|
13
|
+
var labels = curCfg.date[opts.formatMonthNames] || monthDigits;
|
14
|
+
curCfg[selectName] = ('<option value=""></option>')+$.map(monthDigits, function(val, i){
|
15
|
+
return '<option value="'+val+'"]>'+labels[i]+'</option>';
|
16
|
+
}).join('');
|
17
|
+
}
|
18
|
+
return curCfg[selectName];
|
19
|
+
};
|
20
|
+
var daySelect = '<select class="dd"><option value=""></option>'+ (function(){
|
21
|
+
var i = 1;
|
22
|
+
var opts = [];
|
23
|
+
while(i < 32){
|
24
|
+
opts.push('<option>'+ ((i < 10) ? '0'+ i : i) +'</option>' );
|
25
|
+
i++;
|
26
|
+
}
|
27
|
+
return opts.join('');
|
28
|
+
})() +'</select>';
|
20
29
|
var createFormat = function(name){
|
21
30
|
if(!curCfg.patterns[name+'Obj']){
|
22
31
|
var obj = {};
|
@@ -30,15 +39,19 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
30
39
|
date: {
|
31
40
|
_create: function(opts){
|
32
41
|
var obj = {
|
33
|
-
splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" />')[0]]
|
42
|
+
splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]]
|
34
43
|
};
|
44
|
+
|
35
45
|
if(opts.monthSelect){
|
36
46
|
obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
|
37
47
|
} else {
|
38
48
|
obj.splits.push($('<input type="text" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
39
49
|
}
|
40
|
-
|
41
|
-
|
50
|
+
if(opts.daySelect){
|
51
|
+
obj.splits.push($(daySelect)[0]);
|
52
|
+
} else {
|
53
|
+
obj.splits.push($('<input type="text" class="dd ws-spin" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
54
|
+
}
|
42
55
|
|
43
56
|
obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
|
44
57
|
return obj;
|
@@ -68,7 +81,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
68
81
|
splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0]]
|
69
82
|
};
|
70
83
|
if(opts.monthSelect){
|
71
|
-
obj.splits.push($('<select class="mm
|
84
|
+
obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
|
72
85
|
} else {
|
73
86
|
obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
|
74
87
|
if(opts.onlyMonthDigits){
|
@@ -472,18 +485,30 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
472
485
|
},
|
473
486
|
date: function(val, opts, noCorrect){
|
474
487
|
createFormat('d');
|
475
|
-
var
|
476
|
-
var
|
488
|
+
var tmp, obj;
|
489
|
+
var ret = '';
|
477
490
|
if(opts.splitInput){
|
478
491
|
obj = {yy: 0, mm: 1, dd: 2};
|
479
492
|
} else {
|
480
493
|
obj = curCfg.patterns.dObj;
|
481
494
|
val = val.split(curCfg.dFormat);
|
482
495
|
}
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
496
|
+
if(val.length == 3 && val[0] && val[1] && val[2] && (!noCorrect || (val[obj.yy].length > 3 && val[obj.mm].length == 2 && val[obj.dd].length == 2))){
|
497
|
+
if(val[obj.mm] > 12 && val[obj.dd] < 13){
|
498
|
+
tmp = val[obj.dd];
|
499
|
+
val[obj.dd] = val[obj.mm];
|
500
|
+
val[obj.mm] = tmp;
|
501
|
+
}
|
502
|
+
if(val[obj.yy].length < 4){
|
503
|
+
tmp = ((new Date()).getFullYear() +'').substr(0, 4 - val[obj.yy].length);
|
504
|
+
if(val[obj.yy] > 50){
|
505
|
+
tmp--;
|
506
|
+
}
|
507
|
+
val[obj.yy] = tmp + val[obj.yy];
|
508
|
+
}
|
509
|
+
ret = ([addZero(val[obj.yy]), addZero(val[obj.mm]), addZero(val[obj.dd])]).join('-');
|
510
|
+
}
|
511
|
+
return ret
|
487
512
|
;
|
488
513
|
},
|
489
514
|
color: function(val, opts){
|
@@ -583,7 +608,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
583
608
|
this.buttonWrapper = $('<span class="input-buttons '+this.type+'-input-buttons"></span>').insertAfter(this.element);
|
584
609
|
this.options.containerElements.push(this.buttonWrapper[0]);
|
585
610
|
|
586
|
-
o.mirrorValidity = o.mirrorValidity && this.orig &&
|
611
|
+
o.mirrorValidity = o.mirrorValidity && this.orig && hasFormValidation;
|
587
612
|
|
588
613
|
if(o.splitInput && this._addSplitInputs){
|
589
614
|
if(o.monthSelect){
|
@@ -687,7 +712,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
687
712
|
|
688
713
|
if(this.type != 'color'){
|
689
714
|
(function(){
|
690
|
-
var localeChange ;
|
715
|
+
var localeChange, select, selectVal;
|
691
716
|
if(!o.splitInput){
|
692
717
|
localeChange = function(){
|
693
718
|
|
@@ -702,6 +727,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
702
727
|
} else {
|
703
728
|
localeChange = function(){
|
704
729
|
that.reorderInputs();
|
730
|
+
if(o.monthSelect){
|
731
|
+
select = that.inputElements.filter('select.mm');
|
732
|
+
selectVal = select.prop('value');
|
733
|
+
select.html(getMonthOptions(o));
|
734
|
+
select.prop('value', selectVal);
|
735
|
+
}
|
705
736
|
};
|
706
737
|
that.reorderInputs();
|
707
738
|
}
|
@@ -735,7 +766,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
735
766
|
}
|
736
767
|
if(options.splitInput && typeof placeholder == 'object'){
|
737
768
|
$.each(this.splits, function(i, elem){
|
738
|
-
$.
|
769
|
+
if($.nodeName(elem, 'select')){
|
770
|
+
$(elem).children('option:first-child').text(placeholder[i]);
|
771
|
+
} else {
|
772
|
+
$.prop(elem, 'placeholder', placeholder[i]);
|
773
|
+
}
|
739
774
|
});
|
740
775
|
} else {
|
741
776
|
this.element.prop('placeholder', placeholder);
|
@@ -819,14 +854,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
819
854
|
}
|
820
855
|
|
821
856
|
|
822
|
-
if(!o.min && typeof o.relMin == 'number'){
|
823
|
-
o.min = this.asValue(this.getRelNumber(o.relMin));
|
824
|
-
$.prop(this.orig, 'min', o.min);
|
825
|
-
}
|
826
857
|
|
827
|
-
if(!o.max && typeof o.relMax == 'number'){
|
828
|
-
|
829
|
-
$.prop(this.orig, 'max', o.max);
|
858
|
+
if((!o.max && typeof o.relMax == 'number') || (!o.min && typeof o.relMin == 'number')){
|
859
|
+
webshims.error('relMax/relMin are not supported anymore')
|
830
860
|
}
|
831
861
|
this._init = true;
|
832
862
|
},
|
@@ -895,6 +925,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
895
925
|
if(!this._init || force || this.options[name] !== val){
|
896
926
|
if(isValue){
|
897
927
|
this._beforeValue(val);
|
928
|
+
} else {
|
929
|
+
this.elemHelper.prop(name, val);
|
898
930
|
}
|
899
931
|
|
900
932
|
val = formatVal[this.type](val, this.options);
|
@@ -945,9 +977,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
945
977
|
|
946
978
|
$.fn.spinbtnUI = function(opts){
|
947
979
|
opts = $.extend({
|
948
|
-
monthNames: 'monthNames'
|
949
|
-
size: 1,
|
950
|
-
startView: 0
|
980
|
+
monthNames: 'monthNames'
|
951
981
|
}, opts);
|
952
982
|
return this.each(function(){
|
953
983
|
$.webshims.objectCreate(spinBtnProto, {
|
@@ -1019,10 +1049,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1019
1049
|
|
1020
1050
|
|
1021
1051
|
picker.commonInit = function(data, popover){
|
1052
|
+
if(data._commonInit){return;}
|
1053
|
+
data._commonInit = true;
|
1022
1054
|
var tabbable;
|
1023
1055
|
|
1024
1056
|
popover.isDirty = true;
|
1025
|
-
|
1057
|
+
|
1026
1058
|
popover.element.on('updatepickercontent pickerchange', function(){
|
1027
1059
|
tabbable = false;
|
1028
1060
|
});
|
@@ -1062,6 +1094,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1062
1094
|
return function(prop){
|
1063
1095
|
if(prop == 'value' && !data.options.inlinePicker){return;}
|
1064
1096
|
popover.isDirty = true;
|
1097
|
+
|
1065
1098
|
if(popover.isVisible){
|
1066
1099
|
clearTimeout(timer);
|
1067
1100
|
timer = setTimeout(update, 9);
|
@@ -1129,30 +1162,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1129
1162
|
|
1130
1163
|
options.containerElements.push(popover.element[0]);
|
1131
1164
|
|
1132
|
-
if(data.type != 'color'){
|
1133
|
-
if(options.yearButtons){
|
1134
|
-
options.startView = 2;
|
1135
|
-
}
|
1136
|
-
if(!options.startView){
|
1137
|
-
options.startView = 0;
|
1138
|
-
}
|
1139
|
-
|
1140
|
-
if(data.type == 'time'){
|
1141
|
-
options.minView = 3;
|
1142
|
-
options.startView = 3;
|
1143
|
-
}
|
1144
|
-
if(!options.minView){
|
1145
|
-
options.minView = 0;
|
1146
|
-
}
|
1147
|
-
if(options.startView < options.minView){
|
1148
|
-
options.startView = options.minView;
|
1149
|
-
webshims.warn("wrong config for minView/startView.");
|
1150
|
-
}
|
1151
|
-
if(!options.size){
|
1152
|
-
options.size = 1;
|
1153
|
-
}
|
1154
|
-
}
|
1155
|
-
|
1156
1165
|
popover.element
|
1157
1166
|
.addClass(data.type+'-popover input-picker')
|
1158
1167
|
.attr({role: 'application'})
|
@@ -1213,12 +1222,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1213
1222
|
};
|
1214
1223
|
data.inputElements.on({
|
1215
1224
|
keydown: function(e){
|
1216
|
-
if(e.keyCode == 40 && e.altKey){
|
1225
|
+
if(e.keyCode == 40 && e.altKey && !$.nodeName(e.target, 'select')){
|
1217
1226
|
open();
|
1218
1227
|
}
|
1219
1228
|
},
|
1220
|
-
focus: function(){
|
1221
|
-
if(!popover.stopOpen && (options.buttonOnly || options.openOnFocus || (mouseFocus && options.openOnMouseFocus))){
|
1229
|
+
focus: function(e){
|
1230
|
+
if(!popover.stopOpen && (options.buttonOnly || options.openOnFocus || (mouseFocus && options.openOnMouseFocus)) && !$.nodeName(e.target, 'select')){
|
1222
1231
|
popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
|
1223
1232
|
show();
|
1224
1233
|
} else {
|
@@ -1235,7 +1244,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1235
1244
|
popover.activeElement.focus();
|
1236
1245
|
}, 4);
|
1237
1246
|
}
|
1238
|
-
if(data.element.is(':focus')){
|
1247
|
+
if(data.element.is(':focus') && !$.nodeName(e.target, 'select')){
|
1239
1248
|
popover.openedByFocus = options.buttonOnly ? false : !options.noInput;
|
1240
1249
|
show();
|
1241
1250
|
}
|
@@ -1463,10 +1472,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1463
1472
|
opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
|
1464
1473
|
}
|
1465
1474
|
}
|
1466
|
-
|
1467
|
-
|
1468
|
-
}
|
1469
|
-
if(opts.onlyMonthDigits){
|
1475
|
+
|
1476
|
+
if(opts.onlyMonthDigits || (!opts.formatMonthNames && opts.monthSelect)){
|
1470
1477
|
opts.formatMonthNames = 'monthDigits';
|
1471
1478
|
}
|
1472
1479
|
data.shim = inputTypes[type]._create(opts);
|
@@ -1516,11 +1523,11 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1516
1523
|
|
1517
1524
|
data.shim.element.on('change input', stopPropagation);
|
1518
1525
|
|
1519
|
-
if(
|
1526
|
+
if(hasFormValidation){
|
1520
1527
|
$(opts.orig).on('firstinvalid', function(e){
|
1521
1528
|
if(!webshims.fromSubmit && isCheckValidity){return;}
|
1522
1529
|
$(opts.orig).off('invalid.replacedwidgetbubble').on('invalid.replacedwidgetbubble', function(evt){
|
1523
|
-
if(!
|
1530
|
+
if(!evt.isDefaultPrevented()){
|
1524
1531
|
webshims.validityAlert.showFor( e.target );
|
1525
1532
|
e.preventDefault();
|
1526
1533
|
evt.preventDefault();
|
@@ -1547,7 +1554,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1547
1554
|
};
|
1548
1555
|
|
1549
1556
|
|
1550
|
-
if(
|
1557
|
+
if(hasFormValidation){
|
1551
1558
|
['input', 'form'].forEach(function(name){
|
1552
1559
|
var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
|
1553
1560
|
prop: {
|
@@ -1598,7 +1605,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1598
1605
|
if(!modernizrInputTypes[name] || replace[name]){
|
1599
1606
|
extendType(name, {
|
1600
1607
|
_create: function(opts, set){
|
1601
|
-
if(opts.monthSelect){
|
1608
|
+
if(opts.monthSelect || opts.daySelect){
|
1602
1609
|
opts.splitInput = true;
|
1603
1610
|
}
|
1604
1611
|
if(opts.splitInput && !splitInputs[name]){
|