bootstrap-datepicker-rails 1.3.1.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7bd8cf3ddda702417842ef74f1c619f9823c187e
4
- data.tar.gz: d0c7d62cbbbe121355aef90ec89fc93341360a1a
3
+ metadata.gz: 12275b3675337b334e802880958e6feed1c83d69
4
+ data.tar.gz: 2e857161bcceda4eadcff09b70d4bafc5310bba6
5
5
  SHA512:
6
- metadata.gz: 350f817c8404ecdb79086f086f28b8c8290ad0dd4586375d89de458c204b1eb4932ab3f275e90bb96b921b314741c051b6fa47c15d3292c343882f5c25c9e7bd
7
- data.tar.gz: 005680ccea49bcb498e02c5868b08ac01f2c27f953ce41995bb2ad5ce9aad83fb5417c86374096c18eb36009317d0c3b5b4e8dc4e8fa38d1caff039457a3ce8b
6
+ metadata.gz: 84753fc92289d03b14ed3cfaf1f525a634eb6d5a46590493cabdd4ac5a93756e47a1df0478a158ea35d342d6d162a170ac4e3f0af89a93c9a847ece3a2e96088
7
+ data.tar.gz: 32f8bca100026f3e6f283be25e3ec2de9a5583a7ad65ce5d703e5540d4460606e24d749d6c4193c22bcf32553ec80cefeb0283f9fd2777d3f7d02b1ae4c7e57d
data/README.md CHANGED
@@ -76,6 +76,17 @@ http://eternicode.github.io/bootstrap-datepicker/
76
76
 
