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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +111 -132
  4. data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
  5. data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
  6. data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
  7. data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
  8. data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
  9. data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
  10. data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
  11. data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
  12. data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
  13. data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
  14. data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
  15. data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
  16. data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
  17. data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
  18. data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
  21. data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
  22. data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
  23. data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
  24. data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
  25. data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
  26. data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
  27. data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
  29. data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
  30. data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
  31. data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
  32. data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
  33. data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
  34. data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
  35. data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
  36. data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
  37. data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
  38. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
  39. data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
  40. data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
  41. data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
  42. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  43. data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
  44. data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
  45. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
  46. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
  47. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
  48. data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
  49. data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
  50. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
  51. data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
  52. data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
  53. data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
  54. data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
  55. data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
  56. data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
  57. data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
  58. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
  60. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
  61. data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
  62. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
  63. data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
  64. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
  65. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
  69. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
  71. data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
  72. metadata +12 -5
  73. data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
  74. 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 type, widget;
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, '&lt;').replace(gReg, '&gt;') +'</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', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
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
- if(valueVals[attr]){
352
- if(!widget){
353
- widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
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, '&lt;').replace(gReg, '&gt;'));
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
- if($.support.boxSizing == null){
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) :!!($.prop(elem, 'willValidate') && isValid(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
- var lazyLoadProxy = function(obj, fn, args){
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|\:in-range|\:out-of-range)(?=[\s\[\~\.\+\>\:\#*]|$)/ig;
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 = $.extend({}, validityPrototype);
1867
+ validityState = $.extend({}, validityPrototype);
1800
1868
 
1801
1869
  if( !$.prop(elem, 'willValidate') || elem.type == 'submit' ){
1802
1870
  return validityState;
1803
1871
  }
1804
- var val = jElm.val(),
1805
- cache = {nodeName: elem.nodeName.toLowerCase()}
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: Modernizr.localstorage //only if we have aria-support
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]', context).eq(0).getShadowFocusElement()[0];
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 = $('option', elem).get();
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 type, widget;
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, '&lt;').replace(gReg, '&gt;') +'</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', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
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
- if(valueVals[attr]){
2340
- if(!widget){
2341
- widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
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, '&lt;').replace(gReg, '&gt;'));
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
+ });