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
@@ -49,7 +49,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
49
49
 
50
50
  var formsExtModule = webshims.modules['form-number-date-api'];
51
51
  var overrideValidity = formsExtModule.loaded && !formsExtModule.test();
52
- var validityProps = ['customError', 'badInput','typeMismatch','rangeUnderflow','rangeOverflow','stepMismatch','tooLong','patternMismatch','valueMissing','valid'];
52
+ var validityProps = ['customError', 'badInput','typeMismatch','rangeUnderflow','rangeOverflow','stepMismatch','tooLong', 'tooShort','patternMismatch','valueMissing','valid'];
53
53
 
54
54
  var validityChanger = ['value'];
55
55
  var validityElements = [];
@@ -107,7 +107,7 @@ webshims.register('form-native-extend', function($, webshims, window, doc, undef
107
107
  }
108
108
  var validityState = {};
109
109
  validityProps.forEach(function(prop){
110
- validityState[prop] = validity[prop];
110
+ validityState[prop] = validity[prop] || false;
111
111
  });
112
112
 
113
113
  if( !$.prop(elem, 'willValidate') ){
@@ -856,8 +856,11 @@ webshims.register('form-number-date-api', function($, webshims, window, document
856
856
 
857
857
  if(this._init && val == o.value && oVal == val){return;}
858
858
  this.options.value = val;
859
- this.thumb.stop();
860
- this.range.stop();
859
+
860
+ if($.fn.stop){
861
+ this.thumb.stop();
862
+ this.range.stop();
863
+ }
861
864
 
862
865
  rangeStyle[this.dirs.width] = left+'%';
863
866
  if(this.vertical){
@@ -866,7 +869,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
866
869
  thumbStyle[this.dirs.left] = left+'%';
867
870
 
868
871
 
869
- if(!animate){
872
+ if(!animate || !$.fn.animate){
870
873
  this.thumb.css(thumbStyle);
871
874
  this.range.css(rangeStyle);
872
875
  } else {
@@ -1155,9 +1158,9 @@ webshims.register('form-number-date-api', function($, webshims, window, document
1155
1158
  $(window).off('blur', removeWin);
1156
1159
  if(!o.readonly && !o.disabled){
1157
1160
  normalizeTouch(e);
1158
- that.element.focus();
1161
+ that.element.trigger('focus');
1159
1162
  that.addRemoveClass('ws-active', true);
1160
- leftOffset = that.element.focus().offset();
1163
+ leftOffset = that.element.offset();
1161
1164
  widgetUnits = that.element[that.dirs.innerWidth]();
1162
1165
  if(!widgetUnits || !leftOffset){return;}
1163
1166
  outerWidth = that.thumb[that.dirs.outerWidth]();
@@ -1498,6 +1501,32 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1498
1501
  return val.length == 1 ? '0'+val : val;
1499
1502
  };
1500
1503
 
1504
+ var loadPicker = function(type, name){
1505
+ type = (type == 'color' ? 'color' : 'forms')+'-picker';
1506
+ if(!loadPicker[name+'Loaded'+type]){
1507
+ loadPicker[name+'Loaded'+type] = true;
1508
+ webshims.ready(name, function(){
1509
+ webshims.loader.loadList([type]);
1510
+
1511
+ });
1512
+ }
1513
+ return type;
1514
+ };
1515
+
1516
+
1517
+ options.addZero = addZero;
1518
+ webshims.loader.addModule('forms-picker', {
1519
+ noAutoCallback: true,
1520
+ options: options
1521
+ });
1522
+ webshims.loader.addModule('color-picker', {
1523
+ noAutoCallback: true,
1524
+ css: 'jpicker/jpicker.css',
1525
+ options: options,
1526
+ d: ['forms-picker']
1527
+ });
1528
+
1529
+ options.steps = steps;
1501
1530
 
1502
1531
  (function(){
1503
1532
 
@@ -1610,7 +1639,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1610
1639
  langCfg.date.monthDigits = monthDigits;
1611
1640
  langCfg.numberSigns += '-';
1612
1641
  if(langCfg.meridian){
1613
- langCfg.timeSigns += langCfg.meridian[0] + langCfg.meridian[1];
1642
+ langCfg.timeSigns += langCfg.meridian[0] + langCfg.meridian[1] + langCfg.meridian[0].toLowerCase() + langCfg.meridian[1].toLowerCase();
1614
1643
  }
1615
1644
  $.each(langCfg.date.monthNames, create);
1616
1645
  $.each(langCfg.date.monthNamesShort, create);
@@ -1636,43 +1665,24 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1636
1665
  $(document).triggerHandler('wslocalechange');
1637
1666
  };
1638
1667
 
1639
- triggerLocaleChange();
1640
1668
 
1641
- webshims.activeLang({
1642
- register: 'form-core',
1643
- callback: function(){
1644
- $.each(arguments, function(i, val){
1645
- if(formcfg[val]){
1646
- if(formcfg[val] != curCfg){
1647
- curCfg = formcfg[val];
1648
- triggerLocaleChange();
1649
- }
1650
- return false;
1651
- }
1652
- });
1653
- }
1654
- });
1655
- webshims.activeLang({
1656
- langObj: formcfg,
1657
- module: 'form-core',
1658
- callback: function(val){
1659
- if(curCfg != val){
1660
- curCfg = val;
1661
- triggerLocaleChange();
1662
- }
1663
- }
1669
+
1670
+
1671
+ curCfg = webshims.activeLang(formcfg);
1672
+
1673
+ triggerLocaleChange();
1674
+
1675
+ $(formcfg).on('change', function(){
1676
+ curCfg = formcfg.__active;
1677
+ triggerLocaleChange();
1664
1678
  });
1679
+
1665
1680
  })();
1666
1681
 
1667
1682
 
1668
1683
 
1669
1684
  (function(){
1670
1685
 
1671
-
1672
- var mousePress = function(e){
1673
- $(this)[e.type == 'mousepressstart' ? 'addClass' : 'removeClass']('mousepress-ui');
1674
- };
1675
-
1676
1686
  var retDefault = function(val, def){
1677
1687
  if(!(typeof val == 'number' || (val && val == val * 1))){
1678
1688
  return def;
@@ -1784,6 +1794,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1784
1794
  time: function(val){
1785
1795
  var fVal;
1786
1796
  if(val && curCfg.meridian){
1797
+ val = val.toUpperCase();
1787
1798
  if(val.substr(0,2) === "12"){
1788
1799
  val = "00" + val.substr(2);
1789
1800
  }
@@ -2007,300 +2018,32 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2007
2018
  }
2008
2019
  },
2009
2020
  addBindings: function(){
2010
- var isFocused;
2011
-
2012
2021
  var that = this;
2013
2022
  var o = this.options;
2014
-
2015
- var eventTimer = (function(){
2016
- var events = {};
2017
- return {
2018
- init: function(name, curVal, fn){
2019
- if(!events[name]){
2020
- events[name] = {fn: fn};
2021
- $(that.orig).on(name, function(){
2022
- events[name].val = $.prop(that.orig, 'value');
2023
- });
2024
- }
2025
- events[name].val = curVal;
2026
- },
2027
- call: function(name, val){
2028
- if(events[name] && events[name].val != val){
2029
- clearTimeout(events[name].timer);
2030
- events[name].val = val;
2031
- events[name].timer = setTimeout(function(){
2032
- events[name].fn(val, that);
2033
- }, 9);
2034
- }
2035
- }
2036
- };
2037
- })();
2038
- var initChangeEvents = function(){
2039
- eventTimer.init('input', $.prop(that.orig, 'value'), that.options.input);
2040
- eventTimer.init('change', $.prop(that.orig, 'value'), that.options.change);
2041
- };
2042
-
2043
- var step = {};
2044
-
2045
- var preventBlur = function(e){
2046
- if(preventBlur.prevent){
2047
- e.preventDefault();
2048
- (isFocused || that.element.getShadowFocusElement()).focus();
2049
- stopPropagation(e);
2050
- return true;
2051
- }
2023
+ var run = function(){
2024
+ that._addBindings();
2052
2025
  };
2053
- var callSplitChange = (function(){
2054
- var timer;
2055
-
2056
- var call = function(e){
2057
- var val;
2058
- clearTimeout(timer);
2059
- val = that.parseValue();
2060
- if(that.type == 'color'){
2061
- that.inputElements.val(val);
2062
- }
2063
- $.prop(that.orig, 'value', val);
2064
- eventTimer.call('input', val);
2065
- if(!e || e.type != 'wsupdatevalue'){
2066
- eventTimer.call('change', val);
2067
- }
2068
- };
2069
-
2070
- var onFocus = function(){
2071
- clearTimeout(timer);
2072
- };
2073
- var onBlur = function(e){
2074
- clearTimeout(timer);
2075
- timer = setTimeout(call, 0);
2076
-
2077
- if(e.type == 'change'){
2078
- stopPropagation(e);
2079
- if(!o.splitInput){
2080
- call();
2081
- }
2082
- }
2083
- };
2084
-
2085
- that.element.on('wsupdatevalue', call);
2086
-
2087
- that.inputElements
2088
- .add(that.buttonWrapper)
2089
- .add(that.element)
2090
- .on(
2091
- {
2092
- 'focus focusin': onFocus,
2093
- 'blur focusout change': onBlur
2094
- }
2095
- )
2096
- ;
2097
- setTimeout(function(){
2098
- if(that.popover){
2099
- that.popover.element.on('wspopoverhide', onBlur);
2100
- $('> *', that.popover.element)
2101
- .on({
2102
- 'focusin': onFocus,
2103
- 'focusout': onBlur
2104
- })
2105
- ;
2106
- }
2107
- }, 0);
2108
- })();
2026
+ if(this._addBindings){
2027
+ run();
2028
+ } else {
2029
+ webshims.ready('forms-picker', run);
2030
+ loadPicker(this.type, 'WINDOWLOAD');
2031
+ }
2109
2032
 
2110
- var spinEvents = {};
2111
- var spinElement = o.splitInput ? this.inputElements.filter('.ws-spin') : this.inputElements.eq(0);
2112
- var elementEvts = {
2113
- blur: function(e){
2114
- if(!preventBlur(e) && !o.disabled && !o.readonly){
2115
- if(!preventBlur.prevent){
2116
- isFocused = false;
2117
- }
2118
- }
2119
- stopPropagation(e);
2120
- },
2121
- focus: function(e){
2122
- if(!isFocused){
2123
- initChangeEvents();
2124
- isFocused = this;
2125
- }
2126
- },
2127
- keypress: function(e){
2128
- if(e.isDefaultPrevented()){return;}
2129
- var chr;
2130
- var stepped = true;
2131
- var code = e.keyCode;
2132
- if(!e.ctrlKey && !e.metaKey && curCfg[that.type+'Signs']){
2133
- chr = String.fromCharCode(e.charCode == null ? code : e.charCode);
2134
- stepped = !(chr < " " || (curCfg[that.type+'Signs']+'0123456789').indexOf(chr) > -1);
2135
- } else {
2136
- stepped = false;
2137
- }
2138
- if(stepped){
2139
- e.preventDefault();
2033
+ this.inputElements
2034
+ .add(this.buttonWrapper)
2035
+ .add(this.element)
2036
+ .one('mousedown focusin', function(e){
2037
+ loadPicker(that.type, 'DOM');
2038
+ })
2039
+ .on({
2040
+ 'change input focus focusin blur focusout': function(e){
2041
+ $(e.target).trigger('ws__'+e.type);
2140
2042
  }
2141
- },
2142
- input: (this.type == 'color' && this.isValid) ?
2143
- $.noop :
2144
- (function(){
2145
- var timer;
2146
- var check = function(){
2147
- var val = that.parseValue(true);
2148
- if(val && that.isValid(val)){
2149
- that.setInput(val);
2150
- }
2151
-
2152
- };
2153
- return function(){
2154
- clearTimeout(timer);
2155
- timer = setTimeout(check, 200);
2156
- };
2157
- })(),
2158
- 'input keydown keypress': (function(){
2159
- var timer;
2160
- var isStopped = false;
2161
- var releaseTab = function(){
2162
- if(isStopped === true){
2163
- isStopped = 'semi';
2164
- timer = setTimeout(releaseTab, 250);
2165
- } else {
2166
- isStopped = false;
2167
- }
2168
- };
2169
- var stopTab = function(){
2170
- isStopped = true;
2171
- clearTimeout(timer);
2172
- timer = setTimeout(releaseTab, 300);
2173
- };
2174
- var select = function(){
2175
- var elem = this;
2176
- setTimeout(function(){
2177
- elem.focus();
2178
- elem.select();
2179
- }, 4);
2180
-
2181
- stopTab();
2182
- };
2183
-
2184
- return function(e){
2185
- if(o.splitInput && o.jumpInputs){
2186
- if(e.type == 'input'){
2187
- if($.prop(this, 'value').length === $.prop(this, 'maxLength')){
2188
- try {
2189
- $(this)
2190
- .next()
2191
- .next('input, select')
2192
- .each(select)
2193
- ;
2194
- } catch(er){}
2195
- }
2196
- } else if(!e.shiftKey && !e.crtlKey && e.keyCode == 9 && (isStopped === true || (isStopped && !$.prop(this, 'value')))){
2197
- e.preventDefault();
2198
- }
2199
- }
2200
- };
2201
- })()
2202
- };
2203
- var mouseDownInit = function(){
2204
- if(!o.disabled && !isFocused){
2205
- that.element.getShadowFocusElement().focus();
2206
- }
2207
- preventBlur.set();
2043
+ })
2208
2044
 
2209
- return false;
2210
- };
2211
-
2212
- preventBlur.set = (function(){
2213
- var timer;
2214
- var reset = function(){
2215
- preventBlur.prevent = false;
2216
- };
2217
- return function(){
2218
- clearTimeout(timer);
2219
- preventBlur.prevent = true;
2220
- setTimeout(reset, 9);
2221
- };
2222
- })();
2223
-
2224
-
2225
- this.buttonWrapper.on('mousedown', mouseDownInit);
2226
-
2227
- this.setInput = function(value){
2228
- that.value(value);
2229
- eventTimer.call('input', value);
2230
- };
2231
- this.setChange = function(value){
2232
- that.setInput(value);
2233
- eventTimer.call('change', value);
2234
- };
2235
-
2236
-
2237
-
2238
- this.inputElements.on(elementEvts);
2045
+ ;
2239
2046
 
2240
- if(steps[this.type]){
2241
- ['stepUp', 'stepDown'].forEach(function(name){
2242
- step[name] = function(factor){
2243
- if(!o.disabled && !o.readonly){
2244
- if(!isFocused){
2245
- mouseDownInit();
2246
- }
2247
- var ret = false;
2248
- if (!factor) {
2249
- factor = 1;
2250
- }
2251
- try {
2252
- that.elemHelper[name](factor);
2253
-
2254
- ret = that.elemHelper.prop('value');
2255
-
2256
- } catch (er) {
2257
- if(!o.value && that.maxAsNumber >= that.minAsNumber){
2258
- ret = o.defValue;
2259
- }
2260
- }
2261
- if(ret !== false && o.value != ret){
2262
- that.value(ret);
2263
- eventTimer.call('input', ret);
2264
- }
2265
- return ret;
2266
- }
2267
- };
2268
- });
2269
- if(!o.noSpinbtn){
2270
- spinEvents[$.fn.mwheelIntent ? 'mwheelIntent' : 'mousewheel'] = function(e, delta){
2271
- if(delta && isFocused && !o.disabled){
2272
- step[delta > 0 ? 'stepUp' : 'stepDown']();
2273
- e.preventDefault();
2274
- }
2275
- };
2276
- spinEvents.keydown = function(e){
2277
- if(o.list || e.isDefaultPrevented() || (e.altKey && e.keyCode == 40) || $.attr(this, 'list')){return;}
2278
- var stepped = true;
2279
- var code = e.keyCode;
2280
- if (code == 38) {
2281
- step.stepUp();
2282
- } else if (code == 40) {
2283
- step.stepDown();
2284
- } else {
2285
- stepped = false;
2286
- }
2287
- if(stepped){
2288
- e.preventDefault();
2289
- }
2290
- };
2291
-
2292
- spinElement.attr({'autocomplete': 'off', role: 'spinbutton'}).on(spinEvents);
2293
- }
2294
- $(this.buttonWrapper)
2295
- .on('mousepressstart mousepressend', '.step-up, .step-down', mousePress)
2296
- .on('mousedown mousepress', '.step-up', function(e){
2297
- step.stepUp();
2298
- })
2299
- .on('mousedown mousepress', '.step-down', function(e){
2300
- step.stepDown();
2301
- })
2302
- ;
2303
- }
2304
2047
  if(this.type != 'color'){
2305
2048
  (function(){
2306
2049
  var localeChange ;
@@ -2324,8 +2067,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2324
2067
  $(that.orig).onWSOff('wslocalechange', localeChange);
2325
2068
  })();
2326
2069
  }
2327
-
2328
- initChangeEvents();
2329
2070
  },
2330
2071
  required: function(val, boolVal){
2331
2072
  this.inputElements.attr({'aria-required': ''+boolVal});
@@ -2359,34 +2100,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2359
2100
  this.element.prop('placeholder', placeholder);
2360
2101
  }
2361
2102
  },
2362
- initDataList: function(){
2363
- var listTimer;
2364
- var that = this;
2365
- var updateList = function(){
2366
- $(that.orig)
2367
- .jProp('list')
2368
- .off('updateDatalist', updateList)
2369
- .on('updateDatalist', updateList)
2370
- ;
2371
- clearTimeout(listTimer);
2372
- listTimer = setTimeout(function(){
2373
- if(that.list){
2374
- that.list();
2375
- }
2376
- }, 9);
2377
-
2378
- };
2379
-
2380
- $(this.orig).onTrigger('listdatalistchange', updateList);
2381
- },
2382
- getOptions: function(){
2383
- var options = {};
2384
- var datalist = $(this.orig).jProp('list');
2385
- datalist.find('option').each(function(){
2386
- options[$.prop(this, 'value')] = $.prop(this, 'label');
2387
- });
2388
- return [options, datalist.data('label')];
2389
- },
2390
2103
  list: function(val){
2391
2104
  if(this.type == 'number'){
2392
2105
  this.element.attr('list', $.attr(this.orig, 'list'));
@@ -2516,31 +2229,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2516
2229
  }, 9);
2517
2230
  }
2518
2231
  },
2519
- value: function(val, force){
2520
-
2521
- if(!this._init || force || this.options.value !== val){
2522
- this.valueAsNumber = this.asNumber(val);
2523
- this.options.value = val;
2524
-
2525
- if(isNaN(this.valueAsNumber) || (!isNaN(this.minAsNumber) && this.valueAsNumber < this.minAsNumber) || (!isNaN(this.maxAsNumber) && this.valueAsNumber > this.maxAsNumber)){
2526
- this._setStartInRange();
2527
- } else {
2528
- this.elemHelper.prop('value', val);
2529
- this.options.defValue = "";
2530
- }
2531
-
2532
- val = formatVal[this.type](val, this.options);
2533
- if(this.options.splitInput){
2534
- $.each(this.splits, function(i, elem){
2535
- $.prop(elem, 'value', val[i]);
2536
- });
2537
- } else {
2538
- this.element.prop('value', val);
2539
- }
2540
- this._propertyChange('value');
2541
- this.mirrorValidity();
2542
- }
2543
- },
2544
2232
  step: function(val){
2545
2233
  var defStep = steps[this.type];
2546
2234
  this.options.step = val;
@@ -2612,6 +2300,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2612
2300
  });
2613
2301
  };
2614
2302
 
2303
+ $.fn.wsBaseWidget.wsProto = wsWidgetProto;
2304
+
2615
2305
  $.fn.spinbtnUI = function(opts){
2616
2306
  opts = $.extend({
2617
2307
  monthNames: 'monthNames',
@@ -2626,32 +2316,14 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2626
2316
  }, opts);
2627
2317
  });
2628
2318
  };
2319
+
2320
+ $.fn.spinbtnUI.wsProto = spinBtnProto;
2321
+
2629
2322
  })();
2630
2323
 
2631
2324
  (function(){
2632
2325
  var picker = {};
2633
2326
 
2634
- var loadPicker = function(type, name){
2635
- type = (type == 'color' ? 'color' : 'forms')+'-picker';
2636
- if(!loadPicker[name+'Loaded'+type]){
2637
- loadPicker[name+'Loaded'+type] = true;
2638
- webshims.ready(name, function(){
2639
- webshims.loader.loadList([type]);
2640
- });
2641
- }
2642
- return type;
2643
- };
2644
- options.addZero = addZero;
2645
- webshims.loader.addModule('forms-picker', {
2646
- noAutoCallback: true,
2647
- options: options
2648
- });
2649
- webshims.loader.addModule('color-picker', {
2650
- noAutoCallback: true,
2651
- css: 'jpicker/jpicker.css',
2652
- options: options
2653
- });
2654
-
2655
2327
  webshims.inlinePopover = {
2656
2328
  _create: function(){
2657
2329
  this.element = $('<div class="ws-inline-picker"><div class="ws-po-box" /></div>').data('wspopover', this);
@@ -2695,7 +2367,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2695
2367
  cancel: function(val, popover, data){
2696
2368
  if(!data.options.inlinePicker){
2697
2369
  popover.stopOpen = true;
2698
- data.element.getShadowFocusElement().focus();
2370
+ data.element.getShadowFocusElement().trigger('focus');
2699
2371
  setTimeout(function(){
2700
2372
  popover.stopOpen = false;
2701
2373
  }, 9);
@@ -2784,9 +2456,16 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2784
2456
 
2785
2457
  picker._common = function(data){
2786
2458
  var options = data.options;
2787
- var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element, position: options.widgetPosition});
2459
+ var popover = webshims.objectCreate(options.inlinePicker ? webshims.inlinePopover : webshims.wsPopover, {}, $.extend(options.popover || {}, {prepareFor: options.inlinePicker ? data.buttonWrapper : data.element}));
2788
2460
  var opener = $('<button type="button" class="ws-popover-opener"><span /></button>').appendTo(data.buttonWrapper);
2789
2461
 
2462
+ if(options.widgetPosition){
2463
+ webshims.error('options.widgetPosition was removed use options.popover.position instead');
2464
+ }
2465
+
2466
+ if(options.openOnFocus && popover.options && (popover.options.appendTo == 'auto' || popover.options.appendTo == 'element')){
2467
+ webshims.error('openOnFocus and popover.appendTo "auto/element" can prduce a11y problems try to change appendTo to body or similiar or use openOnMouseFocus instead');
2468
+ }
2790
2469
 
2791
2470
  var showPickerContent = function(){
2792
2471
  (picker[data.type].showPickerContent || picker.showPickerContent)(data, popover);
@@ -2938,7 +2617,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2938
2617
  if(options.inlinePicker){
2939
2618
  show();
2940
2619
  }
2941
- loadPicker(data.type, 'WINDOWLOAD');
2942
2620
  };
2943
2621
 
2944
2622
  picker.month = picker._common;
@@ -2954,7 +2632,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2954
2632
  .find('.ws-color-indicator')
2955
2633
  ;
2956
2634
  var showColor = function(){
2957
- colorIndicator.css({backgroundColor: $.prop(this, 'value') || '#000'})
2635
+ colorIndicator.css({backgroundColor: $.prop(this, 'value') || '#000000'});
2958
2636
  };
2959
2637
  var showOpacity = (function(){
2960
2638
  var timer;
@@ -3111,11 +2789,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3111
2789
  data = {};
3112
2790
  optsName = type;
3113
2791
 
3114
- //todo: do we need deep extend?
3115
-
3116
2792
  labels = $(this).jProp('labels');
3117
-
3118
- opts = $.extend({}, options.widgets, options[type], $($.prop(this, 'form')).data(type) || {}, $(this).data(type) || {}, {
2793
+ opts = $.extend(webshims.getOptions(this, type, [options.widgets, options[type], $($.prop(this, 'form')).data(type)]), {
3119
2794
  orig: this,
3120
2795
  type: type,
3121
2796
  labels: labels,
@@ -3137,7 +2812,6 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3137
2812
  containerElements: []
3138
2813
  });
3139
2814
 
3140
-
3141
2815
  for(i = 0; i < copyProps.length; i++){
3142
2816
  opts[copyProps[i]] = $.prop(this, copyProps[i]);
3143
2817
  }
@@ -3291,8 +2965,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3291
2965
  opts.splitInput = false;
3292
2966
  }
3293
2967
  var markup = opts.splitInput ?
3294
- '<span class="ws-'+name+' ws-input" role="group"></span>' :
3295
- '<input class="ws-'+name+'" type="text" />';
2968
+ '<span class="ws-'+name+' ws-input ws-inputreplace" role="group"></span>' :
2969
+ '<input class="ws-'+name+' ws-inputreplace" type="text" />';
3296
2970
  var data = $(markup).insertAfter(opts.orig);
3297
2971
  if(steps[name]){
3298
2972
  data = data.spinbtnUI(opts).data('wsWidget'+name);
@@ -3309,13 +2983,20 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3309
2983
  }
3310
2984
  });
3311
2985
 
2986
+ var init = function(){
2987
+ webshims.addReady(function(context, contextElem){
2988
+ $('input', context)
2989
+ .add(contextElem.filter('input'))
2990
+ .each(implementType)
2991
+ ;
2992
+ });
2993
+ };
2994
+ if(formcfg._isLoading){
2995
+ $(formcfg).one('change', init);
2996
+ } else {
2997
+ init();
2998
+ }
3312
2999
 
3313
- webshims.addReady(function(context, contextElem){
3314
- $('input', context)
3315
- .add(contextElem.filter('input'))
3316
- .each(implementType)
3317
- ;
3318
- });
3319
3000
  })();
3320
3001
  });
3321
3002
 
@@ -3604,7 +3285,9 @@ webshims.register('form-datalist', function($, webshims, window, document, undef
3604
3285
  noAutoCallback: true,
3605
3286
  options: $.extend(options, {shadowListProto: shadowListProto})
3606
3287
  });
3607
-
3288
+ if(!options.list){
3289
+ options.list = {};
3290
+ }
3608
3291
  //init datalist update
3609
3292
  initializeDatalist();
3610
3293
  })();