@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 8.83 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.multiviewcalendar.min","kendo.datepicker.min"],e):e()}((function(){!function(e,t){var n=window.kendo,a=n.ui,i=n.keys,r=a.Widget,s="month",o="open",d="close",l="change",p=n.template,u=e.extend,c=n.support,_=c.mobileOS,m="aria-expanded",g="aria-disabled",f="aria-activedescendant",h="k-disabled",b="disabled",v="readonly",D="aria-hidden",I=".kendoDateRangePicker",w="click"+I,k=c.mouseAndTouchPresent?n.applyEventMap("up",I.slice(1)):w,y=n.parseDate,A=function(e){n.DateView.call(this,e)};function T(e){e.preventDefault()}(A.prototype=Object.create(n.DateView.prototype))._calendar=function(){var t,i=this,r=i.calendar,s=i.options;r||(t=e("<div />").attr("id",n.guid()).appendTo(i.popup.element),i.calendar=r=new a.MultiViewCalendar(t),i._setOptions(s),r.navigate(i._value||i._current,s.start),i._range=i._range||s.range||{},t.on("mousedown.kendoDateRangePicker",T).on(w,"td:has(.k-link)",i._click.bind(i)),i.calendar.selectRange(i._range))},A.prototype._setOptions=function(e){this.calendar.setOptions({focusOnNav:!1,change:e.change,culture:e.culture,dates:e.dates,depth:e.depth,footer:e.footer,format:e.format,selectable:e.selectable,max:e.max,min:e.min,month:e.month,weekNumber:e.weekNumber,start:e.start,disableDates:e.disableDates,range:e.range})},A.prototype.range=function(e){this._range=e,this.calendar&&(e.start||e.end?this.calendar.selectRange(e):(this.calendar.selectRange(e),this.calendar.rangeSelectable.clear(!0)))},A.prototype.move=function(e){var t=this,n=e.keyCode,a=t.calendar,r=e.ctrlKey&&n==i.DOWN||n==i.ENTER,s=!1;if(e.altKey)n==i.DOWN?(t.open(),e.preventDefault(),s=!0):n==i.UP&&(t.close(),e.preventDefault(),s=!0);else if(t.popup.visible()){if(n==i.ESC||r&&a._cell.hasClass("k-selected"))return t.close(),e.preventDefault(),!0;t._current=a._move(e),s=!0}return s},A.prototype._click=function(e){_.ios||_.android&&("firefox"==_.browser||"chrome"==_.browser)?this._range&&this._range.end&&this.close():this._range&&this._range.end&&-1!==e.currentTarget.className.indexOf("k-range-end")&&this.close()},n.DateRangeView=A;var x=r.extend({init:function(e,t){var a,i=this;r.fn.init.call(i,e,t),e=i.element,(t=i.options).disableDates=n.calendar.disabled(t.disableDates),t.min=y(e.attr("min"))||y(t.min),t.max=y(e.attr("max"))||y(t.max),i._initialOptions=u({},t),i._buildHTML(),i._range=i.options.range,i._changeTriggered=!1,i.dateView=new A(u({},t,{id:e.attr("id"),anchor:i.wrapper,views:2,selectable:"range",range:i._range,change:function(){var e=this.selectRange();i.range(e),i.trigger(l),i._changeTriggered=!0,i._startDateInput.trigger(l),i._endDateInput.trigger(l),i._changeTriggered=!1},close:function(e){i.trigger(d)?e.preventDefault():(i._inputs.attr(m,!1),a.attr(D,!0),setTimeout((function(){i._inputs&&i._inputs.removeAttr(f)})))},open:function(e){i.trigger(o)?e.preventDefault():(i._inputs.attr(m,!0),a.attr(D,!1),i._updateARIA())}})),a=i.dateView.div,i._ariaTemplate=p(this.options.ARIATemplate).bind(i),i._reset(),i._aria(),i._inputs.on(k+I,i._click.bind(i)).on("keydown"+I,i._keydown.bind(i)),i._initializeDateInputs(),e.is("[disabled]")?i.enable(!1):i.readonly(e.is("[readonly]"))},options:{name:"DateRangePicker",labels:!0,footer:"",format:"",culture:"",min:new Date(1900,0,1),max:new Date(2099,11,31),start:s,depth:s,animation:{},month:{},startField:"",endField:"",dates:[],disableDates:null,range:null,ARIATemplate:function(e){return"Current focused "+e.valueType+" is "+e.text},weekNumber:!1,messages:{startLabel:"Start",endLabel:"End"},size:"medium",fillMode:"solid",rounded:"medium"},events:[o,d,l],setOptions:function(e){var t=this;r.fn.setOptions.call(t,e),(e=t.options).min=y(e.min),e.max=y(e.max),t._inputs.off(I),this._initializeDateInputs(),t.dateView.setOptions(e),t._range=e.range},_aria:function(){this._inputs.attr({role:"combobox","aria-haspopup":"grid","aria-expanded":!1,"aria-controls":this.dateView._dateViewID,autocomplete:"off"})},_click:function(){var e=this;e._preventInputAction||e.dateView.popup.visible()||e.dateView.open()},_keydown:function(e){var t,n=this,a=n.dateView;n._preventInputAction?e.stopImmediatePropagation():(t=a.move(e),n._updateARIA(a._current),t&&e.stopImmediatePropagation&&e.stopImmediatePropagation())},_updateARIA:function(t){var n=this,a=n.dateView.calendar;n._inputs&&n._inputs.length&&n._inputs.removeAttr(f),a&&(t&&!a._dateInViews(t)&&a.navigate(t),e.contains(n.element[0],document.activeElement)&&n._inputs.attr(f,a._updateAria(n._ariaTemplate,t)))},_startChange:function(e){var t=this,n=e.sender.value(),a=t._endDateInput.value();t.options.disableDates(n)&&(e.sender.value(null),n=null),t.range({start:n,end:a}),t._changeTriggered||t.trigger(l)},_endChange:function(e){var t=this,n=e.sender.value(),a=t._startDateInput.value();t.options.disableDates(n)&&(e.sender.value(null),n=null),t.range({start:a,end:n}),t._changeTriggered||t.trigger(l)},_initializeDateInputs:function(){var e=this,t=e.options,n=t.range||{},a={footer:t.footer,format:t.format,culture:t.culture,min:t.min,max:t.max,start:t.start,startField:t.startField,endField:t.endField,depth:t.depth,animation:t.animation,month:t.month,dates:t.dates,disableDates:t.disableDates,ARIATemplate:t.ARIATemplate,weekNumber:t.weekNumber,size:t.size,fillMode:t.fillMode,rounded:t.rounded};e._startDateInput&&(e._startDateInput.destroy(),e._endDateInput.destroy(),e.wrapper.empty(),e._buildHTML(),e._inputs.on(k+I,e._click.bind(e)).on("keydown"+I,e._keydown.bind(e))),e._startDateInput=e._startInput.kendoDateInput(u(!0,a,{value:n.start})).getKendoDateInput(),e._endDateInput=e._endInput.kendoDateInput(u(!0,a,{value:n.end})).getKendoDateInput(),e._startChangeHandler=e._startChange.bind(e),e._startDateInput.bind(l,e._startChangeHandler),e._endChangeHandler=e._endChange.bind(e),e._endDateInput.bind(l,e._endChangeHandler)},_buildHTML:function(){var t,a=this,i=a.element;a.wrapper||(a.wrapper=i.addClass("k-daterangepicker")),a.options.labels?(t=n.guid(),e('<span class="k-floating-label-container"><input id="'+t+'"/><label for="'+t+'" class="k-label">'+a.options.messages.startLabel+"</label></span>").appendTo(a.wrapper),t=n.guid(),e('<span> </span><span class="k-floating-label-container"><input id="'+t+'"/><label for="'+t+'" class="k-label">'+a.options.messages.endLabel+"</label></span>").appendTo(a.wrapper)):e("<input/><span> </span><input/>").appendTo(a.wrapper),a._startInput=a.wrapper.find("input").eq(0),a._endInput=a.wrapper.find("input").eq(1),""!==a.options.startField&&(a._startInput.attr(n.attr("bind"),"value: "+a.options.startField),a._startInput.attr("name",a.options.startField)),""!==a.options.endField&&(a._endInput.attr(n.attr("bind"),"value: "+a.options.endField),a._endInput.attr("name",a.options.endField)),a._inputs=a._startInput.add(a._endInput)},_option:function(e,n){var a=this.options;if(n===t)return a[e];(n=y(n,a.parseFormats,a.culture))&&(a[e]=new Date(+n),this.dateView[e](n))},_reset:function(){var t=this,n=t.element,a=n.attr("form"),i=a?e("#"+a):n.closest("form");i[0]&&(t._resetHandler=function(){t.max(t._initialOptions.max),t.min(t._initialOptions.min)},t._form=i.on("reset",t._resetHandler))},_editable:function(t){var n=this,a=n._inputs,i=t.readonly,r=t.disable;i||r?(n.wrapper.addClass(r?h:"").removeClass(r?"":h),a.attr(b,r).attr(v,i).attr(g,r),n._preventInputAction=!0):(n.wrapper.removeClass(h),e.each(a,(function(e,t){t.removeAttribute(b),t.removeAttribute(v)})),a.attr(g,!1),n._preventInputAction=!1)},destroy:function(){var e=this;e._startDateInput&&(e._startDateInput.unbind(l,e._startChangeHandler),e._startDateInput.destroy(),e._startChangeHandler=null),e._endDateInput&&(e._endDateInput.unbind(l,e._endChangeHandler),e._endDateInput.destroy(),e._endChangeHandler=null),e._form&&e._form.off("reset",e._resetHandler),e._inputs.off(I),e._inputs=null,e.dateView.destroy(),e.element.off(I),r.fn.destroy.call(e)},range:function(e){var n=this;if(e===t)return n._range;n._range=e,n.dateView.range({start:null,end:null}),e||(n._startDateInput.value(null),n._endDateInput.value(null)),n._startDateInput.value(e.start?e.start:null),n._endDateInput.value(e.end?e.end:null),e.start&&!e.end?n.dateView.range({start:e.start,end:null}):e.start&&e.end&&+e.start<=+e.end&&n.dateView.range({start:e.start,end:e.end})},open:function(){this.dateView.open()},close:function(){this.dateView.close()},min:function(e){return this._option("min",e)},max:function(e){return this._option("max",e)},readonly:function(e){this._startDateInput.readonly(e),this._endDateInput.readonly(e),this._editable({readonly:e===t||e,disable:!1})},enable:function(e){this._startDateInput.enable(e),this._endDateInput.enable(e),e||this.close(),this._editable({readonly:!1,disable:!(e=e===t||e)})}});n.ui.plugin(x)}(window.kendo.jQuery)}));
//# sourceMappingURL=kendo.daterangepicker.min.js.map