webshims-rails 1.12.5 → 1.12.7
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 +111 -132
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
- data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
- data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
- data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
- data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
- data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
- data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
- metadata +12 -5
- data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2087
@@ -336,26 +336,103 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
|
|
336
336
|
min: 1,
|
337
337
|
max: 1
|
338
338
|
};
|
339
|
+
var toLocale = (function(){
|
340
|
+
var monthFormatter;
|
341
|
+
var transforms = {
|
342
|
+
number: function(val){
|
343
|
+
var num = val * 1;
|
344
|
+
if(num.toLocaleString && !isNaN(num)){
|
345
|
+
val = num.toLocaleString() || val;
|
346
|
+
}
|
347
|
+
return val;
|
348
|
+
}
|
349
|
+
};
|
350
|
+
var _toLocale = function(val, elem, attr){
|
351
|
+
var type, widget;
|
352
|
+
if(valueVals[attr]){
|
353
|
+
type = $.prop(elem, 'type');
|
354
|
+
widget = $(elem).getShadowElement().data('wsWidget'+ type );
|
355
|
+
if(widget && widget.formatValue){
|
356
|
+
val = widget.formatValue(val, false);
|
357
|
+
} else if(transforms[type]){
|
358
|
+
val = transforms[type](val);
|
359
|
+
}
|
360
|
+
}
|
361
|
+
return val;
|
362
|
+
};
|
363
|
+
|
364
|
+
[{n: 'date', f: 'toLocaleDateString'}, {n: 'time', f: 'toLocaleTimeString'}, {n: 'datetime-local', f: 'toLocaleString'}].forEach(function(desc){
|
365
|
+
transforms[desc.n] = function(val){
|
366
|
+
var date = new Date(val);
|
367
|
+
if(date && date[desc.f]){
|
368
|
+
val = date[desc.f]() || val;
|
369
|
+
}
|
370
|
+
return val;
|
371
|
+
};
|
372
|
+
});
|
373
|
+
|
374
|
+
if(window.Intl && Intl.DateTimeFormat){
|
375
|
+
monthFormatter = new Intl.DateTimeFormat(navigator.browserLanguage || navigator.language, {year: "numeric", month: "2-digit"}).format(new Date());
|
376
|
+
if(monthFormatter && monthFormatter.format){
|
377
|
+
transforms.month = function(val){
|
378
|
+
var date = new Date(val);
|
379
|
+
if(date){
|
380
|
+
val = monthFormatter.format(date) || val;
|
381
|
+
}
|
382
|
+
return val;
|
383
|
+
};
|
384
|
+
}
|
385
|
+
}
|
386
|
+
|
387
|
+
webshims.format = {};
|
388
|
+
|
389
|
+
['date', 'number', 'month', 'time', 'datetime-local'].forEach(function(name){
|
390
|
+
webshims.format[name] = function(val, opts){
|
391
|
+
if(opts && opts.nodeType){
|
392
|
+
return _toLocale(val, opts, name);
|
393
|
+
}
|
394
|
+
if(name == 'number' && opts && opts.toFixed ){
|
395
|
+
val = (val * 1);
|
396
|
+
if(!opts.fixOnlyFloat || val % 1){
|
397
|
+
val = val.toFixed(opts.toFixed);
|
398
|
+
}
|
399
|
+
}
|
400
|
+
if(webshims._format && webshims._format[name]){
|
401
|
+
return webshims._format[name](val, opts);
|
402
|
+
}
|
403
|
+
return transforms[name](val);
|
404
|
+
};
|
405
|
+
});
|
406
|
+
|
407
|
+
return _toLocale;
|
408
|
+
})();
|
339
409
|
|
340
410
|
webshims.replaceValidationplaceholder = function(elem, message, name){
|
341
|
-
var
|
411
|
+
var val = $.prop(elem, 'title');
|
412
|
+
if(message){
|
413
|
+
if(name == 'patternMismatch' && !val){
|
414
|
+
webshims.error('no title for patternMismatch provided. Always add a title attribute.');
|
415
|
+
}
|
416
|
+
if(val){
|
417
|
+
val = '<span class="ws-titlevalue">'+ val.replace(lReg, '<').replace(gReg, '>') +'</span>';
|
418
|
+
}
|
419
|
+
|
420
|
+
if(message.indexOf('{%title}') != -1){
|
421
|
+
message = message.replace('{%title}', val);
|
422
|
+
} else if(val) {
|
423
|
+
message = message+' '+val;
|
424
|
+
}
|
425
|
+
}
|
426
|
+
|
342
427
|
if(message && message.indexOf('{%') != -1){
|
343
|
-
['value', 'min', 'max', '
|
428
|
+
['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
|
344
429
|
if(message.indexOf('{%'+attr) === -1){return;}
|
345
430
|
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
|
346
431
|
val = ''+val;
|
347
|
-
if(name == 'patternMismatch' && attr == 'title' && !val){
|
348
|
-
webshims.error('no title for patternMismatch provided. Always add a title attribute.');
|
349
|
-
}
|
350
432
|
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
}
|
355
|
-
if(widget && widget.formatValue){
|
356
|
-
val = widget.formatValue(val, false);
|
357
|
-
}
|
358
|
-
}
|
433
|
+
|
434
|
+
val = toLocale(val, elem, attr);
|
435
|
+
|
359
436
|
message = message.replace('{%'+ attr +'}', val.replace(lReg, '<').replace(gReg, '>'));
|
360
437
|
if('value' == attr){
|
361
438
|
message = message.replace('{%valueLen}', val.length);
|
@@ -1,3 +1,61 @@
|
|
1
|
+
|
2
|
+
//this might was already extended by ES5 shim feature
|
3
|
+
(function($){
|
4
|
+
"use strict";
|
5
|
+
var webshims = window.webshims;
|
6
|
+
if(webshims.defineProperties){return;}
|
7
|
+
var defineProperty = 'defineProperty';
|
8
|
+
var has = Object.prototype.hasOwnProperty;
|
9
|
+
var descProps = ['configurable', 'enumerable', 'writable'];
|
10
|
+
var extendUndefined = function(prop){
|
11
|
+
for(var i = 0; i < 3; i++){
|
12
|
+
if(prop[descProps[i]] === undefined && (descProps[i] !== 'writable' || prop.value !== undefined)){
|
13
|
+
prop[descProps[i]] = true;
|
14
|
+
}
|
15
|
+
}
|
16
|
+
};
|
17
|
+
|
18
|
+
var extendProps = function(props){
|
19
|
+
if(props){
|
20
|
+
for(var i in props){
|
21
|
+
if(has.call(props, i)){
|
22
|
+
extendUndefined(props[i]);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
};
|
27
|
+
|
28
|
+
if(Object.create){
|
29
|
+
webshims.objectCreate = function(proto, props, opts){
|
30
|
+
extendProps(props);
|
31
|
+
var o = Object.create(proto, props);
|
32
|
+
if(opts){
|
33
|
+
o.options = $.extend(true, {}, o.options || {}, opts);
|
34
|
+
opts = o.options;
|
35
|
+
}
|
36
|
+
if(o._create && $.isFunction(o._create)){
|
37
|
+
o._create(opts);
|
38
|
+
}
|
39
|
+
return o;
|
40
|
+
};
|
41
|
+
}
|
42
|
+
|
43
|
+
if(Object[defineProperty]){
|
44
|
+
webshims[defineProperty] = function(obj, prop, desc){
|
45
|
+
extendUndefined(desc);
|
46
|
+
return Object[defineProperty](obj, prop, desc);
|
47
|
+
};
|
48
|
+
}
|
49
|
+
if(Object.defineProperties){
|
50
|
+
webshims.defineProperties = function(obj, props){
|
51
|
+
extendProps(props);
|
52
|
+
return Object.defineProperties(obj, props);
|
53
|
+
};
|
54
|
+
}
|
55
|
+
webshims.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
56
|
+
|
57
|
+
webshims.getPrototypeOf = Object.getPrototypeOf;
|
58
|
+
})(window.webshims.$);
|
1
59
|
//DOM-Extension helper
|
2
60
|
webshims.register('dom-extend', function($, webshims, window, document, undefined){
|
3
61
|
"use strict";
|
@@ -633,6 +691,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
633
691
|
this.width = docObserve.getWidth();
|
634
692
|
setInterval(this.test, 999);
|
635
693
|
$(this.test);
|
694
|
+
if($.support.boxSizing == null){
|
695
|
+
$(function(){
|
696
|
+
if($.support.boxSizing){
|
697
|
+
docObserve.handler({type: 'boxsizing'});
|
698
|
+
}
|
699
|
+
});
|
700
|
+
}
|
636
701
|
webshims.ready('WINDOWLOAD', this.test);
|
637
702
|
$(document).on('updatelayout.webshim pageinit popupafteropen panelbeforeopen tabsactivate collapsibleexpand shown.bs.modal shown.bs.collapse slid.bs.carousel', this.handler);
|
638
703
|
$(window).on('resize', this.handler);
|
@@ -644,13 +709,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
644
709
|
webshims.docObserve = function(){
|
645
710
|
webshims.ready('DOM', function(){
|
646
711
|
docObserve.start();
|
647
|
-
|
648
|
-
$(function(){
|
649
|
-
if($.support.boxSizing){
|
650
|
-
docObserve.handler({type: 'boxsizing'});
|
651
|
-
}
|
652
|
-
});
|
653
|
-
}
|
712
|
+
|
654
713
|
});
|
655
714
|
};
|
656
715
|
return function(nativeElem, shadowElem, opts){
|
@@ -1181,27 +1240,27 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1181
1240
|
/*
|
1182
1241
|
* Selectors for all browsers
|
1183
1242
|
*/
|
1184
|
-
var rElementsGroup = /^(?:form|fieldset)$/i;
|
1185
|
-
var hasInvalid = function(elem){
|
1186
|
-
var ret = false;
|
1187
|
-
$(elem).jProp('elements').each(function(){
|
1188
|
-
if(!rElementsGroup.test(this.nodeName || '')){
|
1189
|
-
ret = $(this).is(':invalid');
|
1190
|
-
if(ret){
|
1191
|
-
return false;
|
1192
|
-
}
|
1193
|
-
}
|
1194
|
-
|
1195
|
-
});
|
1196
|
-
return ret;
|
1197
|
-
};
|
1198
1243
|
|
1199
1244
|
var extendSels = function(){
|
1200
1245
|
var matches, matchesOverride;
|
1201
1246
|
var exp = $.expr[":"];
|
1247
|
+
var rElementsGroup = /^(?:form|fieldset)$/i;
|
1248
|
+
var hasInvalid = function(elem){
|
1249
|
+
var ret = false;
|
1250
|
+
$(elem).jProp('elements').each(function(){
|
1251
|
+
if(!rElementsGroup.test(this.nodeName || '')){
|
1252
|
+
ret = exp.invalid(this);
|
1253
|
+
if(ret){
|
1254
|
+
return false;
|
1255
|
+
}
|
1256
|
+
}
|
1257
|
+
|
1258
|
+
});
|
1259
|
+
return ret;
|
1260
|
+
};
|
1202
1261
|
$.extend(exp, {
|
1203
1262
|
"valid-element": function(elem){
|
1204
|
-
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem)
|
1263
|
+
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) : !!($.prop(elem, 'willValidate') && isValid(elem));
|
1205
1264
|
},
|
1206
1265
|
"invalid-element": function(elem){
|
1207
1266
|
return rElementsGroup.test(elem.nodeName || '') ? hasInvalid(elem) : !!($.prop(elem, 'willValidate') && !isValid(elem));
|
@@ -1256,27 +1315,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1256
1315
|
};
|
1257
1316
|
}
|
1258
1317
|
};
|
1318
|
+
var formExtras = {
|
1319
|
+
noAutoCallback: true,
|
1320
|
+
options: options
|
1321
|
+
};
|
1322
|
+
var addModule = webshims.loader.addModule;
|
1323
|
+
var lazyLoadProxy = function(obj, fn, args){
|
1324
|
+
lazyLoad();
|
1325
|
+
webshims.ready('form-validation', function(){
|
1326
|
+
obj[fn].apply(obj, args);
|
1327
|
+
});
|
1328
|
+
};
|
1329
|
+
|
1330
|
+
var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
|
1331
|
+
var poCFG = webshims.cfg.wspopover;
|
1332
|
+
|
1333
|
+
addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
|
1334
|
+
|
1335
|
+
addModule('form-validators', $.extend({}, formExtras));
|
1259
1336
|
|
1260
1337
|
if($.expr.filters){
|
1261
1338
|
extendSels();
|
1262
1339
|
} else {
|
1263
1340
|
webshims.ready('sizzle', extendSels);
|
1264
1341
|
}
|
1265
|
-
|
1266
|
-
|
1342
|
+
|
1267
1343
|
webshims.triggerInlineForm = function(elem, event){
|
1268
1344
|
$(elem).trigger(event);
|
1269
1345
|
};
|
1270
1346
|
|
1271
|
-
|
1272
|
-
lazyLoad();
|
1273
|
-
webshims.ready('form-validation', function(){
|
1274
|
-
obj[fn].apply(obj, args);
|
1275
|
-
});
|
1276
|
-
};
|
1277
|
-
|
1278
|
-
var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
|
1279
|
-
var poCFG = webshims.cfg.wspopover;
|
1347
|
+
|
1280
1348
|
if(!poCFG.position && poCFG.position !== false){
|
1281
1349
|
poCFG.position = {
|
1282
1350
|
at: 'left bottom',
|
@@ -1398,7 +1466,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1398
1466
|
|
1399
1467
|
webshims.ready('WINDOWLOAD', lazyLoad);
|
1400
1468
|
|
1401
|
-
if(modules['form-number-date-ui'].loaded && modules['form-number-date-api'].test()){
|
1469
|
+
if(modules['form-number-date-ui'].loaded && !options.customMessages && (modules['form-number-date-api'].test() || (Modernizr.inputtypes.range && Modernizr.inputtypes.color))){
|
1402
1470
|
webshims.isReady('form-number-date-ui', true);
|
1403
1471
|
}
|
1404
1472
|
});
|
@@ -1434,8 +1502,8 @@ var isNumber = function(string){
|
|
1434
1502
|
(function(){
|
1435
1503
|
var find = $.find;
|
1436
1504
|
var matchesSelector = $.find.matchesSelector;
|
1437
|
-
|
1438
|
-
var regExp = /(\:valid|\:invalid|\:optional|\:required
|
1505
|
+
|
1506
|
+
var regExp = /(\:valid|\:invalid|\:optional|\:required)(?=[\s\[\~\.\+\>\:\#*]|$)/ig;
|
1439
1507
|
var regFn = function(sel){
|
1440
1508
|
return sel + '-element';
|
1441
1509
|
};
|
@@ -1796,14 +1864,13 @@ var rsubmittable = /^(?:select|textarea|input)/i;
|
|
1796
1864
|
if(validityState){
|
1797
1865
|
return validityState;
|
1798
1866
|
}
|
1799
|
-
validityState
|
1867
|
+
validityState = $.extend({}, validityPrototype);
|
1800
1868
|
|
1801
1869
|
if( !$.prop(elem, 'willValidate') || elem.type == 'submit' ){
|
1802
1870
|
return validityState;
|
1803
1871
|
}
|
1804
|
-
var val
|
1805
|
-
|
1806
|
-
;
|
1872
|
+
var val = jElm.val();
|
1873
|
+
var cache = {nodeName: elem.nodeName.toLowerCase()};
|
1807
1874
|
|
1808
1875
|
validityState.customError = !!(webshims.data(elem, 'customvalidationMessage'));
|
1809
1876
|
if( validityState.customError ){
|
@@ -1830,7 +1897,7 @@ var rsubmittable = /^(?:select|textarea|input)/i;
|
|
1830
1897
|
baseCheckValidity.unhandledInvalids = false;
|
1831
1898
|
return baseCheckValidity($(this).getNativeElement()[0], name);
|
1832
1899
|
}
|
1833
|
-
}
|
1900
|
+
};
|
1834
1901
|
});
|
1835
1902
|
|
1836
1903
|
webshims.defineNodeNameProperties(nodeName, inputValidationAPI, 'prop');
|
@@ -1841,7 +1908,7 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'requir
|
|
1841
1908
|
set: function(value){
|
1842
1909
|
$(this).getShadowFocusElement().attr('aria-required', !!(value)+'');
|
1843
1910
|
},
|
1844
|
-
initAttr:
|
1911
|
+
initAttr: true
|
1845
1912
|
});
|
1846
1913
|
webshims.defineNodeNamesBooleanProperty(['input'], 'multiple');
|
1847
1914
|
|
@@ -2008,7 +2075,7 @@ webshims.addReady(function(context, contextElem){
|
|
2008
2075
|
|
2009
2076
|
try {
|
2010
2077
|
if(context == document && !('form' in (document.activeElement || {}))) {
|
2011
|
-
focusElem = $('input[autofocus], select[autofocus], textarea[autofocus]'
|
2078
|
+
focusElem = $(context.querySelector('input[autofocus], select[autofocus], textarea[autofocus]')).eq(0).getShadowFocusElement()[0];
|
2012
2079
|
if (focusElem && focusElem.offsetHeight && focusElem.offsetWidth) {
|
2013
2080
|
focusElem.focus();
|
2014
2081
|
}
|
@@ -2029,7 +2096,7 @@ if(!Modernizr.input.list){
|
|
2029
2096
|
if(select[0]){
|
2030
2097
|
options = $.makeArray(select[0].options || []);
|
2031
2098
|
} else {
|
2032
|
-
options =
|
2099
|
+
options = elem.getElementsByTagName('option');
|
2033
2100
|
if(options.length){
|
2034
2101
|
webshims.warn('you should wrap your option-elements for a datalist in a select element to support IE and other old browsers.');
|
2035
2102
|
}
|
@@ -2324,26 +2391,103 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
|
|
2324
2391
|
min: 1,
|
2325
2392
|
max: 1
|
2326
2393
|
};
|
2394
|
+
var toLocale = (function(){
|
2395
|
+
var monthFormatter;
|
2396
|
+
var transforms = {
|
2397
|
+
number: function(val){
|
2398
|
+
var num = val * 1;
|
2399
|
+
if(num.toLocaleString && !isNaN(num)){
|
2400
|
+
val = num.toLocaleString() || val;
|
2401
|
+
}
|
2402
|
+
return val;
|
2403
|
+
}
|
2404
|
+
};
|
2405
|
+
var _toLocale = function(val, elem, attr){
|
2406
|
+
var type, widget;
|
2407
|
+
if(valueVals[attr]){
|
2408
|
+
type = $.prop(elem, 'type');
|
2409
|
+
widget = $(elem).getShadowElement().data('wsWidget'+ type );
|
2410
|
+
if(widget && widget.formatValue){
|
2411
|
+
val = widget.formatValue(val, false);
|
2412
|
+
} else if(transforms[type]){
|
2413
|
+
val = transforms[type](val);
|
2414
|
+
}
|
2415
|
+
}
|
2416
|
+
return val;
|
2417
|
+
};
|
2418
|
+
|
2419
|
+
[{n: 'date', f: 'toLocaleDateString'}, {n: 'time', f: 'toLocaleTimeString'}, {n: 'datetime-local', f: 'toLocaleString'}].forEach(function(desc){
|
2420
|
+
transforms[desc.n] = function(val){
|
2421
|
+
var date = new Date(val);
|
2422
|
+
if(date && date[desc.f]){
|
2423
|
+
val = date[desc.f]() || val;
|
2424
|
+
}
|
2425
|
+
return val;
|
2426
|
+
};
|
2427
|
+
});
|
2428
|
+
|
2429
|
+
if(window.Intl && Intl.DateTimeFormat){
|
2430
|
+
monthFormatter = new Intl.DateTimeFormat(navigator.browserLanguage || navigator.language, {year: "numeric", month: "2-digit"}).format(new Date());
|
2431
|
+
if(monthFormatter && monthFormatter.format){
|
2432
|
+
transforms.month = function(val){
|
2433
|
+
var date = new Date(val);
|
2434
|
+
if(date){
|
2435
|
+
val = monthFormatter.format(date) || val;
|
2436
|
+
}
|
2437
|
+
return val;
|
2438
|
+
};
|
2439
|
+
}
|
2440
|
+
}
|
2441
|
+
|
2442
|
+
webshims.format = {};
|
2443
|
+
|
2444
|
+
['date', 'number', 'month', 'time', 'datetime-local'].forEach(function(name){
|
2445
|
+
webshims.format[name] = function(val, opts){
|
2446
|
+
if(opts && opts.nodeType){
|
2447
|
+
return _toLocale(val, opts, name);
|
2448
|
+
}
|
2449
|
+
if(name == 'number' && opts && opts.toFixed ){
|
2450
|
+
val = (val * 1);
|
2451
|
+
if(!opts.fixOnlyFloat || val % 1){
|
2452
|
+
val = val.toFixed(opts.toFixed);
|
2453
|
+
}
|
2454
|
+
}
|
2455
|
+
if(webshims._format && webshims._format[name]){
|
2456
|
+
return webshims._format[name](val, opts);
|
2457
|
+
}
|
2458
|
+
return transforms[name](val);
|
2459
|
+
};
|
2460
|
+
});
|
2461
|
+
|
2462
|
+
return _toLocale;
|
2463
|
+
})();
|
2327
2464
|
|
2328
2465
|
webshims.replaceValidationplaceholder = function(elem, message, name){
|
2329
|
-
var
|
2466
|
+
var val = $.prop(elem, 'title');
|
2467
|
+
if(message){
|
2468
|
+
if(name == 'patternMismatch' && !val){
|
2469
|
+
webshims.error('no title for patternMismatch provided. Always add a title attribute.');
|
2470
|
+
}
|
2471
|
+
if(val){
|
2472
|
+
val = '<span class="ws-titlevalue">'+ val.replace(lReg, '<').replace(gReg, '>') +'</span>';
|
2473
|
+
}
|
2474
|
+
|
2475
|
+
if(message.indexOf('{%title}') != -1){
|
2476
|
+
message = message.replace('{%title}', val);
|
2477
|
+
} else if(val) {
|
2478
|
+
message = message+' '+val;
|
2479
|
+
}
|
2480
|
+
}
|
2481
|
+
|
2330
2482
|
if(message && message.indexOf('{%') != -1){
|
2331
|
-
['value', 'min', 'max', '
|
2483
|
+
['value', 'min', 'max', 'maxlength', 'minlength', 'label'].forEach(function(attr){
|
2332
2484
|
if(message.indexOf('{%'+attr) === -1){return;}
|
2333
2485
|
var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
|
2334
2486
|
val = ''+val;
|
2335
|
-
if(name == 'patternMismatch' && attr == 'title' && !val){
|
2336
|
-
webshims.error('no title for patternMismatch provided. Always add a title attribute.');
|
2337
|
-
}
|
2338
2487
|
|
2339
|
-
|
2340
|
-
|
2341
|
-
|
2342
|
-
}
|
2343
|
-
if(widget && widget.formatValue){
|
2344
|
-
val = widget.formatValue(val, false);
|
2345
|
-
}
|
2346
|
-
}
|
2488
|
+
|
2489
|
+
val = toLocale(val, elem, attr);
|
2490
|
+
|
2347
2491
|
message = message.replace('{%'+ attr +'}', val.replace(lReg, '<').replace(gReg, '>'));
|
2348
2492
|
if('value' == attr){
|
2349
2493
|
message = message.replace('{%valueLen}', val.length);
|
@@ -2432,7 +2576,6 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
|
|
2432
2576
|
});
|
2433
2577
|
;webshims.register('form-datalist', function($, webshims, window, document, undefined, options){
|
2434
2578
|
"use strict";
|
2435
|
-
var doc = document;
|
2436
2579
|
var lazyLoad = function(name){
|
2437
2580
|
if(!name || typeof name != 'string'){
|
2438
2581
|
name = 'DOM';
|
@@ -2727,4 +2870,4 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
|
|
2727
2870
|
initializeDatalist();
|
2728
2871
|
})();
|
2729
2872
|
|
2730
|
-
});
|
2873
|
+
});
|