1491 lines
44 KiB
JavaScript
1491 lines
44 KiB
JavaScript
/**
|
|
* Minified by jsDelivr using Terser v3.14.1.
|
|
* Original file: /npm/daterangepicker@3.0.5/daterangepicker.js
|
|
*
|
|
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
|
|
*/
|
|
!(function (t, e) {
|
|
if ('function' == typeof define && define.amd)
|
|
define(['moment', 'jquery'], function (t, a) {
|
|
return (
|
|
a.fn || (a.fn = {}),
|
|
'function' != typeof t && t.default && (t = t.default),
|
|
e(t, a)
|
|
)
|
|
})
|
|
else if ('object' == typeof module && module.exports) {
|
|
var a = 'undefined' != typeof window ? window.jQuery : void 0
|
|
a || (a = require('jquery')).fn || (a.fn = {})
|
|
var i =
|
|
'undefined' != typeof window && void 0 !== window.moment
|
|
? window.moment
|
|
: require('moment')
|
|
module.exports = e(i, a)
|
|
} else t.daterangepicker = e(t.moment, t.jQuery)
|
|
})(this, function (t, e) {
|
|
var a = function (a, i, s) {
|
|
if (
|
|
((this.parentEl = 'body'),
|
|
(this.element = e(a)),
|
|
(this.startDate = t().startOf('day')),
|
|
(this.endDate = t().endOf('day')),
|
|
(this.minDate = !1),
|
|
(this.maxDate = !1),
|
|
(this.maxSpan = !1),
|
|
(this.autoApply = !1),
|
|
(this.singleDatePicker = !1),
|
|
(this.showDropdowns = !1),
|
|
(this.minYear = t().subtract(100, 'year').format('YYYY')),
|
|
(this.maxYear = t().add(100, 'year').format('YYYY')),
|
|
(this.showWeekNumbers = !1),
|
|
(this.showISOWeekNumbers = !1),
|
|
(this.showCustomRangeLabel = !0),
|
|
(this.timePicker = !1),
|
|
(this.timePicker24Hour = !1),
|
|
(this.timePickerIncrement = 1),
|
|
(this.timePickerSeconds = !1),
|
|
(this.linkedCalendars = !0),
|
|
(this.autoUpdateInput = !0),
|
|
(this.alwaysShowCalendars = !1),
|
|
(this.ranges = {}),
|
|
(this.opens = 'right'),
|
|
this.element.hasClass('pull-right') && (this.opens = 'left'),
|
|
(this.drops = 'down'),
|
|
this.element.hasClass('dropup') && (this.drops = 'up'),
|
|
(this.buttonClasses = 'btn btn-sm'),
|
|
(this.applyButtonClasses = 'btn-primary'),
|
|
(this.cancelButtonClasses = 'btn-default'),
|
|
(this.locale = {
|
|
direction: 'ltr',
|
|
format: t.localeData().longDateFormat('L'),
|
|
separator: ' - ',
|
|
applyLabel: 'Apply',
|
|
cancelLabel: 'Cancel',
|
|
weekLabel: 'W',
|
|
customRangeLabel: 'Custom Range',
|
|
daysOfWeek: t.weekdaysMin(),
|
|
monthNames: t.monthsShort(),
|
|
firstDay: t.localeData().firstDayOfWeek(),
|
|
}),
|
|
(this.callback = function () {}),
|
|
(this.isShowing = !1),
|
|
(this.leftCalendar = {}),
|
|
(this.rightCalendar = {}),
|
|
('object' == typeof i && null !== i) || (i = {}),
|
|
'string' ==
|
|
typeof (i = e.extend(this.element.data(), i)).template ||
|
|
i.template instanceof e ||
|
|
(i.template =
|
|
'<div class="daterangepicker"><div class="ranges"></div><div class="drp-calendar left"><div class="calendar-table"></div><div class="calendar-time"></div></div><div class="drp-calendar right"><div class="calendar-table"></div><div class="calendar-time"></div></div><div class="drp-buttons"><span class="drp-selected"></span><button class="cancelBtn" type="button"></button><button class="applyBtn" disabled="disabled" type="button"></button> </div></div>'),
|
|
(this.parentEl =
|
|
i.parentEl && e(i.parentEl).length
|
|
? e(i.parentEl)
|
|
: e(this.parentEl)),
|
|
(this.container = e(i.template).appendTo(this.parentEl)),
|
|
'object' == typeof i.locale &&
|
|
('string' == typeof i.locale.direction &&
|
|
(this.locale.direction = i.locale.direction),
|
|
'string' == typeof i.locale.format &&
|
|
(this.locale.format = i.locale.format),
|
|
'string' == typeof i.locale.separator &&
|
|
(this.locale.separator = i.locale.separator),
|
|
'object' == typeof i.locale.daysOfWeek &&
|
|
(this.locale.daysOfWeek = i.locale.daysOfWeek.slice()),
|
|
'object' == typeof i.locale.monthNames &&
|
|
(this.locale.monthNames = i.locale.monthNames.slice()),
|
|
'number' == typeof i.locale.firstDay &&
|
|
(this.locale.firstDay = i.locale.firstDay),
|
|
'string' == typeof i.locale.applyLabel &&
|
|
(this.locale.applyLabel = i.locale.applyLabel),
|
|
'string' == typeof i.locale.cancelLabel &&
|
|
(this.locale.cancelLabel = i.locale.cancelLabel),
|
|
'string' == typeof i.locale.weekLabel &&
|
|
(this.locale.weekLabel = i.locale.weekLabel),
|
|
'string' == typeof i.locale.customRangeLabel))
|
|
) {
|
|
;(f = document.createElement('textarea')).innerHTML =
|
|
i.locale.customRangeLabel
|
|
var n = f.value
|
|
this.locale.customRangeLabel = n
|
|
}
|
|
if (
|
|
(this.container.addClass(this.locale.direction),
|
|
'string' == typeof i.startDate &&
|
|
(this.startDate = t(i.startDate, this.locale.format)),
|
|
'string' == typeof i.endDate &&
|
|
(this.endDate = t(i.endDate, this.locale.format)),
|
|
'string' == typeof i.minDate &&
|
|
(this.minDate = t(i.minDate, this.locale.format)),
|
|
'string' == typeof i.maxDate &&
|
|
(this.maxDate = t(i.maxDate, this.locale.format)),
|
|
'object' == typeof i.startDate && (this.startDate = t(i.startDate)),
|
|
'object' == typeof i.endDate && (this.endDate = t(i.endDate)),
|
|
'object' == typeof i.minDate && (this.minDate = t(i.minDate)),
|
|
'object' == typeof i.maxDate && (this.maxDate = t(i.maxDate)),
|
|
this.minDate &&
|
|
this.startDate.isBefore(this.minDate) &&
|
|
(this.startDate = this.minDate.clone()),
|
|
this.maxDate &&
|
|
this.endDate.isAfter(this.maxDate) &&
|
|
(this.endDate = this.maxDate.clone()),
|
|
'string' == typeof i.applyButtonClasses &&
|
|
(this.applyButtonClasses = i.applyButtonClasses),
|
|
'string' == typeof i.applyClass &&
|
|
(this.applyButtonClasses = i.applyClass),
|
|
'string' == typeof i.cancelButtonClasses &&
|
|
(this.cancelButtonClasses = i.cancelButtonClasses),
|
|
'string' == typeof i.cancelClass &&
|
|
(this.cancelButtonClasses = i.cancelClass),
|
|
'object' == typeof i.maxSpan && (this.maxSpan = i.maxSpan),
|
|
'object' == typeof i.dateLimit && (this.maxSpan = i.dateLimit),
|
|
'string' == typeof i.opens && (this.opens = i.opens),
|
|
'string' == typeof i.drops && (this.drops = i.drops),
|
|
'boolean' == typeof i.showWeekNumbers &&
|
|
(this.showWeekNumbers = i.showWeekNumbers),
|
|
'boolean' == typeof i.showISOWeekNumbers &&
|
|
(this.showISOWeekNumbers = i.showISOWeekNumbers),
|
|
'string' == typeof i.buttonClasses &&
|
|
(this.buttonClasses = i.buttonClasses),
|
|
'object' == typeof i.buttonClasses &&
|
|
(this.buttonClasses = i.buttonClasses.join(' ')),
|
|
'boolean' == typeof i.showDropdowns &&
|
|
(this.showDropdowns = i.showDropdowns),
|
|
'number' == typeof i.minYear && (this.minYear = i.minYear),
|
|
'number' == typeof i.maxYear && (this.maxYear = i.maxYear),
|
|
'boolean' == typeof i.showCustomRangeLabel &&
|
|
(this.showCustomRangeLabel = i.showCustomRangeLabel),
|
|
'boolean' == typeof i.singleDatePicker &&
|
|
((this.singleDatePicker = i.singleDatePicker),
|
|
this.singleDatePicker &&
|
|
(this.endDate = this.startDate.clone())),
|
|
'boolean' == typeof i.timePicker &&
|
|
(this.timePicker = i.timePicker),
|
|
'boolean' == typeof i.timePickerSeconds &&
|
|
(this.timePickerSeconds = i.timePickerSeconds),
|
|
'number' == typeof i.timePickerIncrement &&
|
|
(this.timePickerIncrement = i.timePickerIncrement),
|
|
'boolean' == typeof i.timePicker24Hour &&
|
|
(this.timePicker24Hour = i.timePicker24Hour),
|
|
'boolean' == typeof i.autoApply && (this.autoApply = i.autoApply),
|
|
'boolean' == typeof i.autoUpdateInput &&
|
|
(this.autoUpdateInput = i.autoUpdateInput),
|
|
'boolean' == typeof i.linkedCalendars &&
|
|
(this.linkedCalendars = i.linkedCalendars),
|
|
'function' == typeof i.isInvalidDate &&
|
|
(this.isInvalidDate = i.isInvalidDate),
|
|
'function' == typeof i.isCustomDate &&
|
|
(this.isCustomDate = i.isCustomDate),
|
|
'boolean' == typeof i.alwaysShowCalendars &&
|
|
(this.alwaysShowCalendars = i.alwaysShowCalendars),
|
|
0 != this.locale.firstDay)
|
|
)
|
|
for (var r = this.locale.firstDay; r > 0; )
|
|
this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()), r--
|
|
var o, l, h
|
|
if (
|
|
void 0 === i.startDate &&
|
|
void 0 === i.endDate &&
|
|
e(this.element).is(':text')
|
|
) {
|
|
var c = e(this.element).val(),
|
|
d = c.split(this.locale.separator)
|
|
;(o = l = null),
|
|
2 == d.length
|
|
? ((o = t(d[0], this.locale.format)),
|
|
(l = t(d[1], this.locale.format)))
|
|
: this.singleDatePicker &&
|
|
'' !== c &&
|
|
((o = t(c, this.locale.format)),
|
|
(l = t(c, this.locale.format))),
|
|
null !== o &&
|
|
null !== l &&
|
|
(this.setStartDate(o), this.setEndDate(l))
|
|
}
|
|
if ('object' == typeof i.ranges) {
|
|
for (h in i.ranges) {
|
|
;(o =
|
|
'string' == typeof i.ranges[h][0]
|
|
? t(i.ranges[h][0], this.locale.format)
|
|
: t(i.ranges[h][0])),
|
|
(l =
|
|
'string' == typeof i.ranges[h][1]
|
|
? t(i.ranges[h][1], this.locale.format)
|
|
: t(i.ranges[h][1])),
|
|
this.minDate &&
|
|
o.isBefore(this.minDate) &&
|
|
(o = this.minDate.clone())
|
|
var m = this.maxDate
|
|
if (
|
|
(this.maxSpan &&
|
|
m &&
|
|
o.clone().add(this.maxSpan).isAfter(m) &&
|
|
(m = o.clone().add(this.maxSpan)),
|
|
m && l.isAfter(m) && (l = m.clone()),
|
|
!(
|
|
(this.minDate &&
|
|
l.isBefore(
|
|
this.minDate,
|
|
this.timepicker ? 'minute' : 'day'
|
|
)) ||
|
|
(m && o.isAfter(m, this.timepicker ? 'minute' : 'day'))
|
|
))
|
|
) {
|
|
var f
|
|
;(f = document.createElement('textarea')).innerHTML = h
|
|
n = f.value
|
|
this.ranges[n] = [o, l]
|
|
}
|
|
}
|
|
var p = '<ul>'
|
|
for (h in this.ranges)
|
|
p += '<li data-range-key="' + h + '">' + h + '</li>'
|
|
this.showCustomRangeLabel &&
|
|
(p +=
|
|
'<li data-range-key="' +
|
|
this.locale.customRangeLabel +
|
|
'">' +
|
|
this.locale.customRangeLabel +
|
|
'</li>'),
|
|
(p += '</ul>'),
|
|
this.container.find('.ranges').prepend(p)
|
|
}
|
|
'function' == typeof s && (this.callback = s),
|
|
this.timePicker ||
|
|
((this.startDate = this.startDate.startOf('day')),
|
|
(this.endDate = this.endDate.endOf('day')),
|
|
this.container.find('.calendar-time').hide()),
|
|
this.timePicker && this.autoApply && (this.autoApply = !1),
|
|
this.autoApply && this.container.addClass('auto-apply'),
|
|
'object' == typeof i.ranges &&
|
|
this.container.addClass('show-ranges'),
|
|
this.singleDatePicker &&
|
|
(this.container.addClass('single'),
|
|
this.container.find('.drp-calendar.left').addClass('single'),
|
|
this.container.find('.drp-calendar.left').show(),
|
|
this.container.find('.drp-calendar.right').hide(),
|
|
this.timePicker || this.container.addClass('auto-apply')),
|
|
((void 0 === i.ranges && !this.singleDatePicker) ||
|
|
this.alwaysShowCalendars) &&
|
|
this.container.addClass('show-calendar'),
|
|
this.container.addClass('opens' + this.opens),
|
|
this.container
|
|
.find('.applyBtn, .cancelBtn')
|
|
.addClass(this.buttonClasses),
|
|
this.applyButtonClasses.length &&
|
|
this.container
|
|
.find('.applyBtn')
|
|
.addClass(this.applyButtonClasses),
|
|
this.cancelButtonClasses.length &&
|
|
this.container
|
|
.find('.cancelBtn')
|
|
.addClass(this.cancelButtonClasses),
|
|
this.container.find('.applyBtn').html(this.locale.applyLabel),
|
|
this.container.find('.cancelBtn').html(this.locale.cancelLabel),
|
|
this.container
|
|
.find('.drp-calendar')
|
|
.on(
|
|
'click.daterangepicker',
|
|
'.prev',
|
|
e.proxy(this.clickPrev, this)
|
|
)
|
|
.on(
|
|
'click.daterangepicker',
|
|
'.next',
|
|
e.proxy(this.clickNext, this)
|
|
)
|
|
.on(
|
|
'mousedown.daterangepicker',
|
|
'td.available',
|
|
e.proxy(this.clickDate, this)
|
|
)
|
|
.on(
|
|
'mouseenter.daterangepicker',
|
|
'td.available',
|
|
e.proxy(this.hoverDate, this)
|
|
)
|
|
.on(
|
|
'change.daterangepicker',
|
|
'select.yearselect',
|
|
e.proxy(this.monthOrYearChanged, this)
|
|
)
|
|
.on(
|
|
'change.daterangepicker',
|
|
'select.monthselect',
|
|
e.proxy(this.monthOrYearChanged, this)
|
|
)
|
|
.on(
|
|
'change.daterangepicker',
|
|
'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect',
|
|
e.proxy(this.timeChanged, this)
|
|
),
|
|
this.container
|
|
.find('.ranges')
|
|
.on(
|
|
'click.daterangepicker',
|
|
'li',
|
|
e.proxy(this.clickRange, this)
|
|
),
|
|
this.container
|
|
.find('.drp-buttons')
|
|
.on(
|
|
'click.daterangepicker',
|
|
'button.applyBtn',
|
|
e.proxy(this.clickApply, this)
|
|
)
|
|
.on(
|
|
'click.daterangepicker',
|
|
'button.cancelBtn',
|
|
e.proxy(this.clickCancel, this)
|
|
),
|
|
this.element.is('input') || this.element.is('button')
|
|
? this.element.on({
|
|
'click.daterangepicker': e.proxy(this.show, this),
|
|
'focus.daterangepicker': e.proxy(this.show, this),
|
|
'keyup.daterangepicker': e.proxy(
|
|
this.elementChanged,
|
|
this
|
|
),
|
|
'keydown.daterangepicker': e.proxy(this.keydown, this),
|
|
})
|
|
: (this.element.on(
|
|
'click.daterangepicker',
|
|
e.proxy(this.toggle, this)
|
|
),
|
|
this.element.on(
|
|
'keydown.daterangepicker',
|
|
e.proxy(this.toggle, this)
|
|
)),
|
|
this.updateElement()
|
|
}
|
|
return (
|
|
(a.prototype = {
|
|
constructor: a,
|
|
setStartDate: function (e) {
|
|
'string' == typeof e &&
|
|
(this.startDate = t(e, this.locale.format)),
|
|
'object' == typeof e && (this.startDate = t(e)),
|
|
this.timePicker ||
|
|
(this.startDate = this.startDate.startOf('day')),
|
|
this.timePicker &&
|
|
this.timePickerIncrement &&
|
|
this.startDate.minute(
|
|
Math.round(
|
|
this.startDate.minute() /
|
|
this.timePickerIncrement
|
|
) * this.timePickerIncrement
|
|
),
|
|
this.minDate &&
|
|
this.startDate.isBefore(this.minDate) &&
|
|
((this.startDate = this.minDate.clone()),
|
|
this.timePicker &&
|
|
this.timePickerIncrement &&
|
|
this.startDate.minute(
|
|
Math.round(
|
|
this.startDate.minute() /
|
|
this.timePickerIncrement
|
|
) * this.timePickerIncrement
|
|
)),
|
|
this.maxDate &&
|
|
this.startDate.isAfter(this.maxDate) &&
|
|
((this.startDate = this.maxDate.clone()),
|
|
this.timePicker &&
|
|
this.timePickerIncrement &&
|
|
this.startDate.minute(
|
|
Math.floor(
|
|
this.startDate.minute() /
|
|
this.timePickerIncrement
|
|
) * this.timePickerIncrement
|
|
)),
|
|
this.isShowing || this.updateElement(),
|
|
this.updateMonthsInView()
|
|
},
|
|
setEndDate: function (e) {
|
|
'string' == typeof e &&
|
|
(this.endDate = t(e, this.locale.format)),
|
|
'object' == typeof e && (this.endDate = t(e)),
|
|
this.timePicker ||
|
|
(this.endDate = this.endDate.endOf('day')),
|
|
this.timePicker &&
|
|
this.timePickerIncrement &&
|
|
this.endDate.minute(
|
|
Math.round(
|
|
this.endDate.minute() / this.timePickerIncrement
|
|
) * this.timePickerIncrement
|
|
),
|
|
this.endDate.isBefore(this.startDate) &&
|
|
(this.endDate = this.startDate.clone()),
|
|
this.maxDate &&
|
|
this.endDate.isAfter(this.maxDate) &&
|
|
(this.endDate = this.maxDate.clone()),
|
|
this.maxSpan &&
|
|
this.startDate
|
|
.clone()
|
|
.add(this.maxSpan)
|
|
.isBefore(this.endDate) &&
|
|
(this.endDate = this.startDate
|
|
.clone()
|
|
.add(this.maxSpan)),
|
|
(this.previousRightTime = this.endDate.clone()),
|
|
this.container
|
|
.find('.drp-selected')
|
|
.html(
|
|
this.startDate.format(this.locale.format) +
|
|
this.locale.separator +
|
|
this.endDate.format(this.locale.format)
|
|
),
|
|
this.isShowing || this.updateElement(),
|
|
this.updateMonthsInView()
|
|
},
|
|
isInvalidDate: function () {
|
|
return !1
|
|
},
|
|
isCustomDate: function () {
|
|
return !1
|
|
},
|
|
updateView: function () {
|
|
this.timePicker &&
|
|
(this.renderTimePicker('left'),
|
|
this.renderTimePicker('right'),
|
|
this.endDate
|
|
? this.container
|
|
.find('.right .calendar-time select')
|
|
.removeAttr('disabled')
|
|
.removeClass('disabled')
|
|
: this.container
|
|
.find('.right .calendar-time select')
|
|
.attr('disabled', 'disabled')
|
|
.addClass('disabled')),
|
|
this.endDate &&
|
|
this.container
|
|
.find('.drp-selected')
|
|
.html(
|
|
this.startDate.format(this.locale.format) +
|
|
this.locale.separator +
|
|
this.endDate.format(this.locale.format)
|
|
),
|
|
this.updateMonthsInView(),
|
|
this.updateCalendars(),
|
|
this.updateFormInputs()
|
|
},
|
|
updateMonthsInView: function () {
|
|
if (this.endDate) {
|
|
if (
|
|
!this.singleDatePicker &&
|
|
this.leftCalendar.month &&
|
|
this.rightCalendar.month &&
|
|
(this.startDate.format('YYYY-MM') ==
|
|
this.leftCalendar.month.format('YYYY-MM') ||
|
|
this.startDate.format('YYYY-MM') ==
|
|
this.rightCalendar.month.format('YYYY-MM')) &&
|
|
(this.endDate.format('YYYY-MM') ==
|
|
this.leftCalendar.month.format('YYYY-MM') ||
|
|
this.endDate.format('YYYY-MM') ==
|
|
this.rightCalendar.month.format('YYYY-MM'))
|
|
)
|
|
return
|
|
;(this.leftCalendar.month = this.startDate.clone().date(2)),
|
|
this.linkedCalendars ||
|
|
(this.endDate.month() == this.startDate.month() &&
|
|
this.endDate.year() == this.startDate.year())
|
|
? (this.rightCalendar.month = this.startDate
|
|
.clone()
|
|
.date(2)
|
|
.add(1, 'month'))
|
|
: (this.rightCalendar.month = this.endDate
|
|
.clone()
|
|
.date(2))
|
|
} else
|
|
this.leftCalendar.month.format('YYYY-MM') !=
|
|
this.startDate.format('YYYY-MM') &&
|
|
this.rightCalendar.month.format('YYYY-MM') !=
|
|
this.startDate.format('YYYY-MM') &&
|
|
((this.leftCalendar.month = this.startDate
|
|
.clone()
|
|
.date(2)),
|
|
(this.rightCalendar.month = this.startDate
|
|
.clone()
|
|
.date(2)
|
|
.add(1, 'month')))
|
|
this.maxDate &&
|
|
this.linkedCalendars &&
|
|
!this.singleDatePicker &&
|
|
this.rightCalendar.month > this.maxDate &&
|
|
((this.rightCalendar.month = this.maxDate.clone().date(2)),
|
|
(this.leftCalendar.month = this.maxDate
|
|
.clone()
|
|
.date(2)
|
|
.subtract(1, 'month')))
|
|
},
|
|
updateCalendars: function () {
|
|
if (this.timePicker) {
|
|
var t, e, a, i
|
|
if (this.endDate) {
|
|
if (
|
|
((t = parseInt(
|
|
this.container.find('.left .hourselect').val(),
|
|
10
|
|
)),
|
|
(e = parseInt(
|
|
this.container
|
|
.find('.left .minuteselect')
|
|
.val(),
|
|
10
|
|
)),
|
|
isNaN(e) &&
|
|
(e = parseInt(
|
|
this.container
|
|
.find('.left .minuteselect option:last')
|
|
.val(),
|
|
10
|
|
)),
|
|
(a = this.timePickerSeconds
|
|
? parseInt(
|
|
this.container
|
|
.find('.left .secondselect')
|
|
.val(),
|
|
10
|
|
)
|
|
: 0),
|
|
!this.timePicker24Hour)
|
|
)
|
|
'PM' ===
|
|
(i = this.container
|
|
.find('.left .ampmselect')
|
|
.val()) &&
|
|
t < 12 &&
|
|
(t += 12),
|
|
'AM' === i && 12 === t && (t = 0)
|
|
} else if (
|
|
((t = parseInt(
|
|
this.container.find('.right .hourselect').val(),
|
|
10
|
|
)),
|
|
(e = parseInt(
|
|
this.container.find('.right .minuteselect').val(),
|
|
10
|
|
)),
|
|
isNaN(e) &&
|
|
(e = parseInt(
|
|
this.container
|
|
.find('.right .minuteselect option:last')
|
|
.val(),
|
|
10
|
|
)),
|
|
(a = this.timePickerSeconds
|
|
? parseInt(
|
|
this.container
|
|
.find('.right .secondselect')
|
|
.val(),
|
|
10
|
|
)
|
|
: 0),
|
|
!this.timePicker24Hour)
|
|
)
|
|
'PM' ===
|
|
(i = this.container
|
|
.find('.right .ampmselect')
|
|
.val()) &&
|
|
t < 12 &&
|
|
(t += 12),
|
|
'AM' === i && 12 === t && (t = 0)
|
|
this.leftCalendar.month.hour(t).minute(e).second(a),
|
|
this.rightCalendar.month.hour(t).minute(e).second(a)
|
|
}
|
|
this.renderCalendar('left'),
|
|
this.renderCalendar('right'),
|
|
this.container.find('.ranges li').removeClass('active'),
|
|
null != this.endDate && this.calculateChosenLabel()
|
|
},
|
|
renderCalendar: function (a) {
|
|
var i,
|
|
s = (i =
|
|
'left' == a
|
|
? this.leftCalendar
|
|
: this.rightCalendar).month.month(),
|
|
n = i.month.year(),
|
|
r = i.month.hour(),
|
|
o = i.month.minute(),
|
|
l = i.month.second(),
|
|
h = t([n, s]).daysInMonth(),
|
|
c = t([n, s, 1]),
|
|
d = t([n, s, h]),
|
|
m = t(c).subtract(1, 'month').month(),
|
|
f = t(c).subtract(1, 'month').year(),
|
|
p = t([f, m]).daysInMonth(),
|
|
u = c.day()
|
|
;((i = []).firstDay = c), (i.lastDay = d)
|
|
for (var D = 0; D < 6; D++) i[D] = []
|
|
var g = p - u + this.locale.firstDay + 1
|
|
g > p && (g -= 7), u == this.locale.firstDay && (g = p - 6)
|
|
for (
|
|
var y = t([f, m, g, 12, o, l]), k = ((D = 0), 0), b = 0;
|
|
D < 42;
|
|
D++, k++, y = t(y).add(24, 'hour')
|
|
)
|
|
D > 0 && k % 7 == 0 && ((k = 0), b++),
|
|
(i[b][k] = y.clone().hour(r).minute(o).second(l)),
|
|
y.hour(12),
|
|
this.minDate &&
|
|
i[b][k].format('YYYY-MM-DD') ==
|
|
this.minDate.format('YYYY-MM-DD') &&
|
|
i[b][k].isBefore(this.minDate) &&
|
|
'left' == a &&
|
|
(i[b][k] = this.minDate.clone()),
|
|
this.maxDate &&
|
|
i[b][k].format('YYYY-MM-DD') ==
|
|
this.maxDate.format('YYYY-MM-DD') &&
|
|
i[b][k].isAfter(this.maxDate) &&
|
|
'right' == a &&
|
|
(i[b][k] = this.maxDate.clone())
|
|
'left' == a
|
|
? (this.leftCalendar.calendar = i)
|
|
: (this.rightCalendar.calendar = i)
|
|
var v = 'left' == a ? this.minDate : this.startDate,
|
|
C = this.maxDate,
|
|
Y =
|
|
('left' == a ? this.startDate : this.endDate,
|
|
this.locale.direction,
|
|
'<table class="table-condensed">')
|
|
;(Y += '<thead>'),
|
|
(Y += '<tr>'),
|
|
(this.showWeekNumbers || this.showISOWeekNumbers) &&
|
|
(Y += '<th></th>'),
|
|
(v && !v.isBefore(i.firstDay)) ||
|
|
(this.linkedCalendars && 'left' != a)
|
|
? (Y += '<th></th>')
|
|
: (Y += '<th class="prev available"><span></span></th>')
|
|
var w =
|
|
this.locale.monthNames[i[1][1].month()] +
|
|
i[1][1].format(' YYYY')
|
|
if (this.showDropdowns) {
|
|
for (
|
|
var P = i[1][1].month(),
|
|
x = i[1][1].year(),
|
|
M = (C && C.year()) || this.maxYear,
|
|
I = (v && v.year()) || this.minYear,
|
|
S = x == I,
|
|
B = x == M,
|
|
A = '<select class="monthselect">',
|
|
L = 0;
|
|
L < 12;
|
|
L++
|
|
)
|
|
(!S || (v && L >= v.month())) &&
|
|
(!B || (C && L <= C.month()))
|
|
? (A +=
|
|
"<option value='" +
|
|
L +
|
|
"'" +
|
|
(L === P ? " selected='selected'" : '') +
|
|
'>' +
|
|
this.locale.monthNames[L] +
|
|
'</option>')
|
|
: (A +=
|
|
"<option value='" +
|
|
L +
|
|
"'" +
|
|
(L === P ? " selected='selected'" : '') +
|
|
" disabled='disabled'>" +
|
|
this.locale.monthNames[L] +
|
|
'</option>')
|
|
A += '</select>'
|
|
for (
|
|
var N = '<select class="yearselect">', E = I;
|
|
E <= M;
|
|
E++
|
|
)
|
|
N +=
|
|
'<option value="' +
|
|
E +
|
|
'"' +
|
|
(E === x ? ' selected="selected"' : '') +
|
|
'>' +
|
|
E +
|
|
'</option>'
|
|
w = A + (N += '</select>')
|
|
}
|
|
if (
|
|
((Y += '<th colspan="5" class="month">' + w + '</th>'),
|
|
(C && !C.isAfter(i.lastDay)) ||
|
|
(this.linkedCalendars &&
|
|
'right' != a &&
|
|
!this.singleDatePicker)
|
|
? (Y += '<th></th>')
|
|
: (Y +=
|
|
'<th class="next available"><span></span></th>'),
|
|
(Y += '</tr>'),
|
|
(Y += '<tr>'),
|
|
(this.showWeekNumbers || this.showISOWeekNumbers) &&
|
|
(Y +=
|
|
'<th class="week">' +
|
|
this.locale.weekLabel +
|
|
'</th>'),
|
|
e.each(this.locale.daysOfWeek, function (t, e) {
|
|
Y += '<th>' + e + '</th>'
|
|
}),
|
|
(Y += '</tr>'),
|
|
(Y += '</thead>'),
|
|
(Y += '<tbody>'),
|
|
null == this.endDate && this.maxSpan)
|
|
) {
|
|
var W = this.startDate
|
|
.clone()
|
|
.add(this.maxSpan)
|
|
.endOf('day')
|
|
;(C && !W.isBefore(C)) || (C = W)
|
|
}
|
|
for (b = 0; b < 6; b++) {
|
|
;(Y += '<tr>'),
|
|
this.showWeekNumbers
|
|
? (Y +=
|
|
'<td class="week">' +
|
|
i[b][0].week() +
|
|
'</td>')
|
|
: this.showISOWeekNumbers &&
|
|
(Y +=
|
|
'<td class="week">' +
|
|
i[b][0].isoWeek() +
|
|
'</td>')
|
|
for (k = 0; k < 7; k++) {
|
|
var O = []
|
|
i[b][k].isSame(new Date(), 'day') && O.push('today'),
|
|
i[b][k].isoWeekday() > 5 && O.push('weekend'),
|
|
i[b][k].month() != i[1][1].month() &&
|
|
O.push('off', 'ends'),
|
|
this.minDate &&
|
|
i[b][k].isBefore(this.minDate, 'day') &&
|
|
O.push('off', 'disabled'),
|
|
C &&
|
|
i[b][k].isAfter(C, 'day') &&
|
|
O.push('off', 'disabled'),
|
|
this.isInvalidDate(i[b][k]) &&
|
|
O.push('off', 'disabled'),
|
|
i[b][k].format('YYYY-MM-DD') ==
|
|
this.startDate.format('YYYY-MM-DD') &&
|
|
O.push('active', 'start-date'),
|
|
null != this.endDate &&
|
|
i[b][k].format('YYYY-MM-DD') ==
|
|
this.endDate.format('YYYY-MM-DD') &&
|
|
O.push('active', 'end-date'),
|
|
null != this.endDate &&
|
|
i[b][k] > this.startDate &&
|
|
i[b][k] < this.endDate &&
|
|
O.push('in-range')
|
|
var H = this.isCustomDate(i[b][k])
|
|
!1 !== H &&
|
|
('string' == typeof H
|
|
? O.push(H)
|
|
: Array.prototype.push.apply(O, H))
|
|
var j = '',
|
|
R = !1
|
|
for (D = 0; D < O.length; D++)
|
|
(j += O[D] + ' '), 'disabled' == O[D] && (R = !0)
|
|
R || (j += 'available'),
|
|
(Y +=
|
|
'<td class="' +
|
|
j.replace(/^\s+|\s+$/g, '') +
|
|
'" data-title="r' +
|
|
b +
|
|
'c' +
|
|
k +
|
|
'">' +
|
|
i[b][k].date() +
|
|
'</td>')
|
|
}
|
|
Y += '</tr>'
|
|
}
|
|
;(Y += '</tbody>'),
|
|
(Y += '</table>'),
|
|
this.container
|
|
.find('.drp-calendar.' + a + ' .calendar-table')
|
|
.html(Y)
|
|
},
|
|
renderTimePicker: function (t) {
|
|
if ('right' != t || this.endDate) {
|
|
var e,
|
|
a,
|
|
i,
|
|
s = this.maxDate
|
|
if (
|
|
(!this.maxSpan ||
|
|
(this.maxDate &&
|
|
!this.startDate
|
|
.clone()
|
|
.add(this.maxSpan)
|
|
.isBefore(this.maxDate)) ||
|
|
(s = this.startDate.clone().add(this.maxSpan)),
|
|
'left' == t)
|
|
)
|
|
(a = this.startDate.clone()), (i = this.minDate)
|
|
else if ('right' == t) {
|
|
;(a = this.endDate.clone()), (i = this.startDate)
|
|
var n = this.container.find(
|
|
'.drp-calendar.right .calendar-time'
|
|
)
|
|
if (
|
|
'' != n.html() &&
|
|
(a.hour(
|
|
isNaN(a.hour())
|
|
? n
|
|
.find('.hourselect option:selected')
|
|
.val()
|
|
: a.hour()
|
|
),
|
|
a.minute(
|
|
isNaN(a.minute())
|
|
? n
|
|
.find(
|
|
'.minuteselect option:selected'
|
|
)
|
|
.val()
|
|
: a.minute()
|
|
),
|
|
a.second(
|
|
isNaN(a.second())
|
|
? n
|
|
.find(
|
|
'.secondselect option:selected'
|
|
)
|
|
.val()
|
|
: a.second()
|
|
),
|
|
!this.timePicker24Hour)
|
|
) {
|
|
var r = n.find('.ampmselect option:selected').val()
|
|
'PM' === r &&
|
|
a.hour() < 12 &&
|
|
a.hour(a.hour() + 12),
|
|
'AM' === r && 12 === a.hour() && a.hour(0)
|
|
}
|
|
a.isBefore(this.startDate) &&
|
|
(a = this.startDate.clone()),
|
|
s && a.isAfter(s) && (a = s.clone())
|
|
}
|
|
e = '<select class="hourselect">'
|
|
for (
|
|
var o = this.timePicker24Hour ? 0 : 1,
|
|
l = this.timePicker24Hour ? 23 : 12,
|
|
h = o;
|
|
h <= l;
|
|
h++
|
|
) {
|
|
var c = h
|
|
this.timePicker24Hour ||
|
|
(c =
|
|
a.hour() >= 12
|
|
? 12 == h
|
|
? 12
|
|
: h + 12
|
|
: 12 == h
|
|
? 0
|
|
: h)
|
|
var d = a.clone().hour(c),
|
|
m = !1
|
|
i && d.minute(59).isBefore(i) && (m = !0),
|
|
s && d.minute(0).isAfter(s) && (m = !0),
|
|
c != a.hour() || m
|
|
? (e += m
|
|
? '<option value="' +
|
|
h +
|
|
'" disabled="disabled" class="disabled">' +
|
|
h +
|
|
'</option>'
|
|
: '<option value="' +
|
|
h +
|
|
'">' +
|
|
h +
|
|
'</option>')
|
|
: (e +=
|
|
'<option value="' +
|
|
h +
|
|
'" selected="selected">' +
|
|
h +
|
|
'</option>')
|
|
}
|
|
;(e += '</select> '),
|
|
(e += ': <select class="minuteselect">')
|
|
for (h = 0; h < 60; h += this.timePickerIncrement) {
|
|
var f = h < 10 ? '0' + h : h
|
|
;(d = a.clone().minute(h)), (m = !1)
|
|
i && d.second(59).isBefore(i) && (m = !0),
|
|
s && d.second(0).isAfter(s) && (m = !0),
|
|
a.minute() != h || m
|
|
? (e += m
|
|
? '<option value="' +
|
|
h +
|
|
'" disabled="disabled" class="disabled">' +
|
|
f +
|
|
'</option>'
|
|
: '<option value="' +
|
|
h +
|
|
'">' +
|
|
f +
|
|
'</option>')
|
|
: (e +=
|
|
'<option value="' +
|
|
h +
|
|
'" selected="selected">' +
|
|
f +
|
|
'</option>')
|
|
}
|
|
if (((e += '</select> '), this.timePickerSeconds)) {
|
|
e += ': <select class="secondselect">'
|
|
for (h = 0; h < 60; h++) {
|
|
;(f = h < 10 ? '0' + h : h),
|
|
(d = a.clone().second(h)),
|
|
(m = !1)
|
|
i && d.isBefore(i) && (m = !0),
|
|
s && d.isAfter(s) && (m = !0),
|
|
a.second() != h || m
|
|
? (e += m
|
|
? '<option value="' +
|
|
h +
|
|
'" disabled="disabled" class="disabled">' +
|
|
f +
|
|
'</option>'
|
|
: '<option value="' +
|
|
h +
|
|
'">' +
|
|
f +
|
|
'</option>')
|
|
: (e +=
|
|
'<option value="' +
|
|
h +
|
|
'" selected="selected">' +
|
|
f +
|
|
'</option>')
|
|
}
|
|
e += '</select> '
|
|
}
|
|
if (!this.timePicker24Hour) {
|
|
e += '<select class="ampmselect">'
|
|
var p = '',
|
|
u = ''
|
|
i &&
|
|
a
|
|
.clone()
|
|
.hour(12)
|
|
.minute(0)
|
|
.second(0)
|
|
.isBefore(i) &&
|
|
(p = ' disabled="disabled" class="disabled"'),
|
|
s &&
|
|
a
|
|
.clone()
|
|
.hour(0)
|
|
.minute(0)
|
|
.second(0)
|
|
.isAfter(s) &&
|
|
(u = ' disabled="disabled" class="disabled"'),
|
|
a.hour() >= 12
|
|
? (e +=
|
|
'<option value="AM"' +
|
|
p +
|
|
'>AM</option><option value="PM" selected="selected"' +
|
|
u +
|
|
'>PM</option>')
|
|
: (e +=
|
|
'<option value="AM" selected="selected"' +
|
|
p +
|
|
'>AM</option><option value="PM"' +
|
|
u +
|
|
'>PM</option>'),
|
|
(e += '</select>')
|
|
}
|
|
this.container
|
|
.find('.drp-calendar.' + t + ' .calendar-time')
|
|
.html(e)
|
|
}
|
|
},
|
|
updateFormInputs: function () {
|
|
this.singleDatePicker ||
|
|
(this.endDate &&
|
|
(this.startDate.isBefore(this.endDate) ||
|
|
this.startDate.isSame(this.endDate)))
|
|
? this.container
|
|
.find('button.applyBtn')
|
|
.removeAttr('disabled')
|
|
: this.container
|
|
.find('button.applyBtn')
|
|
.attr('disabled', 'disabled')
|
|
},
|
|
move: function () {
|
|
var t,
|
|
a = { top: 0, left: 0 },
|
|
i = e(window).width()
|
|
this.parentEl.is('body') ||
|
|
((a = {
|
|
top:
|
|
this.parentEl.offset().top -
|
|
this.parentEl.scrollTop(),
|
|
left:
|
|
this.parentEl.offset().left -
|
|
this.parentEl.scrollLeft(),
|
|
}),
|
|
(i =
|
|
this.parentEl[0].clientWidth +
|
|
this.parentEl.offset().left)),
|
|
(t =
|
|
'up' == this.drops
|
|
? this.element.offset().top -
|
|
this.container.outerHeight() -
|
|
a.top
|
|
: this.element.offset().top +
|
|
this.element.outerHeight() -
|
|
a.top),
|
|
this.container.css({ top: 0, left: 0, right: 'auto' })
|
|
var s = this.container.outerWidth()
|
|
if (
|
|
(this.container[
|
|
'up' == this.drops ? 'addClass' : 'removeClass'
|
|
]('drop-up'),
|
|
'left' == this.opens)
|
|
) {
|
|
var n =
|
|
i -
|
|
this.element.offset().left -
|
|
this.element.outerWidth()
|
|
s + n > e(window).width()
|
|
? this.container.css({ top: t, right: 'auto', left: 9 })
|
|
: this.container.css({ top: t, right: n, left: 'auto' })
|
|
} else if ('center' == this.opens) {
|
|
;(r =
|
|
this.element.offset().left -
|
|
a.left +
|
|
this.element.outerWidth() / 2 -
|
|
s / 2) < 0
|
|
? this.container.css({ top: t, right: 'auto', left: 9 })
|
|
: r + s > e(window).width()
|
|
? this.container.css({ top: t, left: 'auto', right: 0 })
|
|
: this.container.css({ top: t, left: r, right: 'auto' })
|
|
} else {
|
|
var r
|
|
;(r = this.element.offset().left - a.left) + s >
|
|
e(window).width()
|
|
? this.container.css({ top: t, left: 'auto', right: 0 })
|
|
: this.container.css({ top: t, left: r, right: 'auto' })
|
|
}
|
|
},
|
|
show: function (t) {
|
|
this.isShowing ||
|
|
((this._outsideClickProxy = e.proxy(function (t) {
|
|
this.outsideClick(t)
|
|
}, this)),
|
|
e(document)
|
|
.on(
|
|
'mousedown.daterangepicker',
|
|
this._outsideClickProxy
|
|
)
|
|
.on('touchend.daterangepicker', this._outsideClickProxy)
|
|
.on(
|
|
'click.daterangepicker',
|
|
'[data-toggle=dropdown]',
|
|
this._outsideClickProxy
|
|
)
|
|
.on('focusin.daterangepicker', this._outsideClickProxy),
|
|
e(window).on(
|
|
'resize.daterangepicker',
|
|
e.proxy(function (t) {
|
|
this.move(t)
|
|
}, this)
|
|
),
|
|
(this.oldStartDate = this.startDate.clone()),
|
|
(this.oldEndDate = this.endDate.clone()),
|
|
(this.previousRightTime = this.endDate.clone()),
|
|
this.updateView(),
|
|
this.container.show(),
|
|
this.move(),
|
|
this.element.trigger('show.daterangepicker', this),
|
|
(this.isShowing = !0))
|
|
},
|
|
hide: function (t) {
|
|
this.isShowing &&
|
|
(this.endDate ||
|
|
((this.startDate = this.oldStartDate.clone()),
|
|
(this.endDate = this.oldEndDate.clone())),
|
|
(this.startDate.isSame(this.oldStartDate) &&
|
|
this.endDate.isSame(this.oldEndDate)) ||
|
|
this.callback(
|
|
this.startDate.clone(),
|
|
this.endDate.clone(),
|
|
this.chosenLabel
|
|
),
|
|
this.updateElement(),
|
|
e(document).off('.daterangepicker'),
|
|
e(window).off('.daterangepicker'),
|
|
this.container.hide(),
|
|
this.element.trigger('hide.daterangepicker', this),
|
|
(this.isShowing = !1))
|
|
},
|
|
toggle: function (t) {
|
|
this.isShowing ? this.hide() : this.show()
|
|
},
|
|
outsideClick: function (t) {
|
|
var a = e(t.target)
|
|
'focusin' == t.type ||
|
|
a.closest(this.element).length ||
|
|
a.closest(this.container).length ||
|
|
a.closest('.calendar-table').length ||
|
|
(this.hide(),
|
|
this.element.trigger('outsideClick.daterangepicker', this))
|
|
},
|
|
showCalendars: function () {
|
|
this.container.addClass('show-calendar'),
|
|
this.move(),
|
|
this.element.trigger('showCalendar.daterangepicker', this)
|
|
},
|
|
hideCalendars: function () {
|
|
this.container.removeClass('show-calendar'),
|
|
this.element.trigger('hideCalendar.daterangepicker', this)
|
|
},
|
|
clickRange: function (t) {
|
|
var e = t.target.getAttribute('data-range-key')
|
|
if (((this.chosenLabel = e), e == this.locale.customRangeLabel))
|
|
this.showCalendars()
|
|
else {
|
|
var a = this.ranges[e];
|
|
(this.startDate = a[0]),
|
|
(this.endDate = a[1]),
|
|
this.timePicker || (this.startDate.startOf('day'),
|
|
this.endDate.endOf('day')),
|
|
this.alwaysShowCalendars || this.hideCalendars()
|
|
// this.clickApply()
|
|
this.updateView();
|
|
}
|
|
},
|
|
clickPrev: function (t) {
|
|
e(t.target).parents('.drp-calendar').hasClass('left')
|
|
? (this.leftCalendar.month.subtract(1, 'month'),
|
|
this.linkedCalendars &&
|
|
this.rightCalendar.month.subtract(1, 'month'))
|
|
: this.rightCalendar.month.subtract(1, 'month'),
|
|
this.updateCalendars()
|
|
},
|
|
clickNext: function (t) {
|
|
e(t.target).parents('.drp-calendar').hasClass('left')
|
|
? this.leftCalendar.month.add(1, 'month')
|
|
: (this.rightCalendar.month.add(1, 'month'),
|
|
this.linkedCalendars &&
|
|
this.leftCalendar.month.add(1, 'month')),
|
|
this.updateCalendars()
|
|
},
|
|
hoverDate: function (t) {
|
|
if (e(t.target).hasClass('available')) {
|
|
var a = e(t.target).attr('data-title'),
|
|
i = a.substr(1, 1),
|
|
s = a.substr(3, 1),
|
|
n = e(t.target)
|
|
.parents('.drp-calendar')
|
|
.hasClass('left')
|
|
? this.leftCalendar.calendar[i][s]
|
|
: this.rightCalendar.calendar[i][s],
|
|
r = this.leftCalendar,
|
|
o = this.rightCalendar,
|
|
l = this.startDate
|
|
this.endDate ||
|
|
this.container
|
|
.find('.drp-calendar tbody td')
|
|
.each(function (t, a) {
|
|
if (!e(a).hasClass('week')) {
|
|
var i = e(a).attr('data-title'),
|
|
s = i.substr(1, 1),
|
|
h = i.substr(3, 1),
|
|
c = e(a)
|
|
.parents('.drp-calendar')
|
|
.hasClass('left')
|
|
? r.calendar[s][h]
|
|
: o.calendar[s][h]
|
|
;(c.isAfter(l) && c.isBefore(n)) ||
|
|
c.isSame(n, 'day')
|
|
? e(a).addClass('in-range')
|
|
: e(a).removeClass('in-range')
|
|
}
|
|
})
|
|
}
|
|
},
|
|
clickDate: function (t) {
|
|
if (e(t.target).hasClass('available')) {
|
|
var a = e(t.target).attr('data-title'),
|
|
i = a.substr(1, 1),
|
|
s = a.substr(3, 1),
|
|
n = e(t.target)
|
|
.parents('.drp-calendar')
|
|
.hasClass('left')
|
|
? this.leftCalendar.calendar[i][s]
|
|
: this.rightCalendar.calendar[i][s]
|
|
if (this.endDate || n.isBefore(this.startDate, 'day')) {
|
|
if (this.timePicker) {
|
|
var r = parseInt(
|
|
this.container.find('.left .hourselect').val(),
|
|
10
|
|
)
|
|
if (!this.timePicker24Hour)
|
|
'PM' ===
|
|
(h = this.container
|
|
.find('.left .ampmselect')
|
|
.val()) &&
|
|
r < 12 &&
|
|
(r += 12),
|
|
'AM' === h && 12 === r && (r = 0)
|
|
var o = parseInt(
|
|
this.container
|
|
.find('.left .minuteselect')
|
|
.val(),
|
|
10
|
|
)
|
|
isNaN(o) &&
|
|
(o = parseInt(
|
|
this.container
|
|
.find('.left .minuteselect option:last')
|
|
.val(),
|
|
10
|
|
))
|
|
var l = this.timePickerSeconds
|
|
? parseInt(
|
|
this.container
|
|
.find('.left .secondselect')
|
|
.val(),
|
|
10
|
|
)
|
|
: 0
|
|
n = n.clone().hour(r).minute(o).second(l)
|
|
}
|
|
;(this.endDate = null), this.setStartDate(n.clone())
|
|
} else if (!this.endDate && n.isBefore(this.startDate))
|
|
this.setEndDate(this.startDate.clone())
|
|
else {
|
|
if (this.timePicker) {
|
|
var h
|
|
r = parseInt(
|
|
this.container.find('.right .hourselect').val(),
|
|
10
|
|
)
|
|
if (!this.timePicker24Hour)
|
|
'PM' ===
|
|
(h = this.container
|
|
.find('.right .ampmselect')
|
|
.val()) &&
|
|
r < 12 &&
|
|
(r += 12),
|
|
'AM' === h && 12 === r && (r = 0)
|
|
o = parseInt(
|
|
this.container
|
|
.find('.right .minuteselect')
|
|
.val(),
|
|
10
|
|
)
|
|
isNaN(o) &&
|
|
(o = parseInt(
|
|
this.container
|
|
.find(
|
|
'.right .minuteselect option:last'
|
|
)
|
|
.val(),
|
|
10
|
|
))
|
|
l = this.timePickerSeconds
|
|
? parseInt(
|
|
this.container
|
|
.find('.right .secondselect')
|
|
.val(),
|
|
10
|
|
)
|
|
: 0
|
|
n = n.clone().hour(r).minute(o).second(l)
|
|
}
|
|
this.setEndDate(n.clone()),
|
|
this.autoApply &&
|
|
(this.calculateChosenLabel(), this.clickApply())
|
|
}
|
|
this.singleDatePicker &&
|
|
(this.setEndDate(this.startDate),
|
|
this.timePicker || this.clickApply()),
|
|
this.updateView(),
|
|
t.stopPropagation()
|
|
}
|
|
},
|
|
calculateChosenLabel: function () {
|
|
var t = !0,
|
|
e = 0
|
|
for (var a in this.ranges) {
|
|
if (this.timePicker) {
|
|
var i = this.timePickerSeconds
|
|
? 'YYYY-MM-DD HH:mm:ss'
|
|
: 'YYYY-MM-DD HH:mm'
|
|
if (
|
|
this.startDate.format(i) ==
|
|
this.ranges[a][0].format(i) &&
|
|
this.endDate.format(i) ==
|
|
this.ranges[a][1].format(i)
|
|
) {
|
|
;(t = !1),
|
|
(this.chosenLabel = this.container
|
|
.find('.ranges li:eq(' + e + ')')
|
|
.addClass('active')
|
|
.attr('data-range-key'))
|
|
break
|
|
}
|
|
} else if (
|
|
this.startDate.format('YYYY-MM-DD') ==
|
|
this.ranges[a][0].format('YYYY-MM-DD') &&
|
|
this.endDate.format('YYYY-MM-DD') ==
|
|
this.ranges[a][1].format('YYYY-MM-DD')
|
|
) {
|
|
;(t = !1),
|
|
(this.chosenLabel = this.container
|
|
.find('.ranges li:eq(' + e + ')')
|
|
.addClass('active')
|
|
.attr('data-range-key'))
|
|
break
|
|
}
|
|
e++
|
|
}
|
|
t &&
|
|
(this.showCustomRangeLabel
|
|
? (this.chosenLabel = this.container
|
|
.find('.ranges li:last')
|
|
.addClass('active')
|
|
.attr('data-range-key'))
|
|
: (this.chosenLabel = null),
|
|
this.showCalendars())
|
|
},
|
|
clickApply: function (t) {
|
|
this.hide(), this.element.trigger('apply.daterangepicker', this)
|
|
},
|
|
clickCancel: function (t) {
|
|
;(this.startDate = this.oldStartDate),
|
|
(this.endDate = this.oldEndDate),
|
|
this.hide(),
|
|
this.element.trigger('cancel.daterangepicker', this)
|
|
},
|
|
monthOrYearChanged: function (t) {
|
|
var a = e(t.target).closest('.drp-calendar').hasClass('left'),
|
|
i = a ? 'left' : 'right',
|
|
s = this.container.find('.drp-calendar.' + i),
|
|
n = parseInt(s.find('.monthselect').val(), 10),
|
|
r = s.find('.yearselect').val()
|
|
a ||
|
|
((r < this.startDate.year() ||
|
|
(r == this.startDate.year() &&
|
|
n < this.startDate.month())) &&
|
|
((n = this.startDate.month()),
|
|
(r = this.startDate.year()))),
|
|
this.minDate &&
|
|
(r < this.minDate.year() ||
|
|
(r == this.minDate.year() &&
|
|
n < this.minDate.month())) &&
|
|
((n = this.minDate.month()), (r = this.minDate.year())),
|
|
this.maxDate &&
|
|
(r > this.maxDate.year() ||
|
|
(r == this.maxDate.year() &&
|
|
n > this.maxDate.month())) &&
|
|
((n = this.maxDate.month()), (r = this.maxDate.year())),
|
|
a
|
|
? (this.leftCalendar.month.month(n).year(r),
|
|
this.linkedCalendars &&
|
|
(this.rightCalendar.month = this.leftCalendar.month
|
|
.clone()
|
|
.add(1, 'month')))
|
|
: (this.rightCalendar.month.month(n).year(r),
|
|
this.linkedCalendars &&
|
|
(this.leftCalendar.month = this.rightCalendar.month
|
|
.clone()
|
|
.subtract(1, 'month'))),
|
|
this.updateCalendars()
|
|
},
|
|
timeChanged: function (t) {
|
|
var a = e(t.target).closest('.drp-calendar'),
|
|
i = a.hasClass('left'),
|
|
s = parseInt(a.find('.hourselect').val(), 10),
|
|
n = parseInt(a.find('.minuteselect').val(), 10)
|
|
isNaN(n) &&
|
|
(n = parseInt(
|
|
a.find('.minuteselect option:last').val(),
|
|
10
|
|
))
|
|
var r = this.timePickerSeconds
|
|
? parseInt(a.find('.secondselect').val(), 10)
|
|
: 0
|
|
if (!this.timePicker24Hour) {
|
|
var o = a.find('.ampmselect').val()
|
|
'PM' === o && s < 12 && (s += 12),
|
|
'AM' === o && 12 === s && (s = 0)
|
|
}
|
|
if (i) {
|
|
var l = this.startDate.clone()
|
|
l.hour(s),
|
|
l.minute(n),
|
|
l.second(r),
|
|
this.setStartDate(l),
|
|
this.singleDatePicker
|
|
? (this.endDate = this.startDate.clone())
|
|
: this.endDate &&
|
|
this.endDate.format('YYYY-MM-DD') ==
|
|
l.format('YYYY-MM-DD') &&
|
|
this.endDate.isBefore(l) &&
|
|
this.setEndDate(l.clone())
|
|
} else if (this.endDate) {
|
|
var h = this.endDate.clone()
|
|
h.hour(s), h.minute(n), h.second(r), this.setEndDate(h)
|
|
}
|
|
this.updateCalendars(),
|
|
this.updateFormInputs(),
|
|
this.renderTimePicker('left'),
|
|
this.renderTimePicker('right')
|
|
},
|
|
elementChanged: function () {
|
|
if (this.element.is('input') && this.element.val().length) {
|
|
var e = this.element.val().split(this.locale.separator),
|
|
a = null,
|
|
i = null
|
|
2 === e.length &&
|
|
((a = t(e[0], this.locale.format)),
|
|
(i = t(e[1], this.locale.format))),
|
|
(this.singleDatePicker || null === a || null === i) &&
|
|
(i = a = t(this.element.val(), this.locale.format)),
|
|
a.isValid() &&
|
|
i.isValid() &&
|
|
(this.setStartDate(a),
|
|
this.setEndDate(i),
|
|
this.updateView())
|
|
}
|
|
},
|
|
keydown: function (t) {
|
|
;(9 !== t.keyCode && 13 !== t.keyCode) || this.hide(),
|
|
27 === t.keyCode &&
|
|
(t.preventDefault(), t.stopPropagation(), this.hide())
|
|
},
|
|
updateElement: function () {
|
|
if (this.element.is('input') && this.autoUpdateInput) {
|
|
var t = this.startDate.format(this.locale.format)
|
|
this.singleDatePicker ||
|
|
(t +=
|
|
this.locale.separator +
|
|
this.endDate.format(this.locale.format)),
|
|
t !== this.element.val() &&
|
|
this.element.val(t).trigger('change')
|
|
}
|
|
},
|
|
remove: function () {
|
|
this.container.remove(),
|
|
this.element.off('.daterangepicker'),
|
|
this.element.removeData()
|
|
},
|
|
}),
|
|
(e.fn.daterangepicker = function (t, i) {
|
|
var s = e.extend(!0, {}, e.fn.daterangepicker.defaultOptions, t)
|
|
return (
|
|
this.each(function () {
|
|
var t = e(this)
|
|
t.data('daterangepicker') &&
|
|
t.data('daterangepicker').remove(),
|
|
t.data('daterangepicker', new a(t, s, i))
|
|
}),
|
|
this
|
|
)
|
|
}),
|
|
a
|
|
)
|
|
})
|
|
//# sourceMappingURL=/sm/3a884fe0bdb97cb3a94b410e67cf38fdc248890d5581232077b3e6241e25cd21.map
|