webshims-rails 1.10.10 → 1.10.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/MIT_LICENSE.txt +3 -1
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +8 -9
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +91 -58
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +247 -101
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +241 -96
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +79 -58
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +79 -12
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +68 -75
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +147 -133
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +288 -143
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +288 -143
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +85 -63
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +97 -91
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +85 -17
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +17 -17
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +79 -58
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +17 -16
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +85 -63
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +0 -46
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +13 -6
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +47 -31
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +47 -59
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +18 -33
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +35 -31
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +304 -157
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +304 -185
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +126 -117
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +126 -89
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +247 -129
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +6 -5
- data/vendor/assets/javascripts/webshims/shims/form-core.js +12 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -28
- data/vendor/assets/javascripts/webshims/shims/form-message.js +29 -26
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +16 -14
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +47 -47
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +241 -96
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +21 -16
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +17 -16
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +173 -41
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +17 -17
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +35 -33
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-ZN.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.txt +17 -13
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.txt +4 -1
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +30 -28
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +35 -32
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +37 -36
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +5 -2
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +33 -30
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +3 -1
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +32 -30
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +79 -12
- data/vendor/assets/javascripts/webshims/shims/styles/forms.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +126 -121
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +100 -111
- data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -46
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +13 -6
- data/webshims-rails.gemspec +1 -0
- metadata +4 -3
@@ -75,6 +75,7 @@ var validityPrototype = {
|
|
75
75
|
customError: false,
|
76
76
|
|
77
77
|
typeMismatch: false,
|
78
|
+
badInput: false,
|
78
79
|
rangeUnderflow: false,
|
79
80
|
rangeOverflow: false,
|
80
81
|
stepMismatch: false,
|
@@ -134,20 +135,6 @@ var validityRules = {
|
|
134
135
|
tooLong: function(){
|
135
136
|
return false;
|
136
137
|
},
|
137
|
-
typeMismatch: function (input, val, cache){
|
138
|
-
if(val === '' || cache.nodeName == 'select'){return false;}
|
139
|
-
var ret = false;
|
140
|
-
if(!('type' in cache)){
|
141
|
-
cache.type = getType(input[0]);
|
142
|
-
}
|
143
|
-
|
144
|
-
if(typeModels[cache.type] && typeModels[cache.type].mismatch){
|
145
|
-
ret = typeModels[cache.type].mismatch(val, input);
|
146
|
-
} else if('validity' in input[0]){
|
147
|
-
ret = input[0].validity.typeMismatch;
|
148
|
-
}
|
149
|
-
return ret;
|
150
|
-
},
|
151
138
|
patternMismatch: function(input, val, cache) {
|
152
139
|
if(val === '' || cache.nodeName == 'select'){return false;}
|
153
140
|
var pattern = input.attr('pattern');
|
@@ -164,6 +151,23 @@ var validityRules = {
|
|
164
151
|
}
|
165
152
|
;
|
166
153
|
|
154
|
+
$.each({typeMismatch: 'mismatch', badInput: 'bad'}, function(name, fn){
|
155
|
+
validityRules[name] = function (input, val, cache){
|
156
|
+
if(val === '' || cache.nodeName == 'select'){return false;}
|
157
|
+
var ret = false;
|
158
|
+
if(!('type' in cache)){
|
159
|
+
cache.type = getType(input[0]);
|
160
|
+
}
|
161
|
+
|
162
|
+
if(typeModels[cache.type] && typeModels[cache.type][fn]){
|
163
|
+
ret = typeModels[cache.type][fn](val, input);
|
164
|
+
} else if('validity' in input[0] && ('name' in input[0].validity)){
|
165
|
+
ret = input[0].validity[name] || false;
|
166
|
+
}
|
167
|
+
return ret;
|
168
|
+
};
|
169
|
+
});
|
170
|
+
|
167
171
|
webshims.addValidityRule = function(type, fn){
|
168
172
|
validityRules[type] = fn;
|
169
173
|
};
|
@@ -209,8 +213,9 @@ $.event.special.invalid = {
|
|
209
213
|
}
|
210
214
|
};
|
211
215
|
|
216
|
+
var supportSubmitBubbles = !('submitBubbles' in $.support) || $.support.submitBubbles;
|
212
217
|
var addSubmitBubbles = function(form){
|
213
|
-
if (
|
218
|
+
if (!supportSubmitBubbles && form && typeof form == 'object' && !form._submit_attached ) {
|
214
219
|
|
215
220
|
$.event.add( form, 'submit._submit', function( event ) {
|
216
221
|
event._submit_bubble = true;
|
@@ -219,7 +224,7 @@ var addSubmitBubbles = function(form){
|
|
219
224
|
form._submit_attached = true;
|
220
225
|
}
|
221
226
|
};
|
222
|
-
if(
|
227
|
+
if(!supportSubmitBubbles && $.event.special.submit){
|
223
228
|
$.event.special.submit.setup = function() {
|
224
229
|
// Only need this for delegated form submit events
|
225
230
|
if ( $.nodeName( this, "form" ) ) {
|
@@ -2,8 +2,8 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
2
2
|
var isWebkit = 'webkitURL' in window;
|
3
3
|
var chromeBugs = isWebkit && Modernizr.formvalidation && !webshims.bugs.bustedValidity;
|
4
4
|
var webkitVersion = chromeBugs && parseFloat((navigator.userAgent.match(/Safari\/([\d\.]+)/) || ['', '999999'])[1], 10);
|
5
|
-
var invalidClass = 'user-error';
|
6
|
-
var validClass = 'user-success';
|
5
|
+
var invalidClass = options.iVal.errorClass || 'user-error';
|
6
|
+
var validClass = options.iVal.successClass || 'user-success';
|
7
7
|
var checkTypes = {checkbox: 1, radio: 1};
|
8
8
|
|
9
9
|
var emptyJ = $([]);
|
@@ -76,6 +76,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
76
76
|
'datetime-local': 1
|
77
77
|
};
|
78
78
|
var switchValidityClass = function(e){
|
79
|
+
if(!options.iVal.sel){return;}
|
79
80
|
var elem, timer, shadowElem, shadowType;
|
80
81
|
if(!e.target){return;}
|
81
82
|
elem = $(e.target).getNativeElement()[0];
|
@@ -182,7 +183,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
182
183
|
$(document.documentElement)
|
183
184
|
;
|
184
185
|
};
|
185
|
-
var minWidth = (Modernizr.boxSizing || Modernizr['display-table'] || $.support.getSetAttribute) ?
|
186
|
+
var minWidth = (Modernizr.boxSizing || Modernizr['display-table'] || $.support.getSetAttribute || $.support.boxSizing) ?
|
186
187
|
'minWidth' :
|
187
188
|
'width'
|
188
189
|
;
|
@@ -235,14 +236,21 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
235
236
|
return container == contained || $.contains(container, contained);
|
236
237
|
},
|
237
238
|
show: function(element){
|
239
|
+
if(this.isVisible){return;}
|
238
240
|
var e = $.Event('wspopoverbeforeshow');
|
239
241
|
this.element.trigger(e);
|
240
|
-
if(e.isDefaultPrevented()
|
242
|
+
if(e.isDefaultPrevented()){return;}
|
241
243
|
this.isVisible = true;
|
242
244
|
element = $(element || this.options.prepareFor).getNativeElement() ;
|
243
245
|
|
244
246
|
var that = this;
|
245
247
|
var visual = $(element).getShadowElement();
|
248
|
+
var delayedRepos = function(e){
|
249
|
+
clearTimeout(that.timers.repos);
|
250
|
+
that.timers.repos = setTimeout(function(){
|
251
|
+
that.position(visual);
|
252
|
+
}, e && e.type == 'pospopover' ? 4 : 200);
|
253
|
+
};
|
246
254
|
|
247
255
|
this.clear();
|
248
256
|
this.element.removeClass('ws-po-visible').css('display', 'none');
|
@@ -256,22 +264,15 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
256
264
|
that.element.addClass('ws-po-visible').trigger('wspopovershow');
|
257
265
|
}, 9);
|
258
266
|
}, 9);
|
259
|
-
|
260
|
-
if(!e.originalEvent){
|
261
|
-
that.destroy();
|
262
|
-
}
|
263
|
-
});
|
267
|
+
|
264
268
|
$(document).on('focusin'+this.eventns+' mousedown'+this.eventns, function(e){
|
265
269
|
if(that.options.hideOnBlur && !that.stopBlur && !that.isInElement(that.lastElement[0] || document.body, e.target) && !that.isInElement(element[0] || document.body, e.target) && !that.isInElement(that.element[0], e.target)){
|
266
270
|
that.hide();
|
267
271
|
}
|
268
272
|
});
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
that.position(visual);
|
273
|
-
}, 400);
|
274
|
-
});
|
273
|
+
|
274
|
+
this.element.off('pospopover').on('pospopover', delayedRepos);
|
275
|
+
$(window).on('resize'+this.eventns + ' pospopover'+this.eventns, delayedRepos);
|
275
276
|
},
|
276
277
|
prepareFor: function(element, visual){
|
277
278
|
var onBlur;
|
@@ -476,7 +477,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
476
477
|
}
|
477
478
|
}
|
478
479
|
if(!fieldWrapper){
|
479
|
-
fieldWrapper = $(elem).parent().closest(':not(span, label, em, strong, b, mark, p)');
|
480
|
+
fieldWrapper = $(elem).parent().closest(':not(span, label, em, strong, b, i, mark, p)');
|
480
481
|
}
|
481
482
|
return fieldWrapper;
|
482
483
|
},
|
@@ -8,9 +8,12 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
8
8
|
var ret = [date.getFullYear(), moduleOpts.addZero(date.getMonth() + 1), moduleOpts.addZero(date.getDate())];
|
9
9
|
ret.month = ret[0]+'-'+ret[1];
|
10
10
|
ret.date = ret[0]+'-'+ret[1]+'-'+ret[2];
|
11
|
+
ret.time = date.getHours() +':'+ date.getMinutes();
|
12
|
+
|
13
|
+
ret['datetime-local'] = ret.date +'T'+ ret.time;
|
11
14
|
return ret;
|
12
15
|
};
|
13
|
-
var today = getDateArray(new Date(
|
16
|
+
var today = getDateArray(new Date());
|
14
17
|
|
15
18
|
|
16
19
|
var _setFocus = function(element, _noFocus){
|
@@ -296,11 +299,12 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
296
299
|
picker.getYearList = function(value, data){
|
297
300
|
var j, i, val, disabled, lis, prevDisabled, nextDisabled, classStr, classArray, start;
|
298
301
|
|
299
|
-
|
300
|
-
var size =
|
301
|
-
var max =
|
302
|
-
var min =
|
303
|
-
var
|
302
|
+
var o = data.options;
|
303
|
+
var size = o.size;
|
304
|
+
var max = o.max.split('-');
|
305
|
+
var min = o.min.split('-');
|
306
|
+
var cols = o.cols || 4;
|
307
|
+
var currentValue = o.value.split('-');
|
304
308
|
var xthCorrect = 0;
|
305
309
|
var enabled = 0;
|
306
310
|
var str = '';
|
@@ -346,7 +350,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
346
350
|
|
347
351
|
classStr = classArray.length ? ' class="'+ (classArray.join(' ')) +'"' : '';
|
348
352
|
|
349
|
-
if(i && !(i %
|
353
|
+
if(i && !(i % cols)){
|
350
354
|
rowNum++;
|
351
355
|
lis.push('</tr><tr class="ws-row-'+ rowNum +'">');
|
352
356
|
}
|
@@ -375,6 +379,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
375
379
|
var size = o.size;
|
376
380
|
var max = o.max.split('-');
|
377
381
|
var min = o.min.split('-');
|
382
|
+
var cols = o.cols || 4;
|
378
383
|
var currentValue = o.value.split('-');
|
379
384
|
var enabled = 0;
|
380
385
|
var rowNum = 0;
|
@@ -387,6 +392,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
387
392
|
} else {
|
388
393
|
prevDisabled = picker.isInRange([value-1], max, min) ? {'data-action': 'setMonthList','value': value-1} : false;
|
389
394
|
}
|
395
|
+
|
390
396
|
if(j == size - 1){
|
391
397
|
nextDisabled = picker.isInRange([value+1], max, min) ? {'data-action': 'setMonthList','value': value+1} : false;
|
392
398
|
}
|
@@ -431,7 +437,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
431
437
|
}
|
432
438
|
|
433
439
|
classStr = (classArray.length) ? ' class="'+ (classArray.join(' ')) +'"' : '';
|
434
|
-
if(i && !(i %
|
440
|
+
if(i && !(i % cols)){
|
435
441
|
rowNum++;
|
436
442
|
lis.push('</tr><tr class="ws-row-'+ rowNum +'">');
|
437
443
|
}
|
@@ -455,7 +461,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
455
461
|
|
456
462
|
picker.getDayList = function(value, data){
|
457
463
|
|
458
|
-
var j, i, k, day, nDay, name, val, disabled, lis, prevDisabled, nextDisabled, addTr, week, rowNum;
|
464
|
+
var j, i, k, day, nDay, name, val, disabled, lis, prevDisabled, nextDisabled, yearNext, yearPrev, addTr, week, rowNum;
|
459
465
|
|
460
466
|
var lastMotnh, curMonth, otherMonth, dateArray, monthName, fullMonthName, buttonStr, date2, classArray;
|
461
467
|
var o = data.options;
|
@@ -467,9 +473,19 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
467
473
|
var enabled = 0;
|
468
474
|
var str = [];
|
469
475
|
var date = new Date(value[0], value[1] - 1, 1);
|
476
|
+
var action = (data.type == 'datetime-local') ? 'setTimeList' : 'changeInput';
|
470
477
|
|
471
478
|
date.setMonth(date.getMonth() - Math.floor((size - 1) / 2));
|
472
479
|
|
480
|
+
if(o.yearButtons){
|
481
|
+
yearNext = [ (value[0] * 1) + 1, value[1] ];
|
482
|
+
yearNext = picker.isInRange(yearNext, max, min) ? {'data-action': 'setDayList','value': yearNext.join('-')} : false;
|
483
|
+
|
484
|
+
yearPrev = [ (value[0] * 1) - 1, value[1] ];
|
485
|
+
yearPrev = picker.isInRange(yearPrev, max, min) ? {'data-action': 'setDayList','value': yearPrev.join('-')} : false;
|
486
|
+
}
|
487
|
+
|
488
|
+
|
473
489
|
for(j = 0; j < size; j++){
|
474
490
|
date.setDate(1);
|
475
491
|
lastMotnh = date.getMonth();
|
@@ -483,6 +499,8 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
483
499
|
|
484
500
|
dateArray = getDateArray(date);
|
485
501
|
|
502
|
+
|
503
|
+
|
486
504
|
str.push('<div class="day-list picker-list ws-index-'+ j +'"><div class="ws-picker-header">');
|
487
505
|
if( o.selectNav ){
|
488
506
|
monthName = ['<select data-action="setDayList" class="month-select" tabindex="0">'+ picker.createMonthSelect(dateArray, max, min, monthNames).join('') +'</select>', '<select data-action="setDayList" class="year-select" tabindex="0">'+ picker.createYearSelect(dateArray[0], max, min, '-'+dateArray[1]).join('') +'</select>'];
|
@@ -563,7 +581,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
563
581
|
}
|
564
582
|
|
565
583
|
dateArray = getDateArray(date);
|
566
|
-
buttonStr = '<td role="presentation" class="day-'+ day +'"><button data-id="day-'+ date.getDate() +'" role="gridcell" data-action="
|
584
|
+
buttonStr = '<td role="presentation" class="day-'+ day +'"><button data-id="day-'+ date.getDate() +'" role="gridcell" data-action="'+action+'" value="'+ (dateArray.join('-')) +'" type="button"';
|
567
585
|
|
568
586
|
if(otherMonth){
|
569
587
|
classArray.push('othermonth');
|
@@ -605,6 +623,77 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
605
623
|
main: str.join(''),
|
606
624
|
prev: prevDisabled,
|
607
625
|
next: nextDisabled,
|
626
|
+
yearPrev: yearPrev,
|
627
|
+
yearNext: yearNext,
|
628
|
+
type: 'Grid'
|
629
|
+
};
|
630
|
+
};
|
631
|
+
|
632
|
+
// var createDatimeValue =
|
633
|
+
|
634
|
+
|
635
|
+
picker.getTimeList = function(value, data){
|
636
|
+
var label, tmpValue, iVal, hVal, valPrefix;
|
637
|
+
var str = '<div class="time-list picker-list ws-index-0">';
|
638
|
+
var i = 0;
|
639
|
+
var rowNum = 0;
|
640
|
+
var len = 23;
|
641
|
+
var attrs = {
|
642
|
+
min: $.prop(data.orig, 'min'),
|
643
|
+
max: $.prop(data.orig, 'max'),
|
644
|
+
step: $.prop(data.orig, 'step')
|
645
|
+
};
|
646
|
+
var o = data.options;
|
647
|
+
var monthNames = curCfg.date[o.monthNamesHead] || curCfg.date[o.monthNames] || curCfg.date.monthNames;
|
648
|
+
var gridLabel = '';
|
649
|
+
|
650
|
+
if(data.type == 'time'){
|
651
|
+
label = '<button type="button" disabled="">'+ $.trim($(data.orig).jProp('labels').text() || '').replace(/[\:\*]/g, '')+'</button>';
|
652
|
+
} else {
|
653
|
+
tmpValue = value[2].split('T');
|
654
|
+
value[2] = tmpValue[0];
|
655
|
+
if(tmpValue[1]){
|
656
|
+
value[3] = tmpValue[1];
|
657
|
+
}
|
658
|
+
label = value[2] +'. '+ (monthNames[(value[1] * 1) - 1]) +' '+ value[0];
|
659
|
+
gridLabel = ' aria-label="'+ label +'"';
|
660
|
+
label = '<button tabindex="-1" data-action="setDayList" value="'+value[0]+'-'+value[1]+'-'+value[2]+'" type="button">'+label+'</button>';
|
661
|
+
valPrefix = value[0] +'-'+value[1]+'-'+value[2]+'T';
|
662
|
+
}
|
663
|
+
|
664
|
+
str += '<div class="ws-picker-header">'+label+'</div>';
|
665
|
+
|
666
|
+
str += '<div class="picker-grid"><table role="grid"'+ gridLabel +'><tbody><tr>';
|
667
|
+
for(; i <= len; i++){
|
668
|
+
iVal = moduleOpts.addZero(''+i) +':00';
|
669
|
+
hVal = valPrefix ?
|
670
|
+
valPrefix+iVal :
|
671
|
+
iVal
|
672
|
+
;
|
673
|
+
|
674
|
+
if(i && !(i % 4)){
|
675
|
+
rowNum++;
|
676
|
+
str += '</tr><tr class="ws-row-'+ rowNum +'">';
|
677
|
+
}
|
678
|
+
str += '<td role="presentation"><button role="gridcell" data-action="changeInput" value="'+ hVal +'" type="button" tabindex="-1"';
|
679
|
+
|
680
|
+
if(!data.isValid(hVal, attrs)){
|
681
|
+
str += ' disabled=""';
|
682
|
+
}
|
683
|
+
if(value == iVal){
|
684
|
+
str += ' class="checked-value"';
|
685
|
+
}
|
686
|
+
str += '>'+ data.formatValue(iVal) +'</button></td>';
|
687
|
+
}
|
688
|
+
|
689
|
+
|
690
|
+
str += '</tr></tbody></table></div></div>';
|
691
|
+
|
692
|
+
return {
|
693
|
+
enabled: 9,
|
694
|
+
main: str,
|
695
|
+
prev: false,
|
696
|
+
next: false,
|
608
697
|
type: 'Grid'
|
609
698
|
};
|
610
699
|
};
|
@@ -691,10 +780,25 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
691
780
|
var stops = {
|
692
781
|
date: 'Day',
|
693
782
|
week: 'Day',
|
694
|
-
month: 'Month'
|
783
|
+
month: 'Month',
|
784
|
+
'datetime-local': 'Time',
|
785
|
+
time: 'Time'
|
786
|
+
};
|
787
|
+
var setDirButtons = function(content, popover, dir){
|
788
|
+
if(content[dir]){
|
789
|
+
popover[dir+'Element']
|
790
|
+
.attr(content[dir])
|
791
|
+
.prop({disabled: false})
|
792
|
+
;
|
793
|
+
} else {
|
794
|
+
popover[dir+'Element']
|
795
|
+
.removeAttr('data-action')
|
796
|
+
.prop({disabled: true})
|
797
|
+
;
|
798
|
+
}
|
695
799
|
};
|
696
800
|
|
697
|
-
$.each({'setYearList' : ['Year', 'Month', 'Day'], 'setMonthList': ['Month', 'Day'], 'setDayList': ['Day']}, function(setName, names){
|
801
|
+
$.each({'setYearList' : ['Year', 'Month', 'Day', 'Time'], 'setMonthList': ['Month', 'Day', 'Time'], 'setDayList': ['Day', 'Time'], 'setTimeList': ['Time']}, function(setName, names){
|
698
802
|
var getNames = names.map(retNames);
|
699
803
|
var setNames = names.map(retSetNames);
|
700
804
|
actions[setName] = function(val, popover, data, startAt){
|
@@ -719,32 +823,22 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
719
823
|
})
|
720
824
|
;
|
721
825
|
popover.bodyElement.html(content.main);
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
popover
|
729
|
-
.removeAttr('data-action')
|
730
|
-
.prop({disabled: true})
|
731
|
-
;
|
732
|
-
}
|
733
|
-
if(content.next){
|
734
|
-
popover.nextElement
|
735
|
-
.attr(content.next)
|
736
|
-
.prop({disabled: false})
|
737
|
-
;
|
738
|
-
} else {
|
739
|
-
popover.nextElement
|
740
|
-
.removeAttr('data-action')
|
741
|
-
.prop({disabled: true})
|
742
|
-
;
|
826
|
+
|
827
|
+
setDirButtons(content, popover, 'prev');
|
828
|
+
setDirButtons(content, popover, 'next');
|
829
|
+
|
830
|
+
if(o.yearButtons){
|
831
|
+
setDirButtons(content, popover, 'yearPrev');
|
832
|
+
setDirButtons(content, popover, 'yearNext');
|
743
833
|
}
|
834
|
+
|
744
835
|
if(webshims[content.type]){
|
745
836
|
new webshims[content.type](popover.bodyElement.children(), popover, content);
|
746
837
|
}
|
747
|
-
popover.element.trigger('pickerchange')
|
838
|
+
popover.element.trigger('pickerchange')
|
839
|
+
.filter('[data-vertical="bottom"]')
|
840
|
+
.triggerHandler('pospopover')
|
841
|
+
;
|
748
842
|
return false;
|
749
843
|
}
|
750
844
|
}
|
@@ -780,6 +874,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
780
874
|
return false;
|
781
875
|
};
|
782
876
|
var id = new Date().getTime();
|
877
|
+
|
783
878
|
var generateList = function(o, max, min){
|
784
879
|
var options = [];
|
785
880
|
var label = '';
|
@@ -820,10 +915,12 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
820
915
|
} else if($(this).is('.ws-current')){
|
821
916
|
text = (curCfg[data.type] || {}).currentText;
|
822
917
|
if(!text){
|
823
|
-
text = (formcfg[''][[data.type]] || {}).currentText || 'current';
|
824
|
-
webshims.warn("could not get currentText from form cfg");
|
918
|
+
text = (formcfg[''][[data.type]] || {}).currentText || (curCfg.date || {}).currentText || 'current';
|
919
|
+
webshims.warn("could not get currentText from form cfg for "+data.type);
|
920
|
+
}
|
921
|
+
if(today[data.type] && data.type != 'time'){
|
922
|
+
$.prop(this, 'disabled', !picker.isInRange(today[data.type].split('-'), o.maxS, o.minS));
|
825
923
|
}
|
826
|
-
$.prop(this, 'disabled', !picker.isInRange(today[data.type].split('-'), o.maxS, o.minS));
|
827
924
|
}
|
828
925
|
if(text){
|
829
926
|
$(this).text(text).attr({'aria-label': text});
|
@@ -833,13 +930,36 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
833
930
|
}
|
834
931
|
|
835
932
|
});
|
836
|
-
popover.nextElement
|
837
|
-
|
838
|
-
|
839
|
-
|
933
|
+
popover.nextElement
|
934
|
+
.attr({'aria-label': curCfg.date.nextText})
|
935
|
+
.find('span')
|
936
|
+
.html(curCfg.date.nextText)
|
937
|
+
;
|
938
|
+
popover.prevElement
|
939
|
+
.attr({'aria-label': curCfg.date.prevText})
|
940
|
+
.find('span')
|
941
|
+
.html(curCfg.date.prevText)
|
942
|
+
;
|
943
|
+
|
944
|
+
if(o.yearButtons){
|
945
|
+
popover.yearNextElement
|
946
|
+
.attr({'aria-label': curCfg.date.nextText})
|
947
|
+
.find('span')
|
948
|
+
.html(curCfg.date.nextText)
|
949
|
+
;
|
950
|
+
popover.yearPrevElement
|
951
|
+
.attr({'aria-label': curCfg.date.prevText})
|
952
|
+
.find('span')
|
953
|
+
.html(curCfg.date.prevText)
|
954
|
+
;
|
955
|
+
}
|
840
956
|
|
841
957
|
generateList(o, o.maxS, o.minS);
|
842
958
|
|
959
|
+
if(popover.isVisible){
|
960
|
+
picker.showPickerContent(data, popover);
|
961
|
+
}
|
962
|
+
|
843
963
|
}
|
844
964
|
$('button.ws-empty', popover.buttonRow).prop('disabled', $.prop(data.orig, 'required'));
|
845
965
|
popover.isDirty = false;
|
@@ -853,6 +973,8 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
853
973
|
}
|
854
974
|
};
|
855
975
|
|
976
|
+
|
977
|
+
|
856
978
|
popover.contentElement.html('<button class="ws-prev" tabindex="0"><span></span></button> <button class="ws-next" tabindex="0"><span></span></button><div class="ws-picker-body"></div><div class="ws-button-row"><button type="button" class="ws-current" data-action="changeInput" value="'+today[data.type]+'" tabindex="0"></button> <button type="button" data-action="changeInput" value="" class="ws-empty" tabindex="0"></button></div>');
|
857
979
|
popover.nextElement = $('button.ws-next', popover.contentElement);
|
858
980
|
popover.prevElement = $('button.ws-prev', popover.contentElement);
|
@@ -860,11 +982,21 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
|
|
860
982
|
popover.buttonRow = $('div.ws-button-row', popover.contentElement);
|
861
983
|
popover.element.on('updatepickercontent', updateContent);
|
862
984
|
|
985
|
+
if(data.options.yearButtons){
|
986
|
+
popover.element.addClass('ws-year-buttons');
|
987
|
+
popover.yearNextElement = $('<button class="ws-super-next" tabindex="0"><span></span></button>').insertAfter(popover.nextElement);
|
988
|
+
popover.yearPrevElement = $('<button class="ws-super-prev" tabindex="0"><span></span></button>').insertBefore(popover.prevElement);
|
989
|
+
}
|
990
|
+
|
863
991
|
popover.contentElement
|
864
992
|
.on('click', 'button[data-action]', actionfn)
|
865
993
|
.on('change', 'select[data-action]', actionfn)
|
866
994
|
;
|
867
995
|
|
996
|
+
if(data.options.inlinePicker){
|
997
|
+
data.options.updateOnInput = true;
|
998
|
+
}
|
999
|
+
|
868
1000
|
$(data.options.orig).on('input', function(){
|
869
1001
|
var currentView;
|
870
1002
|
if(data.options.updateOnInput && popover.isVisible && data.options.value && (currentView = popover.element.attr('data-currentview'))){
|