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
@@ -1,3 +1,264 @@
1
+ (function($){
2
+
3
+ (function () {
4
+ if($.event.special.mousewheel){return;}
5
+ var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
6
+ toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
7
+ ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
8
+ slice = Array.prototype.slice,
9
+ nullLowestDeltaTimeout, lowestDelta;
10
+
11
+ if ( $.event.fixHooks ) {
12
+ for ( var i = toFix.length; i; ) {
13
+ $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
14
+ }
15
+ }
16
+
17
+ $.event.special.mousewheel = {
18
+ version: '3.1.6',
19
+
20
+ setup: function() {
21
+ if ( this.addEventListener ) {
22
+ for ( var i = toBind.length; i; ) {
23
+ this.addEventListener( toBind[--i], handler, false );
24
+ }
25
+ } else {
26
+ this.onmousewheel = handler;
27
+ }
28
+ },
29
+
30
+ teardown: function() {
31
+ if ( this.removeEventListener ) {
32
+ for ( var i = toBind.length; i; ) {
33
+ this.removeEventListener( toBind[--i], handler, false );
34
+ }
35
+ } else {
36
+ this.onmousewheel = null;
37
+ }
38
+ }
39
+ };
40
+
41
+ $.fn.extend({
42
+ mousewheel: function(fn) {
43
+ return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
44
+ },
45
+
46
+ unmousewheel: function(fn) {
47
+ return this.unbind('mousewheel', fn);
48
+ }
49
+ });
50
+
51
+
52
+ function handler(event) {
53
+ var orgEvent = event || window.event,
54
+ args = slice.call(arguments, 1),
55
+ delta = 0,
56
+ deltaX = 0,
57
+ deltaY = 0,
58
+ absDelta = 0;
59
+ event = $.event.fix(orgEvent);
60
+ event.type = 'mousewheel';
61
+
62
+ // Old school scrollwheel delta
63
+ if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }
64
+ if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }
65
+ if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }
66
+ if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
67
+
68
+ // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
69
+ if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
70
+ deltaX = deltaY * -1;
71
+ deltaY = 0;
72
+ }
73
+
74
+ // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
75
+ delta = deltaY === 0 ? deltaX : deltaY;
76
+
77
+ // New school wheel delta (wheel event)
78
+ if ( 'deltaY' in orgEvent ) {
79
+ deltaY = orgEvent.deltaY * -1;
80
+ delta = deltaY;
81
+ }
82
+ if ( 'deltaX' in orgEvent ) {
83
+ deltaX = orgEvent.deltaX;
84
+ if ( deltaY === 0 ) { delta = deltaX * -1; }
85
+ }
86
+
87
+ // No change actually happened, no reason to go any further
88
+ if ( deltaY === 0 && deltaX === 0 ) { return; }
89
+
90
+ // Store lowest absolute delta to normalize the delta values
91
+ absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
92
+ if ( !lowestDelta || absDelta < lowestDelta ) {
93
+ lowestDelta = absDelta;
94
+ }
95
+
96
+ // Get a whole, normalized value for the deltas
97
+ delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);
98
+ deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
99
+ deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
100
+
101
+ // Add information to the event object
102
+ event.deltaX = deltaX;
103
+ event.deltaY = deltaY;
104
+ event.deltaFactor = lowestDelta;
105
+
106
+ // Add event and delta to the front of the arguments
107
+ args.unshift(event, delta, deltaX, deltaY);
108
+
109
+ // Clearout lowestDelta after sometime to better
110
+ // handle multiple device types that give different
111
+ // a different lowestDelta
112
+ // Ex: trackpad = 3 and mouse wheel = 120
113
+ if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
114
+ nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
115
+
116
+ return ($.event.dispatch || $.event.handle).apply(this, args);
117
+ }
118
+
119
+ function nullLowestDelta() {
120
+ lowestDelta = null;
121
+ }
122
+
123
+ })();
124
+
125
+
126
+
127
+ (function(){
128
+ if($.event.special.mwheelIntent){return;}
129
+ var mwheelI = {
130
+ pos: [-260, -260]
131
+ },
132
+ minDif = 3,
133
+ doc = document,
134
+ root = doc.documentElement,
135
+ body = doc.body,
136
+ longDelay, shortDelay
137
+ ;
138
+ if(!body){
139
+ $(function(){
140
+ body = doc.body;
141
+ });
142
+ }
143
+ function unsetPos(){
144
+ if(this === mwheelI.elem){
145
+ mwheelI.pos = [-260, -260];
146
+ mwheelI.elem = false;
147
+ minDif = 3;
148
+ }
149
+ }
150
+
151
+ $.event.special.mwheelIntent = {
152
+ setup: function(){
153
+ var jElm = $(this).bind('mousewheel', $.event.special.mwheelIntent.handler);
154
+ if( this !== doc && this !== root && this !== body ){
155
+ jElm.bind('mouseleave', unsetPos);
156
+ }
157
+ jElm = null;
158
+ return true;
159
+ },
160
+ teardown: function(){
161
+ $(this)
162
+ .unbind('mousewheel', $.event.special.mwheelIntent.handler)
163
+ .unbind('mouseleave', unsetPos)
164
+ ;
165
+ return true;
166
+ },
167
+ handler: function(e, d){
168
+ var pos = [e.clientX, e.clientY];
169
+ if( this === mwheelI.elem || Math.abs(mwheelI.pos[0] - pos[0]) > minDif || Math.abs(mwheelI.pos[1] - pos[1]) > minDif ){
170
+ mwheelI.elem = this;
171
+ mwheelI.pos = pos;
172
+ minDif = 250;
173
+
174
+ clearTimeout(shortDelay);
175
+ shortDelay = setTimeout(function(){
176
+ minDif = 10;
177
+ }, 200);
178
+ clearTimeout(longDelay);
179
+ longDelay = setTimeout(function(){
180
+ minDif = 3;
181
+ }, 1500);
182
+ e = $.extend({}, e, {type: 'mwheelIntent'});
183
+ return ($.event.dispatch || $.event.handle).apply(this, arguments);
184
+ }
185
+ }
186
+ };
187
+ $.fn.extend({
188
+ mwheelIntent: function(fn) {
189
+ return fn ? this.bind("mwheelIntent", fn) : this.trigger("mwheelIntent");
190
+ },
191
+
192
+ unmwheelIntent: function(fn) {
193
+ return this.unbind("mwheelIntent", fn);
194
+ }
195
+ });
196
+
197
+ $(function(){
198
+ body = doc.body;
199
+ //assume that document is always scrollable, doesn't hurt if not
200
+ $(doc).bind('mwheelIntent.mwheelIntentDefault', $.noop);
201
+ });
202
+ })();
203
+
204
+
205
+ (function(){
206
+ if($.event.special.mousepress){return;}
207
+ var removeTimer = function(elem, full){
208
+ var timer = elem.data('mousepresstimer');
209
+ if(timer){
210
+ clearTimeout(timer);
211
+ }
212
+ if(full){
213
+ elem.off('mouseup.mousepressext mouseleave.mousepressext');
214
+ }
215
+ elem = null;
216
+ };
217
+ $.event.special.mousepress = {
218
+ setup: function(){
219
+ var timer;
220
+ $(this).on('mousedown.mousepressext', function(e){
221
+ var elem = $(this);
222
+
223
+ var startIntervall = function(delay){
224
+ var steps = 0;
225
+ removeTimer(elem);
226
+ elem.data('mousepresstimer', setInterval(function(){
227
+ $.event.special.mousepress.handler(elem[0], e);
228
+ steps++;
229
+ if(steps > 3 && delay > 45){
230
+ startIntervall(delay - 40);
231
+ }
232
+ }, delay));
233
+ };
234
+ var target = $(e.target).trigger('mousepressstart', [e]);
235
+
236
+ removeTimer(elem);
237
+ elem.data('mousepresstimer', setTimeout(function(){
238
+ startIntervall(180);
239
+ }, 200));
240
+
241
+ elem.on('mouseup.mousepressext mouseleave.mousepressext', function(e){
242
+ removeTimer(elem, true);
243
+ target.trigger('mousepressend', [e]);
244
+ elem = null;
245
+ target = null;
246
+ });
247
+ });
248
+ },
249
+ teardown: function(){
250
+ removeTimer($(this).off('.mousepressext'), true);
251
+ },
252
+ handler: function(elem, e){
253
+ return $.event.dispatch.call(elem, {type: 'mousepress', target: e.target, pageX: e.pageX, pageY: e.pageY});
254
+ }
255
+ };
256
+
257
+ })();
258
+
259
+ })(webshims.$);
260
+
261
+
1
262
  webshims.register('forms-picker', function($, webshims, window, document, undefined, options){
2
263
  "use strict";
3
264
  var picker = webshims.picker;
@@ -58,17 +319,352 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
58
319
  this.setFocus(this.activeButton, this.opts.noFocus);
59
320
  };
60
321
  var formcfg = webshims.formcfg;
61
- var curCfg = formcfg[$.webshims.activeLang()] || formcfg[''];
62
- $.webshims.activeLang({
63
- register: 'form-core',
64
- callback: function(){
65
- $.each(arguments, function(i, val){
66
- if(formcfg[val]){
67
- curCfg = formcfg[val];
68
- return false;
322
+ var curCfg = formcfg.__active || formcfg[''];
323
+ var stopPropagation = function(e){
324
+ e.stopImmediatePropagation();
325
+ };
326
+ var steps = options.steps;
327
+
328
+ var mousePress = function(e){
329
+ $(this)[e.type == 'mousepressstart' ? 'addClass' : 'removeClass']('mousepress-ui');
330
+ };
331
+
332
+
333
+ var widgetProtos = {
334
+ _addBindings: function(){
335
+ var isFocused;
336
+
337
+ var that = this;
338
+ var o = this.options;
339
+
340
+ var eventTimer = (function(){
341
+ var events = {};
342
+ return {
343
+ init: function(name, curVal, fn){
344
+ if (!events[name]) {
345
+ events[name] = {
346
+ fn: fn
347
+ };
348
+ $(that.orig).on(name, function(){
349
+ events[name].val = $.prop(that.orig, 'value');
350
+ });
351
+ }
352
+ events[name].val = curVal;
353
+ },
354
+ call: function(name, val){
355
+ if (events[name] && events[name].val != val) {
356
+ clearTimeout(events[name].timer);
357
+ events[name].val = val;
358
+ events[name].timer = setTimeout(function(){
359
+ events[name].fn(val, that);
360
+ }, 9);
361
+ }
362
+ }
363
+ };
364
+ })();
365
+ var initChangeEvents = function(){
366
+ eventTimer.init('input', $.prop(that.orig, 'value'), that.options.input);
367
+ eventTimer.init('change', $.prop(that.orig, 'value'), that.options.change);
368
+ };
369
+
370
+ var step = {};
371
+
372
+ var preventBlur = function(e){
373
+ if (preventBlur.prevent) {
374
+ e.preventDefault();
375
+ $(isFocused || that.element.getShadowFocusElement()).trigger('focus');
376
+ stopPropagation(e);
377
+ return true;
378
+ }
379
+ };
380
+ var callSplitChange = (function(){
381
+ var timer;
382
+
383
+ var call = function(e){
384
+ var val;
385
+ clearTimeout(timer);
386
+ val = that.parseValue();
387
+ if (that.type == 'color') {
388
+ that.inputElements.val(val);
389
+ }
390
+ $.prop(that.orig, 'value', val);
391
+ eventTimer.call('input', val);
392
+ if (!e || e.type != 'wsupdatevalue') {
393
+ eventTimer.call('change', val);
394
+ }
395
+ };
396
+
397
+ var onFocus = function(){
398
+ clearTimeout(timer);
399
+ };
400
+ var onBlur = function(e){
401
+ clearTimeout(timer);
402
+ timer = setTimeout(call, 0);
403
+
404
+ if (e.type == 'ws__change') {
405
+ stopPropagation(e);
406
+ if (!o.splitInput) {
407
+ call();
408
+ }
409
+ }
410
+ };
411
+
412
+ that.element.on('wsupdatevalue', call);
413
+
414
+ that.inputElements.add(that.buttonWrapper).add(that.element).on({
415
+ 'ws__focusin': onFocus,
416
+ 'ws__blur ws__focusout ws__change': onBlur
417
+ });
418
+ setTimeout(function(){
419
+ if (that.popover) {
420
+ that.popover.element.on('wspopoverhide', onBlur);
421
+ that.popover.element.children().on({
422
+ 'focusin': onFocus,
423
+ 'focusout': onBlur
424
+ });
425
+ }
426
+ }, 0);
427
+ })();
428
+
429
+ var spinEvents = {};
430
+ var spinElement = o.splitInput ? this.inputElements.filter('.ws-spin') : this.inputElements.eq(0);
431
+ var elementEvts = {
432
+ ws__blur: function(e){
433
+ if (!preventBlur(e) && !o.disabled && !o.readonly) {
434
+ if (!preventBlur.prevent) {
435
+ isFocused = false;
436
+ }
437
+ }
438
+ stopPropagation(e);
439
+ },
440
+ ws__focus: function(e){
441
+ if (!isFocused) {
442
+ initChangeEvents();
443
+ isFocused = this;
444
+ }
445
+ },
446
+ keypress: function(e){
447
+ if (e.isDefaultPrevented()) {
448
+ return;
449
+ }
450
+ var chr;
451
+ var stepped = true;
452
+ var code = e.keyCode;
453
+ if (!e.ctrlKey && !e.metaKey && curCfg[that.type + 'Signs']) {
454
+ chr = String.fromCharCode(e.charCode == null ? code : e.charCode);
455
+ stepped = !(chr < " " || (curCfg[that.type + 'Signs'] + '0123456789').indexOf(chr) > -1);
456
+ }
457
+ else {
458
+ stepped = false;
459
+ }
460
+ if (stepped) {
461
+ e.preventDefault();
462
+ }
463
+ },
464
+ ws__input: (this.type == 'color' && this.isValid) ? $.noop : (function(){
465
+ var timer;
466
+ var check = function(){
467
+ var val = that.parseValue(true);
468
+ if (val && that.isValid(val)) {
469
+ that.setInput(val);
470
+ }
471
+
472
+ };
473
+ return function(){
474
+ clearTimeout(timer);
475
+ timer = setTimeout(check, 200);
476
+ };
477
+ })(),
478
+ 'ws__input keydown keypress': (function(){
479
+ var timer;
480
+ var isStopped = false;
481
+ var releaseTab = function(){
482
+ if (isStopped === true) {
483
+ isStopped = 'semi';
484
+ timer = setTimeout(releaseTab, 250);
485
+ }
486
+ else {
487
+ isStopped = false;
488
+ }
489
+ };
490
+ var stopTab = function(){
491
+ isStopped = true;
492
+ clearTimeout(timer);
493
+ timer = setTimeout(releaseTab, 300);
494
+ };
495
+ var select = function(){
496
+ var elem = this;
497
+ setTimeout(function(){
498
+ elem.focus();
499
+ elem.select();
500
+ }, 4);
501
+
502
+ stopTab();
503
+ };
504
+
505
+ return function(e){
506
+ if (o.splitInput && o.jumpInputs) {
507
+ if (e.type == 'ws__input') {
508
+ if ($.prop(this, 'value').length === $.prop(this, 'maxLength')) {
509
+ try {
510
+ $(this).next().next('input, select').each(select);
511
+ }
512
+ catch (er) {
513
+ }
514
+ }
515
+ }
516
+ else
517
+ if (!e.shiftKey && !e.crtlKey && e.keyCode == 9 && (isStopped === true || (isStopped && !$.prop(this, 'value')))) {
518
+ e.preventDefault();
519
+ }
520
+ }
521
+ };
522
+ })()
523
+ };
524
+ var mouseDownInit = function(){
525
+ if (!o.disabled && !isFocused) {
526
+ that.element.getShadowFocusElement().trigger('focus');
527
+ }
528
+ preventBlur.set();
529
+
530
+ return false;
531
+ };
532
+
533
+ preventBlur.set = (function(){
534
+ var timer;
535
+ var reset = function(){
536
+ preventBlur.prevent = false;
537
+ };
538
+ return function(){
539
+ clearTimeout(timer);
540
+ preventBlur.prevent = true;
541
+ setTimeout(reset, 9);
542
+ };
543
+ })();
544
+
545
+
546
+ this.buttonWrapper.on('mousedown', mouseDownInit);
547
+
548
+ this.setInput = function(value){
549
+ that.value(value);
550
+ eventTimer.call('input', value);
551
+ };
552
+ this.setChange = function(value){
553
+ that.setInput(value);
554
+ eventTimer.call('change', value);
555
+ };
556
+
557
+
558
+
559
+ this.inputElements.on(elementEvts);
560
+
561
+ if (steps[this.type]) {
562
+ ['stepUp', 'stepDown'].forEach(function(name){
563
+ step[name] = function(factor){
564
+ if (!o.disabled && !o.readonly) {
565
+ if (!isFocused) {
566
+ mouseDownInit();
567
+ }
568
+ var ret = false;
569
+ if (!factor) {
570
+ factor = 1;
571
+ }
572
+ try {
573
+ that.elemHelper[name](factor);
574
+
575
+ ret = that.elemHelper.prop('value');
576
+
577
+ }
578
+ catch (er) {
579
+ if (!o.value && that.maxAsNumber >= that.minAsNumber) {
580
+ ret = o.defValue;
581
+ }
582
+ }
583
+ if (ret !== false && o.value != ret) {
584
+ that.value(ret);
585
+ eventTimer.call('input', ret);
586
+ }
587
+ return ret;
588
+ }
589
+ };
590
+ });
591
+ if (!o.noSpinbtn) {
592
+ spinEvents.mwheelIntent = function(e, delta){
593
+ if (delta && isFocused && !o.disabled) {
594
+ step[delta > 0 ? 'stepUp' : 'stepDown']();
595
+ e.preventDefault();
596
+ }
597
+ };
598
+ spinEvents.keydown = function(e){
599
+ if (o.list || e.isDefaultPrevented() || (e.altKey && e.keyCode == 40) || $.attr(this, 'list')) {
600
+ return;
601
+ }
602
+ var stepped = true;
603
+ var code = e.keyCode;
604
+ if (code == 38) {
605
+ step.stepUp();
606
+ }
607
+ else
608
+ if (code == 40) {
609
+ step.stepDown();
610
+ }
611
+ else {
612
+ stepped = false;
613
+ }
614
+ if (stepped) {
615
+ e.preventDefault();
616
+ }
617
+ };
618
+
619
+ spinElement.attr({
620
+ 'autocomplete': 'off',
621
+ role: 'spinbutton'
622
+ }).on(spinEvents);
69
623
  }
624
+ $(this.buttonWrapper).on('mousepressstart mousepressend', '.step-up, .step-down', mousePress).on('mousedown mousepress', '.step-up', function(e){
625
+ step.stepUp();
626
+ }).on('mousedown mousepress', '.step-down', function(e){
627
+ step.stepDown();
628
+ });
629
+ initChangeEvents();
630
+ }
631
+ },
632
+ initDataList: function(){
633
+ var listTimer;
634
+ var that = this;
635
+ var updateList = function(){
636
+ $(that.orig)
637
+ .jProp('list')
638
+ .off('updateDatalist', updateList)
639
+ .on('updateDatalist', updateList)
640
+ ;
641
+ clearTimeout(listTimer);
642
+ listTimer = setTimeout(function(){
643
+ if(that.list){
644
+ that.list();
645
+ }
646
+ }, 9);
647
+
648
+ };
649
+
650
+ $(this.orig).onTrigger('listdatalistchange', updateList);
651
+ },
652
+ getOptions: function(){
653
+ var options = {};
654
+ var datalist = $(this.orig).jProp('list');
655
+ datalist.find('option').each(function(){
656
+ options[$.prop(this, 'value')] = $.prop(this, 'label');
70
657
  });
658
+ return [options, datalist.data('label')];
71
659
  }
660
+ };
661
+
662
+ $.extend($.fn.wsBaseWidget.wsProto, widgetProtos);
663
+ $.extend($.fn.spinbtnUI.wsProto, widgetProtos);
664
+
665
+
666
+ $(formcfg).on('change', function(e, data){
667
+ curCfg = formcfg.__active;
72
668
  });
73
669
 
74
670
 
@@ -143,7 +739,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
143
739
  this.element = $('tbody', element);
144
740
  this.popover = popover;
145
741
  this.opts = opts || {};
146
- this.buttons = $('button:not(:disabled,.othermonth)', this.element);
742
+ this.buttons = $('button:not(:disabled):not(.othermonth)', this.element);
147
743
 
148
744
  this.ons(this);
149
745