77
77
  There are a lot of options you can pass to datepicker(). They are documented at [https://github.com/eternicode/bootstrap-datepicker](https://github.com/eternicode/bootstrap-datepicker)
78
78
 
79
+ ## Updating the assets
80
+
81
+ Please use the rake task to update the assets.
82
+
83
+ Examples :
84
+
85
+ ```bash
86
+ rake update # Update the assets with the latest tag source code on master
87
+ rake update v1.4.0 # Update the assets with the specified tag source code
88
+ ```
89
+
79
90
  ## Questions? Bugs?
80
91
 
81
92
  Use Github Issues.
data/Rakefile CHANGED
@@ -5,15 +5,23 @@ require File.expand_path('../lib/bootstrap-datepicker-rails/version', __FILE__)
5
5
 
6
6
  desc "Update assets"
7
7
  task :update do
8
+ if ARGV.count > 1
9
+ checkout_branch = "tags/#{ARGV.last}"
10
+ task ARGV.last.to_sym {}
11
+ else
12
+ checkout_branch = "`git describe --abbrev=0`"
13
+ end
14
+
8
15
  if Dir.exist?('bootstrap-datepicker-src')
9
- system("cd bootstrap-datepicker-src && git checkout release && git pull && cd ..")
16
+ system("cd bootstrap-datepicker-src && git checkout master && git pull && git checkout #{checkout_branch}")
10
17
  else
11
18
  system("git clone git://github.com/eternicode/bootstrap-datepicker.git bootstrap-datepicker-src")
12
- system("cd bootstrap-datepicker-src && git checkout release && cd ..")
19
+ system("cd bootstrap-datepicker-src && git checkout #{checkout_branch}")
13
20
  end
14
- system("cp bootstrap-datepicker-src/css/datepicker.css vendor/assets/stylesheets/bootstrap-datepicker.css")
15
- system("cp bootstrap-datepicker-src/css/datepicker3.css vendor/assets/stylesheets/bootstrap-datepicker3.css")
16
- system("cp bootstrap-datepicker-src/js/bootstrap-datepicker.js vendor/assets/javascripts/bootstrap-datepicker/core.js")
21
+
22
+ system("cp bootstrap-datepicker-src/dist/css/bootstrap-datepicker.css vendor/assets/stylesheets/bootstrap-datepicker.css")
23
+ system("cp bootstrap-datepicker-src/dist/css/bootstrap-datepicker3.css vendor/assets/stylesheets/bootstrap-datepicker3.css")
24
+ system("cp bootstrap-datepicker-src/dist/js/bootstrap-datepicker.js vendor/assets/javascripts/bootstrap-datepicker/core.js")
17
25
  system("cp bootstrap-datepicker-src/js/locales/*.js vendor/assets/javascripts/bootstrap-datepicker/locales/")
18
26
  system("git status")
19
27
 
@@ -1,5 +1,5 @@
1
1
  module BootstrapDatepickerRails
2
2
  module Rails
3
- VERSION = "1.3.1.1"
3
+ VERSION = "1.4.0"
4
4
  end
5
5
  end
@@ -1,28 +1,10 @@
1
- /* =========================================================
2
- * bootstrap-datepicker.js
3
- * Repo: https://github.com/eternicode/bootstrap-datepicker/
4
- * Demo: http://eternicode.github.io/bootstrap-datepicker/
5
- * Docs: http://bootstrap-datepicker.readthedocs.org/
6
- * Forked from http://www.eyecon.ro/bootstrap-datepicker
7
- * =========================================================
8
- * Started by Stefan Petre; improvements by Andrew Rowls + contributors
1
+ /*!
2
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
9
3
  *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
- * you may not use this file except in compliance with the License.
12
- * You may obtain a copy of the License at
13
- *
14
- * http://www.apache.org/licenses/LICENSE-2.0
15
- *
16
- * Unless required by applicable law or agreed to in writing, software
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- * See the License for the specific language governing permissions and
20
- * limitations under the License.
21
- * ========================================================= */
22
-
23
- (function($, undefined){
24
-
25
- var $window = $(window);
4
+ * Copyright 2012 Stefan Petre
5
+ * Improvements by Andrew Rowls
6
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
7
+ */(function($, undefined){
26
8
 
27
9
  function UTCDate(){
28
10
  return new Date(Date.UTC.apply(Date, arguments));
@@ -31,6 +13,13 @@
31
13
  var today = new Date();
32
14
  return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
33
15
  }
16
+ function isUTCEquals(date1, date2) {
17
+ return (
18
+ date1.getUTCFullYear() === date2.getUTCFullYear() &&
19
+ date1.getUTCMonth() === date2.getUTCMonth() &&
20
+ date1.getUTCDate() === date2.getUTCDate()
21
+ );
22
+ }
34
23
  function alias(method){
35
24
  return function(){
36
25
  return this[method].apply(this, arguments);
@@ -84,16 +73,16 @@
84
73
  // Picker object
85
74
 
86
75
  var Datepicker = function(element, options){
76
+ this._process_options(options);
77
+
87
78
  this.dates = new DateArray();
88
- this.viewDate = UTCToday();
79
+ this.viewDate = this.o.defaultViewDate;
89
80
  this.focusDate = null;
90
81
 
91
- this._process_options(options);
92
-
93
82
  this.element = $(element);
94
83
  this.isInline = false;
95
84
  this.isInput = this.element.is('input');
96
- this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
85
+ this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
97
86
  this.hasInput = this.component && this.element.find('input').length;
98
87
  if (this.component && this.component.length === 0)
99
88
  this.component = false;
@@ -116,7 +105,7 @@
116
105
  this.viewMode = this.o.startView;
117
106
 
118
107
  if (this.o.calendarWeeks)
119
- this.picker.find('tfoot th.today, tfoot th.clear')
108
+ this.picker.find('tfoot .today, tfoot .clear')
120
109
  .attr('colspan', function(i, val){
121
110
  return parseInt(val) + 1;
122
111
  });
@@ -126,6 +115,7 @@
126
115
  this.setStartDate(this._o.startDate);
127
116
  this.setEndDate(this._o.endDate);
128
117
  this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
118
+ this.setDatesDisabled(this.o.datesDisabled);
129
119
 
130
120
  this.fillDow();
131
121
  this.fillMonths();
@@ -192,8 +182,6 @@
192
182
  o.multidate = Number(o.multidate) || false;
193
183
  if (o.multidate !== false)
194
184
  o.multidate = Math.max(0, o.multidate);
195
- else
196
- o.multidate = 1;
197
185
  }
198
186
  o.multidateSeparator = String(o.multidateSeparator);
199
187
 
@@ -231,10 +219,20 @@
231
219
  return parseInt(d, 10);
232
220
  });
233
221
 
222
+ o.datesDisabled = o.datesDisabled||[];
223
+ if (!$.isArray(o.datesDisabled)) {
224
+ var datesDisabled = [];
225
+ datesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));
226
+ o.datesDisabled = datesDisabled;
227
+ }
228
+ o.datesDisabled = $.map(o.datesDisabled,function(d){
229
+ return DPGlobal.parseDate(d, format, o.language);
230
+ });
231
+
234
232
  var plc = String(o.orientation).toLowerCase().split(/\s+/g),
235
233
  _plc = o.orientation.toLowerCase();
236
234
  plc = $.grep(plc, function(word){
237
- return (/^auto|left|right|top|bottom$/).test(word);
235
+ return /^auto|left|right|top|bottom$/.test(word);
238
236
  });
239
237
  o.orientation = {x: 'auto', y: 'auto'};
240
238
  if (!_plc || _plc === 'auto')
@@ -253,15 +251,24 @@
253
251
  }
254
252
  else {
255
253
  _plc = $.grep(plc, function(word){
256
- return (/^left|right$/).test(word);
254
+ return /^left|right$/.test(word);
257
255
  });
258
256
  o.orientation.x = _plc[0] || 'auto';
259
257
 
260
258
  _plc = $.grep(plc, function(word){
261
- return (/^top|bottom$/).test(word);
259
+ return /^top|bottom$/.test(word);
262
260
  });
263
261
  o.orientation.y = _plc[0] || 'auto';
264
262
  }
263
+ if (o.defaultViewDate) {
264
+ var year = o.defaultViewDate.year || new Date().getFullYear();
265
+ var month = o.defaultViewDate.month || 0;
266
+ var day = o.defaultViewDate.day || 1;
267
+ o.defaultViewDate = UTCDate(year, month, day);
268
+ } else {
269
+ o.defaultViewDate = UTCToday();
270
+ }
271
+ o.showOnFocus = o.showOnFocus !== undefined ? o.showOnFocus : true;
265
272
  },
266
273
  _events: [],
267
274
  _secondaryEvents: [],
@@ -294,34 +301,32 @@
294
301
  }
295
302
  },
296
303
  _buildEvents: function(){
297
- if (this.isInput){ // single input
298
- this._events = [
299
- [this.element, {
300
- focus: $.proxy(this.show, this),
301
- keyup: $.proxy(function(e){
302
- if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
303
- this.update();
304
- }, this),
305
- keydown: $.proxy(this.keydown, this)
306
- }]
307
- ];
308
- }
309
- else if (this.component && this.hasInput){ // component: input + button
310
- this._events = [
311
- // For components that are not readonly, allow keyboard nav
312
- [this.element.find('input'), {
313
- focus: $.proxy(this.show, this),
314
- keyup: $.proxy(function(e){
315
- if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
316
- this.update();
317
- }, this),
318
- keydown: $.proxy(this.keydown, this)
319
- }],
320
- [this.component, {
321
- click: $.proxy(this.show, this)
322
- }]
323
- ];
324
- }
304
+ var events = {
305
+ keyup: $.proxy(function(e){
306
+ if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)
307
+ this.update();
308
+ }, this),
309
+ keydown: $.proxy(this.keydown, this)
310
+ };
311
+
312
+ if (this.o.showOnFocus === true) {
313
+ events.focus = $.proxy(this.show, this);
314
+ }
315
+
316
+ if (this.isInput) { // single input
317
+ this._events = [
318
+ [this.element, events]
319
+ ];
320
+ }
321
+ else if (this.component && this.hasInput) { // component: input + button
322
+ this._events = [
323
+ // For components that are not readonly, allow keyboard nav
324
+ [this.element.find('input'), events],
325
+ [this.component, {
326
+ click: $.proxy(this.show, this)
327
+ }]
328
+ ];
329
+ }
325
330
  else if (this.element.is('div')){ // inline datepicker
326
331
  this.isInline = true;
327
332
  }
