diff --git a/dist/daterangepicker.css b/dist/daterangepicker.css index e101357..3ca56fc 100644 --- a/dist/daterangepicker.css +++ b/dist/daterangepicker.css @@ -1,6 +1,6 @@ /*! * knockout-daterangepicker - * version: 0.0.9 + * version: 0.1.0 * authors: Sensor Tower team * license: MIT * https://sensortower.github.io/daterangepicker @@ -10,9 +10,8 @@ position: absolute; background: white; box-shadow: 0 2px 15px rgba(0, 0, 0, 0.3); - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; border-radius: 4px; padding: 4px; font-size: 13px; @@ -51,7 +50,6 @@ } .daterangepicker .periods { - display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; margin: 0 auto 8px; @@ -66,15 +64,12 @@ } .daterangepicker .ranges { - display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - -webkit-align-items: stretch; - -ms-flex-align: stretch; - align-items: stretch; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: stretch; + align-items: stretch; } .daterangepicker .ranges li { @@ -84,7 +79,6 @@ } .daterangepicker .custom-range-inputs { - display: -webkit-flex; display: -ms-flexbox; display: flex; margin: -3px; @@ -94,9 +88,8 @@ .daterangepicker .custom-range-inputs input { min-width: 50px; width: 50px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; margin: 3px; border-radius: 4px; border: 1px solid #ccc; @@ -107,7 +100,6 @@ } .daterangepicker .custom-range-buttons { - display: -webkit-flex; display: -ms-flexbox; display: flex; margin: -3px; @@ -161,8 +153,7 @@ .daterangepicker .arrow-left:before { border-right-width: 6px; border-right-color: #333; - -webkit-transform: translate(-10px, -3.5px); - transform: translate(-10px, -3.5px); + transform: translate(-10px, -3.5px); } .daterangepicker .arrow-right { @@ -172,8 +163,7 @@ .daterangepicker .arrow-right:before { border-left-width: 6px; border-left-color: #333; - -webkit-transform: translate(6px, -3.5px); - transform: translate(6px, -3.5px); + transform: translate(6px, -3.5px); } .daterangepicker.orientation-right:not(.standalone):before { @@ -236,23 +226,20 @@ } .daterangepicker select.month-select { - -webkit-flex: 10; - -ms-flex: 10; - flex: 10; + -ms-flex: 10; + flex: 10; max-width: 75%; } .daterangepicker select.year-select { - -webkit-flex: 11; - -ms-flex: 11; - flex: 11; + -ms-flex: 11; + flex: 11; max-width: 75%; } .daterangepicker select.decade-select { - -webkit-flex: 11; - -ms-flex: 11; - flex: 11; + -ms-flex: 11; + flex: 11; max-width: 75%; } @@ -292,33 +279,27 @@ } .calendar .calendar-header { - display: -webkit-flex; display: -ms-flexbox; display: flex; margin: 0 6px 4px; } .calendar .calendar-header .calendar-selects { - -webkit-flex: 5; - -ms-flex: 5; - flex: 5; + -ms-flex: 5; + flex: 5; text-align: center; - display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; padding: 2px; } .calendar .calendar-header .arrow { - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; text-align: center; } @@ -332,42 +313,32 @@ border-radius: 4px; overflow: hidden; padding: 5px; - display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-justify-content: space-around; - -ms-flex-pack: distribute; - justify-content: space-around; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-line-pack: stretch; + align-content: stretch; + -ms-flex-pack: distribute; + justify-content: space-around; + -ms-flex-direction: column; + flex-direction: column; } .calendar .calendar-table .table-row { - display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-justify-content: space-around; - -ms-flex-pack: distribute; - justify-content: space-around; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex-line-pack: stretch; + align-content: stretch; + -ms-flex-pack: distribute; + justify-content: space-around; + -ms-flex: 1; + flex: 1; } .calendar .calendar-table .table-row .table-col { - display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; text-align: center; line-height: 1; cursor: default; @@ -378,21 +349,17 @@ } .calendar .calendar-table .table-row .table-col .table-value-wrapper { - display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; + -ms-flex: 1; + flex: 1; + -ms-flex-align: center; + align-items: center; } .calendar .calendar-table .table-row .table-col .table-value-wrapper .table-value { - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; } .calendar .calendar-table .table-row .table-col.out-of-boundaries, .calendar .calendar-table .table-row .table-col.unavailable, @@ -435,9 +402,8 @@ } .calendar .calendar-table .table-row .table-col .week-day { - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; + -ms-flex: 1; + flex: 1; text-align: center; } @@ -446,7 +412,6 @@ } .daterangepicker.opened { - display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; } @@ -476,9 +441,8 @@ } .daterangepicker.single { - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } .daterangepicker.single .ranges, @@ -489,12 +453,10 @@ } .daterangepicker.single .controls { - display: -webkit-flex; display: -ms-flexbox; display: flex; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; + -ms-flex-pack: center; + justify-content: center; } .daterangepicker.single .controls .periods { @@ -524,9 +486,8 @@ } .daterangepicker.quarter-period .table-col { - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; font-size: 2em; } @@ -536,7 +497,6 @@ } .daterangepicker.orientation-left:not(.single) .controls { - -webkit-order: 2; - -ms-flex-order: 2; - order: 2; + -ms-flex-order: 2; + order: 2; } diff --git a/dist/daterangepicker.js b/dist/daterangepicker.js index 99cdf8f..721791f 100644 --- a/dist/daterangepicker.js +++ b/dist/daterangepicker.js @@ -1,6 +1,6 @@ /*! * knockout-daterangepicker - * version: 0.0.9 + * version: 0.1.0 * authors: Sensor Tower team * license: MIT * https://sensortower.github.io/daterangepicker @@ -289,6 +289,7 @@ this.firstDayOfWeek = this._firstDayOfWeek(options.firstDayOfWeek); this.timeZone = this._timeZone(options.timeZone); this.periods = this._periods(options.periods); + this.customPeriodRanges = this._customPeriodRanges(options.customPeriodRanges); this.period = this._period(options.period); this.single = this._single(options.single); this.opened = this._opened(options.opened); @@ -303,6 +304,7 @@ this.startDate = this._startDate(options.startDate); this.endDate = this._endDate(options.endDate); this.ranges = this._ranges(options.ranges); + this.isCustomPeriodRangeActive = ko.observable(false); this.anchorElement = this._anchorElement(options.anchorElement); this.parentElement = this._parentElement(options.parentElement); this.callback = this._callback(options.callback); @@ -313,10 +315,11 @@ } Config.prototype.extend = function(obj) { - var k, results, v; + var k, ref, results, v; + ref = this; results = []; - for (k in this) { - v = this[k]; + for (k in ref) { + v = ref[k]; if (this.hasOwnProperty(k) && k[0] !== '_') { results.push(obj[k] = v); } @@ -336,6 +339,17 @@ return ko.observableArray(val || Period.allPeriods); }; + Config.prototype._customPeriodRanges = function(obj) { + var results, title, value; + obj || (obj = {}); + results = []; + for (title in obj) { + value = obj[title]; + results.push(this.parseRange(value, title)); + } + return results; + }; + Config.prototype._period = function(val) { val || (val = this.periods()[0]); if (val !== 'day' && val !== 'week' && val !== 'month' && val !== 'quarter' && val !== 'year') { @@ -393,7 +407,7 @@ }; Config.prototype._ranges = function(obj) { - var endDate, from, results, startDate, title, to, value; + var results, title, value; obj || (obj = this._defaultRanges()); if (!$.isPlainObject(obj)) { throw new Error('Invalid ranges parameter (should be a plain object)'); @@ -409,30 +423,35 @@ results.push(new CustomDateRange(title)); break; default: - if (!$.isArray(value)) { - throw new Error('Value should be an array'); - } - startDate = value[0], endDate = value[1]; - if (!startDate) { - throw new Error('Missing start date'); - } - if (!endDate) { - throw new Error('Missing end date'); - } - from = MomentUtil.tz(startDate, this.timeZone()); - to = MomentUtil.tz(endDate, this.timeZone()); - if (!from.isValid()) { - throw new Error('Invalid start date'); - } - if (!to.isValid()) { - throw new Error('Invalid end date'); - } - results.push(new DateRange(title, from, to)); + results.push(this.parseRange(value, title)); } } return results; }; + Config.prototype.parseRange = function(value, title) { + var endDate, from, startDate, to; + if (!$.isArray(value)) { + throw new Error('Value should be an array'); + } + startDate = value[0], endDate = value[1]; + if (!startDate) { + throw new Error('Missing start date'); + } + if (!endDate) { + throw new Error('Missing end date'); + } + from = MomentUtil.tz(startDate, this.timeZone()); + to = MomentUtil.tz(endDate, this.timeZone()); + if (!from.isValid()) { + throw new Error('Invalid start date'); + } + if (!to.isValid()) { + throw new Error('Invalid end date'); + } + return new DateRange(title, from, to); + }; + Config.prototype._locale = function(val) { return $.extend({ applyButtonTitle: 'Apply', @@ -758,6 +777,7 @@ this.locale = mainView.locale; this.startDate = mainView.startDate; this.endDate = mainView.endDate; + this.isCustomPeriodRangeActive = mainView.isCustomPeriodRangeActive; this.type = type; this.label = mainView.locale[type + "Label"] || ''; this.hoverDate = ko.observable(null); @@ -919,8 +939,8 @@ "in-range": !this.single() && (inRange || onRangeEnd) }, obj1[this.type + "-date"] = onRangeEnd, - obj1["clickable"] = withinBoundaries, - obj1["out-of-boundaries"] = !withinBoundaries, + obj1["clickable"] = withinBoundaries && !this.isCustomPeriodRangeActive(), + obj1["out-of-boundaries"] = !withinBoundaries || this.isCustomPeriodRangeActive(), obj1["unavailable"] = periodIsDay && differentMonth, obj1 ); @@ -946,6 +966,7 @@ options = {}; } this.outsideClick = bind(this.outsideClick, this); + this.setCustomPeriodRange = bind(this.setCustomPeriodRange, this); this.setDateRange = bind(this.setDateRange, this); new Config(options).extend(this); this.startCalendar = new CalendarView(this, this.startDate, 'start'); @@ -1024,7 +1045,7 @@ expanded: this.standalone() || this.single() || this.expanded(), standalone: this.standalone(), 'hide-weekdays': this.hideWeekdays(), - 'hide-periods': this.periods().length === 1, + 'hide-periods': (this.periods().length + this.customPeriodRanges.length) === 1, 'orientation-left': this.orientation() === 'left', 'orientation-right': this.orientation() === 'right' }; @@ -1056,11 +1077,16 @@ } }; + DateRangePickerView.prototype.isActiveCustomPeriodRange = function(customPeriodRange) { + return this.isActiveDateRange(customPeriodRange) && this.isCustomPeriodRangeActive(); + }; + DateRangePickerView.prototype.inputFocus = function() { return this.expanded(true); }; DateRangePickerView.prototype.setPeriod = function(period) { + this.isCustomPeriodRangeActive(false); this.period(period); return this.expanded(true); }; @@ -1078,6 +1104,11 @@ } }; + DateRangePickerView.prototype.setCustomPeriodRange = function(customPeriodRange) { + this.isCustomPeriodRangeActive(true); + return this.setDateRange(customPeriodRange); + }; + DateRangePickerView.prototype.applyChanges = function() { this.close(); return this.updateDateRange(); @@ -1157,7 +1188,7 @@ })(); - DateRangePickerView.template = '
'; + DateRangePickerView.template = '
'; $.extend($.fn.daterangepicker, { ArrayUtils: ArrayUtils, diff --git a/dist/daterangepicker.min.css b/dist/daterangepicker.min.css index 627229b..ad0a5e3 100644 --- a/dist/daterangepicker.min.css +++ b/dist/daterangepicker.min.css @@ -1,7 +1,7 @@ /*! * knockout-daterangepicker - * version: 0.0.9 + * version: 0.1.0 * authors: Sensor Tower team * license: MIT * https://sensortower.github.io/daterangepicker - */.daterangepicker{display:none;position:absolute;background:#fff;box-shadow:0 2px 15px rgba(0,0,0,.3);-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;border-radius:4px;padding:4px;font-size:13px;font-family:sans-serif;line-height:1.5em}.daterangepicker button,.daterangepicker form,.daterangepicker li,.daterangepicker ul{padding:0;margin:0;border:0;list-style:none;outline:0}.daterangepicker .controls{min-width:180px;margin:4px}.daterangepicker .periods li,.daterangepicker .ranges li{padding:4px 9px;margin:0;background:#f5f5f5;color:#08c;cursor:pointer}.daterangepicker .periods li.active,.daterangepicker .periods li:hover,.daterangepicker .ranges li.active,.daterangepicker .ranges li:hover{background:#08c;color:#fff}.daterangepicker .periods{display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;margin:0 auto 8px}.daterangepicker .periods li:first-child{border-radius:4px 0 0 4px}.daterangepicker .periods li:last-child{border-radius:0 4px 4px 0}.daterangepicker .ranges{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.daterangepicker .ranges li{border-radius:4px;margin-bottom:8px;text-align:left}.daterangepicker .custom-range-inputs{display:-webkit-flex;display:-ms-flexbox;display:flex;margin:-3px -3px 5px}.daterangepicker .custom-range-inputs input{min-width:50px;width:50px;-webkit-flex:1;-ms-flex:1;flex:1;margin:3px;border-radius:4px;border:1px solid #ccc;height:auto;padding:.5em;font-size:13px;color:#333}.daterangepicker .custom-range-buttons{display:-webkit-flex;display:-ms-flexbox;display:flex;margin:-3px}.daterangepicker .custom-range-buttons button{padding:4px 9px;margin:3px;border-radius:4px;background:#f5f5f5;color:#08c}.daterangepicker .custom-range-buttons button:hover{background:#dcdcdc}.daterangepicker .custom-range-buttons button.apply-btn{background:#38A551;color:#fff}.daterangepicker .custom-range-buttons button.apply-btn:hover{background:#2b7f3e}.daterangepicker .arrow-left,.daterangepicker .arrow-right{display:inline-block;position:relative;background-color:#333;width:7px;height:3px;margin-bottom:2px;vertical-align:middle}.daterangepicker .arrow-left:before,.daterangepicker .arrow-right:before{content:'';display:block;position:absolute;border:5px solid transparent}.daterangepicker .arrow-left{margin-left:5px}.daterangepicker .arrow-left:before{border-right-width:6px;border-right-color:#333;-webkit-transform:translate(-10px,-3.5px);transform:translate(-10px,-3.5px)}.daterangepicker .arrow-right{margin-right:5px}.daterangepicker .arrow-right:before{border-left-width:6px;border-left-color:#333;-webkit-transform:translate(6px,-3.5px);transform:translate(6px,-3.5px)}.daterangepicker.orientation-left:not(.standalone):before,.daterangepicker.orientation-right:not(.standalone):before{position:absolute;top:-7px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.2);border-left:7px solid transparent}.daterangepicker.orientation-right:not(.standalone):before{left:9px;content:''}.daterangepicker.orientation-left:not(.standalone):before{right:9px;content:''}.daterangepicker.orientation-left:not(.standalone):after,.daterangepicker.orientation-right:not(.standalone):after{position:absolute;top:-6px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.daterangepicker.orientation-right:not(.standalone):after{left:10px}.daterangepicker.orientation-left:not(.standalone):after{right:10px}.calendar,.daterangepicker select.hidden{display:none}.daterangepicker select{width:100%;box-sizing:border-box;padding:2px 7px;height:auto;font-size:13px;line-height:1.5em;text-align:center;margin:0 2px}.daterangepicker select.month-select{-webkit-flex:10;-ms-flex:10;flex:10;max-width:75%}.daterangepicker select.decade-select,.daterangepicker select.year-select{-webkit-flex:11;-ms-flex:11;flex:11;max-width:75%}.calendar{margin:4px}.calendar .calendar-header,.calendar .calendar-table{min-width:190px;margin-left:auto;margin-right:auto}.calendar .calendar-title{padding:4px 9px;margin:0 auto 8px;text-align:center;display:block}.calendar .calendar-header button{margin:0;padding:4px 0;width:100%;border-radius:4px;background:0 0}.calendar .calendar-header button:hover{background:#f5f5f5}.calendar .calendar-header{display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0 6px 4px}.calendar .calendar-header .calendar-selects{-webkit-flex:5;-ms-flex:5;flex:5;text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:2px}.calendar .calendar-header .arrow{-webkit-flex:1;-ms-flex:1;flex:1;text-align:center}.calendar .calendar-header .arrow.arrow-hidden{visibility:hidden}.calendar .calendar-table{height:180px;border:1px solid #f5f5f5;border-radius:4px;overflow:hidden;padding:5px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.calendar .calendar-table .table-row{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around;-webkit-flex:1;-ms-flex:1;flex:1}.calendar .calendar-table .table-row .table-col{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;text-align:center;line-height:1;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.calendar .calendar-table .table-row .table-col .table-value-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.calendar .calendar-table .table-row .table-col .table-value-wrapper .table-value{-webkit-flex:1;-ms-flex:1;flex:1}.calendar .calendar-table .table-row .table-col .week-day.unavailable,.calendar .calendar-table .table-row .table-col.out-of-boundaries,.calendar .calendar-table .table-row .table-col.unavailable{color:#bbb}.calendar .calendar-table .table-row .table-col.in-range{background:rgba(0,136,204,.1)}.calendar .calendar-table .table-row .table-col.clickable{cursor:pointer}.calendar .calendar-table .table-row .table-col.clickable:hover .table-value-wrapper{background:#eee;border-radius:4px}.calendar .calendar-table .table-row .table-col.end-date .table-value-wrapper,.calendar .calendar-table .table-row .table-col.start-date .table-value-wrapper{border-radius:4px}.calendar .calendar-table .table-row .table-col.end-date .table-value-wrapper,.calendar .calendar-table .table-row .table-col.end-date .table-value-wrapper:hover,.calendar .calendar-table .table-row .table-col.start-date .table-value-wrapper,.calendar .calendar-table .table-row .table-col.start-date .table-value-wrapper:hover{background:#08c;color:#fff}.calendar .calendar-table .table-row .table-col.end-date.out-of-boundaries .table-value-wrapper,.calendar .calendar-table .table-row .table-col.end-date.out-of-boundaries .table-value-wrapper:hover,.calendar .calendar-table .table-row .table-col.start-date.out-of-boundaries .table-value-wrapper,.calendar .calendar-table .table-row .table-col.start-date.out-of-boundaries .table-value-wrapper:hover{background:#bbb}.calendar .calendar-table .table-row .table-col.start-date{border-radius:4px 0 0 4px}.calendar .calendar-table .table-row .table-col.end-date{border-radius:0 4px 4px 0}.calendar .calendar-table .table-row .table-col .week-day{-webkit-flex:1;-ms-flex:1;flex:1;text-align:center}.calendar .calendar-table .table-row.weekdays .table-col{font-weight:700}.daterangepicker.opened{display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex}.daterangepicker.expanded .calendar{display:block}.daterangepicker.hide-periods .calendar .calendar-title,.daterangepicker.hide-periods .periods,.daterangepicker.hide-weekdays .weekdays,.daterangepicker.single .calendar .calendar-title,.daterangepicker.single .custom-range-buttons,.daterangepicker.single .custom-range-inputs,.daterangepicker.single .ranges,.daterangepicker.standalone .custom-range-buttons{display:none}.daterangepicker.standalone{position:static}.daterangepicker.single{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.daterangepicker.single .controls{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.daterangepicker.single .controls .periods{margin-bottom:0}.daterangepicker.single .calendar .calendar-header{margin-left:0;margin-right:0}.daterangepicker.single .calendar .calendar-table{border:none;padding:0}.daterangepicker.single.hide-periods .controls{display:none}.daterangepicker.month-period .table-col,.daterangepicker.year-period .table-col{font-size:1.25em}.daterangepicker.quarter-period .table-col{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-size:2em}.daterangepicker.quarter-period .table-col .months{font-size:.5em;opacity:.75}.daterangepicker.orientation-left:not(.single) .controls{-webkit-order:2;-ms-flex-order:2;order:2} \ No newline at end of file + */.daterangepicker{display:none;position:absolute;background:#fff;box-shadow:0 2px 15px rgba(0,0,0,.3);-ms-flex-pack:start;justify-content:flex-start;border-radius:4px;padding:4px;font-size:13px;font-family:sans-serif;line-height:1.5em}.daterangepicker button,.daterangepicker form,.daterangepicker li,.daterangepicker ul{padding:0;margin:0;border:0;list-style:none;outline:0}.daterangepicker .controls{min-width:180px;margin:4px}.daterangepicker .periods li,.daterangepicker .ranges li{padding:4px 9px;margin:0;background:#f5f5f5;color:#08c;cursor:pointer}.daterangepicker .periods li.active,.daterangepicker .periods li:hover,.daterangepicker .ranges li.active,.daterangepicker .ranges li:hover{background:#08c;color:#fff}.daterangepicker .periods{display:-ms-inline-flexbox;display:inline-flex;margin:0 auto 8px}.daterangepicker .periods li:first-child{border-radius:4px 0 0 4px}.daterangepicker .periods li:last-child{border-radius:0 4px 4px 0}.daterangepicker .ranges{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch}.daterangepicker .ranges li{border-radius:4px;margin-bottom:8px;text-align:left}.daterangepicker .custom-range-inputs{display:-ms-flexbox;display:flex;margin:-3px -3px 5px}.daterangepicker .custom-range-inputs input{min-width:50px;width:50px;-ms-flex:1;flex:1;margin:3px;border-radius:4px;border:1px solid #ccc;height:auto;padding:.5em;font-size:13px;color:#333}.daterangepicker .custom-range-buttons{display:-ms-flexbox;display:flex;margin:-3px}.daterangepicker .custom-range-buttons button{padding:4px 9px;margin:3px;border-radius:4px;background:#f5f5f5;color:#08c}.daterangepicker .custom-range-buttons button:hover{background:#dcdcdc}.daterangepicker .custom-range-buttons button.apply-btn{background:#38A551;color:#fff}.daterangepicker .custom-range-buttons button.apply-btn:hover{background:#2b7f3e}.daterangepicker .arrow-left,.daterangepicker .arrow-right{display:inline-block;position:relative;background-color:#333;width:7px;height:3px;margin-bottom:2px;vertical-align:middle}.daterangepicker .arrow-left:before,.daterangepicker .arrow-right:before{content:'';display:block;position:absolute;border:5px solid transparent}.daterangepicker .arrow-left{margin-left:5px}.daterangepicker .arrow-left:before{border-right-width:6px;border-right-color:#333;transform:translate(-10px,-3.5px)}.daterangepicker .arrow-right{margin-right:5px}.daterangepicker .arrow-right:before{border-left-width:6px;border-left-color:#333;transform:translate(6px,-3.5px)}.daterangepicker.orientation-left:not(.standalone):before,.daterangepicker.orientation-right:not(.standalone):before{position:absolute;top:-7px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.2);border-left:7px solid transparent}.daterangepicker.orientation-right:not(.standalone):before{left:9px;content:''}.daterangepicker.orientation-left:not(.standalone):before{right:9px;content:''}.daterangepicker.orientation-left:not(.standalone):after,.daterangepicker.orientation-right:not(.standalone):after{position:absolute;top:-6px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.daterangepicker.orientation-right:not(.standalone):after{left:10px}.daterangepicker.orientation-left:not(.standalone):after{right:10px}.calendar,.daterangepicker select.hidden{display:none}.daterangepicker select{width:100%;box-sizing:border-box;padding:2px 7px;height:auto;font-size:13px;line-height:1.5em;text-align:center;margin:0 2px}.daterangepicker select.month-select{-ms-flex:10;flex:10;max-width:75%}.daterangepicker select.decade-select,.daterangepicker select.year-select{-ms-flex:11;flex:11;max-width:75%}.calendar{margin:4px}.calendar .calendar-header,.calendar .calendar-table{min-width:190px;margin-left:auto;margin-right:auto}.calendar .calendar-title{padding:4px 9px;margin:0 auto 8px;text-align:center;display:block}.calendar .calendar-header button{margin:0;padding:4px 0;width:100%;border-radius:4px;background:0 0}.calendar .calendar-header button:hover{background:#f5f5f5}.calendar .calendar-header{display:-ms-flexbox;display:flex;margin:0 6px 4px}.calendar .calendar-header .calendar-selects{-ms-flex:5;flex:5;text-align:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;padding:2px}.calendar .calendar-header .arrow{-ms-flex:1;flex:1;text-align:center}.calendar .calendar-header .arrow.arrow-hidden{visibility:hidden}.calendar .calendar-table{height:180px;border:1px solid #f5f5f5;border-radius:4px;overflow:hidden;padding:5px;display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;-ms-flex-pack:distribute;justify-content:space-around;-ms-flex-direction:column;flex-direction:column}.calendar .calendar-table .table-row{display:-ms-flexbox;display:flex;-ms-flex-line-pack:stretch;align-content:stretch;-ms-flex-pack:distribute;justify-content:space-around;-ms-flex:1;flex:1}.calendar .calendar-table .table-row .table-col{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;text-align:center;line-height:1;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.calendar .calendar-table .table-row .table-col .table-value-wrapper{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center}.calendar .calendar-table .table-row .table-col .table-value-wrapper .table-value{-ms-flex:1;flex:1}.calendar .calendar-table .table-row .table-col .week-day.unavailable,.calendar .calendar-table .table-row .table-col.out-of-boundaries,.calendar .calendar-table .table-row .table-col.unavailable{color:#bbb}.calendar .calendar-table .table-row .table-col.in-range{background:rgba(0,136,204,.1)}.calendar .calendar-table .table-row .table-col.clickable{cursor:pointer}.calendar .calendar-table .table-row .table-col.clickable:hover .table-value-wrapper{background:#eee;border-radius:4px}.calendar .calendar-table .table-row .table-col.end-date .table-value-wrapper,.calendar .calendar-table .table-row .table-col.start-date .table-value-wrapper{border-radius:4px}.calendar .calendar-table .table-row .table-col.end-date .table-value-wrapper,.calendar .calendar-table .table-row .table-col.end-date .table-value-wrapper:hover,.calendar .calendar-table .table-row .table-col.start-date .table-value-wrapper,.calendar .calendar-table .table-row .table-col.start-date .table-value-wrapper:hover{background:#08c;color:#fff}.calendar .calendar-table .table-row .table-col.end-date.out-of-boundaries .table-value-wrapper,.calendar .calendar-table .table-row .table-col.end-date.out-of-boundaries .table-value-wrapper:hover,.calendar .calendar-table .table-row .table-col.start-date.out-of-boundaries .table-value-wrapper,.calendar .calendar-table .table-row .table-col.start-date.out-of-boundaries .table-value-wrapper:hover{background:#bbb}.calendar .calendar-table .table-row .table-col.start-date{border-radius:4px 0 0 4px}.calendar .calendar-table .table-row .table-col.end-date{border-radius:0 4px 4px 0}.calendar .calendar-table .table-row .table-col .week-day{-ms-flex:1;flex:1;text-align:center}.calendar .calendar-table .table-row.weekdays .table-col{font-weight:700}.daterangepicker.opened{display:-ms-inline-flexbox;display:inline-flex}.daterangepicker.expanded .calendar{display:block}.daterangepicker.hide-periods .calendar .calendar-title,.daterangepicker.hide-periods .periods,.daterangepicker.hide-weekdays .weekdays,.daterangepicker.single .calendar .calendar-title,.daterangepicker.single .custom-range-buttons,.daterangepicker.single .custom-range-inputs,.daterangepicker.single .ranges,.daterangepicker.standalone .custom-range-buttons{display:none}.daterangepicker.standalone{position:static}.daterangepicker.single{-ms-flex-direction:column;flex-direction:column}.daterangepicker.single .controls{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.daterangepicker.single .controls .periods{margin-bottom:0}.daterangepicker.single .calendar .calendar-header{margin-left:0;margin-right:0}.daterangepicker.single .calendar .calendar-table{border:none;padding:0}.daterangepicker.single.hide-periods .controls{display:none}.daterangepicker.month-period .table-col,.daterangepicker.year-period .table-col{font-size:1.25em}.daterangepicker.quarter-period .table-col{-ms-flex-direction:column;flex-direction:column;font-size:2em}.daterangepicker.quarter-period .table-col .months{font-size:.5em;opacity:.75}.daterangepicker.orientation-left:not(.single) .controls{-ms-flex-order:2;order:2} \ No newline at end of file diff --git a/dist/daterangepicker.min.js b/dist/daterangepicker.min.js index 7610d16..e97c228 100644 --- a/dist/daterangepicker.min.js +++ b/dist/daterangepicker.min.js @@ -1,8 +1,8 @@ /*! * knockout-daterangepicker - * version: 0.0.9 + * version: 0.1.0 * authors: Sensor Tower team * license: MIT * https://sensortower.github.io/daterangepicker */ -(function(){var t,e,n,a,r,i,o,s,c,u,d,l=function(t,e){function n(){this.constructor=t}for(var a in e)h.call(e,a)&&(t[a]=e[a]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty,p=function(t,e){return function(){return t.apply(e,arguments)}};u=function(){function t(){}return t.patchCurrentLocale=function(t){return moment.locale(moment.locale(),t)},t.setFirstDayOfTheWeek=function(t){var e;return t=(t%7+7)%7,moment.localeData().firstDayOfWeek()!==t?(e=t-moment.localeData().firstDayOfWeek(),this.patchCurrentLocale({week:{dow:t,doy:moment.localeData().firstDayOfYear()}})):void 0},t.tz=function(t){var e,n;return e=Array.prototype.slice.call(arguments,0,-1),n=arguments[arguments.length-1],moment.tz?moment.tz.apply(null,e.concat([n])):n&&"utc"===n.toLowerCase()?moment.utc.apply(null,e):moment.apply(null,e)},t}(),c=function(){function t(t,e){this.date=t.clone(),this.period=e}return t.array=function(t,e,n){var a,r,i,o,s;for(r=new this(t,n),s=[],a=i=0,o=e-1;o>=0?o>=i:i>=o;a=o>=0?++i:--i)s.push(r.next());return s},t.prototype.next=function(){var t;return t=this.date,this.date=t.clone().add(1,this.period),t.clone()},t}(),e=function(){function t(){}return t.rotateArray=function(t,e){return e%=t.length,t.slice(e).concat(t.slice(0,e))},t.uniqArray=function(t){var e,n,a,r;for(r=[],n=0,a=t.length;a>n;n++)e=t[n],-1===r.indexOf(e)&&r.push(e);return r},t}(),$.fn.daterangepicker=function(t,e){return null==t&&(t={}),this.each(function(){var n;return n=$(this),n.data("daterangepicker")?void 0:(t.anchorElement=n,e&&(t.callback=e),t.callback=$.proxy(t.callback,this),n.data("daterangepicker",new s(t)))}),this},ko.bindingHandlers.stopBinding={init:function(){return{controlsDescendantBindings:!0}}},ko.virtualElements.allowedBindings.stopBinding=!0,ko.bindingHandlers.daterangepicker=function(){return $.extend(this,{_optionsKey:"daterangepickerOptions",_formatKey:"daterangepickerFormat",init:function(t,e,n){var a,r;return a=e(),r=ko.unwrap(n.get(this._optionsKey))||{},$(t).daterangepicker(r,function(t,e,n){return a([t,e])})},update:function(t,e,n){var a,r,i,o,s,c,u;return a=$(t),s=e()(),c=s[0],i=s[1],r=ko.unwrap(n.get(this._formatKey))||"MMM D, YYYY",u=moment(c).format(r),o=moment(i).format(r),ko.ignoreDependencies(function(){var t;return a.data("daterangepicker").standalone()||(t=a.data("daterangepicker").single()?u:u+" – "+o,a.val(t).text(t)),a.data("daterangepicker").startDate(c),a.data("daterangepicker").endDate(i)})}})}(),o=function(){function t(t,e,n){this.title=t,this.startDate=e,this.endDate=n}return t}(),t=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return l(e,t),e}(o),i=function(t){function e(){return e.__super__.constructor.apply(this,arguments)}return l(e,t),e}(o),d=function(){function t(){}return t.allPeriods=["day","week","month","quarter","year"],t.scale=function(t){return"day"===t||"week"===t?"month":"year"},t.showWeekDayNames=function(t){return"day"===t||"week"===t?!0:!1},t.nextPageArguments=function(t){var e,n;return e="year"===t?9:1,n=this.scale(t),[e,n]},t.format=function(t){switch(t){case"day":case"week":return"D";case"month":return"MMM";case"quarter":return"\\QQ";case"year":return"YYYY"}},t.title=function(t){switch(t){case"day":return"Day";case"week":return"Week";case"month":return"Month";case"quarter":return"Quarter";case"year":return"Year"}},t.dimentions=function(t){switch(t){case"day":return[7,6];case"week":return[1,6];case"month":return[3,4];case"quarter":return[2,2];case"year":return[3,3]}},t.methods=["scale","showWeekDayNames","nextPageArguments","format","title","dimentions"],t.extendObservable=function(e){return this.methods.forEach(function(n){return e[n]=function(){return t[n](e())}}),e},t}(),r=function(){function e(t){null==t&&(t={}),this.firstDayOfWeek=this._firstDayOfWeek(t.firstDayOfWeek),this.timeZone=this._timeZone(t.timeZone),this.periods=this._periods(t.periods),this.period=this._period(t.period),this.single=this._single(t.single),this.opened=this._opened(t.opened),this.expanded=this._expanded(t.expanded),this.standalone=this._standalone(t.standalone),this.hideWeekdays=this._hideWeekdays(t.hideWeekdays),this.locale=this._locale(t.locale),this.orientation=this._orientation(t.orientation),this.forceUpdate=t.forceUpdate,this.minDate=this._minDate(t.minDate),this.maxDate=this._maxDate(t.maxDate),this.startDate=this._startDate(t.startDate),this.endDate=this._endDate(t.endDate),this.ranges=this._ranges(t.ranges),this.anchorElement=this._anchorElement(t.anchorElement),this.parentElement=this._parentElement(t.parentElement),this.callback=this._callback(t.callback),this.firstDayOfWeek.subscribe(function(t){return u.setFirstDayOfTheWeek(t)}),u.setFirstDayOfTheWeek(this.firstDayOfWeek())}return e.prototype.extend=function(t){var e,n,a;n=[];for(e in this)a=this[e],this.hasOwnProperty(e)&&"_"!==e[0]&&n.push(t[e]=a);return n},e.prototype._firstDayOfWeek=function(t){return ko.observable(t?t:0)},e.prototype._timeZone=function(t){return ko.observable(t||"UTC")},e.prototype._periods=function(t){return ko.observableArray(t||d.allPeriods)},e.prototype._period=function(t){if(t||(t=this.periods()[0]),"day"!==t&&"week"!==t&&"month"!==t&&"quarter"!==t&&"year"!==t)throw new Error("Invalid period");return d.extendObservable(ko.observable(t))},e.prototype._single=function(t){return ko.observable(t||!1)},e.prototype._opened=function(t){return ko.observable(t||!1)},e.prototype._expanded=function(t){return ko.observable(t||!1)},e.prototype._standalone=function(t){return ko.observable(t||!1)},e.prototype._hideWeekdays=function(t){return ko.observable(t||!1)},e.prototype._minDate=function(t){var e,n;return t instanceof Array&&(n=t,t=n[0],e=n[1]),t||(t=moment().subtract(30,"years")),this._dateObservable(t,e)},e.prototype._maxDate=function(t){var e,n;return t instanceof Array&&(n=t,t=n[0],e=n[1]),t||(t=moment()),this._dateObservable(t,e,this.minDate)},e.prototype._startDate=function(t){return t||(t=moment().subtract(29,"days")),this._dateObservable(t,null,this.minDate,this.maxDate)},e.prototype._endDate=function(t){return t||(t=moment()),this._dateObservable(t,null,this.startDate,this.maxDate)},e.prototype._ranges=function(e){var n,a,r,s,c,d,l;if(e||(e=this._defaultRanges()),!$.isPlainObject(e))throw new Error("Invalid ranges parameter (should be a plain object)");r=[];for(c in e)switch(l=e[c]){case"all-time":r.push(new t(c,this.minDate().clone(),this.maxDate().clone()));break;case"custom":r.push(new i(c));break;default:if(!$.isArray(l))throw new Error("Value should be an array");if(s=l[0],n=l[1],!s)throw new Error("Missing start date");if(!n)throw new Error("Missing end date");if(a=u.tz(s,this.timeZone()),d=u.tz(n,this.timeZone()),!a.isValid())throw new Error("Invalid start date");if(!d.isValid())throw new Error("Invalid end date");r.push(new o(c,a,d))}return r},e.prototype._locale=function(t){return $.extend({applyButtonTitle:"Apply",cancelButtonTitle:"Cancel",inputFormat:"L",startLabel:"Start",endLabel:"End"},t||{})},e.prototype._orientation=function(t){if(t||(t="right"),"right"!==t&&"left"!==t)throw new Error("Invalid orientation");return ko.observable(t)},e.prototype._dateObservable=function(t,e,n,a){var r,i,o,s;return s=ko.observable(),r=ko.computed({read:function(){return s()},write:function(t){return function(t){var e;return t=r.fit(t),e=s(),e&&t.isSame(e)?void 0:s(t)}}(this)}),r.mode=e||"inclusive",o=function(t){return function(e){var a;if(n){switch(a=n(),n.mode){case"extended":a=a.clone().startOf(t.period());break;case"exclusive":a=a.clone().endOf(t.period()).add(1,"millisecond")}e=moment.max(a,e)}return e}}(this),i=function(t){return function(e){var n;if(a){switch(n=a(),a.mode){case"extended":n=n.clone().endOf(t.period());break;case"exclusive":n=n.clone().startOf(t.period()).subtract(1,"millisecond")}e=moment.min(n,e)}return e}}(this),r.fit=function(t){return function(e){return e=u.tz(e,t.timeZone()),i(o(e))}}(this),r(t),r.clone=function(t){return function(){return t._dateObservable(s(),r.mode,n,a)}}(this),r.isWithinBoundaries=function(t){return function(e){var r,i,o,s,c,d,l;return e=u.tz(e,t.timeZone()),s=n(),i=a(),r=e.isBetween(s,i,t.period()),l=e.isSame(s,t.period()),d=e.isSame(i,t.period()),c="exclusive"===n.mode,o="exclusive"===a.mode,r||!c&&l&&!(o&&d)||!o&&d&&!(c&&l)}}(this),n&&(r.minBoundary=n,n.subscribe(function(){return r(s())})),a&&(r.maxBoundary=a,a.subscribe(function(){return r(s())})),r},e.prototype._defaultRanges=function(){return{"Last 30 days":[moment().subtract(29,"days"),moment()],"Last 90 days":[moment().subtract(89,"days"),moment()],"Last Year":[moment().subtract(1,"year").add(1,"day"),moment()],"All Time":"all-time","Custom Range":"custom"}},e.prototype._anchorElement=function(t){return $(t)},e.prototype._parentElement=function(t){return $(t||(this.standalone()?this.anchorElement:"body"))},e.prototype._callback=function(t){if(t&&!$.isFunction(t))throw new Error("Invalid callback (not a function)");return t},e}(),n=function(){function t(t){this.clickNextButton=p(this.clickNextButton,this),this.clickPrevButton=p(this.clickPrevButton,this),this.currentDate=t.currentDate,this.period=t.period,this.timeZone=t.timeZone,this.firstDate=t.firstDate,this.firstYearOfDecade=t.firstYearOfDecade,this.prevDate=ko.pureComputed(function(t){return function(){var e,n,a;return a=t.period.nextPageArguments(),e=a[0],n=a[1],t.currentDate().clone().subtract(e,n)}}(this)),this.nextDate=ko.pureComputed(function(t){return function(){var e,n,a;return a=t.period.nextPageArguments(),e=a[0],n=a[1],t.currentDate().clone().add(e,n)}}(this)),this.selectedMonth=ko.computed({read:function(t){return function(){return t.currentDate().month()}}(this),write:function(t){return function(e){var n;return n=t.currentDate().clone().month(e),n.isSame(t.currentDate(),"month")?void 0:t.currentDate(n)}}(this),pure:!0}),this.selectedYear=ko.computed({read:function(t){return function(){return t.currentDate().year()}}(this),write:function(t){return function(e){var n;return n=t.currentDate().clone().year(e),n.isSame(t.currentDate(),"year")?void 0:t.currentDate(n)}}(this),pure:!0}),this.selectedDecade=ko.computed({read:function(t){return function(){return t.firstYearOfDecade(t.currentDate()).year()}}(this),write:function(t){return function(e){var n,a,r;return r=(t.currentDate().year()-t.selectedDecade())%9,a=e+r,n=t.currentDate().clone().year(a),n.isSame(t.currentDate(),"year")?void 0:t.currentDate(n)}}(this),pure:!0})}return t.prototype.clickPrevButton=function(){return this.currentDate(this.prevDate())},t.prototype.clickNextButton=function(){return this.currentDate(this.nextDate())},t.prototype.prevArrowCss=function(){var t,e;return t=this.firstDate().clone().subtract(1,"millisecond"),("day"===(e=this.period())||"week"===e)&&(t=t.endOf("month")),{"arrow-hidden":!this.currentDate.isWithinBoundaries(t)}},t.prototype.nextArrowCss=function(){var t,e,n,a,r;return n=this.period.dimentions(),t=n[0],r=n[1],e=this.firstDate().clone().add(t*r,this.period()),("day"===(a=this.period())||"week"===a)&&(e=e.startOf("month")),{"arrow-hidden":!this.currentDate.isWithinBoundaries(e)}},t.prototype.monthOptions=function(){var t,e,n;return e=this.currentDate.minBoundary().isSame(this.currentDate(),"year")?this.currentDate.minBoundary().month():0,t=this.currentDate.maxBoundary().isSame(this.currentDate(),"year")?this.currentDate.maxBoundary().month():11,function(){n=[];for(var a=e;t>=e?t>=a:a>=t;t>=e?a++:a--)n.push(a);return n}.apply(this)},t.prototype.yearOptions=function(){var t,e;return function(){e=[];for(var n=t=this.currentDate.minBoundary().year(),a=this.currentDate.maxBoundary().year();a>=t?a>=n:n>=a;a>=t?n++:n--)e.push(n);return e}.apply(this)},t.prototype.decadeOptions=function(){return e.uniqArray(this.yearOptions().map(function(t){return function(e){var n;return n=u.tz([e],t.timeZone()),t.firstYearOfDecade(n).year()}}(this)))},t.prototype.monthSelectorAvailable=function(){var t;return"day"===(t=this.period())||"week"===t},t.prototype.yearSelectorAvailable=function(){return"year"!==this.period()},t.prototype.decadeSelectorAvailable=function(){return"year"===this.period()},t.prototype.monthFormatter=function(t){return moment.utc([2015,t]).format("MMM")},t.prototype.yearFormatter=function(t){return moment.utc([t]).format("YYYY")},t.prototype.decadeFormatter=function(t){var e,n,a,r;return n=d.dimentions("year"),e=n[0],a=n[1],r=t+e*a-1,t+" – "+r},t}(),a=function(){function t(t,e,a){this.cssForDate=p(this.cssForDate,this),this.eventsForDate=p(this.eventsForDate,this),this.formatDateTemplate=p(this.formatDateTemplate,this),this.tableValues=p(this.tableValues,this),this.inRange=p(this.inRange,this),this.period=t.period,this.single=t.single,this.timeZone=t.timeZone,this.locale=t.locale,this.startDate=t.startDate,this.endDate=t.endDate,this.type=a,this.label=t.locale[a+"Label"]||"",this.hoverDate=ko.observable(null),this.activeDate=e,this.currentDate=e.clone(),this.inputDate=ko.computed({read:function(t){return function(){return(t.hoverDate()||t.activeDate()).format(t.locale.inputFormat)}}(this),write:function(t){return function(e){var n;return n=u.tz(e,t.locale.inputFormat,t.timeZone()),n.isValid()?t.activeDate(n):void 0}}(this),pure:!0}),this.firstDate=ko.pureComputed(function(t){return function(){var e,n;switch(e=t.currentDate().clone().startOf(t.period.scale()),t.period()){case"day":case"week":n=e.clone(),e.weekday(0),(e.isAfter(n)||e.isSame(n,"day"))&&e.subtract(1,"week");break;case"year":e=t.firstYearOfDecade(e)}return e}}(this)),this.activeDate.subscribe(function(t){return function(e){return t.currentDate(e)}}(this)),this.headerView=new n(this)}return t.prototype.calendar=function(){var t,e,n,a,r,i,o,s,u,d;for(i=this.period.dimentions(),e=i[0],d=i[1],a=new c(this.firstDate(),this.period()),s=[],u=r=1,o=d;o>=1?o>=r:r>=o;u=o>=1?++r:--r)s.push(function(){var r,i,o;for(o=[],t=r=1,i=e;i>=1?i>=r:r>=i;t=i>=1?++r:--r)n=a.next(),"end"===this.type?o.push(n.endOf(this.period())):o.push(n.startOf(this.period()));return o}.call(this));return s},t.prototype.weekDayNames=function(){return e.rotateArray(moment.weekdaysMin(),moment.localeData().firstDayOfWeek())},t.prototype.inRange=function(t){return t.isAfter(this.startDate(),this.period())&&t.isBefore(this.endDate(),this.period())||t.isSame(this.startDate(),this.period())||t.isSame(this.endDate(),this.period())},t.prototype.tableValues=function(t){var e,n,a;switch(e=this.period.format(),this.period()){case"day":case"month":case"year":return[{html:t.format(e)}];case"week":return t=t.clone().startOf(this.period()),c.array(t,7,"day").map(function(t){return function(n){return{html:n.format(e),css:{"week-day":!0,unavailable:t.cssForDate(n,!0).unavailable}}}}(this));case"quarter":return a=t.format(e),t=t.clone().startOf("quarter"),n=c.array(t,3,"month").map(function(t){return t.format("MMM")}),[{html:a+"
"+n.join(", ")+""}]}},t.prototype.formatDateTemplate=function(t){return{nodes:$("
"+this.formatDate(t)+"
").children()}},t.prototype.eventsForDate=function(t){return{click:function(e){return function(){return e.activeDate.isWithinBoundaries(t)?e.activeDate(t):void 0}}(this),mouseenter:function(e){return function(){return e.activeDate.isWithinBoundaries(t)?e.hoverDate(e.activeDate.fit(t)):void 0}}(this),mouseleave:function(t){return function(){return t.hoverDate(null)}}(this)}},t.prototype.cssForDate=function(t,e){var n,a,r,i,o;return i=t.isSame(this.activeDate(),this.period()),o=this.activeDate.isWithinBoundaries(t),e||(e="day"===this.period()),n=!t.isSame(this.currentDate(),"month"),a=this.inRange(t),r={"in-range":!this.single()&&(a||i)},r[this.type+"-date"]=i,r.clickable=o,r["out-of-boundaries"]=!o,r.unavailable=e&&n,r},t.prototype.firstYearOfDecade=function(t){var e,n,a,r;return e=u.tz(moment(),this.timeZone()).year(),n=e-4,a=Math.floor((t.year()-n)/9),r=n+9*a,u.tz([r],this.timeZone())},t}(),s=function(){function t(t){var e,n,i,o;null==t&&(t={}),this.outsideClick=p(this.outsideClick,this),this.setDateRange=p(this.setDateRange,this),new r(t).extend(this),this.startCalendar=new a(this,this.startDate,"start"),this.endCalendar=new a(this,this.endDate,"end"),this.startDateInput=this.startCalendar.inputDate,this.endDateInput=this.endCalendar.inputDate,this.dateRange=ko.observable([this.startDate(),this.endDate()]),this.startDate.subscribe(function(t){return function(e){return t.single()?(t.endDate(e.clone().endOf(t.period())),t.updateDateRange(),t.close()):(t.endDate().isSame(e)&&t.endDate(t.endDate().clone().endOf(t.period())),t.standalone()?t.updateDateRange():void 0)}}(this)),this.style=ko.observable({}),this.callback&&(this.dateRange.subscribe(function(t){return function(e){var n,a;return a=e[0],n=e[1],t.callback(a.clone(),n.clone(),t.period())}}(this)),this.forceUpdate&&(n=this.dateRange(),i=n[0],e=n[1],this.callback(i.clone(),e.clone(),this.period()))),this.anchorElement&&(o=$('
').appendTo(this.parentElement),this.containerElement=$(this.constructor.template).appendTo(o),ko.applyBindings(this,this.containerElement.get(0)),this.anchorElement.click(function(t){return function(){return t.updatePosition(),t.toggle()}}(this)),this.standalone()||$(document).on("mousedown.daterangepicker",this.outsideClick).on("touchend.daterangepicker",this.outsideClick).on("click.daterangepicker","[data-toggle=dropdown]",this.outsideClick).on("focusin.daterangepicker",this.outsideClick)),this.opened()&&this.updatePosition()}return t.prototype.periodProxy=d,t.prototype.calendars=function(){return this.single()?[this.startCalendar]:[this.startCalendar,this.endCalendar]},t.prototype.updateDateRange=function(){return this.dateRange([this.startDate(),this.endDate()])},t.prototype.cssClasses=function(){var t,e,n,a,r;for(n={single:this.single(),opened:this.standalone()||this.opened(),expanded:this.standalone()||this.single()||this.expanded(),standalone:this.standalone(),"hide-weekdays":this.hideWeekdays(),"hide-periods":1===this.periods().length,"orientation-left":"left"===this.orientation(),"orientation-right":"right"===this.orientation()},r=d.allPeriods,t=0,e=r.length;e>t;t++)a=r[t],n[a+"-period"]=a===this.period();return n},t.prototype.isActivePeriod=function(t){return this.period()===t},t.prototype.isActiveDateRange=function(t){var e,n,a,r;if(t.constructor===i){for(r=this.ranges,n=0,a=r.length;a>n;n++)if(e=r[n],e.constructor!==i&&this.isActiveDateRange(e))return!1;return!0}return this.startDate().isSame(t.startDate,"day")&&this.endDate().isSame(t.endDate,"day")},t.prototype.inputFocus=function(){return this.expanded(!0)},t.prototype.setPeriod=function(t){return this.period(t),this.expanded(!0)},t.prototype.setDateRange=function(t){return t.constructor===i?this.expanded(!0):(this.expanded(!1),this.close(),this.period("day"),this.startDate(t.startDate),this.endDate(t.endDate),this.updateDateRange())},t.prototype.applyChanges=function(){return this.close(),this.updateDateRange()},t.prototype.cancelChanges=function(){return this.close()},t.prototype.open=function(){return this.opened(!0)},t.prototype.close=function(){return this.standalone()?void 0:this.opened(!1)},t.prototype.toggle=function(){return this.opened()?this.close():this.open()},t.prototype.updatePosition=function(){var t,e,n;if(!this.standalone()){switch(t={top:0,left:0},e=$(window).width(),this.parentElement.is("body")||(t={top:this.parentElement.offset().top-this.parentElement.scrollTop(),left:this.parentElement.offset().left-this.parentElement.scrollLeft()},e=this.parentElement.get(0).clientWidth+this.parentElement.offset().left),n={top:this.anchorElement.offset().top+this.anchorElement.outerHeight()-t.top+"px",left:"auto",right:"auto"},this.orientation()){case"left":this.containerElement.offset().left<0?n.left="9px":n.right=e-this.anchorElement.offset().left-this.anchorElement.outerWidth()+"px";break;default:this.containerElement.offset().left+this.containerElement.outerWidth()>$(window).width()?n.right="0":n.left=this.anchorElement.offset().left-t.left+"px"}return this.style(n)}},t.prototype.outsideClick=function(t){var e;return e=$(t.target),"focusin"===t.type||e.closest(this.anchorElement).length||e.closest(this.containerElement).length||e.closest(".calendar").length?void 0:this.close()},t}(),s.template='
',$.extend($.fn.daterangepicker,{ArrayUtils:e,MomentIterator:c,MomentUtil:u,Period:d,Config:r,DateRange:o,AllTimeDateRange:t,CustomDateRange:i,DateRangePickerView:s,CalendarView:a,CalendarHeaderView:n})}).call(this); \ No newline at end of file +(function(){var t,e,n,a,r,i,o,s,c,u,d,l=function(t,e){function n(){this.constructor=t}for(var a in e)h.call(e,a)&&(t[a]=e[a]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty,p=function(t,e){return function(){return t.apply(e,arguments)}};u=function(){function t(){}return t.patchCurrentLocale=function(t){return moment.locale(moment.locale(),t)},t.setFirstDayOfTheWeek=function(t){var e;if(t=(t%7+7)%7,moment.localeData().firstDayOfWeek()!==t)return e=t-moment.localeData().firstDayOfWeek(),this.patchCurrentLocale({week:{dow:t,doy:moment.localeData().firstDayOfYear()}})},t.tz=function(t){var e,n;return e=Array.prototype.slice.call(arguments,0,-1),n=arguments[arguments.length-1],moment.tz?moment.tz.apply(null,e.concat([n])):n&&"utc"===n.toLowerCase()?moment.utc.apply(null,e):moment.apply(null,e)},t}(),c=function(){function t(t,e){this.date=t.clone(),this.period=e}return t.array=function(t,e,n){var a,r,i,o,s;for(r=new this(t,n),s=[],a=i=0,o=e-1;0<=o?i<=o:i>=o;a=0<=o?++i:--i)s.push(r.next());return s},t.prototype.next=function(){var t;return t=this.date,this.date=t.clone().add(1,this.period),t.clone()},t}(),e=function(){function t(){}return t.rotateArray=function(t,e){return e%=t.length,t.slice(e).concat(t.slice(0,e))},t.uniqArray=function(t){var e,n,a,r;for(r=[],n=0,a=t.length;n=t;e<=t?a++:a--)n.push(a);return n}.apply(this)},t.prototype.yearOptions=function(){var t,e;return function(){e=[];for(var n=t=this.currentDate.minBoundary().year(),a=this.currentDate.maxBoundary().year();t<=a?n<=a:n>=a;t<=a?n++:n--)e.push(n);return e}.apply(this)},t.prototype.decadeOptions=function(){return e.uniqArray(this.yearOptions().map(function(t){return function(e){var n;return n=u.tz([e],t.timeZone()),t.firstYearOfDecade(n).year()}}(this)))},t.prototype.monthSelectorAvailable=function(){var t;return"day"===(t=this.period())||"week"===t},t.prototype.yearSelectorAvailable=function(){return"year"!==this.period()},t.prototype.decadeSelectorAvailable=function(){return"year"===this.period()},t.prototype.monthFormatter=function(t){return moment.utc([2015,t]).format("MMM")},t.prototype.yearFormatter=function(t){return moment.utc([t]).format("YYYY")},t.prototype.decadeFormatter=function(t){var e,n,a,r;return n=d.dimentions("year"),e=n[0],a=n[1],r=t+e*a-1,t+" – "+r},t}(),a=function(){function t(t,e,a){this.cssForDate=p(this.cssForDate,this),this.eventsForDate=p(this.eventsForDate,this),this.formatDateTemplate=p(this.formatDateTemplate,this),this.tableValues=p(this.tableValues,this),this.inRange=p(this.inRange,this),this.period=t.period,this.single=t.single,this.timeZone=t.timeZone,this.locale=t.locale,this.startDate=t.startDate,this.endDate=t.endDate,this.isCustomPeriodRangeActive=t.isCustomPeriodRangeActive,this.type=a,this.label=t.locale[a+"Label"]||"",this.hoverDate=ko.observable(null),this.activeDate=e,this.currentDate=e.clone(),this.inputDate=ko.computed({read:function(t){return function(){return(t.hoverDate()||t.activeDate()).format(t.locale.inputFormat)}}(this),write:function(t){return function(e){var n;if(n=u.tz(e,t.locale.inputFormat,t.timeZone()),n.isValid())return t.activeDate(n)}}(this),pure:!0}),this.firstDate=ko.pureComputed(function(t){return function(){var e,n;switch(e=t.currentDate().clone().startOf(t.period.scale()),t.period()){case"day":case"week":n=e.clone(),e.weekday(0),(e.isAfter(n)||e.isSame(n,"day"))&&e.subtract(1,"week");break;case"year":e=t.firstYearOfDecade(e)}return e}}(this)),this.activeDate.subscribe(function(t){return function(e){return t.currentDate(e)}}(this)),this.headerView=new n(this)}return t.prototype.calendar=function(){var t,e,n,a,r,i,o,s,u,d;for(i=this.period.dimentions(),e=i[0],d=i[1],a=new c(this.firstDate(),this.period()),s=[],u=r=1,o=d;1<=o?r<=o:r>=o;u=1<=o?++r:--r)s.push(function(){var r,i,o;for(o=[],t=r=1,i=e;1<=i?r<=i:r>=i;t=1<=i?++r:--r)n=a.next(),"end"===this.type?o.push(n.endOf(this.period())):o.push(n.startOf(this.period()));return o}.call(this));return s},t.prototype.weekDayNames=function(){return e.rotateArray(moment.weekdaysMin(),moment.localeData().firstDayOfWeek())},t.prototype.inRange=function(t){return t.isAfter(this.startDate(),this.period())&&t.isBefore(this.endDate(),this.period())||t.isSame(this.startDate(),this.period())||t.isSame(this.endDate(),this.period())},t.prototype.tableValues=function(t){var e,n,a;switch(e=this.period.format(),this.period()){case"day":case"month":case"year":return[{html:t.format(e)}];case"week":return t=t.clone().startOf(this.period()),c.array(t,7,"day").map(function(t){return function(n){return{html:n.format(e),css:{"week-day":!0,unavailable:t.cssForDate(n,!0).unavailable}}}}(this));case"quarter":return a=t.format(e),t=t.clone().startOf("quarter"),n=c.array(t,3,"month").map(function(t){return t.format("MMM")}),[{html:a+"
"+n.join(", ")+""}]}},t.prototype.formatDateTemplate=function(t){return{nodes:$("
"+this.formatDate(t)+"
").children()}},t.prototype.eventsForDate=function(t){return{click:function(e){return function(){if(e.activeDate.isWithinBoundaries(t))return e.activeDate(t)}}(this),mouseenter:function(e){return function(){if(e.activeDate.isWithinBoundaries(t))return e.hoverDate(e.activeDate.fit(t))}}(this),mouseleave:function(t){return function(){return t.hoverDate(null)}}(this)}},t.prototype.cssForDate=function(t,e){var n,a,r,i,o;return i=t.isSame(this.activeDate(),this.period()),o=this.activeDate.isWithinBoundaries(t),e||(e="day"===this.period()),n=!t.isSame(this.currentDate(),"month"),a=this.inRange(t),r={"in-range":!this.single()&&(a||i)},r[this.type+"-date"]=i,r.clickable=o&&!this.isCustomPeriodRangeActive(),r["out-of-boundaries"]=!o||this.isCustomPeriodRangeActive(),r.unavailable=e&&n,r},t.prototype.firstYearOfDecade=function(t){var e,n,a,r;return e=u.tz(moment(),this.timeZone()).year(),n=e-4,a=Math.floor((t.year()-n)/9),r=n+9*a,u.tz([r],this.timeZone())},t}(),s=function(){function t(t){var e,n,i,o;null==t&&(t={}),this.outsideClick=p(this.outsideClick,this),this.setCustomPeriodRange=p(this.setCustomPeriodRange,this),this.setDateRange=p(this.setDateRange,this),new r(t).extend(this),this.startCalendar=new a(this,this.startDate,"start"),this.endCalendar=new a(this,this.endDate,"end"),this.startDateInput=this.startCalendar.inputDate,this.endDateInput=this.endCalendar.inputDate,this.dateRange=ko.observable([this.startDate(),this.endDate()]),this.startDate.subscribe(function(t){return function(e){return t.single()?(t.endDate(e.clone().endOf(t.period())),t.updateDateRange(),t.close()):(t.endDate().isSame(e)&&t.endDate(t.endDate().clone().endOf(t.period())),t.standalone()?t.updateDateRange():void 0)}}(this)),this.style=ko.observable({}),this.callback&&(this.dateRange.subscribe(function(t){return function(e){var n,a;return a=e[0],n=e[1],t.callback(a.clone(),n.clone(),t.period())}}(this)),this.forceUpdate&&(n=this.dateRange(),i=n[0],e=n[1],this.callback(i.clone(),e.clone(),this.period()))),this.anchorElement&&(o=$('
').appendTo(this.parentElement),this.containerElement=$(this.constructor.template).appendTo(o),ko.applyBindings(this,this.containerElement.get(0)),this.anchorElement.click(function(t){return function(){return t.updatePosition(),t.toggle()}}(this)),this.standalone()||$(document).on("mousedown.daterangepicker",this.outsideClick).on("touchend.daterangepicker",this.outsideClick).on("click.daterangepicker","[data-toggle=dropdown]",this.outsideClick).on("focusin.daterangepicker",this.outsideClick)),this.opened()&&this.updatePosition()}return t.prototype.periodProxy=d,t.prototype.calendars=function(){return this.single()?[this.startCalendar]:[this.startCalendar,this.endCalendar]},t.prototype.updateDateRange=function(){return this.dateRange([this.startDate(),this.endDate()])},t.prototype.cssClasses=function(){var t,e,n,a,r;for(n={single:this.single(),opened:this.standalone()||this.opened(),expanded:this.standalone()||this.single()||this.expanded(),standalone:this.standalone(),"hide-weekdays":this.hideWeekdays(),"hide-periods":this.periods().length+this.customPeriodRanges.length===1,"orientation-left":"left"===this.orientation(),"orientation-right":"right"===this.orientation()},r=d.allPeriods,t=0,e=r.length;t$(window).width()?n.right="0":n.left=this.anchorElement.offset().left-t.left+"px"}return this.style(n)}},t.prototype.outsideClick=function(t){var e;if(e=$(t.target),!("focusin"===t.type||e.closest(this.anchorElement).length||e.closest(this.containerElement).length||e.closest(".calendar").length))return this.close()},t}(),s.template='
',$.extend($.fn.daterangepicker,{ArrayUtils:e,MomentIterator:c,MomentUtil:u,Period:d,Config:r,DateRange:o,AllTimeDateRange:t,CustomDateRange:i,DateRangePickerView:s,CalendarView:a,CalendarHeaderView:n})}).call(this); \ No newline at end of file diff --git a/package.json b/package.json index 31207dd..bce76cf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "knockout-daterangepicker", - "version": "0.0.9", + "version": "0.1.0", "private": true, "engines": { "node": ">=0.12.0"