bootstrap-daterangepicker-rails 0.1.2 → 0.1.3
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 059447fff851eed85759905810971d1607b496ee
|
4
|
+
data.tar.gz: 920a8fc2a0e5840151267b848437b1ad2688c2ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4d43f429ef43c9c3a132e42e978587677c6b7592ec48cdb4f448232ca643e4488c93736ad5a55abcc8484c7c3359b5d9550c3dae356e13a514d4e79515b2bb4
|
7
|
+
data.tar.gz: 2888774e20022cd74de920ccd57929daa21a21b63435e1cebccd4f051ffdfac8e919c3e1b5f8ab1fa71ac55dd84719a010beb489c2f8febddc04de5c7931c348
|
@@ -1,36 +1,36 @@
|
|
1
1
|
/**
|
2
|
-
* @version: 2.1.
|
3
|
-
* @author: Dan Grossman http://www.dangrossman.info/
|
4
|
-
* @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved.
|
5
|
-
* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
|
6
|
-
* @website: https://www.improvely.com/
|
7
|
-
*/
|
2
|
+
* @version: 2.1.17
|
3
|
+
* @author: Dan Grossman http://www.dangrossman.info/
|
4
|
+
* @copyright: Copyright (c) 2012-2015 Dan Grossman. All rights reserved.
|
5
|
+
* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
|
6
|
+
* @website: https://www.improvely.com/
|
7
|
+
*/
|
8
8
|
|
9
9
|
(function(root, factory) {
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
11
|
+
if (typeof define === 'function' && define.amd) {
|
12
|
+
define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) {
|
13
|
+
root.daterangepicker = factory(root, exports, momentjs, $);
|
14
|
+
});
|
15
|
+
|
16
|
+
} else if (typeof exports !== 'undefined') {
|
17
|
+
var momentjs = require('moment');
|
18
|
+
var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; //isomorphic issue
|
19
|
+
if (!jQuery) {
|
20
|
+
try {
|
21
|
+
jQuery = require('jquery');
|
22
|
+
if (!jQuery.fn) jQuery.fn = {}; //isomorphic issue
|
23
|
+
} catch (err) {
|
24
|
+
if (!jQuery) throw new Error('jQuery dependency not found');
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
factory(root, exports, momentjs, jQuery);
|
29
|
+
|
30
|
+
// Finally, as a browser global.
|
31
|
+
} else {
|
32
|
+
root.daterangepicker = factory(root, {}, root.moment || moment, (root.jQuery || root.Zepto || root.ender || root.$));
|
33
|
+
}
|
34
34
|
|
35
35
|
}(this || {}, function(root, daterangepicker, moment, $) { // 'this' doesn't exist on a server
|
36
36
|
|
@@ -99,34 +99,34 @@
|
|
99
99
|
if (typeof options.template !== 'string')
|
100
100
|
options.template = '<div class="daterangepicker dropdown-menu">' +
|
101
101
|
'<div class="calendar left">' +
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
102
|
+
'<div class="daterangepicker_input">' +
|
103
|
+
'<input class="input-mini" type="text" name="daterangepicker_start" value="" />' +
|
104
|
+
'<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
|
105
|
+
'<div class="calendar-time">' +
|
106
|
+
'<div></div>' +
|
107
|
+
'<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
|
108
|
+
'</div>' +
|
109
|
+
'</div>' +
|
110
|
+
'<div class="calendar-table"></div>' +
|
111
111
|
'</div>' +
|
112
112
|
'<div class="calendar right">' +
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
113
|
+
'<div class="daterangepicker_input">' +
|
114
|
+
'<input class="input-mini" type="text" name="daterangepicker_end" value="" />' +
|
115
|
+
'<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' +
|
116
|
+
'<div class="calendar-time">' +
|
117
|
+
'<div></div>' +
|
118
|
+
'<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' +
|
119
|
+
'</div>' +
|
120
|
+
'</div>' +
|
121
|
+
'<div class="calendar-table"></div>' +
|
122
122
|
'</div>' +
|
123
123
|
'<div class="ranges">' +
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
'</div>' +
|
124
|
+
'<div class="range_inputs">' +
|
125
|
+
'<button class="applyBtn" disabled="disabled" type="button"></button> ' +
|
126
|
+
'<button class="cancelBtn" type="button"></button>' +
|
128
127
|
'</div>' +
|
129
|
-
|
128
|
+
'</div>' +
|
129
|
+
'</div>';
|
130
130
|
|
131
131
|
this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);
|
132
132
|
this.container = $(options.template).appendTo(this.parentEl);
|
@@ -147,22 +147,22 @@
|
|
147
147
|
this.locale.daysOfWeek = options.locale.daysOfWeek.slice();
|
148
148
|
|
149
149
|
if (typeof options.locale.monthNames === 'object')
|
150
|
-
|
150
|
+
this.locale.monthNames = options.locale.monthNames.slice();
|
151
151
|
|
152
152
|
if (typeof options.locale.firstDay === 'number')
|
153
|
-
|
153
|
+
this.locale.firstDay = options.locale.firstDay;
|
154
154
|
|
155
155
|
if (typeof options.locale.applyLabel === 'string')
|
156
|
-
|
156
|
+
this.locale.applyLabel = options.locale.applyLabel;
|
157
157
|
|
158
158
|
if (typeof options.locale.cancelLabel === 'string')
|
159
|
-
|
159
|
+
this.locale.cancelLabel = options.locale.cancelLabel;
|
160
160
|
|
161
161
|
if (typeof options.locale.weekLabel === 'string')
|
162
|
-
|
162
|
+
this.locale.weekLabel = options.locale.weekLabel;
|
163
163
|
|
164
164
|
if (typeof options.locale.customRangeLabel === 'string')
|
165
|
-
|
165
|
+
this.locale.customRangeLabel = options.locale.customRangeLabel;
|
166
166
|
|
167
167
|
}
|
168
168
|
|
@@ -317,7 +317,12 @@
|
|
317
317
|
if ((this.minDate && end.isBefore(this.minDate)) || (maxDate && start.isAfter(maxDate)))
|
318
318
|
continue;
|
319
319
|
|
320
|
-
|
320
|
+
//Support unicode chars in the range names.
|
321
|
+
var elem = document.createElement('textarea');
|
322
|
+
elem.innerHTML = range;
|
323
|
+
var rangeHtml = elem.value;
|
324
|
+
|
325
|
+
this.ranges[rangeHtml] = [start, end];
|
321
326
|
}
|
322
327
|
|
323
328
|
var list = '<ul>';
|
@@ -483,6 +488,8 @@
|
|
483
488
|
if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))
|
484
489
|
this.endDate = this.startDate.clone().add(this.dateLimit);
|
485
490
|
|
491
|
+
this.previousRightTime = this.endDate.clone();
|
492
|
+
|
486
493
|
if (!this.isShowing)
|
487
494
|
this.updateElement();
|
488
495
|
|
@@ -523,7 +530,7 @@
|
|
523
530
|
(this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
|
524
531
|
&&
|
525
532
|
(this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))
|
526
|
-
|
533
|
+
) {
|
527
534
|
return;
|
528
535
|
}
|
529
536
|
|
@@ -562,7 +569,7 @@
|
|
562
569
|
minute = parseInt(this.container.find('.right .minuteselect').val(), 10);
|
563
570
|
second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;
|
564
571
|
if (!this.timePicker24Hour) {
|
565
|
-
var ampm = this.container.find('.
|
572
|
+
var ampm = this.container.find('.right .ampmselect').val();
|
566
573
|
if (ampm === 'PM' && hour < 12)
|
567
574
|
hour += 12;
|
568
575
|
if (ampm === 'AM' && hour === 12)
|
@@ -839,8 +846,32 @@
|
|
839
846
|
selected = this.startDate.clone();
|
840
847
|
minDate = this.minDate;
|
841
848
|
} else if (side == 'right') {
|
842
|
-
selected = this.endDate ? this.endDate.clone() : this.
|
849
|
+
selected = this.endDate ? this.endDate.clone() : this.previousRightTime.clone();
|
843
850
|
minDate = this.startDate;
|
851
|
+
|
852
|
+
//Preserve the time already selected
|
853
|
+
var timeSelector = this.container.find('.calendar.right .calendar-time div');
|
854
|
+
if (timeSelector.html() != '') {
|
855
|
+
|
856
|
+
selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());
|
857
|
+
selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());
|
858
|
+
selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());
|
859
|
+
|
860
|
+
if (!this.timePicker24Hour) {
|
861
|
+
var ampm = timeSelector.find('.ampmselect option:selected').val();
|
862
|
+
if (ampm === 'PM' && selected.hour() < 12)
|
863
|
+
selected.hour(selected.hour() + 12);
|
864
|
+
if (ampm === 'AM' && selected.hour() === 12)
|
865
|
+
selected.hour(0);
|
866
|
+
}
|
867
|
+
|
868
|
+
if (selected.isBefore(this.startDate))
|
869
|
+
selected = this.startDate.clone();
|
870
|
+
|
871
|
+
if (selected.isAfter(maxDate))
|
872
|
+
selected = maxDate.clone();
|
873
|
+
|
874
|
+
}
|
844
875
|
}
|
845
876
|
|
846
877
|
//
|
@@ -1012,7 +1043,7 @@
|
|
1012
1043
|
this.container.css({
|
1013
1044
|
top: containerTop,
|
1014
1045
|
left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2
|
1015
|
-
|
1046
|
+
- this.container.outerWidth() / 2,
|
1016
1047
|
right: 'auto'
|
1017
1048
|
});
|
1018
1049
|
if (this.container.offset().left < 0) {
|
@@ -1041,18 +1072,23 @@
|
|
1041
1072
|
|
1042
1073
|
// Create a click proxy that is private to this instance of datepicker, for unbinding
|
1043
1074
|
this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);
|
1075
|
+
|
1044
1076
|
// Bind global datepicker mousedown for hiding and
|
1045
1077
|
$(document)
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1078
|
+
.on('mousedown.daterangepicker', this._outsideClickProxy)
|
1079
|
+
// also support mobile devices
|
1080
|
+
.on('touchend.daterangepicker', this._outsideClickProxy)
|
1081
|
+
// also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them
|
1082
|
+
.on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)
|
1083
|
+
// and also close when focus changes to outside the picker (eg. tabbing between controls)
|
1084
|
+
.on('focusin.daterangepicker', this._outsideClickProxy);
|
1085
|
+
|
1086
|
+
// Reposition the picker if the window is resized while it's open
|
1087
|
+
$(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));
|
1053
1088
|
|
1054
1089
|
this.oldStartDate = this.startDate.clone();
|
1055
1090
|
this.oldEndDate = this.endDate.clone();
|
1091
|
+
this.previousRightTime = this.endDate.clone();
|
1056
1092
|
|
1057
1093
|
this.updateView();
|
1058
1094
|
this.container.show();
|
@@ -1078,6 +1114,7 @@
|
|
1078
1114
|
this.updateElement();
|
1079
1115
|
|
1080
1116
|
$(document).off('.daterangepicker');
|
1117
|
+
$(window).off('.daterangepicker');
|
1081
1118
|
this.container.hide();
|
1082
1119
|
this.element.trigger('hide.daterangepicker', this);
|
1083
1120
|
this.isShowing = false;
|
@@ -1097,11 +1134,11 @@
|
|
1097
1134
|
// itself then call this.hide()
|
1098
1135
|
if (
|
1099
1136
|
// ie modal dialog fix
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1137
|
+
e.type == "focusin" ||
|
1138
|
+
target.closest(this.element).length ||
|
1139
|
+
target.closest(this.container).length ||
|
1140
|
+
target.closest('.calendar-table').length
|
1141
|
+
) return;
|
1105
1142
|
this.hide();
|
1106
1143
|
},
|
1107
1144
|
|
@@ -1244,7 +1281,7 @@
|
|
1244
1281
|
// * if single date picker mode, and time picker isn't enabled, apply the selection immediately
|
1245
1282
|
//
|
1246
1283
|
|
1247
|
-
if (this.endDate || date.isBefore(this.startDate)) {
|
1284
|
+
if (this.endDate || date.isBefore(this.startDate, 'day')) {
|
1248
1285
|
if (this.timePicker) {
|
1249
1286
|
var hour = parseInt(this.container.find('.left .hourselect').val(), 10);
|
1250
1287
|
if (!this.timePicker24Hour) {
|
@@ -1260,6 +1297,10 @@
|
|
1260
1297
|
}
|
1261
1298
|
this.endDate = null;
|
1262
1299
|
this.setStartDate(date.clone());
|
1300
|
+
} else if (!this.endDate && date.isBefore(this.startDate)) {
|
1301
|
+
//special case: clicking the same date for start/end,
|
1302
|
+
//but the time of the end date is before the start date
|
1303
|
+
this.setEndDate(this.startDate.clone());
|
1263
1304
|
} else {
|
1264
1305
|
if (this.timePicker) {
|
1265
1306
|
var hour = parseInt(this.container.find('.right .hourselect').val(), 10);
|
@@ -1366,8 +1407,11 @@
|
|
1366
1407
|
start.minute(minute);
|
1367
1408
|
start.second(second);
|
1368
1409
|
this.setStartDate(start);
|
1369
|
-
if (this.singleDatePicker)
|
1410
|
+
if (this.singleDatePicker) {
|
1370
1411
|
this.endDate = this.startDate.clone();
|
1412
|
+
} else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {
|
1413
|
+
this.setEndDate(start.clone());
|
1414
|
+
}
|
1371
1415
|
} else if (this.endDate) {
|
1372
1416
|
var end = this.endDate.clone();
|
1373
1417
|
end.hour(hour);
|
@@ -1419,6 +1463,7 @@
|
|
1419
1463
|
elementChanged: function() {
|
1420
1464
|
if (!this.element.is('input')) return;
|
1421
1465
|
if (!this.element.val().length) return;
|
1466
|
+
if (this.element.val().length < this.locale.format.length) return;
|
1422
1467
|
|
1423
1468
|
var dateString = this.element.val().split(this.locale.separator),
|
1424
1469
|
start = null,
|
@@ -1434,6 +1479,8 @@
|
|
1434
1479
|
end = start;
|
1435
1480
|
}
|
1436
1481
|
|
1482
|
+
if (!start.isValid() || !end.isValid()) return;
|
1483
|
+
|
1437
1484
|
this.setStartDate(start);
|
1438
1485
|
this.setEndDate(end);
|
1439
1486
|
this.updateView();
|
@@ -1474,4 +1521,6 @@
|
|
1474
1521
|
return this;
|
1475
1522
|
};
|
1476
1523
|
|
1524
|
+
return DateRangePicker;
|
1525
|
+
|
1477
1526
|
}));
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap-daterangepicker-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Grossman
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-03-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
74
|
version: '0'
|
75
75
|
requirements: []
|
76
76
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
77
|
+
rubygems_version: 2.4.5.1
|
78
78
|
signing_key:
|
79
79
|
specification_version: 4
|
80
80
|
summary: Rails 4.1x plugin to allow for the easy use of Dan Grossman's Bootstrap DateRangePicker
|