@@ -408,19 +413,25 @@
408
413
  },
409
414
 
410
415
  show: function(){
416
+ if (this.element.attr('readonly') && this.o.enableOnReadonly === false)
417
+ return;
411
418
  if (!this.isInline)
412
- this.picker.appendTo('body');
413
- this.picker.show();
419
+ this.picker.appendTo(this.o.container);
414
420
  this.place();
421
+ this.picker.show();
415
422
  this._attachSecondaryEvents();
416
423
  this._trigger('show');
424
+ if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {
425
+ $(this.element).blur();
426
+ }
427
+ return this;
417
428
  },
418
429
 
419
430
  hide: function(){
420
431
  if (this.isInline)
421
- return;
432
+ return this;
422
433
  if (!this.picker.is(':visible'))
423
- return;
434
+ return this;
424
435
  this.focusDate = null;
425
436
  this.picker.hide().detach();
426
437
  this._detachSecondaryEvents();
@@ -436,6 +447,7 @@
436
447
  )
437
448
  this.setValue();
438
449
  this._trigger('hide');
450
+ return this;
439
451
  },
440
452
 
441
453
  remove: function(){
@@ -447,6 +459,7 @@
447
459
  if (!this.isInput){
448
460
  delete this.element.data().date;
449
461
  }
462
+ return this;
450
463
  },
451
464
 
452
465
  _utc_to_local: function(utc){
@@ -477,14 +490,39 @@
477
490
  },
478
491
 
479
492
  getUTCDate: function(){
480
- return new Date(this.dates.get(-1));
493
+ var selected_date = this.dates.get(-1);
494
+ if (typeof selected_date !== 'undefined') {
495
+ return new Date(selected_date);
496
+ } else {
497
+ return null;
498
+ }
481
499
  },
482
500
 
501
+ clearDates: function(){
502
+ var element;
503
+ if (this.isInput) {
504
+ element = this.element;
505
+ } else if (this.component) {
506
+ element = this.element.find('input');
507
+ }
508
+
509
+ if (element) {
510
+ element.val('').change();
511
+ }
512
+
513
+ this.update();
514
+ this._trigger('changeDate');
515
+
516
+ if (this.o.autoclose) {
517
+ this.hide();
518
+ }
519
+ },
483
520
  setDates: function(){
484
521
  var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
485
522
  this.update.apply(this, args);
486
523
  this._trigger('changeDate');
487
524
  this.setValue();
525
+ return this;
488
526
  },
489
527
 
490
528
  setUTCDates: function(){
@@ -492,6 +530,7 @@
492
530
  this.update.apply(this, $.map(args, this._utc_to_local));
493
531
  this._trigger('changeDate');
494
532
  this.setValue();
533
+ return this;
495
534
  },
496
535
 
497
536
  setDate: alias('setDates'),
@@ -507,6 +546,7 @@
507
546
  else {
508
547
  this.element.val(formatted).change();
509
548
  }
549
+ return this;
510
550
  },
511
551
 
512
552
  getFormattedDate: function(format){
@@ -523,41 +563,51 @@
523
563
  this._process_options({startDate: startDate});
524
564
  this.update();
525
565
  this.updateNavArrows();
566
+ return this;
526
567
  },
527
568
 
528
569
  setEndDate: function(endDate){
529
570
  this._process_options({endDate: endDate});
530
571
  this.update();
531
572
  this.updateNavArrows();
573
+ return this;
532
574
  },
533
575
 
534
576
  setDaysOfWeekDisabled: function(daysOfWeekDisabled){
535
577
  this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
536
578
  this.update();
537
579
  this.updateNavArrows();
580
+ return this;
581
+ },
582
+
583
+ setDatesDisabled: function(datesDisabled){
584
+ this._process_options({datesDisabled: datesDisabled});
585
+ this.update();
586
+ this.updateNavArrows();
538
587
  },
539
588
 
