webshims-rails 1.11.1 → 1.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +41 -20
  4. data/vendor/assets/javascripts/webshims/shims/combos/10.js +212 -42
  5. data/vendor/assets/javascripts/webshims/shims/combos/11.js +196 -37
  6. data/vendor/assets/javascripts/webshims/shims/combos/12.js +82 -36
  7. data/vendor/assets/javascripts/webshims/shims/combos/13.js +82 -36
  8. data/vendor/assets/javascripts/webshims/shims/combos/14.js +17 -6
  9. data/vendor/assets/javascripts/webshims/shims/combos/15.js +234 -1247
  10. data/vendor/assets/javascripts/webshims/shims/combos/16.js +234 -1247
  11. data/vendor/assets/javascripts/webshims/shims/combos/17.js +202 -45
  12. data/vendor/assets/javascripts/webshims/shims/combos/18.js +202 -45
  13. data/vendor/assets/javascripts/webshims/shims/combos/19.js +16 -5
  14. data/vendor/assets/javascripts/webshims/shims/combos/2.js +51 -11
  15. data/vendor/assets/javascripts/webshims/shims/combos/20.js +16 -5
  16. data/vendor/assets/javascripts/webshims/shims/combos/21.js +82 -36
  17. data/vendor/assets/javascripts/webshims/shims/combos/22.js +82 -36
  18. data/vendor/assets/javascripts/webshims/shims/combos/24.js +1689 -997
  19. data/vendor/assets/javascripts/webshims/shims/combos/25.js +16 -5
  20. data/vendor/assets/javascripts/webshims/shims/combos/26.js +16 -5
  21. data/vendor/assets/javascripts/webshims/shims/combos/3.js +16 -5
  22. data/vendor/assets/javascripts/webshims/shims/combos/30.js +51 -11
  23. data/vendor/assets/javascripts/webshims/shims/combos/31.js +51 -11
  24. data/vendor/assets/javascripts/webshims/shims/combos/4.js +16 -5
  25. data/vendor/assets/javascripts/webshims/shims/combos/5.js +202 -45
  26. data/vendor/assets/javascripts/webshims/shims/combos/6.js +237 -51
  27. data/vendor/assets/javascripts/webshims/shims/combos/7.js +51 -11
  28. data/vendor/assets/javascripts/webshims/shims/combos/8.js +16 -5
  29. data/vendor/assets/javascripts/webshims/shims/combos/9.js +247 -48
  30. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +17 -5
  31. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +21 -3
  32. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +35 -6
  33. data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +6 -8
  34. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +134 -24
  35. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +152 -1205
  36. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +1076 -0
  37. data/vendor/assets/javascripts/webshims/shims/form-validation.js +47 -20
  38. data/vendor/assets/javascripts/webshims/shims/form-validators.js +2 -2
  39. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
  40. data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-de.txt → formcfg-de.js} +3 -0
  41. data/vendor/assets/javascripts/webshims/shims/i18n/{formcfg-en.txt → formcfg-en.js} +5 -1
  42. data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
  43. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +1 -1
  44. data/vendor/assets/javascripts/webshims/shims/range-ui.js +62 -13
  45. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +610 -0
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +10 -0
  47. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +743 -0
  48. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +1 -755
  49. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +0 -606
  50. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  51. data/vendor/assets/javascripts/webshims/shims/track-ui.js +36 -23
  52. data/vendor/assets/javascripts/webshims/shims/track.js +82 -36
  53. metadata +8 -6
  54. data/vendor/assets/javascripts/webshims/shims/combos/28.js +0 -2196
  55. data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -1167
