webshims-rails 1.11.1 → 1.11.2

Sign up to get free protection for your applications and to get access to all the features.
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