UNPKG

kendo-multi-date-select

Version:

Kendo UI plugin for selecting multiple dates similar to MultiSelect.

1 lines 5.2 kB
var kendoExt,__extends=this&&this.__extends||function(){var i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}}(),__assign=this&&this.__assign||Object.assign||function(t){for(var e,n=1,i=arguments.length;n<i;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t};!function(t){var e=function(i){function u(t,e){var n=i.call(this,t,e)||this;return n.initMultiSelect(t),n.initPopup(t),n.initCalendar(n._popup.element),n.updateDateInterval(),n}return __extends(u,i),u.removeTime=function(t){var e=new Date(t.toString());return e.setMilliseconds(0),e.setSeconds(0),e.setMinutes(0),e.setHours(0),e},u.isDateGreater=function(t,e){return u.removeTime(t).getTime()>u.removeTime(e).getTime()},u.isDateLesser=function(t,e){return u.removeTime(t).getTime()<u.removeTime(e).getTime()},u.prototype.open=function(){this._popup.open()},u.prototype.close=function(){this._popup.close()},u.prototype.toggle=function(){this._popup.visible()?this.close():this.open()},u.prototype.destroy=function(){this._multiSelect.wrapper.find("input").off("keydown"),this._popup.destroy(),this._multiSelect.destroy(),this._multiCalendar.destroy(),i.prototype.destroy.call(this)},u.prototype.enable=function(t){t||this.close(),this._multiSelect.enable(t)},u.prototype.readonly=function(t){t&&this.close(),this._multiSelect.readonly(t)},u.prototype.max=function(t){return void 0!==t&&(this._multiCalendar.max(t),this.updateDateInterval()),this._multiCalendar.max()},u.prototype.min=function(t){return void 0!==t&&(this._multiCalendar.min(t),this.updateDateInterval()),this._multiCalendar.min()},u.prototype.value=function(t){return this.values(t)},u.prototype.values=function(t){if(void 0!==t){var e=this.min(),n=this.max(),i=t.filter(function(t){return!(e&&u.isDateLesser(t,e)||n&&u.isDateGreater(t,n))});this._multiCalendar.values(i),this.updateMultiSelectValues(i),i.length&&this._multiCalendar.navigate(i[i.length-1])}return this._multiSelect.value()},u.prototype.multiSelect=function(){return this._multiSelect},u.prototype.multiCalendar=function(){return this._multiCalendar},u.prototype.initMultiSelect=function(t){var l=this,r=this.options;r.tagTemplate=r.tagTemplate||function(t){return kendo.toString(t,r.format)};this._multiSelect=$("<select multiple></select>").appendTo(t).kendoMultiSelect({dataSource:r.values,value:r.values,ignoreCase:!1,enable:r.enable,maxSelectedItems:r.maxSelectedItems,placeholder:r.placeholder,tagTemplate:r.tagTemplate,open:function(t){t.preventDefault(),l.open()},change:function(){l._multiCalendar.values(l._multiSelect.value()),l._popup.position(),l.trigger(u.changeEvent)}}).data("kendoMultiSelect"),this._multiSelect._filterSource=function(){return{}},this._multiSelect.search=function(){return{}},this._multiSelect.wrapper.find("input").on("keydown",function(t){var e=t.keyCode,n=t.target.value;if(e===kendo.keys.ENTER){var i=kendo.parseDate(n,r.format),o=l.values();if(i&&i<=l.max()&&i>=l.min()){var a=o.concat(i);l._multiCalendar.values(a),l.updateMultiSelect(),l._multiCalendar.navigate(i),l.trigger(u.changeEvent)}}})},u.prototype.initPopup=function(t){var e=this;this._popup=$('<div class="k-calendar-container"></div>').appendTo(document.body).kendoPopup(__assign({},this.options.popup,{name:"Popup",animation:this.options.animation,anchor:t,open:function(){return e.trigger(u.openEvent)},close:function(){return e.trigger(u.closeEvent)}})).data("kendoPopup")},u.prototype.initCalendar=function(t){var e=this,n=this.options;this._multiCalendar=$("<div></div>").appendTo(t).kendoMultiCalendar({values:n.values,footer:n.footer,culture:n.culture,min:n.min,max:n.max,start:n.start,depth:n.depth,month:n.month,dates:n.dates,maxSelectedItems:n.maxSelectedItems,cleanSelectedItemsOnTodayClick:n.cleanSelectedItemsOnTodayClick,change:function(){e.updateMultiSelect(),e.trigger(u.changeEvent)},navigate:function(){return e.trigger(u.navigateEvent)}}).data("kendoMultiCalendar"),kendo.calendar.makeUnselectable(this._multiCalendar.element)},u.prototype.updateDateInterval=function(){this.values(this.values())},u.prototype.updateMultiSelectValues=function(t){this._multiSelect.setDataSource(t),this._multiSelect.value(t),this._popup.visible()&&this._popup.position()},u.prototype.updateMultiSelect=function(){this.updateMultiSelectValues(this._multiCalendar.values()),this.options.autoClose&&this.close()},u.navigateEvent="navigate",u.changeEvent="change",u.openEvent="open",u.closeEvent="close",u}(kendo.ui.Widget);(t.MultiDateSelect=e).fn=e.prototype,e.fn.options=__assign({},kendo.ui.Widget.fn.options,{name:"MultiDateSelect",autoClose:!0,popup:{},animation:{},enable:!0,maxSelectedItems:null,cleanSelectedItemsOnTodayClick:!0,placeholder:"",tagTemplate:"",values:null,footer:"",culture:"",format:"M/d/yyyy",min:new Date(1900,0,1),max:new Date(2099,11,31),start:"month",depth:"month",month:{},dates:[]}),e.fn.events=[e.navigateEvent,e.changeEvent,e.openEvent,e.closeEvent],kendo.ui.plugin(e)}(kendoExt||(kendoExt={}));