webshims-rails 1.11.1 → 1.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +41 -20
  4. data/vendor/assets/javascripts/webshims/shims/combos/10.js +212 -42
  5. data/vendor/assets/javascripts/webshims/shims/combos/11.js +196 -37
  6. data/vendor/assets/javascripts/webshims/shims/combos/12.js +82 -36
  7. data/vendor/assets/javascripts/webshims/shims/combos/13.js +82 -36
  8. data/vendor/assets/javascripts/webshims/shims/combos/14.js +17 -6
  9. data/vendor/assets/javascripts/webshims/shims/combos/15.js +234 -1247
  10. data/vendor/assets/javascripts/webshims/shims/combos/16.js +234 -1247
  11. data/vendor/assets/javascripts/webshims/shims/combos/17.js +202 -45
  12. data/vendor/assets/javascripts/webshims/shims/combos/18.js +202 -45
  13. data/vendor/assets/javascripts/webshims/shims/combos/19.js +16 -5
  14. data/vendor/assets/javascripts/webshims/shims/combos/2.js +51 -11
  15. data/vendor/assets/javascripts/webshims/shims/combos/20.js +16 -5
  16. data/vendor/assets/javascripts/webshims/shims/combos/21.js +82 -36
  17. data/vendor/assets/javascripts/webshims/shims/combos/22.js +82 -36
  18. data/vendor/assets/javascripts/webshims/shims/combos/24.js +1689 -997
  19. data/vendor/assets/javascripts/webshims/shims/combos/25.js +16 -5
  20. data/vendor/assets/javascripts/webshims/shims/combos/26.js +16 -5
  21. data/vendor/assets/javascripts/webshims/shims/combos/3.js +16 -5
  22. data/vendor/assets/javascripts/webshims/shims/combos/30.js +51 -11
  23. data/vendor/assets/javascripts/webshims/shims/combos/31.js +51 -11
  24. data/vendor/assets/javascripts/webshims/shims/combos/4.js +16 -5
  25. data/vendor/assets/javascripts/webshims/shims/combos/5.js +202 -45
  26. data/vendor/assets/javascripts/webshims/shims/combos/6.js +237 -51
  27. data/vendor/assets/javascripts/webshims/shims/combos/7.js +51 -11
  28. data/vendor/assets/javascripts/webshims/shims/combos/8.js +16 -5
  29. data/vendor/assets/javascripts/webshims/shims/combos/9.js +247 -48
  30. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +17 -5
  31. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +21 -3
  32. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +35 -6
  33. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +6 -8
  34. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +134 -24
  35. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +152 -1205
  36. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +1076 -0
  37. data/vendor/assets/javascripts/webshims/shims/form-validation.js +47 -20
  38. data/vendor/assets/javascripts/webshims/shims/form-validators.js +2 -2
  39. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
  40. data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-de.txt → formcfg-de.js} +3 -0
  41. data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-en.txt → formcfg-en.js} +5 -1
  42. data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
  43. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +1 -1
  44. data/vendor/assets/javascripts/webshims/shims/range-ui.js +62 -13
  45. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +610 -0
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +10 -0
  47. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +743 -0
  48. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +1 -755
  49. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +0 -606
  50. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  51. data/vendor/assets/javascripts/webshims/shims/track-ui.js +36 -23
  52. data/vendor/assets/javascripts/webshims/shims/track.js +82 -36
  53. metadata +8 -6
  54. data/vendor/assets/javascripts/webshims/shims/combos/28.js +0 -2196
  55. data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -1167
@@ -1261,7 +1261,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1261
1261
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
1262
1262
 
1263
1263
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
1264
- webshims.error("IE browser modes are busted in IE10. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
1264
+ webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
1265
1265
  }
1266
1266
 
