webshims-rails 1.12.0 → 1.12.2
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 +440 -440
- data/vendor/assets/javascripts/webshims/polyfiller.js +132 -91
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +248 -91
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +237 -84
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +21 -8
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -8
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +237 -84
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +237 -84
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +11 -7
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +18 -8
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +11 -7
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +9 -6
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +11 -7
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +11 -7
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +10 -1
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +11 -7
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +18 -8
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +18 -8
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +7 -1
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +7 -1
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +11 -7
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +237 -84
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +244 -85
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +18 -8
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +11 -7
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +255 -92
- data/vendor/assets/javascripts/webshims/shims/details.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +10 -7
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +53 -56
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +7 -1
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +175 -60
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +6 -6
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +77 -28
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +24 -16
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +40 -68
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +4 -4
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +13 -6
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +61 -24
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +278 -95
- data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +203 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +115 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +18 -2
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +227 -113
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +168 -159
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +106 -69
- metadata +4 -7
- data/vendor/assets/javascripts/webshims/shims/styles/details-arrows.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/polyfill-loader.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/range-track.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/vertical-range.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/swf/localStorage.swf +0 -0
@@ -609,7 +609,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
609
609
|
setTimeout(trigger, 0);
|
610
610
|
}
|
611
611
|
|
612
|
-
}, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 :
|
612
|
+
}, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
|
613
613
|
};
|
614
614
|
})(),
|
615
615
|
_create: function(){
|
@@ -634,7 +634,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
634
634
|
setInterval(this.test, 600);
|
635
635
|
$(this.test);
|
636
636
|
webshims.ready('WINDOWLOAD', this.test);
|
637
|
-
$(document).on('updatelayout pageinit collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
|
637
|
+
$(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
|
638
638
|
$(window).on('resize', this.handler);
|
639
639
|
(function(){
|
640
640
|
var oldAnimate = $.fn.animate;
|
@@ -1081,10 +1081,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1081
1081
|
});
|
1082
1082
|
|
1083
1083
|
webshims.isReady('webshimLocalization', true);
|
1084
|
-
|
1085
|
-
//html5a11y
|
1086
|
-
(function(
|
1087
|
-
if(
|
1084
|
+
|
1085
|
+
//html5a11y + hidden attribute
|
1086
|
+
(function(){
|
1087
|
+
if(('content' in document.createElement('template'))){return;}
|
1088
1088
|
|
1089
1089
|
$(function(){
|
1090
1090
|
var main = $('main').attr({role: 'main'});
|
@@ -1099,6 +1099,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1099
1099
|
return;
|
1100
1100
|
}
|
1101
1101
|
|
1102
|
+
webshims.defineNodeNamesBooleanProperty(['*'], 'hidden');
|
1103
|
+
|
1102
1104
|
var elemMappings = {
|
1103
1105
|
article: "article",
|
1104
1106
|
aside: "complementary",
|
@@ -1139,4 +1141,5 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1139
1141
|
}
|
1140
1142
|
});
|
1141
1143
|
|
1142
|
-
})(
|
1144
|
+
})();
|
1145
|
+
});
|
@@ -1,6 +1,6 @@
|
|
1
1
|
webshims.register('form-datalist-lazy', function($, webshims, window, document, undefined, options){
|
2
2
|
|
3
|
-
var
|
3
|
+
var optionID = 0;
|
4
4
|
var formsCFG = $.webshims.cfg.forms;
|
5
5
|
var globStoredOptions = {};
|
6
6
|
var getStoredOptions = function(name){
|
@@ -46,6 +46,9 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
46
46
|
if(that._stopMouseOver && e && e.type == 'mouseenter'){return;}
|
47
47
|
var items = $('li:not(.hidden-item)', that.shadowList);
|
48
48
|
var select = (e.type == 'mousedown' || e.type == 'click');
|
49
|
+
if(select && $(opts.input).getNativeElement().triggerHandler('beforeselect', [$(e.currentTarget).find('.option-value').text()]) === false){
|
50
|
+
return (e.type != 'mousedown');
|
51
|
+
}
|
49
52
|
that.markItem(items.index(e.currentTarget), select, items);
|
50
53
|
if(e.type == 'click'){
|
51
54
|
that.hideList();
|
@@ -77,8 +80,10 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
77
80
|
var keyCode = e.keyCode;
|
78
81
|
var activeItem;
|
79
82
|
var items;
|
83
|
+
var doValue = that.options.noInlineValue ? 'onlyScroll' : true;
|
84
|
+
|
80
85
|
if(keyCode == 40 && !that.showList()){
|
81
|
-
that.markItem(that.index + 1,
|
86
|
+
that.markItem(that.index + 1, doValue);
|
82
87
|
return false;
|
83
88
|
}
|
84
89
|
|
@@ -86,11 +91,11 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
86
91
|
|
87
92
|
|
88
93
|
if(keyCode == 38){
|
89
|
-
that.markItem(that.index - 1,
|
94
|
+
that.markItem(that.index - 1, doValue);
|
90
95
|
return false;
|
91
96
|
}
|
92
97
|
if(!e.shiftKey && (keyCode == 33 || keyCode == 36)){
|
93
|
-
that.markItem(0,
|
98
|
+
that.markItem(0, doValue);
|
94
99
|
return false;
|
95
100
|
}
|
96
101
|
if(!e.shiftKey && (keyCode == 34 || keyCode == 35)){
|
@@ -100,8 +105,14 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
100
105
|
}
|
101
106
|
if(keyCode == 13 || keyCode == 27){
|
102
107
|
if (keyCode == 13){
|
108
|
+
if(that.isCompleted){
|
109
|
+
$.prop(opts.input, 'selectionStart', $.prop(opts.input, 'value').length);
|
110
|
+
}
|
103
111
|
activeItem = $('li.active-item:not(.hidden-item)', that.shadowList);
|
104
|
-
|
112
|
+
if($(opts.input).getNativeElement().triggerHandler('beforeselect', [activeItem.find('.option-value').text()]) === false){
|
113
|
+
return;
|
114
|
+
}
|
115
|
+
that.changeValue( activeItem );
|
105
116
|
}
|
106
117
|
that.hideList();
|
107
118
|
if(formsCFG.customDatalist && activeItem && activeItem[0]){
|
@@ -166,60 +177,37 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
166
177
|
this.lastUnfoundValue = '';
|
167
178
|
|
168
179
|
if(!this.updateTimer){
|
169
|
-
if(window.QUnit || (forceShow = ($(that.input).is(':focus') && (
|
180
|
+
if(window.QUnit || (forceShow = ($(that.input).is(':focus') && (that.options.focus || $.prop(that.input, 'value'))) )){
|
170
181
|
that.updateListOptions(forceShow);
|
171
182
|
} else {
|
172
183
|
that.updateTimer = setTimeout(function(){
|
173
184
|
that.updateListOptions();
|
174
185
|
that = null;
|
175
|
-
|
176
|
-
}, 200 + (100 * listidIndex));
|
186
|
+
}, 200);
|
177
187
|
}
|
178
188
|
}
|
179
189
|
},
|
180
190
|
_updateOptions: function(){
|
181
191
|
this.options = webshims.getOptions(this.input, 'list', options.list);
|
182
192
|
|
183
|
-
if($(this.input).prop('multiple')
|
184
|
-
this.
|
193
|
+
if($(this.input).prop('multiple')){
|
194
|
+
if($(this.input).prop('type') != 'email'){
|
195
|
+
webshims.warn('multiple only used on email and file type. Use data-list-multiple instead.');
|
196
|
+
} else {
|
197
|
+
this.options.multiple = true;
|
198
|
+
}
|
185
199
|
}
|
200
|
+
|
201
|
+
if(this.options.noInlineValue && !this.options.valueCompletion){
|
202
|
+
$.attr(this.input, 'aria-autocomplete', 'list');
|
203
|
+
$.attr(this.input, 'aria-expanded', 'false');
|
204
|
+
}
|
205
|
+
|
186
206
|
|
187
207
|
if( this.options.getOptionContent && !$.isFunction(this.options.getOptionContent) ){
|
188
208
|
this.options.getOptionContent = false;
|
189
209
|
}
|
190
210
|
|
191
|
-
//depreacated option settings:
|
192
|
-
if(options.getOptionContent){
|
193
|
-
webshims.error('getOptionContent is depreacated use $(input).on("getoptioncontent")');
|
194
|
-
}
|
195
|
-
|
196
|
-
if($(this.input).hasClass('list-focus')){
|
197
|
-
webshims.error(".list-focus is depreacated. Use focus option.");
|
198
|
-
}
|
199
|
-
|
200
|
-
if(options.datalistPopover && !this.options.popover){
|
201
|
-
this.options.popover = options.datalistPopover;
|
202
|
-
webshims.error("datalistPopover is depreacated. Use popover option.");
|
203
|
-
}
|
204
|
-
|
205
|
-
if($(this.input).hasClass('mark-option-text')){
|
206
|
-
this.options.highlight = true;
|
207
|
-
webshims.error(".mark-option-text is depreacated. Use highlight option.");
|
208
|
-
}
|
209
|
-
|
210
|
-
if($(this.input).hasClass('list-multiple')){
|
211
|
-
this.options.multiple = true;
|
212
|
-
webshims.error(".list-multiple is depreacated. Use multiple option.");
|
213
|
-
}
|
214
|
-
|
215
|
-
if($(this.input).hasClass('value-completion')){
|
216
|
-
this.options.valueCompletion = true;
|
217
|
-
webshims.error(".value-completion is depreacated. Use valueCompletion option.");
|
218
|
-
}
|
219
|
-
|
220
|
-
if(this.options.valueCompletion && this.options.multiple){
|
221
|
-
webshims.warn("valueCompletion and multiple shouldn't be set together");
|
222
|
-
}
|
223
211
|
},
|
224
212
|
updateListOptions: function(_forceShow){
|
225
213
|
this.needsUpdate = false;
|
@@ -263,15 +251,13 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
263
251
|
|
264
252
|
for(rI = 0, rLen = allOptions.length; rI < rLen; rI++){
|
265
253
|
item = allOptions[rI];
|
266
|
-
list[rI] = '<li class="'+ item.className +'" tabindex="-1" role="listitem">'+ this.getOptionContent(item) +'</li>';
|
254
|
+
list[rI] = '<li class="'+ item.className +'" tabindex="-1" role="listitem" id="wsoption-'+ (optionID++) +'">'+ this.getOptionContent(item) +'</li>';
|
267
255
|
}
|
268
256
|
|
269
257
|
this.arrayOptions = allOptions;
|
270
|
-
this.popover.contentElement.html('<div class="datalist-box"><ul role="
|
258
|
+
this.popover.contentElement.html('<div class="datalist-box"><ul role="listbox">'+ list.join("\n") +'</ul></div>');
|
271
259
|
|
272
|
-
|
273
|
-
options.datalistCreated.apply(this);
|
274
|
-
}
|
260
|
+
$(this.input).removeAttr('aria-activedescendant').triggerHandler('datalistcreated', [{instance: this}]);
|
275
261
|
|
276
262
|
if(_forceShow || this.popover.isVisible){
|
277
263
|
this.showHideOptions();
|
@@ -291,7 +277,8 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
291
277
|
}
|
292
278
|
return content || '';
|
293
279
|
},
|
294
|
-
setCompletedValue: function(value, foundItem){
|
280
|
+
setCompletedValue: function(value, foundItem, length){
|
281
|
+
this.isCompleted = false;
|
295
282
|
|
296
283
|
if(!this.options.valueCompletion || !foundItem || this.lastCompletedValue.length >= value.length ){
|
297
284
|
this.lastCompletedValue = value;
|
@@ -306,7 +293,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
306
293
|
|
307
294
|
if(value.length == end){
|
308
295
|
|
309
|
-
newValue = value + foundItem.value.substr(
|
296
|
+
newValue = value + foundItem.value.substr(length.length);
|
310
297
|
|
311
298
|
$(input).triggerHandler('triggerinput');
|
312
299
|
$.prop(input, 'value', newValue);
|
@@ -319,7 +306,7 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
319
306
|
$.prop(input, 'selectionEnd', newValue.length);
|
320
307
|
}
|
321
308
|
}, 0);
|
322
|
-
|
309
|
+
this.isCompleted = true;
|
323
310
|
}
|
324
311
|
},
|
325
312
|
showHideOptions: function(_fromShowList){
|
@@ -406,7 +393,8 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
406
393
|
this.lastUnfoundValue = value;
|
407
394
|
this.hideList();
|
408
395
|
} else {
|
409
|
-
this.
|
396
|
+
$(this.input).removeAttr('aria-activedescendant');
|
397
|
+
this.setCompletedValue(inputValue, firstFoundValue, value);
|
410
398
|
this.lastUnfoundValue = false;
|
411
399
|
}
|
412
400
|
},
|
@@ -443,14 +431,19 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
443
431
|
|
444
432
|
that.shadowList.find('li.active-item').removeClass('active-item');
|
445
433
|
that.popover.show(this.input);
|
446
|
-
|
434
|
+
$(this.input)
|
435
|
+
.attr({'aria-expanded': 'true'})
|
436
|
+
;
|
447
437
|
|
448
438
|
return true;
|
449
439
|
},
|
450
440
|
hideList: function(){
|
451
441
|
if(!this.popover.isVisible){return false;}
|
452
442
|
var that = this;
|
453
|
-
|
443
|
+
$(this.input)
|
444
|
+
.attr({'aria-expanded': 'false'})
|
445
|
+
.removeAttr('aria-activedescendant')
|
446
|
+
;
|
454
447
|
|
455
448
|
this.popover.hide();
|
456
449
|
that.shadowList.removeClass('datalist-visible list-item-active');
|
@@ -519,12 +512,16 @@ webshims.register('form-datalist-lazy', function($, webshims, window, document,
|
|
519
512
|
items.removeClass('active-item');
|
520
513
|
this.shadowList.addClass('list-item-active');
|
521
514
|
activeItem = items.filter(':eq('+ index +')').addClass('active-item');
|
522
|
-
|
515
|
+
|
523
516
|
if(doValue){
|
524
|
-
|
517
|
+
if(doValue != 'onlyScroll'){
|
518
|
+
this.changeValue(activeItem);
|
519
|
+
} else {
|
520
|
+
$(this.input).attr('aria-activedescendant', activeItem.prop('id'));
|
521
|
+
}
|
525
522
|
this.scrollIntoView(activeItem);
|
526
523
|
}
|
527
524
|
this.index = index;
|
528
525
|
}
|
529
526
|
});
|
530
|
-
});
|
527
|
+
});
|
@@ -239,7 +239,13 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
|
|
239
239
|
lazyLoad('WINDOWLOAD');
|
240
240
|
|
241
241
|
if(webshims.isReady('form-datalist-lazy')){
|
242
|
-
|
242
|
+
if(window.QUnit){
|
243
|
+
that._lazyCreate(opts);
|
244
|
+
} else {
|
245
|
+
setTimeout(function(){
|
246
|
+
that._lazyCreate(opts);
|
247
|
+
}, 9);
|
248
|
+
}
|
243
249
|
} else {
|
244
250
|
$(opts.input).one('focus', lazyLoad);
|
245
251
|
webshims.ready('form-datalist-lazy', function(){
|
@@ -8,9 +8,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
8
8
|
e.stopImmediatePropagation();
|
9
9
|
};
|
10
10
|
var getMonthOptions = function(opts){
|
11
|
-
var selectName = 'monthSelect'+opts.
|
11
|
+
var selectName = 'monthSelect'+opts.monthNames;
|
12
12
|
if(!curCfg[selectName]){
|
13
|
-
var labels = curCfg.date[opts.
|
13
|
+
var labels = curCfg.date[opts.monthNames] || monthDigits;
|
14
14
|
curCfg[selectName] = ('<option value=""></option>')+$.map(monthDigits, function(val, i){
|
15
15
|
return '<option value="'+val+'"]>'+labels[i]+'</option>';
|
16
16
|
}).join('');
|
@@ -35,13 +35,39 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
35
35
|
curCfg.patterns[name+'Obj'] = obj;
|
36
36
|
}
|
37
37
|
};
|
38
|
+
var createYearSelect = function(obj, opts){
|
39
|
+
var options, nowY, max, min;
|
40
|
+
if(opts.yearSelect){
|
41
|
+
nowY = parseInt(opts.value.split('-')[0], 10);
|
42
|
+
max = opts.max.split('-');
|
43
|
+
min = opts.min.split('-');
|
44
|
+
options = webshims.picker.createYearSelect(nowY || parseInt(min[0], 10) || parseInt(max[0], 10) || nowYear, max, min);
|
45
|
+
options.unshift('<option />');
|
46
|
+
$(obj.elements)
|
47
|
+
.filter('select.yy')
|
48
|
+
.html(options.join(''))
|
49
|
+
.each(function(){
|
50
|
+
if(!nowY){
|
51
|
+
$('option[selected]', this).removeAttr('selected');
|
52
|
+
$(this).val();
|
53
|
+
}
|
54
|
+
})
|
55
|
+
;
|
56
|
+
}
|
57
|
+
};
|
38
58
|
var splitInputs = {
|
39
59
|
date: {
|
40
60
|
_create: function(opts){
|
41
61
|
var obj = {
|
42
|
-
splits: [
|
62
|
+
splits: []
|
43
63
|
};
|
44
64
|
|
65
|
+
if(opts.yearSelect){
|
66
|
+
obj.splits.push($('<select class="yy"></select>')[0]);
|
67
|
+
} else {
|
68
|
+
obj.splits.push($('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
|
69
|
+
}
|
70
|
+
|
45
71
|
if(opts.monthSelect){
|
46
72
|
obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
|
47
73
|
} else {
|
@@ -54,6 +80,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
54
80
|
}
|
55
81
|
|
56
82
|
obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1], $('<span class="ws-input-seperator" />')[0], obj.splits[2]];
|
83
|
+
createYearSelect(obj, opts);
|
57
84
|
return obj;
|
58
85
|
},
|
59
86
|
sort: function(element){
|
@@ -78,8 +105,15 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
78
105
|
_create: function(opts){
|
79
106
|
|
80
107
|
var obj = {
|
81
|
-
splits: [
|
108
|
+
splits: []
|
82
109
|
};
|
110
|
+
|
111
|
+
if(opts.yearSelect){
|
112
|
+
obj.splits.push($('<select class="yy"></select>')[0]);
|
113
|
+
} else {
|
114
|
+
obj.splits.push($('<input type="text" class="yy" size="4" inputmode="numeric" maxlength="4" />')[0]);
|
115
|
+
}
|
116
|
+
|
83
117
|
if(opts.monthSelect){
|
84
118
|
obj.splits.push($('<select class="mm">'+getMonthOptions(opts)+'</select>')[0]);
|
85
119
|
} else {
|
@@ -90,6 +124,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
90
124
|
}
|
91
125
|
|
92
126
|
obj.elements = [obj.splits[0], $('<span class="ws-input-seperator" />')[0], obj.splits[1]];
|
127
|
+
createYearSelect(obj, opts);
|
93
128
|
return obj;
|
94
129
|
},
|
95
130
|
sort: function(element){
|
@@ -109,7 +144,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
109
144
|
};
|
110
145
|
|
111
146
|
var nowDate = new Date(new Date().getTime() - (new Date().getTimezoneOffset() * 60 * 1000 ));
|
112
|
-
|
147
|
+
var nowYear = nowDate.getFullYear();
|
148
|
+
nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), nowDate.getHours()).getTime();
|
113
149
|
var steps = {
|
114
150
|
number: {
|
115
151
|
step: 1
|
@@ -319,9 +355,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
319
355
|
$(document).triggerHandler('wslocalechange');
|
320
356
|
};
|
321
357
|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
358
|
curCfg = webshims.activeLang(formcfg);
|
326
359
|
|
327
360
|
triggerLocaleChange();
|
@@ -346,7 +379,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
346
379
|
|
347
380
|
|
348
381
|
var formatVal = {
|
349
|
-
number: function(val){
|
382
|
+
number: function(val, o){
|
350
383
|
return (val+'').replace(/\,/g, '').replace(/\./, curCfg.numberFormat['.']);
|
351
384
|
},
|
352
385
|
time: function(val){
|
@@ -383,7 +416,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
383
416
|
var names;
|
384
417
|
var p = val.split('-');
|
385
418
|
if(p[0] && p[1]){
|
386
|
-
names = curCfg.date[options.
|
419
|
+
names = curCfg.date[options.monthNames] || curCfg.date.monthNames;
|
387
420
|
p[1] = names[(p[1] * 1) - 1];
|
388
421
|
if(options && options.splitInput){
|
389
422
|
val = [p[0] || '', p[1] || ''];
|
@@ -704,7 +737,15 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
704
737
|
})
|
705
738
|
.on({
|
706
739
|
'change input focus focusin blur focusout': function(e){
|
740
|
+
var oVal, nVal;
|
707
741
|
$(e.target).trigger('ws__'+e.type);
|
742
|
+
if(o.toFixed && o.type == 'number' && e.type == 'change'){
|
743
|
+
oVal = that.element.prop('value');
|
744
|
+
nVal = that.toFixed(oVal, true);
|
745
|
+
if(oVal != nVal){
|
746
|
+
that.element[0].value = nVal;
|
747
|
+
}
|
748
|
+
}
|
708
749
|
}
|
709
750
|
})
|
710
751
|
|
@@ -853,11 +894,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
853
894
|
this.inputElements.attr('inputmode', 'numeric');
|
854
895
|
}
|
855
896
|
|
856
|
-
|
857
|
-
|
858
897
|
if((!o.max && typeof o.relMax == 'number') || (!o.min && typeof o.relMin == 'number')){
|
859
|
-
webshims.error('relMax/relMin are not supported anymore')
|
898
|
+
webshims.error('relMax/relMin are not supported anymore calculate at set it your own.');
|
860
899
|
}
|
900
|
+
|
901
|
+
if(this.options.relDefaultValue){
|
902
|
+
webshims.warn('relDefaultValue was removed use startValue instead!');
|
903
|
+
}
|
904
|
+
|
861
905
|
this._init = true;
|
862
906
|
},
|
863
907
|
createOpts: ['step', 'min', 'max', 'readonly', 'title', 'disabled', 'tabindex', 'placeholder', 'defaultValue', 'value', 'required'],
|
@@ -868,17 +912,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
868
912
|
this.inputElements = $(create.elements).prependTo(this.element).filter('input, select');
|
869
913
|
}
|
870
914
|
},
|
871
|
-
|
872
|
-
getRelNumber: function(rel){
|
873
|
-
var start = steps[this.type].start || 0;
|
874
|
-
if(rel){
|
875
|
-
start += rel;
|
876
|
-
}
|
877
|
-
return start;
|
878
|
-
},
|
879
915
|
addZero: addZero,
|
880
916
|
_setStartInRange: function(){
|
881
|
-
var start = this.
|
917
|
+
var start = this.options.startValue && this.asNumber( this.options.startValue ) || steps[this.type].start || 0;
|
882
918
|
if(!isNaN(this.minAsNumber) && start < this.minAsNumber){
|
883
919
|
start = this.minAsNumber;
|
884
920
|
} else if(!isNaN(this.maxAsNumber) && start > this.maxAsNumber){
|
@@ -890,7 +926,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
890
926
|
},
|
891
927
|
reorderInputs: function(){
|
892
928
|
if(splitInputs[this.type]){
|
893
|
-
var element = this.element;
|
929
|
+
var element = this.element.attr('dir', curCfg.date.isRTL ? 'rtl' : 'ltr');
|
894
930
|
splitInputs[this.type].sort(element, this.options);
|
895
931
|
setTimeout(function(){
|
896
932
|
var data = webshims.data(element);
|
@@ -916,6 +952,13 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
916
952
|
this.elemHelper.prop('value', val);
|
917
953
|
this.options.defValue = "";
|
918
954
|
}
|
955
|
+
},
|
956
|
+
toFixed: function(val, force){
|
957
|
+
var o = this.options;
|
958
|
+
if(o.toFixed && o.type == 'number' && val && this.valueAsNumber && (force || !this.element.is(':focus')) && (!o.fixOnlyFloat || (this.valueAsNumber % 1)) && !$(this.orig).is(':invalid')){
|
959
|
+
val = formatVal[this.type](this.valueAsNumber.toFixed(o.toFixed), this.options);
|
960
|
+
}
|
961
|
+
return val;
|
919
962
|
}
|
920
963
|
});
|
921
964
|
|
@@ -928,7 +971,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
928
971
|
} else {
|
929
972
|
this.elemHelper.prop(name, val);
|
930
973
|
}
|
931
|
-
|
974
|
+
|
932
975
|
val = formatVal[this.type](val, this.options);
|
933
976
|
if(this.options.splitInput){
|
934
977
|
$.each(this.splits, function(i, elem){
|
@@ -940,7 +983,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
940
983
|
}
|
941
984
|
});
|
942
985
|
} else {
|
943
|
-
this.element.prop(name, val);
|
986
|
+
this.element.prop(name, this.toFixed(val));
|
944
987
|
}
|
945
988
|
this._propertyChange(name);
|
946
989
|
this.mirrorValidity();
|
@@ -957,6 +1000,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
957
1000
|
this._setStartInRange();
|
958
1001
|
}
|
959
1002
|
this.options[name] = val;
|
1003
|
+
if(this._init){
|
1004
|
+
createYearSelect({elements: this.inputElements}, this.options);
|
1005
|
+
}
|
960
1006
|
this._propertyChange(name);
|
961
1007
|
this.mirrorValidity();
|
962
1008
|
};
|
@@ -977,7 +1023,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
977
1023
|
|
978
1024
|
$.fn.spinbtnUI = function(opts){
|
979
1025
|
opts = $.extend({
|
980
|
-
monthNames: '
|
1026
|
+
monthNames: 'monthNamesShort'
|
981
1027
|
}, opts);
|
982
1028
|
return this.each(function(){
|
983
1029
|
$.webshims.objectCreate(spinBtnProto, {
|
@@ -1007,6 +1053,53 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1007
1053
|
isVisible: true
|
1008
1054
|
};
|
1009
1055
|
|
1056
|
+
picker.isInRange = function(value, max, min){
|
1057
|
+
return !((min[0] && min[0] > value[0]) || (max[0] && max[0] < value[0]));
|
1058
|
+
};
|
1059
|
+
|
1060
|
+
|
1061
|
+
picker.createYearSelect = function(value, max, min, valueAdd, stepper){
|
1062
|
+
if(!stepper){
|
1063
|
+
stepper = {start: value, step: 1, label: value};
|
1064
|
+
}
|
1065
|
+
var temp;
|
1066
|
+
var goUp = true;
|
1067
|
+
var goDown = true;
|
1068
|
+
var options = ['<option selected="">'+ stepper.label + '</option>'];
|
1069
|
+
var i = 0;
|
1070
|
+
var createOption = function(value, add){
|
1071
|
+
var value2, label;
|
1072
|
+
if(stepper.step > 1){
|
1073
|
+
value2 = value + stepper.step - 1;
|
1074
|
+
label = value+' – '+value2;
|
1075
|
+
} else {
|
1076
|
+
label = value;
|
1077
|
+
}
|
1078
|
+
|
1079
|
+
if(picker.isInRange([value], max, min) || (value2 && picker.isInRange([value2], max, min))){
|
1080
|
+
options[add]('<option value="'+ (value+valueAdd) +'">'+ label +'</option>');
|
1081
|
+
return true;
|
1082
|
+
}
|
1083
|
+
};
|
1084
|
+
if(!valueAdd){
|
1085
|
+
valueAdd = '';
|
1086
|
+
}
|
1087
|
+
while(i < 18 && (goUp || goDown)){
|
1088
|
+
i++;
|
1089
|
+
if(goUp){
|
1090
|
+
temp = stepper.start - (i * stepper.step);
|
1091
|
+
goUp = createOption(temp, 'unshift');
|
1092
|
+
}
|
1093
|
+
if(goDown){
|
1094
|
+
temp = stepper.start + (i * stepper.step);
|
1095
|
+
goDown = createOption(temp, 'push');
|
1096
|
+
}
|
1097
|
+
|
1098
|
+
}
|
1099
|
+
|
1100
|
+
return options;
|
1101
|
+
};
|
1102
|
+
|
1010
1103
|
picker._genericSetFocus = function(element, _noFocus){
|
1011
1104
|
element = $(element || this.activeButton);
|
1012
1105
|
|
@@ -1016,12 +1109,12 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1016
1109
|
clearTimeout(that.timer);
|
1017
1110
|
that.timer = setTimeout(function(){
|
1018
1111
|
if(element[0]){
|
1019
|
-
element
|
1112
|
+
element.trigger('focus');
|
1020
1113
|
if(noTrigger !== true && !element.is(':focus')){
|
1021
1114
|
setFocus(true);
|
1022
1115
|
}
|
1023
1116
|
}
|
1024
|
-
}, that.popover.isVisible ?
|
1117
|
+
}, that.popover.isVisible ? 0 : 360);
|
1025
1118
|
};
|
1026
1119
|
this.popover.activateElement(element);
|
1027
1120
|
setFocus();
|
@@ -1234,7 +1327,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1234
1327
|
popover.preventBlur();
|
1235
1328
|
}
|
1236
1329
|
},
|
1237
|
-
mousedown: function(){
|
1330
|
+
mousedown: function(e){
|
1238
1331
|
mouseFocus = true;
|
1239
1332
|
setTimeout(resetMouseFocus, 9);
|
1240
1333
|
if(options.buttonOnly && popover.isVisible && popover.activeElement){
|
@@ -1392,31 +1485,41 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1392
1485
|
var updateStyles = function(){
|
1393
1486
|
$(data.orig).removeClass('ws-important-hide');
|
1394
1487
|
$.style( data.orig, 'display', '' );
|
1395
|
-
var hasButtons, marginR, marginL;
|
1488
|
+
var hasButtons, marginR, marginL, left, right, isRtl;
|
1396
1489
|
var correctWidth = 0.8;
|
1397
1490
|
if(!init || data.orig.offsetWidth){
|
1398
1491
|
hasButtons = data.buttonWrapper && data.buttonWrapper.filter(isVisible).length;
|
1399
|
-
|
1400
|
-
data.
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1492
|
+
|
1493
|
+
isRtl = hasButtons && data.buttonWrapper.css('direction') == 'rtl';
|
1494
|
+
if(isRtl){
|
1495
|
+
left = 'Right';
|
1496
|
+
right = 'Left';
|
1497
|
+
} else {
|
1498
|
+
left = 'Left';
|
1499
|
+
right = 'Right';
|
1500
|
+
}
|
1501
|
+
|
1502
|
+
marginR = $.css( data.orig, 'margin'+right);
|
1503
|
+
|
1504
|
+
data.element
|
1505
|
+
.css('margin'+left, $.css( data.orig, 'margin'+left))
|
1506
|
+
.css('margin'+right, hasButtons ? 0 : marginR)
|
1507
|
+
;
|
1404
1508
|
|
1405
1509
|
if(hasButtons){
|
1406
|
-
|
1407
|
-
data.
|
1510
|
+
data.buttonWrapper[isRtl ? 'addClass' : 'removeClass']('ws-is-rtl');
|
1511
|
+
marginL = (parseInt(data.buttonWrapper.css('margin'+left), 10) || 0);
|
1512
|
+
data.element.css('padding'+right, '');
|
1408
1513
|
|
1409
1514
|
if(marginL < 0){
|
1410
1515
|
marginR = (parseInt(marginR, 10) || 0) + ((data.buttonWrapper.outerWidth() + marginL) * -1);
|
1411
|
-
data.buttonWrapper.css('
|
1516
|
+
data.buttonWrapper.css('margin'+right, marginR);
|
1412
1517
|
data.element
|
1413
|
-
.css(
|
1414
|
-
.css(
|
1415
|
-
paddingRight: (parseInt( data.element.css('paddingRight'), 10) || 0) + data.buttonWrapper.outerWidth()
|
1416
|
-
})
|
1518
|
+
.css('padding'+right, '')
|
1519
|
+
.css('padding'+right, (parseInt( data.element.css('padding'+right), 10) || 0) + data.buttonWrapper.outerWidth())
|
1417
1520
|
;
|
1418
1521
|
} else {
|
1419
|
-
data.buttonWrapper.css('
|
1522
|
+
data.buttonWrapper.css('margin'+right, marginR);
|
1420
1523
|
correctWidth = data.buttonWrapper.outerWidth(true) + correctWidth;
|
1421
1524
|
}
|
1422
1525
|
}
|
@@ -1434,7 +1537,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1434
1537
|
|
1435
1538
|
var type = $.prop(this, 'type');
|
1436
1539
|
|
1437
|
-
var i, opts, data, optsName, labels;
|
1540
|
+
var i, opts, data, optsName, labels, cNames;
|
1438
1541
|
if(inputTypes[type] && webshims.implement(this, 'inputwidgets')){
|
1439
1542
|
data = {};
|
1440
1543
|
optsName = type;
|
@@ -1472,17 +1575,38 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1472
1575
|
opts[optsName] = $.attr(this, copyAttrs[i]) || opts[optsName];
|
1473
1576
|
}
|
1474
1577
|
}
|
1475
|
-
|
1476
|
-
|
1477
|
-
|
1578
|
+
if(opts.formatMonthNames){
|
1579
|
+
webshims.error('formatMonthNames was renamded to monthNames');
|
1580
|
+
}
|
1581
|
+
if(opts.onlyMonthDigits){
|
1582
|
+
opts.monthNames = 'monthDigits';
|
1478
1583
|
}
|
1479
1584
|
data.shim = inputTypes[type]._create(opts);
|
1480
|
-
|
1585
|
+
|
1481
1586
|
webshims.addShadowDom(this, data.shim.element, {
|
1482
1587
|
data: data.shim || {}
|
1483
1588
|
});
|
1484
1589
|
|
1485
1590
|
data.shim.options.containerElements.push(data.shim.element[0]);
|
1591
|
+
cNames = $.prop(this, 'className');
|
1592
|
+
if(opts.classes){
|
1593
|
+
cNames += ' '+opts.classes;
|
1594
|
+
}
|
1595
|
+
|
1596
|
+
if(opts.splitInput || type == 'range'){
|
1597
|
+
cNames = cNames.replace('form-control', '');
|
1598
|
+
}
|
1599
|
+
|
1600
|
+
data.shim.element.on('change input', stopPropagation).addClass(cNames);
|
1601
|
+
|
1602
|
+
if(data.shim.buttonWrapper){
|
1603
|
+
|
1604
|
+
data.shim.buttonWrapper.addClass('input-button-size-'+(data.shim.buttonWrapper.children().filter(isVisible).length));
|
1605
|
+
|
1606
|
+
if(data.shim.buttonWrapper.filter(isVisible).length){
|
1607
|
+
data.shim.element.addClass('has-input-buttons');
|
1608
|
+
}
|
1609
|
+
}
|
1486
1610
|
|
1487
1611
|
labelWidth($(this).getShadowFocusElement(), labels);
|
1488
1612
|
|
@@ -1514,14 +1638,13 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1514
1638
|
$(opts.orig).trigger(hasFocus ? 'focusin' : 'focusout');
|
1515
1639
|
}
|
1516
1640
|
hasFocusTriggered = hasFocus;
|
1517
|
-
},
|
1641
|
+
}, 9);
|
1518
1642
|
}
|
1519
1643
|
})
|
1520
1644
|
;
|
1521
1645
|
})();
|
1522
|
-
|
1523
1646
|
|
1524
|
-
|
1647
|
+
|
1525
1648
|
|
1526
1649
|
if(hasFormValidation){
|
1527
1650
|
$(opts.orig).on('firstinvalid', function(e){
|
@@ -1537,13 +1660,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1537
1660
|
});
|
1538
1661
|
}
|
1539
1662
|
|
1540
|
-
|
1541
|
-
if(data.shim.buttonWrapper && data.shim.buttonWrapper.filter(isVisible).length){
|
1542
|
-
data.shim.element.addClass('has-input-buttons');
|
1543
|
-
}
|
1544
|
-
|
1545
|
-
data.shim.element.addClass($.prop(this, 'className'));
|
1546
|
-
|
1547
1663
|
if(opts.calculateWidth){
|
1548
1664
|
sizeInput(data.shim);
|
1549
1665
|
} else {
|
@@ -1605,7 +1721,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1605
1721
|
if(!modernizrInputTypes[name] || replace[name]){
|
1606
1722
|
extendType(name, {
|
1607
1723
|
_create: function(opts, set){
|
1608
|
-
if(opts.monthSelect || opts.daySelect){
|
1724
|
+
if(opts.monthSelect || opts.daySelect || opts.yearSelect){
|
1609
1725
|
opts.splitInput = true;
|
1610
1726
|
}
|
1611
1727
|
if(opts.splitInput && !splitInputs[name]){
|
@@ -1624,7 +1740,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1624
1740
|
if(webshims.picker && webshims.picker[name]){
|
1625
1741
|
webshims.picker[name](data);
|
1626
1742
|
}
|
1627
|
-
data.buttonWrapper.addClass('input-button-size-'+(data.buttonWrapper.children().filter(isVisible).length));
|
1628
1743
|
return data;
|
1629
1744
|
}
|
1630
1745
|
});
|