webshims-rails 1.11.3.1 → 1.11.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +114 -104
  4. data/vendor/assets/javascripts/webshims/extras/mousepress.js +5 -5
  5. data/vendor/assets/javascripts/webshims/polyfiller.js +156 -207
  6. data/vendor/assets/javascripts/webshims/shims/$ajax.js +862 -0
  7. data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +20 -0
  8. data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +20 -0
  9. data/vendor/assets/javascripts/webshims/shims/color-picker.js +12 -12
  10. data/vendor/assets/javascripts/webshims/shims/combos/1.js +62 -32
  11. data/vendor/assets/javascripts/webshims/shims/combos/10.js +192 -509
  12. data/vendor/assets/javascripts/webshims/shims/combos/11.js +96 -415
  13. data/vendor/assets/javascripts/webshims/shims/combos/12.js +36 -26
  14. data/vendor/assets/javascripts/webshims/shims/combos/13.js +36 -26
  15. data/vendor/assets/javascripts/webshims/shims/combos/14.js +1007 -359
  16. data/vendor/assets/javascripts/webshims/shims/combos/15.js +310 -235
  17. data/vendor/assets/javascripts/webshims/shims/combos/16.js +313 -237
  18. data/vendor/assets/javascripts/webshims/shims/combos/17.js +96 -415
  19. data/vendor/assets/javascripts/webshims/shims/combos/18.js +1003 -678
  20. data/vendor/assets/javascripts/webshims/shims/combos/19.js +1085 -387
  21. data/vendor/assets/javascripts/webshims/shims/combos/2.js +161 -127
  22. data/vendor/assets/javascripts/webshims/shims/combos/20.js +1086 -388
  23. data/vendor/assets/javascripts/webshims/shims/combos/21.js +168 -96
  24. data/vendor/assets/javascripts/webshims/shims/combos/22.js +36 -27
  25. data/vendor/assets/javascripts/webshims/shims/combos/23.js +2 -1
  26. data/vendor/assets/javascripts/webshims/shims/combos/24.js +411 -172
  27. data/vendor/assets/javascripts/webshims/shims/combos/25.js +1085 -387
  28. data/vendor/assets/javascripts/webshims/shims/combos/26.js +96 -94
  29. data/vendor/assets/javascripts/webshims/shims/combos/3.js +163 -140
  30. data/vendor/assets/javascripts/webshims/shims/combos/30.js +166 -141
  31. data/vendor/assets/javascripts/webshims/shims/combos/31.js +159 -126
  32. data/vendor/assets/javascripts/webshims/shims/combos/4.js +103 -109
  33. data/vendor/assets/javascripts/webshims/shims/combos/5.js +98 -417
  34. data/vendor/assets/javascripts/webshims/shims/combos/6.js +101 -418
  35. data/vendor/assets/javascripts/webshims/shims/combos/7.js +168 -142
  36. data/vendor/assets/javascripts/webshims/shims/combos/8.js +165 -141
  37. data/vendor/assets/javascripts/webshims/shims/combos/9.js +195 -510
  38. data/vendor/assets/javascripts/webshims/shims/details.js +2 -2
  39. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +96 -94
  40. data/vendor/assets/javascripts/webshims/shims/es5.js +908 -264
  41. data/vendor/assets/javascripts/webshims/shims/excanvas.js +16 -1
  42. data/vendor/assets/javascripts/webshims/shims/form-combat.js +147 -0
  43. data/vendor/assets/javascripts/webshims/shims/form-core.js +60 -31
  44. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +114 -33
  45. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +3 -1
  46. data/vendor/assets/javascripts/webshims/shims/form-message.js +7 -15
  47. data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +2 -2
  48. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +88 -410
  49. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +143 -93
  50. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +268 -79
  51. data/vendor/assets/javascripts/webshims/shims/form-validation.js +116 -81
  52. data/vendor/assets/javascripts/webshims/shims/form-validators.js +23 -10
  53. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +605 -9
  54. data/vendor/assets/javascripts/webshims/shims/geolocation.js +51 -39
  55. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +78 -33
  56. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +24 -6
  57. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +110 -49
  58. data/vendor/assets/javascripts/webshims/shims/json-storage.js +3 -1
  59. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +2 -1
  60. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +81 -30
  61. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +131 -54
  62. data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +497 -0
  63. data/vendor/assets/javascripts/webshims/shims/range-ui.js +8 -5
  64. data/vendor/assets/javascripts/webshims/shims/sizzle.js +2026 -0
  65. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +401 -521
  66. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +1 -1
  67. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +94 -82
  68. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +250 -321
  69. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  70. data/vendor/assets/javascripts/webshims/shims/track-ui.js +1 -1
  71. data/vendor/assets/javascripts/webshims/shims/track.js +34 -25
  72. metadata +7 -3
