bootstrap-datepicker-rails 0.6.16 → 0.6.17
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.
data/README.md
CHANGED
@@ -73,6 +73,10 @@ $(document).on("focus", "[data-behaviour~='datepicker']", function(e){
|
|
73
73
|
|
74
74
|
```
|
75
75
|
|
76
|
+
Here is a live example:
|
77
|
+
|
78
|
+
http://jsfiddle.net/2Gg5k/43/
|
79
|
+
|
76
80
|
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)
|
77
81
|
|
78
82
|
## Questions? Bugs?
|
@@ -20,6 +20,10 @@
|
|
20
20
|
|
21
21
|
!function( $ ) {
|
22
22
|
|
23
|
+
function UTCDate(){
|
24
|
+
return new Date(Date.UTC.apply(Date, arguments));
|
25
|
+
}
|
26
|
+
|
23
27
|
// Picker object
|
24
28
|
|
25
29
|
var Datepicker = function(element, options){
|
@@ -248,35 +252,34 @@
|
|
248
252
|
|
249
253
|
fill: function() {
|
250
254
|
var d = new Date(this.viewDate),
|
251
|
-
year = d.
|
252
|
-
month = d.
|
253
|
-
startYear = this.startDate !== -Infinity ? this.startDate.
|
254
|
-
startMonth = this.startDate !== -Infinity ? this.startDate.
|
255
|
-
endYear = this.endDate !== Infinity ? this.endDate.
|
256
|
-
endMonth = this.endDate !== Infinity ? this.endDate.
|
255
|
+
year = d.getUTCFullYear(),
|
256
|
+
month = d.getUTCMonth(),
|
257
|
+
startYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,
|
258
|
+
startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,
|
259
|
+
endYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,
|
260
|
+
endMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,
|
257
261
|
currentDate = this.date.valueOf();
|
258
262
|
this.picker.find('.datepicker-days th:eq(1)')
|
259
263
|
.text(dates[this.language].months[month]+' '+year);
|
260
264
|
this.updateNavArrows();
|
261
265
|
this.fillMonths();
|
262
|
-
var prevMonth =
|
263
|
-
day = DPGlobal.getDaysInMonth(prevMonth.
|
264
|
-
|
265
|
-
prevMonth.
|
266
|
-
prevMonth.setDate(day - (prevMonth.getDay() - this.weekStart + 7)%7);
|
266
|
+
var prevMonth = UTCDate(year, month-1, 28,0,0,0,0),
|
267
|
+
day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
|
268
|
+
prevMonth.setUTCDate(day);
|
269
|
+
prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7)%7);
|
267
270
|
var nextMonth = new Date(prevMonth);
|
268
|
-
nextMonth.
|
271
|
+
nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
|
269
272
|
nextMonth = nextMonth.valueOf();
|
270
273
|
var html = [];
|
271
274
|
var clsName;
|
272
275
|
while(prevMonth.valueOf() < nextMonth) {
|
273
|
-
if (prevMonth.
|
276
|
+
if (prevMonth.getUTCDay() == this.weekStart) {
|
274
277
|
html.push('<tr>');
|
275
278
|
}
|
276
279
|
clsName = '';
|
277
|
-
if (prevMonth.
|
280
|
+
if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {
|
278
281
|
clsName += ' old';
|
279
|
-
} else if (prevMonth.
|
282
|
+
} else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {
|
280
283
|
clsName += ' new';
|
281
284
|
}
|
282
285
|
if (prevMonth.valueOf() == currentDate) {
|
@@ -285,45 +288,14 @@
|
|
285
288
|
if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate) {
|
286
289
|
clsName += ' disabled';
|
287
290
|
}
|
288
|
-
|
289
|
-
if (
|
290
|
-
html.push('<td class="day'+clsName+'">'+date+ '</td>');
|
291
|
-
if (prevMonth.getDay() == this.weekEnd) {
|
291
|
+
html.push('<td class="day'+clsName+'">'+prevMonth.getUTCDate() + '</td>');
|
292
|
+
if (prevMonth.getUTCDay() == this.weekEnd) {
|
292
293
|
html.push('</tr>');
|
293
294
|
}
|
294
|
-
|
295
|
-
prevMonth.setDate(prevMonth.getDate()+1);
|
296
|
-
if (prevMonth.getHours() != 0) {
|
297
|
-
// Fix for DST bug: if we are no longer at start of day, a DST jump probably happened
|
298
|
-
// We either fell back (eg, Jan 1 00:00 -> Jan 1 23:00)
|
299
|
-
// or jumped forward (eg, Jan 1 00:00 -> Jan 2 01:00)
|
300
|
-
// Unfortunately, I can think of no way to test this in the unit tests, as it depends
|
301
|
-
// on the TZ of the client system.
|
302
|
-
if (!dstDay) {
|
303
|
-
// We are not currently handling a dst day (next round will deal with it)
|
304
|
-
if (prevMonth.getDate() == prevDate)
|
305
|
-
// We must compensate for fall-back
|
306
|
-
dstDay = -1;
|
307
|
-
else
|
308
|
-
// We must compensate for a jump-ahead
|
309
|
-
dstDay = +1;
|
310
|
-
}
|
311
|
-
else {
|
312
|
-
// The last round was our dst day (hours are still non-zero)
|
313
|
-
if (dstDay == -1)
|
314
|
-
// For a fall-back, fast-forward to next midnight
|
315
|
-
prevMonth.setHours(24);
|
316
|
-
else
|
317
|
-
// For a jump-ahead, just reset to 0
|
318
|
-
prevMonth.setHours(0);
|
319
|
-
// Reset minutes, as some TZs may be off by portions of an hour
|
320
|
-
prevMonth.setMinutes(0);
|
321
|
-
dstDay = 0;
|
322
|
-
}
|
323
|
-
}
|
295
|
+
prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
|
324
296
|
}
|
325
297
|
this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
|
326
|
-
var currentYear = this.date.
|
298
|
+
var currentYear = this.date.getUTCFullYear();
|
327
299
|
|
328
300
|
var months = this.picker.find('.datepicker-months')
|
329
301
|
.find('th:eq(1)')
|
@@ -331,7 +303,7 @@
|
|
331
303
|
.end()
|
332
304
|
.find('span').removeClass('active');
|
333
305
|
if (currentYear == year) {
|
334
|
-
months.eq(this.date.
|
306
|
+
months.eq(this.date.getUTCMonth()).addClass('active');
|
335
307
|
}
|
336
308
|
if (year < startYear || year > endYear) {
|
337
309
|
months.addClass('disabled');
|
@@ -360,16 +332,16 @@
|
|
360
332
|
|
361
333
|
updateNavArrows: function() {
|
362
334
|
var d = new Date(this.viewDate),
|
363
|
-
year = d.
|
364
|
-
month = d.
|
335
|
+
year = d.getUTCFullYear(),
|
336
|
+
month = d.getUTCMonth();
|
365
337
|
switch (this.viewMode) {
|
366
338
|
case 0:
|
367
|
-
if (this.startDate !== -Infinity && year <= this.startDate.
|
339
|
+
if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth()) {
|
368
340
|
this.picker.find('.prev').css({visibility: 'hidden'});
|
369
341
|
} else {
|
370
342
|
this.picker.find('.prev').css({visibility: 'visible'});
|
371
343
|
}
|
372
|
-
if (this.endDate !== Infinity && year >= this.endDate.
|
344
|
+
if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth()) {
|
373
345
|
this.picker.find('.next').css({visibility: 'hidden'});
|
374
346
|
} else {
|
375
347
|
this.picker.find('.next').css({visibility: 'visible'});
|
@@ -377,12 +349,12 @@
|
|
377
349
|
break;
|
378
350
|
case 1:
|
379
351
|
case 2:
|
380
|
-
if (this.startDate !== -Infinity && year <= this.startDate.
|
352
|
+
if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {
|
381
353
|
this.picker.find('.prev').css({visibility: 'hidden'});
|
382
354
|
} else {
|
383
355
|
this.picker.find('.prev').css({visibility: 'visible'});
|
384
356
|
}
|
385
|
-
if (this.endDate !== Infinity && year >= this.endDate.
|
357
|
+
if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {
|
386
358
|
this.picker.find('.next').css({visibility: 'hidden'});
|
387
359
|
} else {
|
388
360
|
this.picker.find('.next').css({visibility: 'visible'});
|
@@ -420,17 +392,17 @@
|
|
420
392
|
break;
|
421
393
|
case 'span':
|
422
394
|
if (!target.is('.disabled')) {
|
423
|
-
this.viewDate.
|
395
|
+
this.viewDate.setUTCDate(1);
|
424
396
|
if (target.is('.month')) {
|
425
397
|
var month = target.parent().find('span').index(target);
|
426
|
-
this.viewDate.
|
398
|
+
this.viewDate.setUTCMonth(month);
|
427
399
|
this.element.trigger({
|
428
400
|
type: 'changeMonth',
|
429
401
|
date: this.viewDate
|
430
402
|
});
|
431
403
|
} else {
|
432
404
|
var year = parseInt(target.text(), 10)||0;
|
433
|
-
this.viewDate.
|
405
|
+
this.viewDate.setUTCFullYear(year);
|
434
406
|
this.element.trigger({
|
435
407
|
type: 'changeYear',
|
436
408
|
date: this.viewDate
|
@@ -443,8 +415,8 @@
|
|
443
415
|
case 'td':
|
444
416
|
if (target.is('.day') && !target.is('.disabled')){
|
445
417
|
var day = parseInt(target.text(), 10)||1;
|
446
|
-
var year = this.viewDate.
|
447
|
-
month = this.viewDate.
|
418
|
+
var year = this.viewDate.getUTCFullYear(),
|
419
|
+
month = this.viewDate.getUTCMonth();
|
448
420
|
if (target.is('.old')) {
|
449
421
|
if (month == 0) {
|
450
422
|
month = 11;
|
@@ -460,8 +432,8 @@
|
|
460
432
|
month += 1;
|
461
433
|
}
|
462
434
|
}
|
463
|
-
this.date =
|
464
|
-
this.viewDate =
|
435
|
+
this.date = UTCDate(year, month, day,0,0,0,0);
|
436
|
+
this.viewDate = UTCDate(year, month, day,0,0,0,0);
|
465
437
|
this.fill();
|
466
438
|
this.setValue();
|
467
439
|
this.element.trigger({
|
@@ -494,8 +466,8 @@
|
|
494
466
|
moveMonth: function(date, dir){
|
495
467
|
if (!dir) return date;
|
496
468
|
var new_date = new Date(date.valueOf()),
|
497
|
-
day = new_date.
|
498
|
-
month = new_date.
|
469
|
+
day = new_date.getUTCDate(),
|
470
|
+
month = new_date.getUTCMonth(),
|
499
471
|
mag = Math.abs(dir),
|
500
472
|
new_month, test;
|
501
473
|
dir = dir > 0 ? 1 : -1;
|
@@ -503,12 +475,12 @@
|
|
503
475
|
test = dir == -1
|
504
476
|
// If going back one month, make sure month is not current month
|
505
477
|
// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
|
506
|
-
? function(){ return new_date.
|
478
|
+
? function(){ return new_date.getUTCMonth() == month; }
|
507
479
|
// If going forward one month, make sure month is as expected
|
508
480
|
// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
|
509
|
-
: function(){ return new_date.
|
481
|
+
: function(){ return new_date.getUTCMonth() != new_month; };
|
510
482
|
new_month = month + dir;
|
511
|
-
new_date.
|
483
|
+
new_date.setUTCMonth(new_month);
|
512
484
|
// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
|
513
485
|
if (new_month < 0 || new_month > 11)
|
514
486
|
new_month = (new_month + 12) % 12;
|
@@ -518,15 +490,15 @@
|
|
518
490
|
// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
|
519
491
|
new_date = this.moveMonth(new_date, dir);
|
520
492
|
// ...then reset the day, keeping it in the new month
|
521
|
-
new_month = new_date.
|
522
|
-
new_date.
|
523
|
-
test = function(){ return new_month != new_date.
|
493
|
+
new_month = new_date.getUTCMonth();
|
494
|
+
new_date.setUTCDate(day);
|
495
|
+
test = function(){ return new_month != new_date.getUTCMonth(); };
|
524
496
|
}
|
525
497
|
// Common date-resetting loop -- if date is beyond end of month, make it
|
526
498
|
// end of month
|
527
499
|
while (test()){
|
528
|
-
new_date.
|
529
|
-
new_date.
|
500
|
+
new_date.setUTCDate(--day);
|
501
|
+
new_date.setUTCMonth(new_month);
|
530
502
|
}
|
531
503
|
return new_date;
|
532
504
|
},
|
@@ -565,9 +537,9 @@
|
|
565
537
|
newViewDate = this.moveMonth(this.viewDate, dir);
|
566
538
|
} else {
|
567
539
|
newDate = new Date(this.date);
|
568
|
-
newDate.
|
540
|
+
newDate.setUTCDate(this.date.getUTCDate() + dir);
|
569
541
|
newViewDate = new Date(this.viewDate);
|
570
|
-
newViewDate.
|
542
|
+
newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir);
|
571
543
|
}
|
572
544
|
if (this.dateWithinRange(newDate)){
|
573
545
|
this.date = newDate;
|
@@ -590,9 +562,9 @@
|
|
590
562
|
newViewDate = this.moveMonth(this.viewDate, dir);
|
591
563
|
} else {
|
592
564
|
newDate = new Date(this.date);
|
593
|
-
newDate.
|
565
|
+
newDate.setUTCDate(this.date.getUTCDate() + dir * 7);
|
594
566
|
newViewDate = new Date(this.viewDate);
|
595
|
-
newViewDate.
|
567
|
+
newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir * 7);
|
596
568
|
}
|
597
569
|
if (this.dateWithinRange(newDate)){
|
598
570
|
this.date = newDate;
|
@@ -710,43 +682,43 @@
|
|
710
682
|
dir = parseInt(part[1]);
|
711
683
|
switch(part[2]){
|
712
684
|
case 'd':
|
713
|
-
date.
|
685
|
+
date.setUTCDate(date.getUTCDate() + dir);
|
714
686
|
break;
|
715
687
|
case 'm':
|
716
688
|
date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
|
717
689
|
break;
|
718
690
|
case 'w':
|
719
|
-
date.
|
691
|
+
date.setUTCDate(date.getUTCDate() + dir * 7);
|
720
692
|
break;
|
721
693
|
case 'y':
|
722
694
|
date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
|
723
695
|
break;
|
724
696
|
}
|
725
697
|
}
|
726
|
-
return
|
698
|
+
return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
|
727
699
|
}
|
728
700
|
var parts = date && date.match(this.nonpunctuation) || [],
|
729
701
|
date = new Date(),
|
730
702
|
parsed = {},
|
731
703
|
setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
|
732
704
|
setters_map = {
|
733
|
-
yyyy: function(d,v){ return d.
|
734
|
-
yy: function(d,v){ return d.
|
705
|
+
yyyy: function(d,v){ return d.setUTCFullYear(v); },
|
706
|
+
yy: function(d,v){ return d.setUTCFullYear(2000+v); },
|
735
707
|
m: function(d,v){
|
736
708
|
v -= 1;
|
737
709
|
while (v<0) v += 12;
|
738
710
|
v %= 12;
|
739
|
-
d.
|
740
|
-
while (d.
|
741
|
-
d.
|
711
|
+
d.setUTCMonth(v);
|
712
|
+
while (d.getUTCMonth() != v)
|
713
|
+
d.setUTCDate(d.getUTCDate()-1);
|
742
714
|
return d;
|
743
715
|
},
|
744
|
-
d: function(d,v){ return d.
|
716
|
+
d: function(d,v){ return d.setUTCDate(v); }
|
745
717
|
},
|
746
718
|
val, filtered, part;
|
747
719
|
setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
|
748
720
|
setters_map['dd'] = setters_map['d'];
|
749
|
-
date =
|
721
|
+
date = UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
|
750
722
|
if (parts.length == format.parts.length) {
|
751
723
|
for (var i=0, cnt = format.parts.length; i < cnt; i++) {
|
752
724
|
val = parseInt(parts[i], 10);
|
@@ -783,12 +755,12 @@
|
|
783
755
|
},
|
784
756
|
formatDate: function(date, format, language){
|
785
757
|
var val = {
|
786
|
-
d: date.
|
787
|
-
m: date.
|
788
|
-
M: dates[language].monthsShort[date.
|
789
|
-
MM: dates[language].months[date.
|
790
|
-
yy: date.
|
791
|
-
yyyy: date.
|
758
|
+
d: date.getUTCDate(),
|
759
|
+
m: date.getUTCMonth() + 1,
|
760
|
+
M: dates[language].monthsShort[date.getUTCMonth()],
|
761
|
+
MM: dates[language].months[date.getUTCMonth()],
|
762
|
+
yy: date.getUTCFullYear().toString().substring(2),
|
763
|
+
yyyy: date.getUTCFullYear()
|
792
764
|
};
|
793
765
|
val.dd = (val.d < 10 ? '0' : '') + val.d;
|
794
766
|
val.mm = (val.m < 10 ? '0' : '') + val.m;
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap-datepicker-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.17
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -118,7 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
118
|
version: '0'
|
119
119
|
segments:
|
120
120
|
- 0
|
121
|
-
hash:
|
121
|
+
hash: 2859334882354847738
|
122
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
123
|
none: false
|
124
124
|
requirements:
|
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
127
|
version: '0'
|
128
128
|
segments:
|
129
129
|
- 0
|
130
|
-
hash:
|
130
|
+
hash: 2859334882354847738
|
131
131
|
requirements: []
|
132
132
|
rubyforge_project:
|
133
133
|
rubygems_version: 1.8.24
|