1267
1267
  if(!$.parseHTML){
@@ -1814,7 +1814,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1814
1814
  $(this.test);
1815
1815
  webshims.ready('WINDOWLOAD', this.test);
1816
1816
  $(document).on('updatelayout', this.handler);
1817
- $(window).bind('resize', this.handler);
1817
+ $(window).on('resize', this.handler);
1818
1818
  (function(){
1819
1819
  var oldAnimate = $.fn.animate;
1820
1820
  var animationTimer;
@@ -1836,6 +1836,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1836
1836
  webshims.docObserve = function(){
1837
1837
  webshims.ready('DOM', function(){
1838
1838
  docObserve.start();
1839
+ if($.support.boxSizing == null){
1840
+ $(function(){
1841
+ if($.support.boxSizing){
1842
+ docObserve.handler({type: 'boxsizing'});
1843
+ }
1844
+ });
1845
+ }
1839
1846
  });
1840
1847
  };
1841
1848
  return function(nativeElem, shadowElem, opts){
@@ -1996,7 +2003,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1996
2003
  havePolyfill[prop] = true;
1997
2004
 
1998
2005
  if(descs.reflect){
1999
- webshims.propTypes[descs.propType || 'standard'](descs, prop);
2006
+ if(descs.propType && !webshims.propTypes[descs.propType]){
2007
+ webshims.error('could not finde propType '+ descs.propType);
2008
+ } else {
2009
+ webshims.propTypes[descs.propType || 'standard'](descs, prop);
2010
+ }
2011
+
2000
2012
  }
2001
2013
 
2002
2014
  ['prop', 'attr', 'removeAttr'].forEach(function(type){
@@ -2182,7 +2194,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2182
2194
  var notLocal = /:\/\/|^\.*\//;
2183
2195
  var loadRemoteLang = function(data, lang, options){
2184
2196
  var langSrc;
2185
- if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
2197
+ if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
2186
2198
  data.loading = true;
2187
2199
  langSrc = options.langSrc;
2188
2200
  if(!notLocal.test(langSrc)){
@@ -2342,7 +2354,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2342
2354
  });
2343
2355
 
2344
2356
  })(webshims.$, document);
2345
-
2346
2357
  webshims.register('filereader', function( $, webshims ){
2347
2358
  "use strict";
2348
2359
  /**
@@ -6,7 +6,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
6
6
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
7
7
 
8
8
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
9
- webshims.error("IE browser modes are busted in IE10. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
9
+ webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
10
10
  }
11
11
 
12
12
  if(!$.parseHTML){
@@ -559,7 +559,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
559
559
  $(this.test);
560
560
  webshims.ready('WINDOWLOAD', this.test);
561
561
  $(document).on('updatelayout', this.handler);
562
- $(window).bind('resize', this.handler);
562
+ $(window).on('resize', this.handler);
563
563
  (function(){
564
564
  var oldAnimate = $.fn.animate;
565
565
  var animationTimer;
@@ -581,6 +581,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
581
581
  webshims.docObserve = function(){
582
582
  webshims.ready('DOM', function(){
583
583
  docObserve.start();
584
+ if($.support.boxSizing == null){
585
+ $(function(){
586
+ if($.support.boxSizing){
587
+ docObserve.handler({type: 'boxsizing'});
588
+ }
589
+ });
590
+ }
584
591
  });
585
592
  };
586
593
  return function(nativeElem, shadowElem, opts){
@@ -741,7 +748,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
741
748
  havePolyfill[prop] = true;
742
749
 
743
750
  if(descs.reflect){
744
- webshims.propTypes[descs.propType || 'standard'](descs, prop);
751
+ if(descs.propType && !webshims.propTypes[descs.propType]){
752
+ webshims.error('could not finde propType '+ descs.propType);
753
+ } else {
754
+ webshims.propTypes[descs.propType || 'standard'](descs, prop);
755
+ }
756
+
745
757
  }
746
758
 
747
759
  ['prop', 'attr', 'removeAttr'].forEach(function(type){
@@ -927,7 +939,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
927
939
  var notLocal = /:\/\/|^\.*\//;
928
940
  var loadRemoteLang = function(data, lang, options){
929
941
  var langSrc;
930
- if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
942
+ if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
931
943
  data.loading = true;
932
944
  langSrc = options.langSrc;
933
945
  if(!notLocal.test(langSrc)){
@@ -1087,7 +1099,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1087
1099
  });
1088
1100
 
1089
1101
  })(webshims.$, document);
1090
-
1091
1102
  webshims.register('filereader', function( $, webshims ){
1092
1103
  "use strict";
1093
1104
  /**
@@ -6,7 +6,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
6
6
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
7
7
 
8
8
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
9
- webshims.error("IE browser modes are busted in IE10. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
9
+ webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
10
10
  }
11
11
 
12
12
  if(!$.parseHTML){
@@ -559,7 +559,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
559
559
  $(this.test);
560
560
  webshims.ready('WINDOWLOAD', this.test);
561
561
  $(document).on('updatelayout', this.handler);
562
- $(window).bind('resize', this.handler);
562
+ $(window).on('resize', this.handler);
563
563
  (function(){
564
564
  var oldAnimate = $.fn.animate;
565
565
  var animationTimer;
@@ -581,6 +581,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
581
581
  webshims.docObserve = function(){
582
582
  webshims.ready('DOM', function(){
583
583
  docObserve.start();
584
+ if($.support.boxSizing == null){
585
+ $(function(){
586
+ if($.support.boxSizing){
587
+ docObserve.handler({type: 'boxsizing'});
588
+ }
589
+ });
590
+ }
584
591
  });
585
592
  };
586
593
  return function(nativeElem, shadowElem, opts){
@@ -741,7 +748,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
741
748
  havePolyfill[prop] = true;
742
749
 
743
750
  if(descs.reflect){
744
- webshims.propTypes[descs.propType || 'standard'](descs, prop);
751
+ if(descs.propType && !webshims.propTypes[descs.propType]){
752
+ webshims.error('could not finde propType '+ descs.propType);
753
+ } else {
754
+ webshims.propTypes[descs.propType || 'standard'](descs, prop);
755
+ }
756
+
745
757
  }
746
758
 
747
759
  ['prop', 'attr', 'removeAttr'].forEach(function(type){
@@ -927,7 +939,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
927
939
  var notLocal = /:\/\/|^\.*\//;
928
940
  var loadRemoteLang = function(data, lang, options){
929
941
  var langSrc;
930
- if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
942
+ if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
931
943
  data.loading = true;
932
944
  langSrc = options.langSrc;
933
945
  if(!notLocal.test(langSrc)){
@@ -1087,7 +1099,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1087
1099
  });
1088
1100
 
1089
1101
  })(webshims.$, document);
1090
-
1091
1102
  webshims.register('form-core', function($, webshims, window, document, undefined, options){
1092
1103
  "use strict";
1093
1104
 
@@ -6,7 +6,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
6
6
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
7
7
 
8
8
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
9
- webshims.error("IE browser modes are busted in IE10. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
9
+ webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
10
10
  }
11
11
 
12
12
  if(!$.parseHTML){
@@ -559,7 +559,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
559
559
  $(this.test);
560
560
  webshims.ready('WINDOWLOAD', this.test);
561
561
  $(document).on('updatelayout', this.handler);
562
- $(window).bind('resize', this.handler);
562
+ $(window).on('resize', this.handler);
563
563
  (function(){
564
564
  var oldAnimate = $.fn.animate;
565
565
  var animationTimer;
@@ -581,6 +581,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
581
581
  webshims.docObserve = function(){
582
582
  webshims.ready('DOM', function(){
583
583
  docObserve.start();
584
+ if($.support.boxSizing == null){
585
+ $(function(){
586
+ if($.support.boxSizing){
587
+ docObserve.handler({type: 'boxsizing'});
588
+ }
589
+ });
590
+ }
584
591
  });
585
592
  };
586
593
  return function(nativeElem, shadowElem, opts){
@@ -741,7 +748,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
741
748
  havePolyfill[prop] = true;
742
749
 
743
750
  if(descs.reflect){
744
- webshims.propTypes[descs.propType || 'standard'](descs, prop);
751
+ if(descs.propType && !webshims.propTypes[descs.propType]){
752
+ webshims.error('could not finde propType '+ descs.propType);
753
+ } else {
754
+ webshims.propTypes[descs.propType || 'standard'](descs, prop);
755
+ }
756
+
745
757
  }
746
758
 
747
759
  ['prop', 'attr', 'removeAttr'].forEach(function(type){
@@ -927,7 +939,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
927
939
  var notLocal = /:\/\/|^\.*\//;
928
940
  var loadRemoteLang = function(data, lang, options){
929
941
  var langSrc;
930
- if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
942
+ if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
931
943
  data.loading = true;
932
944
  langSrc = options.langSrc;
933
945
  if(!notLocal.test(langSrc)){
@@ -1087,7 +1099,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1087
1099
  });
1088
1100
 
1089
1101
  })(webshims.$, document);
1090
-
1091
1102
  webshims.register('form-core', function($, webshims, window, document, undefined, options){
1092
1103
  "use strict";
1093
1104
 
@@ -1569,12 +1580,12 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1569
1580
  /*
1570
1581
  * implement propType "element" currently only used for list-attribute (will be moved to dom-extend, if needed)
1571
1582
  */
1572
- webshims.propTypes.element = function(descs){
1583
+ webshims.propTypes.element = function(descs, name){
1573
1584
  webshims.createPropDefault(descs, 'attr');
1574
1585
  if(descs.prop){return;}
1575
1586
  descs.prop = {
1576
1587
  get: function(){
1577
- var elem = $.attr(this, 'list');
1588
+ var elem = $.attr(this, name);
1578
1589
  if(elem){
1579
1590
  elem = document.getElementById(elem);
1580
1591
  if(elem && descs.propNodeName && !$.nodeName(elem, descs.propNodeName)){
@@ -1598,7 +1609,15 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1598
1609
  if(listSupport && !formsCFG.customDatalist){return;}
1599
1610
 
1600
1611
  var initializeDatalist = function(){
1601
-
1612
+
1613
+ var updateDatlistAndOptions = function(){
1614
+ var id;
1615
+ if(!$.data(this, 'datalistWidgetData') && (id = $.prop(this, 'id'))){
1616
+ $('input[list="'+ id +'"], input[data-wslist="'+ id +'"]').eq(0).attr('list', id);
1617
+ } else {
1618
+ $(this).triggerHandler('updateDatalist');
1619
+ }
1620
+ };
1602
1621
 
1603
1622
  var inputListProto = {
1604
1623
  //override autocomplete
@@ -1676,6 +1695,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1676
1695
  id: value,
1677
1696
  datalist: $.prop(elem, 'list')
1678
1697
  });
1698
+ elem.setAttribute('data-wslist', value);
1679
1699
  } else {
1680
1700
  elem.setAttribute('list', value);
1681
1701
  }
@@ -1687,6 +1707,27 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1687
1707
  propType: 'element',
1688
1708
  propNodeName: 'datalist'
1689
1709
  };
1710
+ } else {
1711
+ webshims.defineNodeNameProperties('input', {
1712
+ list: {
1713
+ attr: {
1714
+ get: function(){
1715
+ var val = webshims.contentAttr(this, 'list');
1716
+ return (val == null) ? undefined : val;
1717
+ },
1718
+ set: function(value){
1719
+ var elem = this;
1720
+ webshims.contentAttr(elem, 'list', value);
1721
+ webshims.objectCreate(options.shadowListProto, undefined, {input: elem, id: value, datalist: $.prop(elem, 'list')});
1722
+ $(elem).triggerHandler('listdatalistchange');
1723
+ }
1724
+ },
1725
+ initAttr: true,
1726
+ reflect: true,
1727
+ propType: 'element',
1728
+ propNodeName: 'datalist'
1729
+ }
1730
+ });
1690
1731
  }
1691
1732
 
1692
1733
  webshims.defineNodeNameProperties('input', inputListProto);
@@ -1695,9 +1736,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1695
1736
  contextElem
1696
1737
  .filter('datalist > select, datalist, datalist > option, datalist > select > option')
1697
1738
  .closest('datalist')
1698
- .each(function(){
1699
- $(this).triggerHandler('updateDatalist');
1700
- })
1739
+ .each(updateDatlistAndOptions)
1701
1740
  ;
1702
1741
  });
1703
1742
  };
@@ -1742,6 +1781,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1742
1781
  this.hasViewableData = true;
1743
1782
  this._autocomplete = $.attr(opts.input, 'autocomplete');
1744
1783
  $.data(opts.input, 'datalistWidget', this);
1784
+ $.data(datalist, 'datalistWidgetData', this);
1745
1785
 
1746
1786
  lazyLoad('WINDOWLOAD');
1747
1787
 
@@ -6,7 +6,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
6
6
  webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
7
7
 
8
8
  if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
9
- webshims.error("IE browser modes are busted in IE10. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
9
+ webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or similiar tools");
10
10
  }
11
11
 
12
12
  if(!$.parseHTML){
@@ -559,7 +559,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
559
559
  $(this.test);
560
560
  webshims.ready('WINDOWLOAD', this.test);
561
561
  $(document).on('updatelayout', this.handler);
562
- $(window).bind('resize', this.handler);
562
+ $(window).on('resize', this.handler);
563
563
  (function(){
564
564
  var oldAnimate = $.fn.animate;
565
565
  var animationTimer;
@@ -581,6 +581,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
581
581
  webshims.docObserve = function(){
582
582
  webshims.ready('DOM', function(){
583
583
  docObserve.start();
584
+ if($.support.boxSizing == null){
585
+ $(function(){
586
+ if($.support.boxSizing){
587
+ docObserve.handler({type: 'boxsizing'});
588
+ }
589
+ });
590
+ }
584
591
  });
585
592
  };
586
593
  return function(nativeElem, shadowElem, opts){
@@ -741,7 +748,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
741
748
  havePolyfill[prop] = true;
742
749
 
743
750
  if(descs.reflect){
744
- webshims.propTypes[descs.propType || 'standard'](descs, prop);
751
+ if(descs.propType && !webshims.propTypes[descs.propType]){
752
+ webshims.error('could not finde propType '+ descs.propType);
753
+ } else {
754
+ webshims.propTypes[descs.propType || 'standard'](descs, prop);
755
+ }
756
+
745
757
  }
746
758
 
747
759
  ['prop', 'attr', 'removeAttr'].forEach(function(type){
@@ -927,7 +939,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
927
939
  var notLocal = /:\/\/|^\.*\//;
928
940
  var loadRemoteLang = function(data, lang, options){
929
941
  var langSrc;
930
- if(lang && options && $.inArray(lang, options.availabeLangs || []) !== -1){
942
+ if(lang && options && $.inArray(lang, options.availableLangs || options.availabeLangs || []) !== -1){
931
943
  data.loading = true;
932
944
  langSrc = options.langSrc;
933
945
  if(!notLocal.test(langSrc)){
@@ -1087,7 +1099,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1087
1099
  });
1088
1100
 
1089
1101
  })(webshims.$, document);
1090
-
1091
1102
  webshims.register('form-core', function($, webshims, window, document, undefined, options){
1092
1103
  "use strict";
1093
1104
 
@@ -1336,12 +1347,12 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1336
1347
  /*
1337
1348
  * implement propType "element" currently only used for list-attribute (will be moved to dom-extend, if needed)
1338
1349
  */
1339
- webshims.propTypes.element = function(descs){
1350
+ webshims.propTypes.element = function(descs, name){
1340
1351
  webshims.createPropDefault(descs, 'attr');
1341
1352
  if(descs.prop){return;}
1342
1353
  descs.prop = {
1343
1354
  get: function(){
1344
- var elem = $.attr(this, 'list');
1355
+ var elem = $.attr(this, name);
1345
1356
  if(elem){
1346
1357
  elem = document.getElementById(elem);
1347
1358
  if(elem && descs.propNodeName && !$.nodeName(elem, descs.propNodeName)){
@@ -1365,7 +1376,15 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1365
1376
  if(listSupport && !formsCFG.customDatalist){return;}
1366
1377
 
1367
1378
  var initializeDatalist = function(){
1368
-
1379
+
1380
+ var updateDatlistAndOptions = function(){
1381
+ var id;
1382
+ if(!$.data(this, 'datalistWidgetData') && (id = $.prop(this, 'id'))){
1383
+ $('input[list="'+ id +'"], input[data-wslist="'+ id +'"]').eq(0).attr('list', id);
1384
+ } else {
1385
+ $(this).triggerHandler('updateDatalist');
1386
+ }
1387
+ };
1369
1388
 
1370
1389
  var inputListProto = {
1371
1390
  //override autocomplete
@@ -1443,6 +1462,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1443
1462
  id: value,
1444
1463
  datalist: $.prop(elem, 'list')
1445
1464
  });
1465
+ elem.setAttribute('data-wslist', value);
1446
1466
  } else {
1447
1467
  elem.setAttribute('list', value);
1448
1468
  }
@@ -1454,6 +1474,27 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1454
1474
  propType: 'element',
1455
1475
  propNodeName: 'datalist'
1456
1476
  };
1477
+ } else {
1478
+ webshims.defineNodeNameProperties('input', {
1479
+ list: {
1480
+ attr: {
1481
+ get: function(){
1482
+ var val = webshims.contentAttr(this, 'list');
1483
+ return (val == null) ? undefined : val;
1484
+ },
1485
+ set: function(value){
1486
+ var elem = this;
1487
+ webshims.contentAttr(elem, 'list', value);
1488
+ webshims.objectCreate(options.shadowListProto, undefined, {input: elem, id: value, datalist: $.prop(elem, 'list')});
1489
+ $(elem).triggerHandler('listdatalistchange');
1490
+ }
1491
+ },
1492
+ initAttr: true,
1493
+ reflect: true,
1494
+ propType: 'element',
1495
+ propNodeName: 'datalist'
1496
+ }
1497
+ });
1457
1498
  }
1458
1499
 
1459
1500
  webshims.defineNodeNameProperties('input', inputListProto);
@@ -1462,9 +1503,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1462
1503
  contextElem
1463
1504
  .filter('datalist > select, datalist, datalist > option, datalist > select > option')
1464
1505
  .closest('datalist')
1465
- .each(function(){
1466
- $(this).triggerHandler('updateDatalist');
1467
- })
1506
+ .each(updateDatlistAndOptions)
1468
1507
  ;
1469
1508
  });
1470
1509
  };
@@ -1509,6 +1548,7 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
1509
1548
  this.hasViewableData = true;
1510
1549
  this._autocomplete = $.attr(opts.input, 'autocomplete');
1511
1550
  $.data(opts.input, 'datalistWidget', this);
1551
+ $.data(datalist, 'datalistWidgetData', this);
1512
1552
 
1513
1553
  lazyLoad('WINDOWLOAD');
1514
1554