540
589
  place: function(){
541
590
  if (this.isInline)
542
- return;
591
+ return this;
543
592
  var calendarWidth = this.picker.outerWidth(),
544
593
  calendarHeight = this.picker.outerHeight(),
545
594
  visualPadding = 10,
546
- windowWidth = $window.width(),
547
- windowHeight = $window.height(),
548
- scrollTop = $window.scrollTop();
595
+ windowWidth = $(this.o.container).width(),
596
+ windowHeight = $(this.o.container).height(),
597
+ scrollTop = $(this.o.container).scrollTop(),
598
+ appendOffset = $(this.o.container).offset();
549
599
 
550
600
  var parentsZindex = [];
551
- this.element.parents().each(function() {
601
+ this.element.parents().each(function(){
552
602
  var itemZIndex = $(this).css('z-index');
553
- if ( itemZIndex !== 'auto' && itemZIndex !== 0 ) parentsZindex.push( parseInt( itemZIndex ) );
603
+ if (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex));
554
604
  });
555
- var zIndex = Math.max.apply( Math, parentsZindex ) + 10;
605
+ var zIndex = Math.max.apply(Math, parentsZindex) + 10;
556
606
  var offset = this.component ? this.component.parent().offset() : this.element.offset();
557
607
  var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
558
608
  var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
559
- var left = offset.left,
560
- top = offset.top;
609
+ var left = offset.left - appendOffset.left,
610
+ top = offset.top - appendOffset.top;
561
611
 
562
612
  this.picker.removeClass(
563
613
  'datepicker-orient-top datepicker-orient-bottom '+
@@ -572,12 +622,18 @@
572
622
  // auto x orientation is best-placement: if it crosses a window
573
623
  // edge, fudge it sideways
574
624
  else {
575
- // Default to left
576
- this.picker.addClass('datepicker-orient-left');
577
- if (offset.left < 0)
625
+ if (offset.left < 0) {
626
+ // component is outside the window on the left side. Move it into visible range
627
+ this.picker.addClass('datepicker-orient-left');
578
628
  left -= offset.left - visualPadding;
579
- else if (offset.left + calendarWidth > windowWidth)
580
- left = windowWidth - calendarWidth - visualPadding;
629
+ } else if (left + calendarWidth > windowWidth) {
630
+ // the calendar passes the widow right edge. Align it to component right side
631
+ this.picker.addClass('datepicker-orient-right');
632
+ left = offset.left + width - calendarWidth;
633
+ } else {
634
+ // Default to left
635
+ this.picker.addClass('datepicker-orient-left');
636
+ }
581
637
  }
582
638
 
583
639
  // auto y orientation is best-situation: top or bottom, no fudging,
@@ -585,8 +641,8 @@
585
641
  var yorient = this.o.orientation.y,
586
642
  top_overflow, bottom_overflow;
587
643
  if (yorient === 'auto'){
588
- top_overflow = -scrollTop + offset.top - calendarHeight;
589
- bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);
644
+ top_overflow = -scrollTop + top - calendarHeight;
645
+ bottom_overflow = scrollTop + windowHeight - (top + height + calendarHeight);
590
646
  if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
591
647
  yorient = 'top';
592
648
  else
@@ -598,17 +654,27 @@
598
654
  else
599
655
  top -= calendarHeight + parseInt(this.picker.css('padding-top'));
600
656
 
601
- this.picker.css({
602
- top: top,
603
- left: left,
604
- zIndex: zIndex
605
- });
657
+ if (this.o.rtl) {
658
+ var right = windowWidth - (left + width);
659
+ this.picker.css({
660
+ top: top,
661
+ right: right,
662
+ zIndex: zIndex
663
+ });
664
+ } else {
665
+ this.picker.css({
666
+ top: top,
667
+ left: left,
668
+ zIndex: zIndex
669
+ });
670
+ }
671
+ return this;
606
672
  },
607
673
 
608
674
  _allow_update: true,
609
675
  update: function(){
610
676
  if (!this._allow_update)
611
- return;
677
+ return this;
612
678
 
613
679
  var oldDates = this.dates.copy(),
614
680
  dates = [],
@@ -664,15 +730,19 @@
664
730
  this._trigger('clearDate');
665
731
 
666
732
  this.fill();
733
+ return this;
667
734
  },
668
735
 
669
736
  fillDow: function(){
670
737
  var dowCnt = this.o.weekStart,
671
738
  html = '<tr>';
672
739
  if (this.o.calendarWeeks){
673
- var cell = '<th class="cw">&nbsp;</th>';
740
+ this.picker.find('.datepicker-days thead tr:first-child .datepicker-switch')
741
+ .attr('colspan', function(i, val){
742
+ return parseInt(val) + 1;
743
+ });
744
+ var cell = '<th class="cw">&#160;</th>';
674
745
  html += cell;
675
- this.picker.find('.datepicker-days thead tr:first-child').prepend(cell);
676
746
  }
677
747
  while (dowCnt < this.o.weekStart + 7){
678
748
  html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
@@ -726,6 +796,12 @@
726
796
  $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
727
797
  cls.push('disabled');
728
798
  }
799
+ if (this.o.datesDisabled.length > 0 &&
800
+ $.grep(this.o.datesDisabled, function(d){
801
+ return isUTCEquals(date, d); }).length > 0) {
802
+ cls.push('disabled', 'disabled-date');
803
+ }
804
+
729
805
  if (this.range){
730
806
  if (date > this.range[0] && date < this.range[this.range.length-1]){
731
807
  cls.push('range');
@@ -748,13 +824,14 @@
748
824
  todaytxt = dates[this.o.language].today || dates['en'].today || '',
749
825
  cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
750
826
  tooltip;
751
- if (isNaN(year) || isNaN(month)) return;
752
- this.picker.find('.datepicker-days thead th.datepicker-switch')
827
+ if (isNaN(year) || isNaN(month))
828
+ return;
829
+ this.picker.find('.datepicker-days thead .datepicker-switch')
753
830
  .text(dates[this.o.language].months[month]+' '+year);
754
- this.picker.find('tfoot th.today')
831
+ this.picker.find('tfoot .today')
755
832
  .text(todaytxt)
756
833
  .toggle(this.o.todayBtn !== false);
757
- this.picker.find('tfoot th.clear')
834
+ this.picker.find('tfoot .clear')
758
835
  .text(cleartxt)
759
836
  .toggle(this.o.clearBtn !== false);
760
837
  this.updateNavArrows();
@@ -837,6 +914,18 @@
837
914
  months.slice(endMonth+1).addClass('disabled');
838
915
  }
839
916
 
917
+ if (this.o.beforeShowMonth !== $.noop){
918
+ var that = this;
919
+ $.each(months, function(i, month){
920
+ if (!$(month).hasClass('disabled')) {
921
+ var moDate = new Date(year, i, 1);
922
+ var before = that.o.beforeShowMonth(moDate);
923
+ if (before === false)
924
+ $(month).addClass('disabled');
925
+ }
926
+ });
927
+ }
928
+
840
929
  html = '';
841
930
  year = parseInt(year/10, 10) * 10;
842
931
  var yearCont = this.picker.find('.datepicker-years')
@@ -859,7 +948,7 @@
859
948
  classes.push('active');
860
949
  if (year < startYear || year > endYear)
861
950
  classes.push('disabled');
862
- html += '<span class="' + classes.join(' ') + '">'+year+'</span>';
951
+ html += '<span class="' + classes.join(' ') + '">' + year + '</span>';
863
952
  year += 1;
864
953
  }
865
954
  yearCont.html(html);
@@ -942,24 +1031,14 @@
942
1031
  this._setDate(date, which);
943
1032
  break;
944
1033
  case 'clear':
945
- var element;
946
- if (this.isInput)
947
- element = this.element;
948
- else if (this.component)
949
- element = this.element.find('input');
950
- if (element)
951
- element.val("").change();
952
- this.update();
953
- this._trigger('changeDate');
954
- if (this.o.autoclose)
955
- this.hide();
1034
+ this.clearDates();
956
1035
  break;
957
1036
  }
958
1037
  break;
959
1038
  case 'span':
960
- if (!target.is('.disabled')){
1039
+ if (!target.hasClass('disabled')){
961
1040
  this.viewDate.setUTCDate(1);
962
- if (target.is('.month')){
1041
+ if (target.hasClass('month')){
963
1042
  day = 1;
964
1043
  month = target.parent().find('span').index(target);
965
1044
  year = this.viewDate.getUTCFullYear();
@@ -984,11 +1063,11 @@
984
1063
  }
985
1064
  break;
986
1065
  case 'td':
987
- if (target.is('.day') && !target.is('.disabled')){
1066
+ if (target.hasClass('day') && !target.hasClass('disabled')){
988
1067
  day = parseInt(target.text(), 10)||1;
989
1068
  year = this.viewDate.getUTCFullYear();
990
1069
  month = this.viewDate.getUTCMonth();
991
- if (target.is('.old')){
1070
+ if (target.hasClass('old')){
992
1071
  if (month === 0){
993
1072
  month = 11;
994
1073
  year -= 1;
@@ -997,7 +1076,7 @@
997
1076
  month -= 1;
998
1077
  }
999
1078
  }
1000
- else if (target.is('.new')){
1079
+ else if (target.hasClass('new')){
1001
1080
  if (month === 11){
1002
1081
  month = 0;
1003
1082
  year += 1;
@@ -1022,15 +1101,19 @@
1022
1101
  if (!date){
1023
1102
  this.dates.clear();
1024
1103
  }
1025
- if (this.o.multidate === 1 && ix === 0){
1026
- // single datepicker, don't remove selected date
1027
- }
1028
- else if (ix !== -1){
1029
- this.dates.remove(ix);
1104
+
1105
+ if (ix !== -1){
1106
+ if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){
1107
+ this.dates.remove(ix);
1108
+ }
1109
+ } else if (this.o.multidate === false) {
1110
+ this.dates.clear();
1111
+ this.dates.push(date);
1030
1112
  }
1031
1113
  else {
1032
1114
  this.dates.push(date);
1033
1115
  }
1116
+
1034
1117
  if (typeof this.o.multidate === 'number')
1035
1118
  while (this.dates.length > this.o.multidate)
1036
1119
  this.dates.remove(0);
@@ -1044,7 +1127,9 @@
1044
1127
 
1045
1128
  this.fill();
1046
1129
  this.setValue();
1047
- this._trigger('changeDate');
1130
+ if (!which || which !== 'view') {
1131
+ this._trigger('changeDate');
1132
+ }
1048
1133
  var element;
1049
1134
  if (this.isInput){
1050
1135
  element = this.element;
@@ -1119,7 +1204,7 @@
1119
1204
  },
1120
1205
 
1121
1206
  keydown: function(e){
1122
- if (this.picker.is(':not(:visible)')){
1207
+ if (!this.picker.is(':visible')){
1123
1208
  if (e.keyCode === 27) // allow escape to hide and re-show picker
1124
1209
  this.show();
1125
1210
  return;
@@ -1159,7 +1244,7 @@
1159
1244
  newViewDate = new Date(focusDate);
1160
1245
  newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
1161
1246
  }
1162
- if (this.dateWithinRange(newDate)){
1247
+ if (this.dateWithinRange(newViewDate)){
1163
1248
  this.focusDate = this.viewDate = newViewDate;
1164
1249
  this.setValue();
1165
1250
  this.fill();
@@ -1187,7 +1272,7 @@
1187
1272
  newViewDate = new Date(focusDate);
1188
1273
  newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
1189
1274
  }
1190
- if (this.dateWithinRange(newDate)){
1275
+ if (this.dateWithinRange(newViewDate)){
1191
1276
  this.focusDate = this.viewDate = newViewDate;
1192
1277
  this.setValue();
1193
1278
  this.fill();
@@ -1210,6 +1295,11 @@
1210
1295
  this.fill();
1211
1296
  if (this.picker.is(':visible')){
1212
1297
  e.preventDefault();
1298
+ if (typeof e.stopPropagation === 'function') {
1299
+ e.stopPropagation(); // All modern browsers, IE9+
1300
+ } else {
1301
+ e.cancelBubble = true; // IE6,7,8 ignore "stopPropagation"
1302
+ }
1213
1303
  if (this.o.autoclose)
1214
1304
  this.hide();
1215
1305
  }
@@ -1244,9 +1334,9 @@
1244
1334
  this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
1245
1335
  }
1246
1336
  this.picker
1247
- .find('>div')
1337
+ .children('div')
1248
1338
  .hide()
1249
- .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)
1339
+ .filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)
1250
1340
  .css('display', 'block');
1251
1341
  this.updateNavArrows();
1252
1342
  }
@@ -1259,8 +1349,7 @@
1259
1349
  });
1260
1350
  delete options.inputs;
1261
1351
 
1262
- $(this.inputs)
1263
- .datepicker(options)
1352
+ datepickerPlugin.call($(this.inputs), options)
1264
1353
  .bind('changeDate', $.proxy(this.dateUpdated, this));
1265
1354
 
1266
1355
  this.pickers = $.map(this.inputs, function(i){
@@ -1294,6 +1383,8 @@
1294
1383
  var dp = $(e.target).data('datepicker'),
1295
1384
  new_date = dp.getUTCDate(),
1296
1385
  i = $.inArray(e.target, this.inputs),
1386
+ j = i - 1,
1387
+ k = i + 1,
1297
1388
  l = this.inputs.length;
1298
1389
  if (i === -1)
1299
1390
  return;
@@ -1303,16 +1394,16 @@
1303
1394
  p.setUTCDate(new_date);
1304
1395
  });
1305
1396
 
1306
- if (new_date < this.dates[i]){
1397
+ if (new_date < this.dates[j]){
1307
1398
  // Date being moved earlier/left
1308
- while (i >= 0 && new_date < this.dates[i]){
1309
- this.pickers[i--].setUTCDate(new_date);
1399
+ while (j >= 0 && new_date < this.dates[j]){
1400
+ this.pickers[j--].setUTCDate(new_date);
1310
1401
  }
1311
1402
  }
1312
- else if (new_date > this.dates[i]){
1403
+ else if (new_date > this.dates[k]){
1313
1404
  // Date being moved later/right
1314
- while (i < l && new_date > this.dates[i]){
1315
- this.pickers[i++].setUTCDate(new_date);
1405
+ while (k < l && new_date > this.dates[k]){
1406
+ this.pickers[k++].setUTCDate(new_date);
1316
1407
  }
1317
1408
  }
1318
1409
  this.updateDates();
@@ -1361,7 +1452,7 @@
1361
1452
  }
1362
1453
 
1363
1454
  var old = $.fn.datepicker;
1364
- $.fn.datepicker = function(option){
1455
+ var datepickerPlugin = function(option){
1365
1456
  var args = Array.apply(null, arguments);
1366
1457
  args.shift();
1367
1458
  var internal_return;
@@ -1376,7 +1467,7 @@
1376
1467
  locopts = opts_from_locale(xopts.language),
1377
1468
  // Options priority: js args, data-attrs, locales, defaults
1378
1469
  opts = $.extend({}, defaults, locopts, elopts, options);
1379
- if ($this.is('.input-daterange') || opts.inputs){
1470
+ if ($this.hasClass('input-daterange') || opts.inputs){
1380
1471
  var ropts = {
1381
1472
  inputs: opts.inputs || $this.find('input').toArray()
1382
1473
  };
@@ -1397,13 +1488,17 @@
1397
1488
  else
1398
1489
  return this;
1399
1490
  };
1491
+ $.fn.datepicker = datepickerPlugin;
1400
1492
 
1401
1493
  var defaults = $.fn.datepicker.defaults = {
1402
1494
  autoclose: false,
1403
1495
  beforeShowDay: $.noop,
1496
+ beforeShowMonth: $.noop,
1404
1497
  calendarWeeks: false,
1405
1498
  clearBtn: false,
1499
+ toggleActive: false,
1406
1500
  daysOfWeekDisabled: [],
1501
+ datesDisabled: [],
1407
1502
  endDate: Infinity,
1408
1503
  forceParse: true,
1409
1504
  format: 'mm/dd/yyyy',
@@ -1418,7 +1513,10 @@
1418
1513
  startView: 0,
1419
1514
  todayBtn: false,
1420
1515
  todayHighlight: false,
1421
- weekStart: 0
1516
+ weekStart: 0,
1517
+ disableTouchKeyboard: false,
1518
+ enableOnReadonly: true,
1519
+ container: 'body'
1422
1520
  };
1423
1521
  var locale_opts = $.fn.datepicker.locale_opts = [
1424
1522
  'format',
@@ -1546,7 +1644,7 @@
1546
1644
  function match_part(){
1547
1645
  var m = this.slice(0, parts[i].length),
1548
1646
  p = parts[i].slice(0, m.length);
1549
- return m === p;
1647
+ return m.toLowerCase() === p.toLowerCase();
1550
1648
  }
1551
1649
  if (parts.length === fparts.length){
1552
1650
  var cnt;
@@ -1608,9 +1706,9 @@
1608
1706
  },
1609
1707
  headTemplate: '<thead>'+
1610
1708
  '<tr>'+
1611
- '<th class="prev">&laquo;</th>'+
1709
+ '<th class="prev">&#171;</th>'+
1612
1710
  '<th colspan="5" class="datepicker-switch"></th>'+
1613
- '<th class="next">&raquo;</th>'+
1711
+ '<th class="next">&#187;</th>'+
1614
1712
  '</tr>'+
1615
1713
  '</thead>',
1616
1714
  contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
@@ -1658,6 +1756,9 @@
1658
1756
  return this;
1659
1757
  };
1660
1758
 
1759
+ /* DATEPICKER VERSION
1760
+ * =================== */
1761
+ $.fn.datepicker.version = "1.4.0";
1661
1762
 
1662
1763
  /* DATEPICKER DATA-API
1663
1764
  * ================== */
@@ -1671,11 +1772,11 @@
1671
1772
  return;
1672
1773
  e.preventDefault();
1673
1774
  // component click requires us to explicitly show it
1674
- $this.datepicker('show');
1775
+ datepickerPlugin.call($this, 'show');
1675
1776
  }
1676
1777
  );
1677
1778
  $(function(){
1678
- $('[data-provide="datepicker-inline"]').datepicker();
1779
+ datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
1679
1780
  });
1680
1781
 
1681
1782
  }(window.jQuery));
@@ -4,11 +4,11 @@
4
4
  */
5
5
  ;(function($){
6
6
  $.fn.datepicker.dates['fr'] = {
7
- days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"],
8
- daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"],
9
- daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"],
10
- months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
11
- monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Déc"],
7
+ days: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"],
8
+ daysShort: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam.", "dim."],
9
+ daysMin: ["d", "l", "ma", "me", "j", "v", "s", "d"],
10
+ months: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"],
11
+ monthsShort: ["janv.", "févr.", "mars", "avril", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."],
12
12
  today: "Aujourd'hui",
13
13
  clear: "Effacer",
14
14
  weekStart: 1,
@@ -3,13 +3,13 @@
3
3
  * Lytay TOUCH <lytaytouch@gmail.com>
4
4
  */
5
5
  ;(function($){
6
- $.fn.datepicker.dates['kh'] = {
7
- days: ["អាទិត្យ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រហស្បតិ៍", "សុក្រ", "សៅរ៍", "អាទិត្យ"],
8
- daysShort: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍", "អារ.ទិ"],
9
- daysMin: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍", "អារ.ទិ"],
10
- months: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
11
- monthsShort: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
12
- today: "ថ្ងៃនេះ",
13
- clear: "សំអាត"
14
- };
6
+ $.fn.datepicker.dates['kh'] = {
7
+ days: ["អាទិត្យ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រហស្បតិ៍", "សុក្រ", "សៅរ៍", "អាទិត្យ"],
8
+ daysShort: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍", "អា.ទិ"],
9
+ daysMin: ["អា.ទិ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រ.ហ", "សុក្រ", "សៅរ៍", "អា.ទិ"],
10
+ months: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
11
+ monthsShort: ["មករា", "កុម្ភះ", "មិនា", "មេសា", "ឧសភា", "មិថុនា", "កក្កដា", "សីហា", "កញ្ញា", "តុលា", "វិច្ឆិកា", "ធ្នូ"],
12
+ today: "ថ្ងៃនេះ",
13
+ clear: "សំអាត"
14
+ };
15
15
  }(jQuery));
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Montenegrin translation for bootstrap-datepicker
3
+ * Miodrag Nikač <miodrag@restartit.me>
4
+ */
5
+ ;(function($){
6
+ $.fn.datepicker.dates['me'] = {
7
+ days: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota", "Nedjelja"],
8
+ daysShort: ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub", "Ned"],
9
+ daysMin: ["Ne", "Po", "Ut", "Sr", "Če", "Pe", "Su", "Ne"],
10
+ months: ["Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"],
11
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
12
+ today: "Danas",
13
+ weekStart: 1,
14
+ clear: "Izbriši",
15
+ format: "dd.mm.yyyy"
16
+ };
17
+ }(jQuery));
@@ -4,11 +4,11 @@
4
4
  */
5
5
  ;(function($){
6
6
  $.fn.datepicker.dates['nl-BE'] = {
7
- days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"],
8
- daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
9
- daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
10
- months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
11
- monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
7
+ days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag"],
8
+ daysShort: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
9
+ daysMin: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
10
+ months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
11
+ monthsShort: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
12
12
  today: "Vandaag",
13
13
  clear: "Leegmaken",
14
14
  weekStart: 1,
@@ -4,11 +4,11 @@
4
4
  */
5
5
  ;(function($){
6
6
  $.fn.datepicker.dates['nl'] = {
7
- days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"],
8
- daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
9
- daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
10
- months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
11
- monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
7
+ days: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag", "zondag"],
8
+ daysShort: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
9
+ daysMin: ["zo", "ma", "di", "wo", "do", "vr", "za", "zo"],
10
+ months: ["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"],
11
+ monthsShort: ["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
12
12
  today: "Vandaag",
13
13
  clear: "Wissen",
14
14
  weekStart: 1,
@@ -10,6 +10,8 @@
10
10
  months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
11
11
  monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
12
12
  today: "Bugün",
13
+ clear: "Temizle",
14
+ weekStart: 1,
13
15
  format: "dd.mm.yyyy"
14
16
  };
15
17
  }(jQuery));
@@ -10,6 +10,8 @@
10
10
  months: ["Cічень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"],
11
11
  monthsShort: ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру"],
12
12
  today: "Сьогодні",
13
+ clear: "Очистити",
14
+ format: "dd.mm.yyyy",
13
15
  weekStart: 1
14
16
  };
15
17
  }(jQuery));
@@ -1,11 +1,9 @@
1
1
  /*!
2
- * Datepicker for Bootstrap
2
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
3
3
  *
4
4
  * Copyright 2012 Stefan Petre
5
5
  * Improvements by Andrew Rowls
6
- * Licensed under the Apache License v2.0
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
6
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
9
7
  */
10
8
  .datepicker {
11
9
  padding: 4px;
@@ -77,13 +75,9 @@
77
75
  .datepicker > div {
78
76
  display: none;
79
77
  }
80
- .datepicker.days div.datepicker-days {
81
- display: block;
82
- }
83
- .datepicker.months div.datepicker-months {
84
- display: block;
85
- }
86
- .datepicker.years div.datepicker-years {
78
+ .datepicker.days .datepicker-days,
79
+ .datepicker.months .datepicker-months,
80
+ .datepicker.years .datepicker-years {
87
81
  display: block;
88
82
  }
89
83
  .datepicker table {
@@ -419,7 +413,7 @@
419
413
  .datepicker table tr td span.new {
420
414
  color: #999999;
421
415
  }
422
- .datepicker th.datepicker-switch {
416
+ .datepicker .datepicker-switch {
423
417
  width: 145px;
424
418
  }
425
419
  .datepicker thead tr:first-child th,
@@ -436,15 +430,17 @@
436
430
  padding: 0 2px 0 5px;
437
431
  vertical-align: middle;
438
432
  }
439
- .datepicker thead tr:first-child th.cw {
433
+ .datepicker thead tr:first-child .cw {
440
434
  cursor: default;
441
435
  background-color: transparent;
442
436
  }
437
+ .input-append.date .add-on,
438
+ .input-prepend.date .add-on {
439
+ cursor: pointer;
440
+ }
443
441
  .input-append.date .add-on i,
444
442
  .input-prepend.date .add-on i {
445
- cursor: pointer;
446
- width: 16px;
447
- height: 16px;
443
+ margin-top: 3px;
448
444
  }
449
445
  .input-daterange input {
450
446
  text-align: center;
@@ -463,10 +459,10 @@
463
459
  display: inline-block;
464
460
  width: auto;
465
461
  min-width: 16px;
466
- height: 20px;
462
+ height: 18px;
467
463
  padding: 4px 5px;
468
464
  font-weight: normal;
469
- line-height: 20px;
465
+ line-height: 18px;
470
466
  text-align: center;
471
467
  text-shadow: 0 1px 0 #ffffff;
472
468
  vertical-align: middle;
@@ -475,36 +471,3 @@
475
471
  margin-left: -5px;
476
472
  margin-right: -5px;
477
473
  }
478
- .datepicker.dropdown-menu {
479
- position: absolute;
480
- top: 100%;
481
- left: 0;
482
- z-index: 1000;
483
- float: left;
484
- display: none;
485
- min-width: 160px;
486
- list-style: none;
487
- background-color: #ffffff;
488
- border: 1px solid #ccc;
489
- border: 1px solid rgba(0, 0, 0, 0.2);
490
- -webkit-border-radius: 5px;
491
- -moz-border-radius: 5px;
492
- border-radius: 5px;
493
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
494
- -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
495
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
496
- -webkit-background-clip: padding-box;
497
- -moz-background-clip: padding;
498
- background-clip: padding-box;
499
- *border-right-width: 2px;
500
- *border-bottom-width: 2px;
501
- color: #333333;
502
- font-size: 13px;
503
- line-height: 20px;
504
- }
505
- .datepicker.dropdown-menu th,
506
- .datepicker.datepicker-inline th,
507
- .datepicker.dropdown-menu td,
508
- .datepicker.datepicker-inline td {
509
- padding: 4px 5px;
510
- }
@@ -1,11 +1,9 @@
1
1
  /*!
2
- * Datepicker for Bootstrap
2
+ * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker)
3
3
  *
4
4
  * Copyright 2012 Stefan Petre
5
5
  * Improvements by Andrew Rowls
6
- * Licensed under the Apache License v2.0
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
6
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
9
7
  */
10
8
  .datepicker {
11
9
  padding: 4px;
@@ -75,13 +73,9 @@
75
73
  .datepicker > div {
76
74
  display: none;
77
75
  }
78
- .datepicker.days div.datepicker-days {
79
- display: block;
80
- }
81
- .datepicker.months div.datepicker-months {
82
- display: block;
83
- }
84
- .datepicker.years div.datepicker-years {
76
+ .datepicker.days .datepicker-days,
77
+ .datepicker.months .datepicker-months,
78
+ .datepicker.years .datepicker-years {
85
79
  display: block;
86
80
  }
87
81
  .datepicker table {
@@ -705,7 +699,7 @@ fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
705
699
  .datepicker table tr td span.new {
706
700
  color: #999999;
707
701
  }
708
- .datepicker th.datepicker-switch {
702
+ .datepicker .datepicker-switch {
709
703
  width: 145px;
710
704
  }
711
705
  .datepicker thead tr:first-child th,
@@ -722,13 +716,16 @@ fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
722
716
  padding: 0 2px 0 5px;
723
717
  vertical-align: middle;
724
718
  }
725
- .datepicker thead tr:first-child th.cw {
719
+ .datepicker thead tr:first-child .cw {
726
720
  cursor: default;
727
721
  background-color: transparent;
728
722
  }
729
- .input-group.date .input-group-addon i {
723
+ .input-group.date .input-group-addon {
730
724
  cursor: pointer;
731
725
  }
726
+ .input-daterange {
727
+ width: 100%;
728
+ }
732
729
  .input-daterange input {
733
730
  text-align: center;
734
731
  }
@@ -753,34 +750,3 @@ fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
753
750
  margin-left: -5px;
754
751
  margin-right: -5px;
755
752
  }
756
- .datepicker.dropdown-menu {
757
- position: absolute;
758
- top: 100%;
759
- left: 0;
760
- z-index: 1000;
761
- float: left;
762
- display: none;
763
- min-width: 160px;
764
- list-style: none;
765
- background-color: #ffffff;
766
- border: 1px solid #ccc;
767
- border: 1px solid rgba(0, 0, 0, 0.2);
768
- border-radius: 5px;
769
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
770
- -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
771
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
772
- -webkit-background-clip: padding-box;
773
- -moz-background-clip: padding;
774
- background-clip: padding-box;
775
- *border-right-width: 2px;
776
- *border-bottom-width: 2px;
777
- color: #333333;
778
- font-size: 13px;
779
- line-height: 1.42857143;
780
- }
781
- .datepicker.dropdown-menu th,
782
- .datepicker.datepicker-inline th,
783
- .datepicker.dropdown-menu td,
784
- .datepicker.datepicker-inline td {
785
- padding: 0px 5px;
786
- }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-datepicker-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gonzalo Rodríguez-Baltanás Díaz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-19 00:00:00.000000000 Z
11
+ date: 2015-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -133,6 +133,7 @@ files:
133
133
  - vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.kr.js
134
134
  - vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.lt.js
135
135
  - vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.lv.js
136
+ - vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.me.js
136
137
  - vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.mk.js
137
138
  - vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.ms.js
138
139
  - vendor/assets/javascripts/bootstrap-datepicker/locales/bootstrap-datepicker.nb.js
@@ -182,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
183
  version: '0'
183
184
  requirements: []
184
185
  rubyforge_project:
185
- rubygems_version: 2.4.3
186
+ rubygems_version: 2.4.5
186
187
  signing_key:
187
188
  specification_version: 4
188
189
  summary: A date picker for Twitter Bootstrap