@@ -169,8 +169,8 @@ webshims.register('form-validation', function($, webshims, window, document, und
169
169
  .on(options.validityUIEvents || 'focusout change refreshvalidityui invalid', switchValidityClass)
170
170
  .on('reset resetvalui', function(e){
171
171
  var elems = $(e.target);
172
- if(e.type == 'reset'){
173
- elems = elems.filter('form').jProp('elements');
172
+ if(elems.is('form, fieldset')){
173
+ elems = elems.jProp('elements');
174
174
  }
175
175
  elems
176
176
  .filter('.user-error, .user-success')
@@ -283,18 +283,41 @@ webshims.register('form-validation', function($, webshims, window, document, und
283
283
  this.element.off('pospopover').on('pospopover', delayedRepos);
284
284
  $(window).on('resize'+this.eventns + ' pospopover'+this.eventns, delayedRepos);
285
285
  },
286
+ _getAutoAppendElement: (function(){
287
+ var invalidParent = /^(?:span|i|label|b|p|tr|thead|tbody|table|strong|em|ul|ol|dl|html)$/i;
288
+ return function(element){
289
+
290
+ var appendElement;
291
+ var parent = element[0];
292
+ var body = document.body;
293
+ while((parent = parent[appendElement ? 'offsetParent' : 'parentNode']) && parent.nodeType == 1 && parent != body){
294
+ if(!appendElement && !invalidParent.test(parent.nodeName)){
295
+ appendElement = parent;
296
+ }
297
+ if(appendElement && $.style(parent, 'overflow') == 'hidden' && $.style(parent, 'position') != 'static'){
298
+ appendElement = false;
299
+ }
300
+ }
301
+ return $(appendElement || body);
302
+ };
303
+ })(),
286
304
  prepareFor: function(element, visual){
287
- var onBlur;
305
+ var onBlur, parentElem;
288
306
  var that = this;
289
307
  var css = {};
290
- var opts = $.extend(true, {}, this.options, $(element.prop('form') || []).data('wspopover') || {}, element.data('wspopover'));
308
+ var opts = $.extend(true, {}, this.options, element.jProp('form').data('wspopover') || {}, element.data('wspopover'));
291
309
  this.lastOpts = opts;
292
310
  this.lastElement = $(element).getShadowFocusElement();
293
311
  if(!this.prepared || !this.options.prepareFor){
294
312
  if(opts.appendTo == 'element'){
295
- this.element.insertAfter(element);
313
+ parentElem = element.parent();
314
+ } else if(opts.appendTo == 'auto'){
315
+ parentElem = this._getAutoAppendElement(element);
296
316
  } else {
297
- this.element.appendTo(opts.appendTo);
317
+ parentElem = $(opts.appendTo);
318
+ }
319
+ if(!this.prepared || parentElem[0] != this.element[0].parentNode){
320
+ this.element.appendTo(parentElem);
298
321
  }
299
322
  }
300
323
 
@@ -324,9 +347,6 @@ webshims.register('form-validation', function($, webshims, window, document, und
324
347
 
325
348
  }
326
349
 
327
- if(!this.prepared && $.fn.bgIframe){
328
- this.element.bgIframe();
329
- }
330
350
  this.prepared = true;
331
351
  },
332
352
  clear: function(){
@@ -408,8 +428,8 @@ webshims.register('form-validation', function($, webshims, window, document, und
408
428
  },
409
429
  setFocus: function(element){
410
430
  var focusElem = $(element).getShadowFocusElement();
411
- var scrollTop = webshims.scrollRoot.scrollTop();
412
- var elemTop = focusElem.offset().top - 30;
431
+ var scrollTop = webshims.scrollRoot.scrollTop() + (options.viewportOffset || 0);
432
+ var elemTop = focusElem.offset().top - (options.scrollOffset || 30);
413
433
  var focus = function(){
414
434
  try {
415
435
  focusElem[0].focus();
@@ -419,7 +439,7 @@ webshims.register('form-validation', function($, webshims, window, document, und
419
439
 
420
440
  if(scrollTop > elemTop){
421
441
  webshims.scrollRoot.animate(
422
- {scrollTop: elemTop - 5},
442
+ {scrollTop: elemTop - 5 - (options.viewportOffset || 0)},
423
443
  {
424
444
  queue: false,
425
445
  duration: Math.max( Math.min( 600, (scrollTop - elemTop) * 1.5 ), 80 ),
@@ -559,18 +579,24 @@ webshims.register('form-validation', function($, webshims, window, document, und
559
579
  check();
560
580
  },
561
581
  hideError: function(elem, reset){
582
+ var invalid;
562
583
  var fieldWrapper = this.getFieldWrapper(elem);
563
- var errorBox = fieldWrapper.hasClass(invalidWrapperClass) ? this.get(elem, fieldWrapper) : fieldWrapper.data('errorbox');
584
+ var errorBox = this.get(elem, fieldWrapper);
564
585
 
565
586
  if(errorBox && errorBox.jquery){
566
- fieldWrapper.removeClass(invalidWrapperClass);
567
- errorBox.message = '';
568
587
  $(elem).filter('input').off('.recheckinvalid');
569
- errorBox[fx[options.iVal.fx].hide](function(){
570
- $(this).attr({hidden: 'hidden'});
571
- });
588
+ if(!reset && (invalid = $('input:invalid, select:invalid, textarea:invalid', fieldWrapper)[0])){
589
+ $(invalid).trigger('refreshvalidityui');
590
+ } else {
591
+ fieldWrapper.removeClass(invalidWrapperClass);
592
+ errorBox.message = '';
593
+ errorBox[fx[options.iVal.fx].hide](function(){
594
+ $(this).attr({hidden: 'hidden'});
595
+ });
596
+ }
597
+
572
598
  }
573
- if(!reset){
599
+ if(!reset && !invalid){
574
600
  this.addSuccess(elem, fieldWrapper);
575
601
  }
576
602
  return fieldWrapper;
@@ -598,12 +624,13 @@ webshims.register('form-validation', function($, webshims, window, document, und
598
624
  var fieldWrapper = this.getFieldWrapper(elem);
599
625
  var box = this.get(elem, fieldWrapper);
600
626
  var message = $(elem).getErrorMessage();
627
+
601
628
  if(box.message != message){
602
629
  box.stop(true, true).html('<p>'+ message +'</p>');
603
630
  box.message = message;
604
631
  fieldWrapper.addClass(invalidWrapperClass).removeClass(successWrapperClass);
632
+ this.recheckInvalidInput(elem);
605
633
  if(box.is('[hidden]') || box.css('display') == 'none'){
606
- this.recheckInvalidInput(elem);
607
634
  box
608
635
  .css({display: 'none'})
609
636
  .removeAttr('hidden')
@@ -119,7 +119,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
119
119
  * - <input type="checkbox" id="check" /> <input data-dependent-validation='checkbox' />
120
120
  */
121
121
  (function(){
122
-
122
+ var formCFG = webshims.cfg.forms;
123
123
  var addCustomValidityRule = webshims.addCustomValidityRule;
124
124
  var getId = function(name){
125
125
  return document.getElementById(name);
@@ -297,7 +297,7 @@ webshims.register('form-validators', function($, webshims, window, document, und
297
297
  url: opts.url,
298
298
  dataType: 'json',
299
299
  depData: remoteData,
300
- data: opts.fullForm ?
300
+ data: formCFG.fullRemoteForm || opts.fullForm ?
301
301
  $(elem).jProp('form').serializeArray() :
302
302
  remoteData,
303
303
  success: this.getResponse,
@@ -8,7 +8,7 @@ webshims.register('forms-picker', function($, webshims, window, document, undefi
8
8
  var ret = [date.getFullYear(), moduleOpts.addZero(date.getMonth() + 1), moduleOpts.addZero(date.getDate())];
9
9
  ret.month = ret[0]+'-'+ret[1];
10
10
  ret.date = ret[0]+'-'+ret[1]+'-'+ret[2];
11
- ret.time = date.getHours() +':'+ date.getMinutes();
11
+ ret.time = moduleOpts.addZero(date.getHours()) +':'+ moduleOpts.addZero(date.getMinutes());
12
12
 
13
13
  ret['datetime-local'] = ret.date +'T'+ ret.time;
14
14
  return ret;
@@ -54,6 +54,9 @@ webshims.formcfg.de = {
54
54
  month: {
55
55
  currentText: 'Aktueller Monat'
56
56
  },
57
+ time: {
58
+ currentText: 'Jetzt'
59
+ },
57
60
  "week": {
58
61
  "currentText": "Aktuelle Woche"
59
62
  },
@@ -57,6 +57,9 @@ webshims.formcfg.en = {
57
57
  "week": {
58
58
  "currentText": "This week"
59
59
  },
60
+ "time": {
61
+ "currentText": "Now"
62
+ },
60
63
  "date": {
61
64
  "closeText": "Done",
62
65
  "clear": "Clear",
@@ -107,4 +110,5 @@ webshims.formcfg.en = {
107
110
  "isRTL": false,
108
111
  "showMonthAfterYear": false,
109
112
  "yearSuffix": ""
110
- };
113
+ }
114
+ };
@@ -11,7 +11,7 @@ if(!this.JSON){this.JSON={};}(function(){function f(n){return n<10?'0'+n:n;}if(t
11
11
  //using window.name for sessionStorage and cookies for localStorage
12
12
 
13
13
  (function () {
14
- var $ = jQuery;
14
+ var $ = webshims.$ || jQuery;
15
15
  if ('localStorage' in window && 'sessionStorage' in window) {
16
16
  $.webshims.isReady('json-storage', true);
17
17
  return;
@@ -1,7 +1,7 @@
1
1
  webshims.register('mediaelement-yt', function($, webshims, window, document, undefined, options){
2
2
  "use strict";
3
3
  var mediaelement = webshims.mediaelement;
4
- var ytAPI = jQuery.Deferred();
4
+ var ytAPI = $.Deferred();
5
5
  window.onYouTubePlayerAPIReady = function() {
6
6
  ytAPI.resolve();
7
7
  };
@@ -16,9 +16,9 @@
16
16
  var i;
17
17
 
18
18
 
19
- this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min" /><span class="ws-range-rail"><span class="ws-range-thumb" /></span>');
20
- this.trail = $('.ws-range-rail', this.element);
21
- this.range = $('.ws-range-min', this.element);
19
+ this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb" /></span>');
20
+ this.trail = $('.ws-range-track', this.element);
21
+ this.range = $('.ws-range-progress ', this.element);
22
22
  this.thumb = $('.ws-range-thumb', this.trail);
23
23
 
24
24
  this.updateMetrics();
@@ -28,6 +28,7 @@
28
28
  for(i = 0; i < createOpts.length; i++){
29
29
  this[createOpts[i]](this.options[createOpts[i]]);
30
30
  }
31
+
31
32
  this.value = this._value;
32
33
  this.value(this.options.value);
33
34
  this.initDataList();
@@ -266,7 +267,7 @@
266
267
  }
267
268
  },
268
269
  addBindings: function(){
269
- var leftOffset, widgetUnits, hasFocus;
270
+ var leftOffset, widgetUnits, hasFocus, isActive;
270
271
  var that = this;
271
272
  var o = this.options;
272
273
 
@@ -296,8 +297,28 @@
296
297
  }
297
298
  };
298
299
  })();
299
-
300
+ var normalizeTouch = (function(){
301
+ var types = {
302
+ touchstart: 1,
303
+ touchend: 1,
304
+ touchmove: 1
305
+ };
306
+ var normalize = ['pageX', 'pageY'];
307
+ return function(e){
308
+ if(types[e.type] && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length){
309
+ for(var i = 0; i < normalize.length; i++){
310
+ e[normalize[i]] = e.originalEvent.touches[0][normalize[i]];
311
+ }
312
+
313
+ }
314
+ return e;
315
+ };
316
+ })();
300
317
  var setValueFromPos = function(e, animate){
318
+ if(e.type == 'touchmove'){
319
+ e.preventDefault();
320
+ normalizeTouch(e);
321
+ }
301
322
 
302
323
  var val = that.getStepedValueFromPos((e[that.dirs.mouse] - leftOffset) * widgetUnits);
303
324
  if(val != o.value){
@@ -314,18 +335,25 @@
314
335
  eventTimer.call('change', o.value);
315
336
  }
316
337
  that.addRemoveClass('ws-active');
317
- $(document).off('mousemove', setValueFromPos).off('mouseup', remove);
338
+ $(document).off('mousemove touchmove', setValueFromPos).off('mouseup touchend', remove);
318
339
  $(window).off('blur', removeWin);
340
+ isActive = false;
319
341
  };
320
342
  var removeWin = function(e){
321
343
  if(e.target == window){remove();}
322
344
  };
323
345
  var add = function(e){
324
346
  var outerWidth;
347
+
348
+ if(isActive || (e.type == 'touchstart' && (!e.originalEvent || !e.originalEvent.touches || e.originalEvent.touches.length != 1))){
349
+ return;
350
+ }
325
351
  e.preventDefault();
326
- $(document).off('mousemove', setValueFromPos).off('mouseup', remove);
352
+
353
+ $(document).off('mousemove touchmove', setValueFromPos).off('mouseup touchend', remove);
327
354
  $(window).off('blur', removeWin);
328
355
  if(!o.readonly && !o.disabled){
356
+ normalizeTouch(e);
329
357
  that.element.focus();
330
358
  that.addRemoveClass('ws-active', true);
331
359
  leftOffset = that.element.focus().offset();
@@ -335,20 +363,27 @@
335
363
  leftOffset = leftOffset[that.dirs.pos];
336
364
  widgetUnits = 100 / widgetUnits;
337
365
  setValueFromPos(e, o.animate);
366
+ isActive = true;
338
367
  $(document)
339
- .on({
340
- mouseup: remove,
341
- mousemove: setValueFromPos
342
- })
368
+ .on(e.type == 'touchstart' ?
369
+ {
370
+ touchend: remove,
371
+ touchmove: setValueFromPos
372
+ } :
373
+ {
374
+ mouseup: remove,
375
+ mousemove: setValueFromPos
376
+ }
377
+ )
343
378
  ;
344
379
  $(window).on('blur', removeWin);
345
380
  e.stopPropagation();
346
381
  }
347
382
  };
348
383
  var elementEvts = {
349
- mousedown: add,
384
+ 'touchstart mousedown': add,
350
385
  focus: function(e){
351
- if(!o.disabled){
386
+ if(!o.disabled && !hasFocus){
352
387
  eventTimer.init('input', o.value);
353
388
  eventTimer.init('change', o.value);
354
389
  that.addRemoveClass('ws-focus', true);
@@ -411,6 +446,20 @@
411
446
  this.thumb.on({
412
447
  mousedown: add
413
448
  });
449
+
450
+ if(this.orig){
451
+ $(this.orig).jProp('form').on('reset', function(){
452
+ var val = $.prop(that.orig, 'value');
453
+ that.value(val);
454
+ setTimeout(function(){
455
+ var val2 = $.prop(that.orig, 'value');
456
+ if(val != val2){
457
+ that.value(val2);
458
+ }
459
+ }, 4);
460
+ });
461
+ }
462
+
414
463
  if (window.webshims) {
415
464
  webshims.ready('WINDOWLOAD', function(){
416
465
  webshims.ready('dom-support', function(){
@@ -0,0 +1,610 @@
1
+ .input-picker .ws-picker-body, .input-picker .ws-button-row, .input-picker .picker-grid, .input-picker .picker-list, .input-picker .ws-options button {
2
+ zoom: 1;
3
+ }
4
+ .input-picker .ws-picker-body:before, .input-picker .ws-button-row:before, .input-picker .picker-grid:before, .input-picker .picker-list:before, .input-picker .ws-options button:before, .input-picker .ws-picker-body:after, .input-picker .ws-button-row:after, .input-picker .picker-grid:after, .input-picker .picker-list:after, .input-picker .ws-options button:after {
5
+ display: table;
6
+ clear: both;
7
+ content: ' ';
8
+ }
9
+
10
+ /* spinner control for time, number (usable for date, datetime-local) */
11
+ .has-input-buttons,
12
+ input.has-input-buttons,
13
+ span.has-input-buttons {
14
+ display: inline-block;
15
+ }
16
+
17
+ .input-buttons,
18
+ .step-controls,
19
+ .ws-popover-opener {
20
+ zoom: 1;
21
+ overflow: hidden;
22
+ display: inline-block;
23
+ font-size: 0;
24
+ vertical-align: middle;
25
+ margin-top: -3px;
26
+ margin-left: -20px;
27
+ }
28
+
29
+ .step-controls,
30
+ .ws-popover-opener {
31
+ position: relative;
32
+ float: left;
33
+ margin: 0;
34
+ height: 19px;
35
+ width: 15px;
36
+ }
37
+
38
+ .ws-popover-opener {
39
+ position: relative;
40
+ zoom: 1;
41
+ overflow: visible;
42
+ margin: 0 0 0 2px;
43
+ width: 19px;
44
+ border-radius: 3px;
45
+ cursor: pointer;
46
+ background: #ccc;
47
+ }
48
+ .ws-popover-opener span {
49
+ display: block;
50
+ position: absolute;
51
+ top: 50%;
52
+ left: 50%;
53
+ width: 16px;
54
+ height: 16px;
55
+ margin: -8px 0 0 -8px;
56
+ background: url(forms.png) no-repeat -321px -1px;
57
+ }
58
+ .color-input-buttons .ws-popover-opener span {
59
+ background-position: -348px 0;
60
+ }
61
+ .time-input-buttons .ws-popover-opener span {
62
+ background-position: -377px 1px;
63
+ }
64
+ .ws-popover-opener span.ws-color-indicator-bg {
65
+ background: url(../jpicker/images/preview-opacity.png) no-repeat 0;
66
+ }
67
+ .ws-popover-opener span.ws-color-indicator {
68
+ background: none;
69
+ }
70
+
71
+ input[type="color"] {
72
+ width: 6.5em;
73
+ }
74
+
75
+ .input-buttons {
76
+ text-align: left;
77
+ }
78
+ .input-buttons.color-input-buttons {
79
+ margin-left: 2px;
80
+ }
81
+ .input-buttons.input-button-size-1.month-input-buttons, .input-buttons.input-button-size-1.date-input-buttons {
82
+ margin-left: -24px;
83
+ }
84
+ .input-buttons.input-button-size-2 {
85
+ margin-left: -39px;
86
+ }
87
+ .input-buttons.ws-disabled {
88
+ opacity: 0.95;
89
+ }
90
+ .input-buttons.ws-disabled *, .input-buttons.ws-readonly * {
91
+ cursor: default;
92
+ }
93
+
94
+ .step-controls span {
95
+ position: absolute;
96
+ display: inline-block;
97
+ overflow: hidden;
98
+ margin: 0 !important;
99
+ padding: 0 !important;
100
+ width: 15px;
101
+ height: 9px;
102
+ cursor: pointer;
103
+ font-size: 0;
104
+ line-height: 0;
105
+ background: url(forms.png) no-repeat 0 0;
106
+ }
107
+ .step-controls span.step-up {
108
+ top: 0;
109
+ background-position: -80px 0;
110
+ }
111
+ .step-controls span.step-up:hover {
112
+ background-position: -105px 0;
113
+ }
114
+ .step-controls span.step-up.mousepress-ui {
115
+ background-position: -105px -20px;
116
+ }
117
+ .ws-disabled .step-controls span.step-up {
118
+ background-position: -130px 0;
119
+ }
120
+ .step-controls span.step-down {
121
+ bottom: 0;
122
+ background-position: -155px 0;
123
+ }
124
+ .step-controls span.step-down:hover {
125
+ background-position: -180px 0;
126
+ }
127
+ .step-controls span.step-down.mousepress-ui {
128
+ background-position: -180px -20px;
129
+ }
130
+ .ws-disabled .step-controls span.step-down {
131
+ background-position: -205px 0;
132
+ }
133
+
134
+ .ws-input {
135
+ letter-spacing: -0.31em;
136
+ word-spacing: -0.43em;
137
+ }
138
+ .ws-input > * {
139
+ text-align: center;
140
+ letter-spacing: normal;
141
+ word-spacing: normal;
142
+ }
143
+ .ws-input .ws-input-seperator {
144
+ vertical-align: middle;
145
+ width: 2%;
146
+ overflow: hidden;
147
+ }
148
+ .ws-input + .input-buttons {
149
+ margin-left: 2px;
150
+ }
151
+ .ws-input input,
152
+ .ws-input .ws-input-seperator {
153
+ -moz-box-sizing: border-box;
154
+ box-sizing: border-box;
155
+ text-align: center;
156
+ display: inline-block;
157
+ }
158
+
159
+ .ws-date .mm,
160
+ .ws-date .dd {
161
+ width: 23.5%;
162
+ }
163
+ .no-boxsizing .ws-date .mm, .no-boxsizing
164
+ .ws-date .dd {
165
+ width: 16%;
166
+ }
167
+ .ws-date .yy {
168
+ width: 48%;
169
+ }
170
+ .no-boxsizing .ws-date .yy {
171
+ width: 40%;
172
+ }
173
+ .ws-date.ws-month-select .dd {
174
+ width: 22%;
175
+ }
176
+ .no-boxsizing .ws-date.ws-month-select .dd {
177
+ width: 13%;
178
+ }
179
+ .ws-date.ws-month-select .mm {
180
+ width: 38%;
181
+ }
182
+ .ws-date.ws-month-select .yy {
183
+ width: 36%;
184
+ }
185
+ .no-boxsizing .ws-date.ws-month-select .yy {
186
+ width: 30%;
187
+ }
188
+
189
+ .ws-month .mm,
190
+ .ws-month .yy {
191
+ width: 47.9%;
192
+ }
193
+ .no-boxsizing .ws-month .mm, .no-boxsizing
194
+ .ws-month .yy {
195
+ width: 41%;
196
+ }
197
+
198
+ /* range */
199
+ .ws-range {
200
+ position: relative;
201
+ display: inline-block;
202
+ vertical-align: middle;
203
+ margin: 0;
204
+ zoom: 1;
205
+ border: none;
206
+ height: 19px;
207
+ width: 155px;
208
+ border-radius: 1px;
209
+ background: url(range-track.png) 0 center no-repeat;
210
+ cursor: pointer;
211
+ font-size: 0;
212
+ line-height: 0;
213
+ }
214
+ .ws-range .ws-range-thumb {
215
+ top: 0;
216
+ position: absolute;
217
+ display: block;
218
+ z-index: 4;
219
+ overflow: hidden;
220
+ margin: -2px 0 0 -6px;
221
+ height: 22px;
222
+ width: 11px;
223
+ background: url(forms.png) -3px 1px no-repeat;
224
+ cursor: pointer;
225
+ outline: none;
226
+ font-size: 0;
227
+ line-height: 0;
228
+ }
229
+ .ws-range .ws-range-thumb:hover {
230
+ background-position: -20px 1px;
231
+ }
232
+ .ws-range.ws-focus .ws-range-thumb {
233
+ background-position: -20px 1px;
234
+ }
235
+ .ws-range.ws-active .ws-range-thumb {
236
+ background-position: -37px 1px;
237
+ }
238
+ .ws-range[aria-disabled="true"], .ws-range[aria-readonly="true"] {
239
+ cursor: default;
240
+ opacity: 0.95;
241
+ }
242
+ .ws-range[aria-disabled="true"] .ws-range-thumb, .ws-range[aria-readonly="true"] .ws-range-thumb {
243
+ cursor: default;
244
+ }
245
+ .ws-range[aria-disabled="true"] .ws-range-thumb {
246
+ background-position: -54px 1px;
247
+ }
248
+ .ws-range .ws-range-rail {
249
+ position: absolute;
250
+ display: block;
251
+ top: 0;
252
+ left: 0;
253
+ right: 0;
254
+ bottom: 0;
255
+ margin: 0;
256
+ zoom: 1;
257
+ }
258
+ .ws-range .ws-range-min {
259
+ position: absolute !important;
260
+ display: block;
261
+ margin: 9px 0 0;
262
+ padding: 0 !important;
263
+ top: 0;
264
+ height: 1px;
265
+ left: 0;
266
+ z-index: 1;
267
+ overflow: hidden;
268
+ background: #b6e2fb;
269
+ }
270
+ .ws-range .ws-range-ticks {
271
+ overflow: hidden;
272
+ position: absolute;
273
+ bottom: 0px;
274
+ left: 0;
275
+ height: 4px;
276
+ width: 1px;
277
+ margin: 0 0 0 -1.5px;
278
+ font-size: 0;
279
+ line-height: 0;
280
+ text-indent: -999px;
281
+ background: #ccc;
282
+ }
283
+ .ws-range.vertical-range {
284
+ background: url(vertical-range.png) center bottom no-repeat;
285
+ width: 20px;
286
+ }
287
+ .ws-range.vertical-range .ws-range-thumb {
288
+ top: 0;
289
+ left: 3px;
290
+ bottom: auto;
291
+ background: url(vertical-range.png) 0 -51px no-repeat;
292
+ margin: -6px 0 0 0;
293
+ height: 11px;
294
+ width: 22px;
295
+ }
296
+ .ws-range.vertical-range .ws-range-thumb:hover, .ws-range.vertical-range.ws-focus .ws-range-thumb {
297
+ background-position: 0 -34px;
298
+ }
299
+ .ws-range.vertical-range.ws-active .ws-range-thumb {
300
+ background-position: 0 -17px;
301
+ }
302
+ .ws-range.vertical-range[aria-disabled="true"] .ws-range-thumb {
303
+ background-position: 0 0;
304
+ }
305
+ .ws-range.vertical-range .ws-range-min {
306
+ top: auto;
307
+ bottom: 1px;
308
+ left: 0;
309
+ width: 1px;
310
+ height: 0;
311
+ }
312
+ .ws-range.vertical-range .ws-range-rail {
313
+ top: 5px;
314
+ left: 0;
315
+ right: 0;
316
+ bottom: 5px;
317
+ }
318
+ .ws-range.vertical-range .ws-range-ticks {
319
+ bottom: auto;
320
+ left: auto;
321
+ right: 0;
322
+ height: 1px;
323
+ width: 4px;
324
+ }
325
+
326
+ .input-picker .ws-prev,
327
+ .input-picker .ws-next,
328
+ .input-picker .ws-super-prev,
329
+ .input-picker .ws-super-next, .input-picker .ws-button-row button {
330
+ border-radius: 4px;
331
+ background: #ccc;
332
+ padding: 5px 8px;
333
+ display: inline-block;
334
+ border: 1px solid transparent;
335
+ }
336
+
337
+ .input-picker {
338
+ outline: none;
339
+ text-align: center;
340
+ font-family: sans-serif;
341
+ width: 330px;
342
+ }
343
+ .input-picker.time-popover, .input-picker.datetime-local-popover {
344
+ width: 415px;
345
+ }
346
+ .input-picker.time-popover .ws-prev,
347
+ .input-picker.time-popover .ws-next,
348
+ .input-picker.time-popover .ws-super-prev,
349
+ .input-picker.time-popover .ws-super-next {
350
+ display: none;
351
+ }
352
+ .input-picker.ws-size-2 {
353
+ width: 645px;
354
+ }
355
+ .input-picker.ws-size-3 {
356
+ width: 960px;
357
+ }
358
+ .input-picker.color-popover {
359
+ width: 590px;
360
+ }
361
+ .input-picker abbr[title] {
362
+ cursor: help;
363
+ }
364
+ .input-picker li,
365
+ .input-picker button {
366
+ font-size: 13px;
367
+ line-height: 16px;
368
+ color: #000;
369
+ transition: all 400ms;
370
+ }
371
+ .input-picker .ws-focus,
372
+ .input-picker :focus {
373
+ outline: 1px dotted black;
374
+ }
375
+ .input-picker .ws-po-box {
376
+ position: relative;
377
+ padding: 10px 20px 15px;
378
+ border-radius: 5px;
379
+ box-shadow: 0 0 2px rgba(0, 0, 0, 0.3);
380
+ }
381
+ .input-picker .ws-prev,
382
+ .input-picker .ws-next,
383
+ .input-picker .ws-super-prev,
384
+ .input-picker .ws-super-next {
385
+ position: absolute;
386
+ top: 10px;
387
+ border: 1px solid #cccccc;
388
+ border-radius: 5px;
389
+ padding: 0;
390
+ width: 24px;
391
+ height: 24px;
392
+ background: #eeeeee url(forms.png) no-repeat 0 0;
393
+ z-index: 1;
394
+ }
395
+ .input-picker .ws-prev span,
396
+ .input-picker .ws-next span,
397
+ .input-picker .ws-super-prev span,
398
+ .input-picker .ws-super-next span {
399
+ display: none;
400
+ }
401
+ .input-picker.time-popover .ws-picker-body {
402
+ padding-top: 36px;
403
+ }
404
+ .input-picker .ws-picker-body {
405
+ position: relative;
406
+ padding: 46px 0 0;
407
+ zoom: 1;
408
+ margin: 0 -10px;
409
+ }
410
+ .input-picker .ws-prev,
411
+ .input-picker .ws-super-prev {
412
+ left: 20px;
413
+ background-position: -243px 5px;
414
+ }
415
+ .input-picker .ws-super-prev {
416
+ background-position: -243px -12px;
417
+ }
418
+ .input-picker.ws-year-buttons .ws-prev {
419
+ left: 50px;
420
+ }
421
+ .input-picker .ws-next,
422
+ .input-picker .ws-super-next {
423
+ right: 20px;
424
+ background-position: -275px 5px;
425
+ }
426
+ .input-picker .ws-super-next {
427
+ background-position: -275px -12px;
428
+ }
429
+ .input-picker.ws-year-buttons .ws-next {
430
+ right: 50px;
431
+ }
432
+ .input-picker .ws-prev:hover,
433
+ .input-picker .ws-next:hover,
434
+ .input-picker .ws-super-prev:hover,
435
+ .input-picker .ws-super-next:hover {
436
+ border-color: #666;
437
+ }
438
+ .input-picker .ws-prev[disabled],
439
+ .input-picker .ws-next[disabled],
440
+ .input-picker .ws-super-prev[disabled],
441
+ .input-picker .ws-super-next[disabled] {
442
+ opacity: 0.4;
443
+ border-color: #eee;
444
+ }
445
+ .input-picker .ws-button-row {
446
+ position: relative;
447
+ margin: 10px 0 0;
448
+ border-top: 1px solid #eeeeee;
449
+ padding: 10px 0 0;
450
+ text-align: left;
451
+ z-index: 2;
452
+ }
453
+ .input-picker .ws-button-row button {
454
+ border: 1px solid #cccccc;
455
+ border-radius: 5px;
456
+ box-shadow: 1px 1px 0 white;
457
+ background-color: #ddd;
458
+ background-image: -webkit-linear-gradient(top, #ececec 0%, #dddddd 100%);
459
+ background-image: linear-gradient(to bottom, #ececec 0%, #dddddd 100%);
460
+ transition: border-color 200ms linear;
461
+ float: left;
462
+ }
463
+ .input-picker .ws-button-row button.ws-empty {
464
+ float: right;
465
+ }
466
+ .input-picker[data-currentview="setMonthList"] .ws-picker-header select {
467
+ max-width: 95%;
468
+ }
469
+ .input-picker[data-currentview="setDayList"] .ws-picker-header select {
470
+ max-width: 40%;
471
+ }
472
+ .input-picker[data-currentview="setDayList"] .ws-picker-header select.month-select {
473
+ max-width: 55%;
474
+ }
475
+ .input-picker.time-popover .ws-picker-header {
476
+ top: -30px;
477
+ }
478
+ .input-picker.time-popover .ws-picker-header button {
479
+ font-size: 15px;
480
+ }
481
+ .input-picker.ws-year-buttons .ws-picker-header {
482
+ margin: 0 65px;
483
+ }
484
+ .input-picker .ws-picker-header {
485
+ position: absolute;
486
+ top: -44px;
487
+ right: 0;
488
+ left: 0;
489
+ margin: 0 40px;
490
+ }
491
+ .input-picker .ws-picker-header button {
492
+ display: inline-block;
493
+ width: 100%;
494
+ margin: 0;
495
+ padding: 4px 0;
496
+ font-weight: 700;
497
+ color: #000;
498
+ }
499
+ .input-picker .ws-picker-header button:hover {
500
+ text-decoration: underline;
501
+ }
502
+ .input-picker .ws-picker-header button[disabled]:hover {
503
+ text-decoration: none;
504
+ }
505
+ .input-picker .picker-grid {
506
+ position: relative;
507
+ zoom: 1;
508
+ overflow: hidden;
509
+ }
510
+ .input-picker.ws-size-1 .picker-list {
511
+ float: none;
512
+ width: auto;
513
+ }
514
+ .input-picker .picker-list {
515
+ position: relative;
516
+ zoom: 1;
517
+ width: 290px;
518
+ float: left;
519
+ margin: 0 10px;
520
+ background: #fff;
521
+ }
522
+ .input-picker .picker-list tr {
523
+ border: 0;
524
+ }
525
+ .input-picker .picker-list th,
526
+ .input-picker .picker-list td {
527
+ padding: 3px 5px;
528
+ }
529
+ .input-picker .picker-list.day-list td {
530
+ padding: 2px 1px;
531
+ }
532
+ .input-picker .picker-list.day-list td button {
533
+ padding: 4px 0;
534
+ }
535
+ .input-picker .picker-list td button {
536
+ display: block;
537
+ padding: 9px 0;
538
+ width: 100%;
539
+ border-radius: 5px;
540
+ color: #000;
541
+ background-color: #fff;
542
+ }
543
+ .input-picker .picker-list td button.othermonth {
544
+ color: #888;
545
+ }
546
+ .input-picker .picker-list td button:hover, .input-picker .picker-list td button.checked-value {
547
+ color: #fff;
548
+ background: #000;
549
+ }
550
+ .input-picker .picker-list td button[disabled], .input-picker .picker-list td button[disabled]:hover {
551
+ color: #888;
552
+ background-color: #fff;
553
+ }
554
+ .input-picker .picker-list table {
555
+ width: 100%;
556
+ border: 0 none;
557
+ border-collapse: collapse;
558
+ }
559
+ .input-picker .picker-list th,
560
+ .input-picker .picker-list td.week-cell {
561
+ font-size: 13px;
562
+ line-height: 1.1em;
563
+ padding-bottom: 3px;
564
+ text-transform: uppercase;
565
+ font-weight: 700;
566
+ }
567
+ .input-picker .picker-list th, .input-picker .picker-list td {
568
+ width: 14.2856%;
569
+ }
570
+ .input-picker .ws-options {
571
+ margin: 10px 0 0;
572
+ border-top: 1px solid #eeeeee;
573
+ padding: 10px 0 0;
574
+ text-align: left;
575
+ }
576
+ .input-picker .ws-options h5 {
577
+ margin: 0 0 5px;
578
+ padding: 0;
579
+ font-size: 14px;
580
+ font-weight: bold;
581
+ }
582
+ .input-picker .ws-options ul,
583
+ .input-picker .ws-options li {
584
+ padding: 0;
585
+ margin: 0;
586
+ list-style: none;
587
+ }
588
+ .input-picker .ws-options button {
589
+ display: block;
590
+ padding: 4px;
591
+ width: 100%;
592
+ text-align: left;
593
+ border-radius: 4px;
594
+ }
595
+ .input-picker .ws-options button.ws-focus, .input-picker .ws-options button:focus, .input-picker .ws-options button:hover {
596
+ color: #fff;
597
+ background: #000;
598
+ }
599
+ .input-picker .ws-options button[disabled], .input-picker .ws-options button[disabled].ws-focus, .input-picker .ws-options button[disabled]:focus, .input-picker .ws-options button[disabled]:hover {
600
+ color: #888;
601
+ background: #fff;
602
+ text-decoration: none;
603
+ }
604
+ .input-picker .ws-options button .ws-value {
605
+ float: left;
606
+ }
607
+ .input-picker .ws-options button .ws-label {
608
+ float: right;
609
+ font-size: 96%;
610
+ }