bootstrap-datepicker-rails 1.3.1.1 → 1.4.0

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.
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