@@ -644,8 +644,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
644
644
 
645
645
  if(this._init && val == o.value && oVal == val){return;}
646
646
  this.options.value = val;
647
- this.thumb.stop();
648
- this.range.stop();
647
+
648
+ if($.fn.stop){
649
+ this.thumb.stop();
650
+ this.range.stop();
651
+ }
649
652
 
650
653
  rangeStyle[this.dirs.width] = left+'%';
651
654
  if(this.vertical){
@@ -654,7 +657,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
654
657
  thumbStyle[this.dirs.left] = left+'%';
655
658
 
656
659
 
657
- if(!animate){
660
+ if(!animate || !$.fn.animate){
658
661
  this.thumb.css(thumbStyle);
659
662
  this.range.css(rangeStyle);
660
663
  } else {
@@ -943,9 +946,9 @@ webshims.register('form-number-date-api', function($, webshims, window, document
943
946
  $(window).off('blur', removeWin);
944
947
  if(!o.readonly && !o.disabled){
945
948
  normalizeTouch(e);
946
- that.element.focus();
949
+ that.element.trigger('focus');
947
950
  that.addRemoveClass('ws-active', true);
948
- leftOffset = that.element.focus().offset();
951
+ leftOffset = that.element.offset();
949
952
  widgetUnits = that.element[that.dirs.innerWidth]();
950
953
  if(!widgetUnits || !leftOffset){return;}
951
954
  outerWidth = that.thumb[that.dirs.outerWidth]();
@@ -1286,6 +1289,32 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1286
1289
  return val.length == 1 ? '0'+val : val;
1287
1290
  };
1288
1291
 
1292
+ var loadPicker = function(type, name){
1293
+ type = (type == 'color' ? 'color' : 'forms')+'-picker';
1294
+ if(!loadPicker[name+'Loaded'+type]){
1295
+ loadPicker[name+'Loaded'+type] = true;
1296
+ webshims.ready(name, function(){
1297
+ webshims.loader.loadList([type]);
1298
+
1299
+ });
1300
+ }
1301
+ return type;
1302
+ };
1303
+
1304
+
1305
+ options.addZero = addZero;
1306
+ webshims.loader.addModule('forms-picker', {
1307
+ noAutoCallback: true,
1308
+ options: options
1309
+ });
1310
+ webshims.loader.addModule('color-picker', {
1311
+ noAutoCallback: true,
1312
+ css: 'jpicker/jpicker.css',
1313
+ options: options,
1314
+ d: ['forms-picker']
1315
+ });
1316
+
1317
+ options.steps = steps;
1289
1318
 
1290
1319
  (function(){
1291
1320
 
@@ -1398,7 +1427,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1398
1427
  langCfg.date.monthDigits = monthDigits;
1399
1428
  langCfg.numberSigns += '-';
1400
1429
  if(langCfg.meridian){
1401
- langCfg.timeSigns += langCfg.meridian[0] + langCfg.meridian[1];
1430
+ langCfg.timeSigns += langCfg.meridian[0] + langCfg.meridian[1] + langCfg.meridian[0].toLowerCase() + langCfg.meridian[1].toLowerCase();
1402
1431
  }
1403
1432
  $.each(langCfg.date.monthNames, create);
1404
1433
  $.each(langCfg.date.monthNamesShort, create);
@@ -1424,43 +1453,24 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1424
1453
  $(document).triggerHandler('wslocalechange');
1425
1454
  };
1426
1455
 
1427
- triggerLocaleChange();
1428
1456
 
1429
- webshims.activeLang({
1430
- register: 'form-core',
1431
- callback: function(){
1432
- $.each(arguments, function(i, val){
1433
- if(formcfg[val]){
1434
- if(formcfg[val] != curCfg){
1435
- curCfg = formcfg[val];
1436
- triggerLocaleChange();
1437
- }
1438
- return false;
1439
- }
1440
- });
1441
- }
1442
- });
1443
- webshims.activeLang({
1444
- langObj: formcfg,
1445
- module: 'form-core',
1446
- callback: function(val){
1447
- if(curCfg != val){
1448
- curCfg = val;
1449
- triggerLocaleChange();
1450
- }
1451
- }
1457
+
1458
+
1459
+ curCfg = webshims.activeLang(formcfg);
1460
+
1461
+ triggerLocaleChange();
1462
+
1463
+ $(formcfg).on('change', function(){
1464
+ curCfg = formcfg.__active;
1465
+ triggerLocaleChange();
1452
1466
  });
1467
+
1453
1468
  })();
1454
1469
 
1455
1470
 
1456
1471
 
1457
1472
  (function(){
1458
1473
 
1459
-
1460
- var mousePress = function(e){
1461
- $(this)[e.type == 'mousepressstart' ? 'addClass' : 'removeClass']('mousepress-ui');
1462
- };
1463
-
1464
1474
  var retDefault = function(val, def){
1465
1475
  if(!(typeof val == 'number' || (val && val == val * 1))){
1466
1476
  return def;
@@ -1572,6 +1582,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1572
1582
  time: function(val){
1573
1583
  var fVal;
1574
1584
  if(val && curCfg.meridian){
1585
+ val = val.toUpperCase();
1575
1586
  if(val.substr(0,2) === "12"){
1576
1587
  val = "00" + val.substr(2);
1577
1588
  }
@@ -1795,300 +1806,32 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1795
1806
  }
1796
1807
  },
1797
1808
  addBindings: function(){
1798
- var isFocused;
1799
-
1800
1809
  var that = this;
1801
1810
  var o = this.options;
1802
-
1803
- var eventTimer = (function(){
1804
- var events = {};
1805
- return {
1806
- init: function(name, curVal, fn){
1807
- if(!events[name]){
1808
- events[name] = {fn: fn};
1809
- $(that.orig).on(name, function(){
1810
- events[name].val = $.prop(that.orig, 'value');
1811
- });
1812
- }
1813
- events[name].val = curVal;
1814
- },
1815
- call: function(name, val){
1816
- if(events[name] && events[name].val != val){
1817
- clearTimeout(events[name].timer);
1818
- events[name].val = val;
1819
- events[name].timer = setTimeout(function(){
1820
- events[name].fn(val, that);
1821
- }, 9);
1822
- }
1823
- }
1824
- };
1825
- })();
1826
- var initChangeEvents = function(){
1827
- eventTimer.init('input', $.prop(that.orig, 'value'), that.options.input);
1828
- eventTimer.init('change', $.prop(that.orig, 'value'), that.options.change);
1829
- };
1830
-
1831
- var step = {};
1832
-
1833
- var preventBlur = function(e){
1834
- if(preventBlur.prevent){
1835
- e.preventDefault();
1836
- (isFocused || that.element.getShadowFocusElement()).focus();
1837
- stopPropagation(e);
1838
- return true;
1839
- }
1811
+ var run = function(){
1812
+ that._addBindings();
1840
1813
  };
1841
- var callSplitChange = (function(){
1842
- var timer;
1843
-
1844
- var call = function(e){
1845
- var val;
1846
- clearTimeout(timer);
1847
- val = that.parseValue();
1848
- if(that.type == 'color'){
1849
- that.inputElements.val(val);
1850
- }
1851
- $.prop(that.orig, 'value', val);
1852
- eventTimer.call('input', val);
1853
- if(!e || e.type != 'wsupdatevalue'){
1854
- eventTimer.call('change', val);
1855
- }
1856
- };
1857
-
1858
- var onFocus = function(){
1859
- clearTimeout(timer);
1860
- };
1861
- var onBlur = function(e){
1862
- clearTimeout(timer);
1863
- timer = setTimeout(call, 0);
1864
-
1865
- if(e.type == 'change'){
1866
- stopPropagation(e);
1867
- if(!o.splitInput){
1868
- call();
1869
- }
1870
- }
1871
- };
1872
-
1873
- that.element.on('wsupdatevalue', call);
1874
-
1875
- that.inputElements
1876
- .add(that.buttonWrapper)
1877
- .add(that.element)
1878
- .on(
1879
- {
1880
- 'focus focusin': onFocus,
1881
- 'blur focusout change': onBlur
1882
- }
1883
- )
1884
- ;
1885
- setTimeout(function(){
1886
- if(that.popover){
1887
- that.popover.element.on('wspopoverhide', onBlur);
1888
- $('> *', that.popover.element)
1889
- .on({
1890
- 'focusin': onFocus,
1891
- 'focusout': onBlur
1892
- })
1893
- ;
1894
- }
1895
- }, 0);
1896
- })();
1814
+ if(this._addBindings){
1815
+ run();
1816
+ } else {
1817
+ webshims.ready('forms-picker', run);
1818
+ loadPicker(this.type, 'WINDOWLOAD');
1819
+ }
1897
1820
 
1898
- var spinEvents = {};
1899
- var spinElement = o.splitInput ? this.inputElements.filter('.ws-spin') : this.inputElements.eq(0);
1900
- var elementEvts = {
1901
- blur: function(e){
1902
- if(!preventBlur(e) && !o.disabled && !o.readonly){
1903
- if(!preventBlur.prevent){
1904
- isFocused = false;
1905
- }
1906
- }
1907
- stopPropagation(e);
1908
- },
1909
- focus: function(e){
1910
- if(!isFocused){
1911
- initChangeEvents();
1912
- isFocused = this;
1913
- }
1914
- },
1915
- keypress: function(e){
1916
- if(e.isDefaultPrevented()){return;}
1917
- var chr;
1918
- var stepped = true;
1919
- var code = e.keyCode;
1920
- if(!e.ctrlKey && !e.metaKey && curCfg[that.type+'Signs']){
1921
- chr = String.fromCharCode(e.charCode == null ? code : e.charCode);
1922
- stepped = !(chr < " " || (curCfg[that.type+'Signs']+'0123456789').indexOf(chr) > -1);
1923
- } else {
1924
- stepped = false;
1925
- }
1926
- if(stepped){
1927
- e.preventDefault();
1821
+ this.inputElements
1822
+ .add(this.buttonWrapper)
1823
+ .add(this.element)
1824
+ .one('mousedown focusin', function(e){
1825
+ loadPicker(that.type, 'DOM');
1826
+ })
1827
+ .on({
1828
+ 'change input focus focusin blur focusout': function(e){
1829
+ $(e.target).trigger('ws__'+e.type);
1928
1830
  }
1929
- },
1930
- input: (this.type == 'color' && this.isValid) ?
1931
- $.noop :
1932
- (function(){
1933
- var timer;
1934
- var check = function(){
1935
- var val = that.parseValue(true);
1936
- if(val && that.isValid(val)){
1937
- that.setInput(val);
1938
- }
1939
-
1940
- };
1941
- return function(){
1942
- clearTimeout(timer);
1943
- timer = setTimeout(check, 200);
1944
- };
1945
- })(),
1946
- 'input keydown keypress': (function(){
1947
- var timer;
1948
- var isStopped = false;
1949
- var releaseTab = function(){
1950
- if(isStopped === true){
1951
- isStopped = 'semi';
1952
- timer = setTimeout(releaseTab, 250);
1953
- } else {
1954
- isStopped = false;
1955
- }
1956
- };
1957
- var stopTab = function(){
1958
- isStopped = true;
1959
- clearTimeout(timer);
1960
- timer = setTimeout(releaseTab, 300);
1961
- };
1962
- var select = function(){
1963
- var elem = this;
1964
- setTimeout(function(){
1965
- elem.focus();
1966
- elem.select();
1967
- }, 4);
1968
-
1969
- stopTab();
1970
- };
1971
-
1972
- return function(e){
1973
- if(o.splitInput && o.jumpInputs){
1974
- if(e.type == 'input'){
1975
- if($.prop(this, 'value').length === $.prop(this, 'maxLength')){
1976
- try {
1977
- $(this)
1978
- .next()
1979
- .next('input, select')
1980
- .each(select)
1981
- ;
1982
- } catch(er){}
1983
- }
1984
- } else if(!e.shiftKey && !e.crtlKey && e.keyCode == 9 && (isStopped === true || (isStopped && !$.prop(this, 'value')))){
1985
- e.preventDefault();
1986
- }
1987
- }
1988
- };
1989
- })()
1990
- };
1991
- var mouseDownInit = function(){
1992
- if(!o.disabled && !isFocused){
1993
- that.element.getShadowFocusElement().focus();
1994
- }
1995
- preventBlur.set();
1831
+ })
1996
1832
 
1997
- return false;
1998
- };
1999
-
2000
- preventBlur.set = (function(){
2001
- var timer;
2002
- var reset = function(){
2003
- preventBlur.prevent = false;
2004
- };
2005
- return function(){
2006
- clearTimeout(timer);
2007
- preventBlur.prevent = true;
2008
- setTimeout(reset, 9);
2009
- };
2010
- })();
2011
-
2012
-
2013
- this.buttonWrapper.on('mousedown', mouseDownInit);
2014
-
2015
- this.setInput = function(value){
2016
- that.value(value);
2017
- eventTimer.call('input', value);
2018
- };
2019
- this.setChange = function(value){
2020
- that.setInput(value);
2021
- eventTimer.call('change', value);
2022
- };
2023
-
2024
-
2025
-
2026
- this.inputElements.on(elementEvts);
1833
+ ;
2027
1834
 
2028
- if(steps[this.type]){
2029
- ['stepUp', 'stepDown'].forEach(function(name){
2030
- step[name] = function(factor){
2031
- if(!o.disabled && !o.readonly){
2032
- if(!isFocused){
2033
- mouseDownInit();
2034
- }
2035
- var ret = false;
2036
- if (!factor) {
2037
- factor = 1;
2038
- }
2039
- try {
2040
- that.elemHelper[name](factor);
2041
-
2042
- ret = that.elemHelper.prop('value');
2043
-
2044
- } catch (er) {
2045
- if(!o.value && that.maxAsNumber >= that.minAsNumber){
2046
- ret = o.defValue;
2047
- }
2048
- }
2049
- if(ret !== false && o.value != ret){
2050
- that.value(ret);
2051
- eventTimer.call('input', ret);
2052
- }
2053
- return ret;
2054
- }
2055
- };
2056
- });
2057
- if(!o.noSpinbtn){
2058
- spinEvents[$.fn.mwheelIntent ? 'mwheelIntent' : 'mousewheel'] = function(e, delta){
2059
- if(delta && isFocused && !o.disabled){
2060
- step[delta > 0 ? 'stepUp' : 'stepDown']();
2061
- e.preventDefault();
2062
- }
2063
- };
2064
- spinEvents.keydown = function(e){
2065
- if(o.list || e.isDefaultPrevented() || (e.altKey && e.keyCode == 40) || $.attr(this, 'list')){return;}
2066
- var stepped = true;
2067
- var code = e.keyCode;
2068
- if (code == 38) {
2069
- step.stepUp();
2070
- } else if (code == 40) {
2071
- step.stepDown();
2072
- } else {
2073
- stepped = false;
2074
- }
2075
- if(stepped){
2076
- e.preventDefault();
2077
- }
2078
- };
2079
-
2080
- spinElement.attr({'autocomplete': 'off', role: 'spinbutton'}).on(spinEvents);
2081
- }
2082
- $(this.buttonWrapper)
2083
- .on('mousepressstart mousepressend', '.step-up, .step-down', mousePress)
2084
- .on('mousedown mousepress', '.step-up', function(e){
2085
- step.stepUp();
2086
- })
2087
- .on('mousedown mousepress', '.step-down', function(e){
2088
- step.stepDown();
2089
- })
2090
- ;
2091
- }
2092
1835
  if(this.type != 'color'){
2093
1836
  (function(){
2094
1837
  var localeChange ;
@@ -2112,8 +1855,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2112
1855
  $(that.orig).onWSOff('wslocalechange', localeChange);
2113
1856
  })();
2114
1857
  }
2115
-
2116
- initChangeEvents();
2117
1858
  },
2118
1859
  required: function(val, boolVal){
2119
1860
  this.inputElements.attr({'aria-required': ''+boolVal});
@@ -2147,34 +1888,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2147
1888
  this.element.prop('placeholder', placeholder);
2148
1889
  }
2149
1890
  },
2150
- initDataList: function(){
2151
- var listTimer;
2152
- var that = this;
2153
- var updateList = function(){
2154
- $(that.orig)
2155
- .jProp('list')
2156
- .off('updateDatalist', updateList)
2157
- .on('updateDatalist', updateList)
2158
- ;
2159
- clearTimeout(listTimer);
2160
- listTimer = setTimeout(function(){
2161
- if(that.list){
2162
- that.list();
2163
- }
2164
- }, 9);
2165
-
2166
- };
2167
-
2168
- $(this.orig).onTrigger('listdatalistchange', updateList);
2169
- },
2170
- getOptions: function(){
2171
- var options = {};
2172
- var datalist = $(this.orig).jProp('list');
2173
- datalist.find('option').each(function(){
2174
- options[$.prop(this, 'value')] = $.prop(this, 'label');
2175
- });
2176
- return [options, datalist.data('label')];
2177
- },
2178
1891
  list: function(val){
2179
1892
  if(this.type == 'number'){
2180
1893
  this.element.attr('list', $.attr(this.orig, 'list'));
@@ -2304,31 +2017,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2304
2017
  }, 9);
2305
2018
  }
2306
2019
  },
2307
- value: function(val, force){
2308
-
2309
- if(!this._init || force || this.options.value !== val){
2310
- this.valueAsNumber = this.asNumber(val);
2311
- this.options.value = val;
2312
-
2313
- if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
2314
- this._setStartInRange();
2315
- } else {
2316
- this.elemHelper.prop('value', val);
2317
- this.options.defValue = "";
2318
- }
2319
-
2320
- val = formatVal[this.type](val, this.options);
2321
- if(this.options.splitInput){
2322
- $.each(this.splits, function(i, elem){
2323
- $.prop(elem, 'value', val[i]);
2324
- });
2325
- } else {
2326
- this.element.prop('value', val);
2327
- }
2328
- this._propertyChange('value');
2329
- this.mirrorValidity();
2330
- }
2331
- },
2332
2020
  step: function(val){
2333
2021
  var defStep = steps[this.type];
2334
2022
  this.options.step = val;
@@ -2400,6 +2088,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2400
2088
  });
2401
2089
  };
2402
2090
 
2091
+ $.fn.wsBaseWidget.wsProto = wsWidgetProto;
2092
+
2403
2093
  $.fn.spinbtnUI = function(opts){
2404
2094
  opts = $.extend({
2405
2095
  monthNames: 'monthNames',
@@ -2414,32 +2104,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2414
2104
  }, opts);
2415
2105
  });
2416
2106
  };
2107
+
2108
+ $.fn.spinbtnUI.wsProto = spinBtnProto;
2109
+
2417
2110
  })();
2418
2111
 
2419
2112
  (function(){
2420
2113
  var picker = {};
2421
2114
 
2422
- var loadPicker = function(type, name){
2423
- type = (type == 'color' ? 'color' : 'forms')+'-picker';
2424
- if(!loadPicker[name+'Loaded'+type]){
2425
- loadPicker[name+'Loaded'+type] = true;
2426
- webshims.ready(name, function(){
2427
- webshims.loader.loadList([type]);
2428
- });
2429
- }
2430
- return type;
2431
- };
2432
- options.addZero = addZero;
2433
- webshims.loader.addModule('forms-picker', {
2434
- noAutoCallback: true,
2435
- options: options
2436
- });
2437
- webshims.loader.addModule('color-picker', {
2438
- noAutoCallback: true,
2439
- css: 'jpicker/jpicker.css',
2440
- options: options
2441
- });
2442
-
2443
2115
  webshims.inlinePopover = {
2444
2116
  _create: function(){
2445
2117
  this.element = $('<div class="ws-inline-picker"><div class="ws-po-box" /></div>').data('wspopover', this);
@@ -2483,7 +2155,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2483
2155
  cancel: function(val, popover, data){
2484
2156
  if(!data.options.inlinePicker){
2485
2157
  popover.stopOpen = true;
2486
- data.element.getShadowFocusElement().focus();
2158
+ data.element.getShadowFocusElement().trigger('focus');
2487
2159
  setTimeout(function(){
2488
2160
  popover.stopOpen = false;
2489
2161
  }, 9);
@@ -2572,9 +2244,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2572
2244
 
2573
2245
  picker._common = function(data){
2574
2246
  var options = data.options;
2575
- var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element, position: options.widgetPosition});
2247
+ var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, $.extend(options.popover || {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element}));
2576
2248
  var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
2577
2249
 
2250
+ if(options.widgetPosition){
2251
+ webshims.error('options.widgetPosition was removed use options.popover.position instead');
2252
+ }
2253
+
2254
+ if(options.openOnFocus && popover.options && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
2255
+ webshims.error('openOnFocus and popover.appendTo "auto/element" can prduce a11y problems try to change appendTo to body or similiar or use openOnMouseFocus instead');
2256
+ }
2578
2257
 
2579
2258
  var showPickerContent = function(){
2580
2259
  (picker[data.type].showPickerContent || picker.showPickerContent)(data, popover);
@@ -2726,7 +2405,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2726
2405
  if(options.inlinePicker){
2727
2406
  show();
2728
2407
  }
2729
- loadPicker(data.type, 'WINDOWLOAD');
2730
2408
  };
2731
2409
 
2732
2410
  picker.month = picker._common;
@@ -2742,7 +2420,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2742
2420
  .find('.ws-color-indicator')
2743
2421
  ;
2744
2422
  var showColor = function(){
2745
- colorIndicator.css({backgroundColor: $.prop(this, 'value') || '#000'})
2423
+ colorIndicator.css({backgroundColor: $.prop(this, 'value') || '#000000'});
2746
2424
  };
2747
2425
  var showOpacity = (function(){
2748
2426
  var timer;
@@ -2899,11 +2577,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2899
2577
  data = {};
2900
2578
  optsName = type;
2901
2579
 
2902
- //todo: do we need deep extend?
2903
-
2904
2580
  labels = $(this).jProp('labels');
2905
-
2906
- opts = $.extend({}, options.widgets, options[type], $($.prop(this, 'form')).data(type) || {}, $(this).data(type) || {}, {
2581
+ opts = $.extend(webshims.getOptions(this, type, [options.widgets, options[type], $($.prop(this, 'form')).data(type)]), {
2907
2582
  orig: this,
2908
2583
  type: type,
2909
2584
  labels: labels,
@@ -2925,7 +2600,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2925
2600
  containerElements: []
2926
2601
  });
2927
2602
 
2928
-
2929
2603
  for(i = 0; i < copyProps.length; i++){
2930
2604
  opts[copyProps[i]] = $.prop(this, copyProps[i]);
2931
2605
  }
@@ -3079,8 +2753,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3079
2753
  opts.splitInput = false;
3080
2754
  }
3081
2755
  var markup = opts.splitInput ?
3082
- '<span class="ws-'+name+' ws-input" role="group"></span>' :
3083
- '<input class="ws-'+name+'" type="text" />';
2756
+ '<span class="ws-'+name+' ws-input ws-inputreplace" role="group"></span>' :
2757
+ '<input class="ws-'+name+' ws-inputreplace" type="text" />';
3084
2758
  var data = $(markup).insertAfter(opts.orig);
3085
2759
  if(steps[name]){
3086
2760
  data = data.spinbtnUI(opts).data('wsWidget'+name);
@@ -3097,13 +2771,20 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3097
2771
  }
3098
2772
  });
3099
2773
 
2774
+ var init = function(){
2775
+ webshims.addReady(function(context, contextElem){
2776
+ $('input', context)
2777
+ .add(contextElem.filter('input'))
2778
+ .each(implementType)
2779
+ ;
2780
+ });
2781
+ };
2782
+ if(formcfg._isLoading){
2783
+ $(formcfg).one('change', init);
2784
+ } else {
2785
+ init();
2786
+ }
3100
2787
 
3101
- webshims.addReady(function(context, contextElem){
3102
- $('input', context)
3103
- .add(contextElem.filter('input'))
3104
- .each(implementType)
3105
- ;
3106
- });
3107
2788
  })();
3108
2789
  });
3109
2790