webshims-rails 1.11.1 → 1.11.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +41 -20
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +212 -42
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +196 -37
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +17 -6
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +234 -1247
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +234 -1247
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +202 -45
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +202 -45
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +82 -36
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +1689 -997
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +202 -45
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +237 -51
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +51 -11
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +16 -5
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +247 -48
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +17 -5
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +21 -3
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +35 -6
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +6 -8
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +134 -24
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +152 -1205
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +1076 -0
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +47 -20
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-de.txt → formcfg-de.js} +3 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-en.txt → formcfg-en.js} +5 -1
- data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +62 -13
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +610 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +10 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +743 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +1 -755
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +0 -606
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +36 -23
- data/vendor/assets/javascripts/webshims/shims/track.js +82 -36
- metadata +8 -6
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +0 -2196
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -1167
@@ -6,7 +6,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
6
6
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
7
7
|
|
8
8
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
9
|
-
webshims.error("IE browser modes are busted in IE10
|
9
|
+
webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
|
10
10
|
}
|
11
11
|
|
12
12
|
if(!$.parseHTML){
|
@@ -559,7 +559,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
559
559
|
$(this.test);
|
560
560
|
webshims.ready('WINDOWLOAD', this.test);
|
561
561
|
$(document).on('updatelayout', this.handler);
|
562
|
-
$(window).
|
562
|
+
$(window).on('resize', this.handler);
|
563
563
|
(function(){
|
564
564
|
var oldAnimate = $.fn.animate;
|
565
565
|
var animationTimer;
|
@@ -581,6 +581,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
581
581
|
webshims.docObserve = function(){
|
582
582
|
webshims.ready('DOM', function(){
|
583
583
|
docObserve.start();
|
584
|
+
if($.support.boxSizing == null){
|
585
|
+
$(function(){
|
586
|
+
if($.support.boxSizing){
|
587
|
+
docObserve.handler({type: 'boxsizing'});
|
588
|
+
}
|
589
|
+
});
|
590
|
+
}
|
584
591
|
});
|
585
592
|
};
|
586
593
|
return function(nativeElem, shadowElem, opts){
|
@@ -741,7 +748,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
741
748
|
havePolyfill[prop] = true;
|
742
749
|
|
743
750
|
if(descs.reflect){
|
744
|
-
webshims.propTypes[descs.propType
|
751
|
+
if(descs.propType && !webshims.propTypes[descs.propType]){
|
752
|
+
webshims.error('could not finde propType '+ descs.propType);
|
753
|
+
} else {
|
754
|
+
webshims.propTypes[descs.propType || 'standard'](descs, prop);
|
755
|
+
}
|
756
|
+
|
745
757
|
}
|
746
758
|
|
747
759
|
['prop', 'attr', 'removeAttr'].forEach(function(type){
|
@@ -927,7 +939,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
927
939
|
var notLocal = /:\/\/|^\.*\//;
|
928
940
|
var loadRemoteLang = function(data, lang, options){
|
929
941
|
var langSrc;
|
930
|
-
if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
|
942
|
+
if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
|
931
943
|
data.loading = true;
|
932
944
|
langSrc = options.langSrc;
|
933
945
|
if(!notLocal.test(langSrc)){
|
@@ -1086,4 +1098,4 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1086
1098
|
}
|
1087
1099
|
});
|
1088
1100
|
|
1089
|
-
})(webshims.$, document);
|
1101
|
+
})(webshims.$, document);
|
@@ -25,6 +25,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
25
25
|
|
26
26
|
var lReg = /</g;
|
27
27
|
var gReg = />/g;
|
28
|
+
var splitReg = /\s*,\s*/g;
|
28
29
|
|
29
30
|
$.extend(options.shadowListProto, {
|
30
31
|
_lazyCreate: function(opts){
|
@@ -184,7 +185,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
184
185
|
}
|
185
186
|
this.addMarkElement = options.addMark || $(this.input).hasClass('mark-option-text');
|
186
187
|
this.listFilter = $(this.input).data('listFilter') || options.listFilter || '*';
|
187
|
-
|
188
|
+
this.multiple = $(this.input).hasClass('list-multiple') || ($(this.input).prop('multiple') && $(this.input).prop('type') == 'email');
|
188
189
|
var list = [];
|
189
190
|
|
190
191
|
var values = [];
|
@@ -256,7 +257,13 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
256
257
|
//first check prevent infinite loop, second creates simple lazy optimization
|
257
258
|
if(value === this.lastUpdatedValue){
|
258
259
|
return;
|
259
|
-
}
|
260
|
+
}
|
261
|
+
|
262
|
+
if(this.multiple){
|
263
|
+
value = value.split(splitReg);
|
264
|
+
value = value[value.length - 1] || '';
|
265
|
+
}
|
266
|
+
|
260
267
|
if(this.lastUnfoundValue && value.indexOf(this.lastUnfoundValue) === 0){
|
261
268
|
this.hideList();
|
262
269
|
return;
|
@@ -268,8 +275,11 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
268
275
|
var startSearch = this.listFilter == '^';
|
269
276
|
var lis = $('li', this.shadowList);
|
270
277
|
var that = this;
|
278
|
+
|
279
|
+
|
271
280
|
if(value && this.listFilter != '!'){
|
272
281
|
|
282
|
+
|
273
283
|
this.arrayOptions.forEach(function(item, i){
|
274
284
|
var search, searchIndex, foundName;
|
275
285
|
if(!('lowerValue' in item)){
|
@@ -390,9 +400,17 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
390
400
|
},
|
391
401
|
changeValue: function(activeItem){
|
392
402
|
if(!activeItem[0]){return;}
|
393
|
-
var spinner;
|
403
|
+
var spinner, tmpValue;
|
394
404
|
var newValue = $('span.option-value', activeItem).text();
|
395
405
|
var oldValue = $.prop(this.input, 'value');
|
406
|
+
|
407
|
+
if(this.multiple){
|
408
|
+
tmpValue = oldValue.split(splitReg);
|
409
|
+
tmpValue[tmpValue.length - 1] = newValue;
|
410
|
+
|
411
|
+
newValue = tmpValue.join(', ');
|
412
|
+
}
|
413
|
+
|
396
414
|
if(newValue != oldValue){
|
397
415
|
|
398
416
|
$(this.input)
|
@@ -33,12 +33,12 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
33
33
|
/*
|
34
34
|
* implement propType "element" currently only used for list-attribute (will be moved to dom-extend, if needed)
|
35
35
|
*/
|
36
|
-
webshims.propTypes.element = function(descs){
|
36
|
+
webshims.propTypes.element = function(descs, name){
|
37
37
|
webshims.createPropDefault(descs, 'attr');
|
38
38
|
if(descs.prop){return;}
|
39
39
|
descs.prop = {
|
40
40
|
get: function(){
|
41
|
-
var elem = $.attr(this,
|
41
|
+
var elem = $.attr(this, name);
|
42
42
|
if(elem){
|
43
43
|
elem = document.getElementById(elem);
|
44
44
|
if(elem && descs.propNodeName && !$.nodeName(elem, descs.propNodeName)){
|
@@ -62,7 +62,15 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
62
62
|
if(listSupport && !formsCFG.customDatalist){return;}
|
63
63
|
|
64
64
|
var initializeDatalist = function(){
|
65
|
-
|
65
|
+
|
66
|
+
var updateDatlistAndOptions = function(){
|
67
|
+
var id;
|
68
|
+
if(!$.data(this, 'datalistWidgetData') && (id = $.prop(this, 'id'))){
|
69
|
+
$('input[list="'+ id +'"], input[data-wslist="'+ id +'"]').eq(0).attr('list', id);
|
70
|
+
} else {
|
71
|
+
$(this).triggerHandler('updateDatalist');
|
72
|
+
}
|
73
|
+
};
|
66
74
|
|
67
75
|
var inputListProto = {
|
68
76
|
//override autocomplete
|
@@ -140,6 +148,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
140
148
|
id: value,
|
141
149
|
datalist: $.prop(elem, 'list')
|
142
150
|
});
|
151
|
+
elem.setAttribute('data-wslist', value);
|
143
152
|
} else {
|
144
153
|
elem.setAttribute('list', value);
|
145
154
|
}
|
@@ -151,6 +160,27 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
151
160
|
propType: 'element',
|
152
161
|
propNodeName: 'datalist'
|
153
162
|
};
|
163
|
+
} else {
|
164
|
+
webshims.defineNodeNameProperties('input', {
|
165
|
+
list: {
|
166
|
+
attr: {
|
167
|
+
get: function(){
|
168
|
+
var val = webshims.contentAttr(this, 'list');
|
169
|
+
return (val == null) ? undefined : val;
|
170
|
+
},
|
171
|
+
set: function(value){
|
172
|
+
var elem = this;
|
173
|
+
webshims.contentAttr(elem, 'list', value);
|
174
|
+
webshims.objectCreate(options.shadowListProto, undefined, {input: elem, id: value, datalist: $.prop(elem, 'list')});
|
175
|
+
$(elem).triggerHandler('listdatalistchange');
|
176
|
+
}
|
177
|
+
},
|
178
|
+
initAttr: true,
|
179
|
+
reflect: true,
|
180
|
+
propType: 'element',
|
181
|
+
propNodeName: 'datalist'
|
182
|
+
}
|
183
|
+
});
|
154
184
|
}
|
155
185
|
|
156
186
|
webshims.defineNodeNameProperties('input', inputListProto);
|
@@ -159,9 +189,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
159
189
|
contextElem
|
160
190
|
.filter('datalist > select, datalist, datalist > option, datalist > select > option')
|
161
191
|
.closest('datalist')
|
162
|
-
.each(
|
163
|
-
$(this).triggerHandler('updateDatalist');
|
164
|
-
})
|
192
|
+
.each(updateDatlistAndOptions)
|
165
193
|
;
|
166
194
|
});
|
167
195
|
};
|
@@ -206,6 +234,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
206
234
|
this.hasViewableData = true;
|
207
235
|
this._autocomplete = $.attr(opts.input, 'autocomplete');
|
208
236
|
$.data(opts.input, 'datalistWidget', this);
|
237
|
+
$.data(datalist, 'datalistWidgetData', this);
|
209
238
|
|
210
239
|
lazyLoad('WINDOWLOAD');
|
211
240
|
|
@@ -198,7 +198,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
|
|
198
198
|
cache = {type: type};
|
199
199
|
if(!factor){
|
200
200
|
factor = 1;
|
201
|
-
webshims.
|
201
|
+
webshims.warn("you should always use a factor for stepUp/stepDown");
|
202
202
|
}
|
203
203
|
factor *= stepFactor;
|
204
204
|
|
@@ -234,13 +234,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
|
|
234
234
|
webshims.info("max/min overflow can't apply stepUp/stepDown");
|
235
235
|
throw('invalid state error');
|
236
236
|
}
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
} else if(stepDescriptor.prop && stepDescriptor.prop.value){
|
243
|
-
return stepDescriptor.prop.value.apply(this, arguments);
|
237
|
+
|
238
|
+
$.prop(this, 'valueAsNumber', val);
|
239
|
+
|
240
|
+
} else if(stepDescriptor.prop && stepDescriptor.prop._supvalue){
|
241
|
+
return stepDescriptor.prop._supvalue.apply(this, arguments);
|
244
242
|
} else {
|
245
243
|
webshims.info("no step method for type: "+ type);
|
246
244
|
throw('invalid state error');
|
@@ -10,8 +10,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
10
10
|
var str;
|
11
11
|
return function(){
|
12
12
|
if(!str){
|
13
|
-
str = ('<option></option>')+$.map(monthDigits, function(val){
|
14
|
-
return '<option>'+val+'</option>';
|
13
|
+
str = ('<option value=""></option>')+$.map(monthDigits, function(val){
|
14
|
+
return '<option value="'+val+'"]>'+val+'</option>';
|
15
15
|
}).join('');
|
16
16
|
}
|
17
17
|
return str;
|
@@ -33,7 +33,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
33
33
|
splits: [$('<input type="text" class="yy" size="4" inputmode="numeric" />')[0]]
|
34
34
|
};
|
35
35
|
if(opts.monthSelect){
|
36
|
-
obj.splits.push($('<select class="mm">'+getMonthOptions()+'</select>')[0]);
|
36
|
+
obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
|
37
37
|
} else {
|
38
38
|
obj.splits.push($('<input type="text" class="mm" inputmode="numeric" maxlength="2" size="2" />')[0]);
|
39
39
|
}
|
@@ -68,7 +68,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
68
68
|
splits: [$('<input type="text" class="yy" inputmode="numeric" size="4" />')[0]]
|
69
69
|
};
|
70
70
|
if(opts.monthSelect){
|
71
|
-
obj.splits.push($('<select class="mm ws-spin">'+getMonthOptions()+'</select>')[0]);
|
71
|
+
obj.splits.push($('<select class="mm ws-spin">'+getMonthOptions(opts)+'</select>')[0]);
|
72
72
|
} else {
|
73
73
|
obj.splits.push($('<input type="text" class="mm ws-spin" />')[0]);
|
74
74
|
if(opts.onlyMonthDigits){
|
@@ -160,6 +160,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
160
160
|
month: {
|
161
161
|
currentText: 'Aktueller Monat'
|
162
162
|
},
|
163
|
+
time: {
|
164
|
+
currentText: 'Jetzt'
|
165
|
+
},
|
163
166
|
date: {
|
164
167
|
close: 'schließen',
|
165
168
|
clear: 'Löschen',
|
@@ -197,6 +200,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
197
200
|
month: {
|
198
201
|
currentText: 'This month'
|
199
202
|
},
|
203
|
+
time: {
|
204
|
+
"currentText": "Now"
|
205
|
+
},
|
200
206
|
date: {
|
201
207
|
"closeText": "Done",
|
202
208
|
clear: 'Clear',
|
@@ -259,6 +265,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
259
265
|
if(!langCfg['datetime-localSigns']){
|
260
266
|
langCfg['datetime-localSigns'] = langCfg.dateSigns+langCfg.timeSigns;
|
261
267
|
}
|
268
|
+
if(!langCfg['datetime-local']){
|
269
|
+
langCfg['datetime-local'] = {};
|
270
|
+
}
|
271
|
+
if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
|
272
|
+
langCfg['datetime-local'].currentText = langCfg.time.currentText;
|
273
|
+
}
|
262
274
|
};
|
263
275
|
var triggerLocaleChange = function(){
|
264
276
|
processLangCFG(curCfg);
|
@@ -326,6 +338,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
326
338
|
} else {
|
327
339
|
fVal = 0;
|
328
340
|
}
|
341
|
+
if(val[0] === '00'){
|
342
|
+
val[0] = '12';
|
343
|
+
}
|
329
344
|
val = $.trim(val.join(':')) + ' '+ curCfg.meridian[fVal];
|
330
345
|
}
|
331
346
|
return val;
|
@@ -410,6 +425,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
410
425
|
time: function(val){
|
411
426
|
var fVal;
|
412
427
|
if(val && curCfg.meridian){
|
428
|
+
if(val.substr(0,2) === "12"){
|
429
|
+
val = "00" + val.substr(2);
|
430
|
+
}
|
413
431
|
if(val.indexOf(curCfg.meridian[1]) != -1){
|
414
432
|
val = val.split(':');
|
415
433
|
fVal = (val[0] * 1);
|
@@ -495,7 +513,10 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
495
513
|
if(hintValue.length == 2){
|
496
514
|
hintValue = opts.splitInput ?
|
497
515
|
hintValue :
|
498
|
-
curCfg.
|
516
|
+
curCfg.date.showMonthAfterYear ?
|
517
|
+
hintValue[0] +' '+hintValue[1] :
|
518
|
+
|
519
|
+
hintValue[1] +' '+ hintValue[0];
|
499
520
|
} else {
|
500
521
|
hintValue = opts.splitInput ?
|
501
522
|
[val, val] :
|
@@ -870,10 +891,18 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
870
891
|
}
|
871
892
|
try {
|
872
893
|
that.elemHelper[name](factor);
|
894
|
+
|
873
895
|
ret = that.elemHelper.prop('value');
|
896
|
+
|
897
|
+
} catch (er) {
|
898
|
+
if(!o.value && that.maxAsNumber >= that.minAsNumber){
|
899
|
+
ret = o.defValue;
|
900
|
+
}
|
901
|
+
}
|
902
|
+
if(ret !== false && o.value != ret){
|
874
903
|
that.value(ret);
|
875
904
|
eventTimer.call('input', ret);
|
876
|
-
}
|
905
|
+
}
|
877
906
|
return ret;
|
878
907
|
}
|
879
908
|
};
|
@@ -939,15 +968,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
939
968
|
|
940
969
|
initChangeEvents();
|
941
970
|
},
|
942
|
-
value: function(val, force){
|
943
|
-
if(!this._init || force || val !== this.options.value){
|
944
|
-
this.element.val(this.formatValue(val));
|
945
|
-
this.options.value = val;
|
946
|
-
this._propertyChange('value');
|
947
|
-
this.mirrorValidity();
|
948
|
-
}
|
949
|
-
|
950
|
-
},
|
951
971
|
required: function(val, boolVal){
|
952
972
|
this.inputElements.attr({'aria-required': ''+boolVal});
|
953
973
|
this.mirrorValidity();
|
@@ -964,7 +984,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
964
984
|
formatValue: function(val, noSplit){
|
965
985
|
return formatVal[this.type](val, noSplit === false ? false : this.options);
|
966
986
|
},
|
967
|
-
createOpts: ['readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'value', 'required'],
|
987
|
+
createOpts: ['readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'defaultValue', 'value', 'required'],
|
968
988
|
placeholder: function(val){
|
969
989
|
var options = this.options;
|
970
990
|
options.placeholder = val;
|
@@ -1034,6 +1054,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1034
1054
|
}
|
1035
1055
|
};
|
1036
1056
|
|
1057
|
+
['defaultValue', 'value'].forEach(function(name){
|
1058
|
+
wsWidgetProto[name] = function(val, force){
|
1059
|
+
if(!this._init || force || val !== this.options[name]){
|
1060
|
+
this.element.prop(name, this.formatValue(val));
|
1061
|
+
this.options[name] = val;
|
1062
|
+
this._propertyChange(name);
|
1063
|
+
this.mirrorValidity();
|
1064
|
+
}
|
1065
|
+
};
|
1066
|
+
});
|
1037
1067
|
|
1038
1068
|
['readonly', 'disabled'].forEach(function(name){
|
1039
1069
|
var isDisabled = name == 'disabled';
|
@@ -1087,7 +1117,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1087
1117
|
}
|
1088
1118
|
this._init = true;
|
1089
1119
|
},
|
1090
|
-
createOpts: ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'value', 'required'],
|
1120
|
+
createOpts: ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'defaultValue', 'value', 'required'],
|
1091
1121
|
_addSplitInputs: function(){
|
1092
1122
|
if(!this.inputElements){
|
1093
1123
|
var create = splitInputs[this.type]._create(this.options);
|
@@ -1157,9 +1187,47 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1157
1187
|
this.options.step = val;
|
1158
1188
|
this.elemHelper.prop('step', retDefault(val, defStep.step));
|
1159
1189
|
this.mirrorValidity();
|
1190
|
+
},
|
1191
|
+
_beforeValue: function(val){
|
1192
|
+
this.valueAsNumber = this.asNumber(val);
|
1193
|
+
this.options.value = val;
|
1194
|
+
|
1195
|
+
if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
|
1196
|
+
this._setStartInRange();
|
1197
|
+
} else {
|
1198
|
+
this.elemHelper.prop('value', val);
|
1199
|
+
this.options.defValue = "";
|
1200
|
+
}
|
1160
1201
|
}
|
1161
1202
|
});
|
1162
1203
|
|
1204
|
+
['defaultValue', 'value'].forEach(function(name){
|
1205
|
+
var isValue = name == 'value';
|
1206
|
+
spinBtnProto[name] = function(val, force){
|
1207
|
+
if(!this._init || force || this.options[name] !== val){
|
1208
|
+
if(isValue){
|
1209
|
+
this._beforeValue(val);
|
1210
|
+
}
|
1211
|
+
|
1212
|
+
val = formatVal[this.type](val, this.options);
|
1213
|
+
if(this.options.splitInput){
|
1214
|
+
$.each(this.splits, function(i, elem){
|
1215
|
+
var setOption;
|
1216
|
+
if(!(name in elem) && !isValue && $.nodeName(elem, 'select')){
|
1217
|
+
$('option[value="'+ val[i] +'"]', elem).prop('defaultSelected', true);
|
1218
|
+
} else {
|
1219
|
+
$.prop(elem, name, val[i]);
|
1220
|
+
}
|
1221
|
+
});
|
1222
|
+
} else {
|
1223
|
+
this.element.prop(name, val);
|
1224
|
+
}
|
1225
|
+
this._propertyChange(name);
|
1226
|
+
this.mirrorValidity();
|
1227
|
+
}
|
1228
|
+
};
|
1229
|
+
});
|
1230
|
+
|
1163
1231
|
$.each({min: 1, max: -1}, function(name, factor){
|
1164
1232
|
var numName = name +'AsNumber';
|
1165
1233
|
spinBtnProto[name] = function(val){
|
@@ -1563,10 +1631,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1563
1631
|
var inputTypes = {
|
1564
1632
|
|
1565
1633
|
};
|
1634
|
+
var boolAttrs = {disabled: 1, required: 1, readonly: 1};
|
1566
1635
|
var copyProps = [
|
1567
1636
|
'disabled',
|
1568
1637
|
'readonly',
|
1569
1638
|
'value',
|
1639
|
+
'defaultValue',
|
1570
1640
|
'min',
|
1571
1641
|
'max',
|
1572
1642
|
'step',
|
@@ -1584,14 +1654,18 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1584
1654
|
if(!stopCircular){
|
1585
1655
|
var shadowData = webshims.data(this, 'shadowData');
|
1586
1656
|
if(shadowData && shadowData.data && shadowData.nativeElement === this && shadowData.data[fnName]){
|
1587
|
-
|
1657
|
+
if(boolAttrs[fnName]){
|
1658
|
+
shadowData.data[fnName](val, boolVal);
|
1659
|
+
} else {
|
1660
|
+
shadowData.data[fnName](val);
|
1661
|
+
}
|
1588
1662
|
}
|
1589
1663
|
}
|
1590
1664
|
});
|
1591
1665
|
});
|
1592
1666
|
|
1593
1667
|
if(options.replaceUI && 'valueAsNumber' in document.createElement('input')){
|
1594
|
-
var reflectFn = function(
|
1668
|
+
var reflectFn = function(){
|
1595
1669
|
if(webshims.data(this, 'hasShadow')){
|
1596
1670
|
$.prop(this, 'value', $.prop(this, 'value'));
|
1597
1671
|
}
|
@@ -1599,6 +1673,20 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1599
1673
|
|
1600
1674
|
webshims.onNodeNamesPropertyModify('input', 'valueAsNumber', reflectFn);
|
1601
1675
|
webshims.onNodeNamesPropertyModify('input', 'valueAsDate', reflectFn);
|
1676
|
+
$.each({stepUp: 1, stepDown: -1}, function(name, stepFactor){
|
1677
|
+
var stepDescriptor = webshims.defineNodeNameProperty('input', name, {
|
1678
|
+
prop: {
|
1679
|
+
value: function(){
|
1680
|
+
var ret;
|
1681
|
+
if(stepDescriptor.prop && stepDescriptor.prop._supvalue){
|
1682
|
+
ret = stepDescriptor.prop._supvalue.apply(this, arguments);
|
1683
|
+
reflectFn.apply(this, arguments);
|
1684
|
+
}
|
1685
|
+
return ret;
|
1686
|
+
}
|
1687
|
+
}
|
1688
|
+
});
|
1689
|
+
});
|
1602
1690
|
}
|
1603
1691
|
|
1604
1692
|
var extendType = (function(){
|
@@ -1618,7 +1706,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1618
1706
|
$(data.orig).removeClass('ws-important-hide');
|
1619
1707
|
$.style( data.orig, 'display', '' );
|
1620
1708
|
var hasButtons, marginR, marginL;
|
1621
|
-
var correctWidth = 0.
|
1709
|
+
var correctWidth = 0.8;
|
1622
1710
|
if(!init || data.orig.offsetWidth){
|
1623
1711
|
hasButtons = data.buttonWrapper && data.buttonWrapper.filter(isVisible).length;
|
1624
1712
|
marginR = $.css( data.orig, 'marginRight');
|
@@ -1642,7 +1730,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1642
1730
|
;
|
1643
1731
|
} else {
|
1644
1732
|
data.buttonWrapper.css('marginRight', marginR);
|
1645
|
-
correctWidth = data.buttonWrapper.outerWidth(true) +
|
1733
|
+
correctWidth = data.buttonWrapper.outerWidth(true) + correctWidth;
|
1646
1734
|
}
|
1647
1735
|
}
|
1648
1736
|
|
@@ -1800,7 +1888,29 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1800
1888
|
});
|
1801
1889
|
}
|
1802
1890
|
|
1803
|
-
|
1891
|
+
var replace = {};
|
1892
|
+
|
1893
|
+
|
1894
|
+
if(options.replaceUI){
|
1895
|
+
if( $.isPlainObject(options.replaceUI) ){
|
1896
|
+
$.extend(replace, options.replaceUI);
|
1897
|
+
} else {
|
1898
|
+
$.extend(replace, {
|
1899
|
+
'range': 1,
|
1900
|
+
'number': 1,
|
1901
|
+
'time': 1,
|
1902
|
+
'month': 1,
|
1903
|
+
'date': 1,
|
1904
|
+
'color': 1,
|
1905
|
+
'datetime-local': 1
|
1906
|
+
});
|
1907
|
+
}
|
1908
|
+
}
|
1909
|
+
if(modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && ((/MSIE 1[0|1]\.\d/.test(navigator.userAgent)) || (/Trident\/7\.0/.test(navigator.userAgent)))){
|
1910
|
+
replace.number = 1;
|
1911
|
+
}
|
1912
|
+
|
1913
|
+
if(!modernizrInputTypes.range || replace.range){
|
1804
1914
|
extendType('range', {
|
1805
1915
|
_create: function(opts, set){
|
1806
1916
|
var data = $('<span />').insertAfter(opts.orig).rangeUI(opts).data('rangeUi');
|
@@ -1809,9 +1919,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1809
1919
|
});
|
1810
1920
|
}
|
1811
1921
|
|
1812
|
-
|
1922
|
+
|
1813
1923
|
['number', 'time', 'month', 'date', 'color', 'datetime-local'].forEach(function(name){
|
1814
|
-
if(!modernizrInputTypes[name] ||
|
1924
|
+
if(!modernizrInputTypes[name] || replace[name]){
|
1815
1925
|
extendType(name, {
|
1816
1926
|
_create: function(opts, set){
|
1817
1927
|
if(opts.monthSelect){
|