kendo-ui-core
Version:
3 lines (2 loc) • 17.2 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.timepicker.min","kendo.html.button.min","kendo.label.min"],e):e()}((function(){!function(e,t){var i=window.kendo,a=i.TimeView,n=i.html,o=i.parseDate,l=i.support,s=i._activeElement,r=i._extractFormat,u=i.calendar,d=u.isInRange,m=u.restrictValue,p=u.isEqualDatePart,c=a.getMilliseconds,_=i.ui,f=_.Widget,g="open",v="close",h="change",w=".kendoDateTimePicker",b="click"+w,k=l.mouseAndTouchPresent?i.applyEventMap("up",w.slice(1)):b,T="disabled",V="readonly",y="k-focus",x="k-disabled",D="mouseenter"+w+" mouseleave"+w,I="mousedown"+w,C="month",P="aria-activedescendant",A="aria-expanded",F="aria-hidden",S="aria-disabled",M="aria-readonly",R=Date,z=new R(1800,0,1),H=new R(2099,11,31),O={view:"date"},B={view:"time"},L=e.extend,E=({buttonSize:e,messages:t})=>'<div class="k-date-tab k-datetime-wrap"><div class="k-datetime-buttongroup"><div class="k-button-group k-button-group-stretched">'+i.html.renderButton(`<button class="k-selected k-group-start">${t.date}</button>`,{size:e})+i.html.renderButton(`<button class="k-group-end">${t.time}</button>`,{size:e})+'</div></div><div class="k-datetime-selector"><div class="k-datetime-calendar-wrap"></div><div class="k-datetime-time-wrap"></div></div><div class="k-datetime-footer k-actions">'+i.html.renderButton(`<button class="k-time-accept" title="Set" aria-label="Set">${t.set}</button>`,{size:e,themeColor:"primary"})+i.html.renderButton(`<button class="k-time-cancel" title="Cancel" aria-label="Cancel">${t.cancel}</button>`,{size:e})+"</div></div>",N="k-selected",$=f.extend({init:function(t,a){var n,l=this;(a=a||{}).componentType=a.componentType||"classic",f.fn.init.call(l,t,a),t=l.element,(a=l.options).disableDates=i.calendar.disabled(a.disableDates),a.min=o(t.attr("min"))||o(a.min),a.max=o(t.attr("max"))||o(a.max),+a.max==+H&&+a.min==+z&&+a.startTime==+z&&a.endTime==+H||(this._specifiedRange=!0),q(a),l._initialOptions=L({},a),l._wrapper(),a.singlePopup&&l._popup(),l._views(),l._icons(),l._reset(),l._template();try{t[0].setAttribute("type","text")}catch(e){t[0].type="text"}t.addClass("k-input-inner").attr({role:"combobox","aria-expanded":!1,"aria-haspopup":"grid","aria-controls":l.dateView._dateViewID+" "+l.timeView._timeViewID,autocomplete:"off"}),l._midnight=l._calculateMidnight(a.min,a.max),t.is("[disabled]")||e(l.element).parents("fieldset").is(":disabled")?l.enable(!1):l.readonly(t.is("[readonly]")),n=o(a.value||l.element.val(),a.parseFormats,a.culture),l._createDateInput(a),l._old=l._update(n||l.element.val()),l._oldText=t.val(),l._applyCssClasses(),a.label&&l._label(),i.notify(l)},options:{name:"DateTimePicker",value:null,format:"",timeFormat:"",culture:"",parseFormats:[],dates:[],disableDates:null,startTime:null,endTime:null,min:new R(z),max:new R(H),interval:30,height:200,footer:"",start:C,depth:C,animation:{},month:{},ARIATemplate:({valueType:e,text:t})=>`Current focused ${e} is ${t}`,dateButtonText:"Open the date view",timeButtonText:"Open the time view",dateInput:!1,weekNumber:!1,messages:{set:"Set",cancel:"Cancel",hour:"hour",minute:"minute",second:"second",millisecond:"millisecond",now:"Now",date:"Date",time:"Time",today:"Today",weekColumnHeader:""},componentType:"classic",size:"medium",fillMode:"solid",rounded:"medium",label:null},events:[g,v,h],componentTypes:{classic:{singlePopup:!1,timeView:{list:"list"}},modern:{singlePopup:!0,timeView:{list:"scroll"}}},setOptions:function(e){var t,a,n,l=this,s=l._value;f.fn.setOptions.call(l,e),(e=l.options).min=t=o(e.min),e.max=a=o(e.max),q(e),l._midnight=l._calculateMidnight(e.min,e.max),n=e.value||l._value||l.dateView._current,t&&!p(t,n)&&(t=new R(z)),a&&!p(a,n)&&(a=new R(H)),l._dateIcon.off(w),l._dateIcon.remove(),l._timeIcon.off(w),l._timeIcon.remove(),l.dateView.setOptions(e),l.timeView.setOptions(L({},e,{format:e.timeFormat,min:t,max:a})),l._icons(),l._editable(e),l._createDateInput(e),l._dateInput||l.element.val(i.toString(s,e.format,e.culture)),s&&l._updateARIA(s),e.label&&l._inputLabel?l.label.setOptions(e.label):!1===e.label?(l.label._unwrapFloating(),l._inputLabel.remove(),delete l._inputLabel):e.label&&l._label()},_editable:function(e){var t=this,a=t.element.off(w),n=t._dateIcon.off(w),o=t._timeIcon.off(w),l=t.wrapper.off(w),s=e.readonly,r=e.disable;s||r?(l.addClass(r?x:"").removeClass(r?"":x),a.attr(T,r).attr(V,s).attr(S,r).attr(M,s)):(l.removeClass(x).on(D,t._toggleHover),a&&a.length&&(a[0].removeAttribute(T),a[0].removeAttribute(V,!1),a[0].removeAttribute(S,!1),a[0].removeAttribute(M,!1)),a.on("keydown"+w,t._keydown.bind(t)).on("focus"+w,(function(){t.wrapper.addClass(y)})).on("focusout"+w,(function(){t.wrapper.removeClass(y),a.val()!==t._oldText&&(t._change(a.val()),a.val()||t.dateView.current(i.calendar.getToday())),t.options.singlePopup||(t.close("date"),t.close("time"))})),n.on(I,j).on(k,(function(e){t.toggle("date"),t._focusElement(e.type)})),o.on(I,j).on(k,(function(e){t.toggle("time"),t._focusElement(e.type)})))},_label:function(){var t=this,a=t.options,n=e.isPlainObject(a.label)?a.label:{content:a.label};t._dateInput&&(n.floatCheck=()=>(t._dateInput._toggleDateMask(!0),!t.value()&&!t._dateInput._hasDateInput()&&document.activeElement!==t.element[0]&&(t._dateInput._toggleDateMask(!1),!0))),t.label=new i.ui.Label(null,e.extend({},n,{widget:t})),t._inputLabel=t.label.element},_focusElement:function(e){var t=this.element;l.touch&&(!l.mouseAndTouchPresent||(e||"").match(/touch/i))||t[0]===s()||t.trigger("focus")},readonly:function(e){this._editable({readonly:e===t||e,disable:!1}),this.label&&this.label.floatingLabel&&this.label.floatingLabel.readonly(e===t||e)},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)}),this.label&&this.label.floatingLabel&&this.label.floatingLabel.enable(e=e===t||e)},destroy:function(){var e=this;f.fn.destroy.call(e),e.dateView.destroy(),e.timeView.destroy(),e.label&&e.label.destroy(),e.options.singlePopup&&(e.popup.element.off(w),e.popup.destroy()),e.element.off(w),e._dateIcon.off(w),e._timeIcon.off(w),e.wrapper.off(w),e._form&&e._form.off("reset",e._resetHandler)},close:function(e){var t=this;t.options.singlePopup?t.popup.close():("time"!==e&&(e="date"),t[e+"View"].close()),setTimeout((function(){t.element.removeAttr("aria-activedescendant")}))},open:function(e){var t,i=this;i.options.singlePopup?(i.dateView._calendar(),i.timeView.ul.find("li").length<1&&i.timeView.bind(),t=i.popup._hovered,i.popup._hovered=!0,i.popup.open(),"time"===e?i._switchToTimeView():i._switchToDateView(),this._dateIcon.toggle("time"!==e),this._timeIcon.toggle("time"===e),setTimeout((function(){i.popup._hovered=t}),1)):("time"!==e&&(e="date"),this[e+"View"].open())},min:function(e){return this._option("min",e)},max:function(e){return this._option("max",e)},toggle:function(e){if(this.options.singlePopup)this.popup.visible()?this.close():this.open(e);else{var t="timeView";"time"!==e?e="date":t="dateView",this[e+"View"].toggle(),this[t].close()}},value:function(e){var i=this;if(e===t)return i._value;i._old=i._update(e),null===i._old&&(i._dateInput?i._dateInput.value(i._old):i.element.val("")),i._oldText=i.element.val(),i.label&&i.label.floatingLabel&&i.label.floatingLabel.refresh()},_change:function(e){var t,i=this,a=i.element.val();e=i._update(e);var n=(t=+i._old!=+e)&&!i._typing,o=a!==i.element.val();(n||o)&&i.element.trigger(h),t&&(i._old=e,i._oldText=i.element.val(),i.trigger(h)),i._typing=!1},_option:function(e,i){var a,n,l=this,s=l.options,r=l.timeView,u=r.options,d=l._value||l._old;if(i===t)return s[e];if(i=o(i,s.parseFormats,s.culture),u.maxSet=!1,i){if(s.min.getTime()===s.max.getTime()&&(u.dates=[]),s[e]=new R(i.getTime()),l.dateView[e](i),l._midnight=l._calculateMidnight(s.min,s.max),d&&(a=p(s.min,d),n=p(s.max,d)),a||n){if(u[e]=i,a&&!n&&(u.max=Y(s.interval)),n){if(l._midnight)return void r.dataBind([H]);a||(u.min=z,u.maxSet=!0)}}else u.max=H,u.min=z;r.bind()}},_toggleHover:function(t){e(t.currentTarget).toggleClass("k-hover","mouseenter"===t.type)},_update:function(t){var a,n,l,s,r,u=this,c=u.options,_=c.min,f=c.max,g=c.startTime,v=c.endTime,w=c.dates,b=u.timeView,k=u._value,T=o(t,c.parseFormats,c.culture),V=null===T&&null===k||T instanceof Date&&k instanceof Date;return c.disableDates&&c.disableDates(T)&&(T=null,u._old||u.element.val()||(t=null)),+T==+k&&V?((r=i.toString(T,c.format,c.culture))!==t&&(u.element.val(null===T?t:r),t instanceof String&&u.element.trigger(h)),T):(null!==T&&p(T,_)?T=m(T,_,f):d(T,_,f)||(T=null),u._value=T,b.value(T),u.dateView.value(T),T&&(l=u._old,(n=b.options).maxSet=!1,w[0]&&(w=e.grep(w,(function(e){return p(T,e)})))[0]&&(b.dataBind(w),s=!0),s||(p(T,_)&&(n.min=g||_,n.max=v||Y(c.interval),a=!0),p(T,f)&&(u._midnight?(b.dataBind([H]),s=!0):(n.max=v||f,n.maxSet=!0,a||(n.min=z),a=!0))),!s&&(!l&&a||l&&!p(l,T))&&(a||(n.max=v||H,n.min=g||z),b.bind())),u._dateInput?T&&u._dateInput.value(T):u.element.val(i.toString(T||t,c.format,c.culture)),u._updateARIA(T),T)},_keydown:function(e){var t=this,a=t.dateView,n=t.timeView,o=t.element.val(),l=t.options.singlePopup?t.popup.visible():a.popup.visible(),s=t._dateInput&&e.stopImmediatePropagation;e.altKey&&e.keyCode===i.keys.DOWN?t.toggle(l?"time":"date"):l?(a.move(e),t._updateARIA(a._current),e.keyCode===i.keys.ENTER&&t.toggle("time")):!t.options.singlePopup&&n.popup.visible()?n.move(e):e.keyCode===i.keys.ENTER&&o!==t._oldText?t._change(o):(t._typing=!0,s=!1),s&&e.stopImmediatePropagation()},_timeOption:function(e){var t,i=this,a=i.options,n=a[e],o="startTime"==e?a.min:a.max,l=new R("startTime"==e?z:H);return n&&(l=new R(n)),n&&o&&(t=new Date(o.getFullYear(),o.getMonth(),o.getDate(),n.getHours(),n.getMinutes(),n.getSeconds()),"startTime"==e?i.options.min=t:i.options.max=t),"modern"===a.componentType&&(l=o),l},_views:function(){var e,t,n,l,s,r,u,d,m,p=this,c=p.element,_=p.options,f=c.attr("id");_.singlePopup&&(_.dateDiv=p.popup.element.find(".k-datetime-calendar-wrap"),u=p.popup.element.find(".k-datetime-time-wrap"),_.omitPopup=d=!0,m=_.timeView),p.dateView=e=new i.DateView(L({},_,{id:f,anchor:p.wrapper,change:function(){var e=p._applyDateValue();_.singlePopup?(p.timeView._currentlySelected||(p.timeView._currentlySelected=new Date),p.timeView._currentlySelected.setFullYear(e.getFullYear()),p.timeView._currentlySelected.setMonth(e.getMonth()),p.timeView._currentlySelected.setDate(e.getDate()),p._switchToTimeView(),p._toggleIcons()):(p._change(e),p.close("date"))},close:function(e){p.trigger(v,O)?e.preventDefault():(c.attr(A,!1),n.attr(F,!0))},open:function(e){p.trigger(g,O)?e.preventDefault():(c.val()!==p._oldText&&(r=o(c.val(),_.parseFormats,_.culture),p.dateView[r?"current":"value"](r)),n.attr(F,!1),c.attr(A,!0),p._updateARIA(r))}})),n=e.div,s=_.min.getTime(),p.timeView=t=new a({id:f,value:_.value,size:_.size,anchor:p.wrapper,animation:_.animation,format:_.timeFormat,culture:_.culture,height:"modern"===_.componentType?null:_.height,interval:_.interval,startTime:_.startTime,endTime:_.endTime,min:p._timeOption("startTime"),max:p._timeOption("endTime"),dates:s===_.max.getTime()?[new Date(s)]:[],parseFormats:_.parseFormats,validateDate:!_.startTime&&!_.endTime,change:function(t,a){t=p._applyTimeValue(t),a?(p._timeSelected=!0,p._change(t)):(c.val(i.toString(t,_.format,_.culture)),e.value(t),p._updateARIA(t))},close:function(e){p.trigger(v,B)?e.preventDefault():(l.attr(F,!0),c.attr(A,!1))},open:function(e){"modern"!==p.options.componentType?t._adjustListWidth():p.timeView._updateTitle(),p.trigger(g,B)?e.preventDefault():(c.val()!==p._oldText&&(r=o(c.val(),_.parseFormats,_.culture),p.timeView.value(r)),l.attr(F,!1),c.attr(A,!0),t.options.active(t.current()))},active:function(e){c&&c.length&&c[0].removeAttribute(P),e&&c.attr(P,t._optionID)},popup:_.popup,useValueToRender:!0,specifiedRange:p._specifiedRange,omitPopup:d,timeDiv:u,timeView:m,messages:p.options.messages}),l=t.ul},_applyDateValue:function(){var e,t,a=this,n=a.options,o=a.dateView.calendar.value(),l=+o,s=+n.min,r=+n.max;return l!==s&&l!==r||(e=l===s?s:r,(e=new R(a._value||e)).setFullYear(o.getFullYear(),o.getMonth(),o.getDate()),d(e,s,r)&&(o=e)),a._value&&(t=i.date.setHours(new Date(o),a._value),d(t,s,r)&&(o=t)),o},_applyTimeValue:function(e){var t=this.timeView,i=this.options;return(e=t._parse(e))<i.min?(e=new R(+i.min),t.options.min=e):e>i.max&&(e=new R(+i.max),t.options.max=e),e},_icons:function(){var t=this,i=t.element,a=t.options;t.wrapper.find("button.k-input-button")[0]||(t._dateIcon=e(n.renderButton('<button unselectable="on" tabindex="-1" class="k-input-button" aria-label="'+a.dateButtonText+'"></button>',{icon:"calendar",size:a.size,fillMode:a.fillMode,shape:"none",rounded:"none"})).insertAfter(i),t._timeIcon=e(n.renderButton('<button unselectable="on" tabindex="-1" class="k-input-button" aria-label="'+a.timeButtonText+'"></button>',{icon:"clock",size:a.size,fillMode:a.fillMode,shape:"none",rounded:"none"})).insertAfter(i)),a.singlePopup&&t._timeIcon.hide()},_wrapper:function(){var e,t=this.element;(e=t.parents(".k-datetimepicker"))[0]||(e=t.wrap("<span/>").parent()),e[0].style.cssText=t[0].style.cssText,t.css({height:t[0].style.height}),this.wrapper=e.addClass("k-datetimepicker k-input").addClass(t[0].className).removeClass("input-validation-error")},_reset:function(){var t=this,a=t.element,n=a.attr("form"),o=n?e("#"+n):a.closest("form"),l=t.options,s=l.disableDates,r=l.parseFormats.length?l.parseFormats:null,u=t._initialOptions.value,d=a[0].defaultValue;u&&s&&s(u)&&(u=null),d&&i.parseDate(d,r,l.culture)||!u||a.attr("value",i.toString(u,l.format,l.culture)),o[0]&&(t._resetHandler=function(){t.value(u||a[0].defaultValue),t.max(t._initialOptions.max),t.min(t._initialOptions.min)},t._form=o.on("reset",t._resetHandler))},_template:function(){this._ariaTemplate=i.template(this.options.ARIATemplate).bind(this)},_createDateInput:function(e){this._dateInput&&(this._dateInput.destroy(),this._dateInput=null),e.dateInput&&(this._dateInput=new _.DateInput(this.element,{culture:e.culture,format:e.format,size:e.size,fillMode:e.fillMode,rounded:e.rounded,min:e.min,max:e.max,interval:e.interval,messages:e.messages.dateInput}))},_calculateMidnight:function(e,t){return c(e)+c(t)===0},_updateARIA:function(e){var t=this,i=t.dateView.calendar;t.element&&t.element.length&&t.element[0].removeAttribute(P),i&&t.element.attr(P,i._updateAria(t._ariaTemplate,e))},_popup:function(){var t=this,a=t.options,n=e("<div></div>").attr(F,"true").addClass("k-datetime-container k-group k-reset").appendTo(document.body);n.append(i.template(E)(L({},t.options,{buttonSize:t.options.size}))),t.popup=new _.Popup(n,L(a.popup,a,{name:"Popup",isRtl:i.support.isRtl(t.wrapper),anchor:t.wrapper,activate:function(){t.options.timeView&&"scroll"===t.options.timeView.list&&(t.timeView.addTranslate(),t.timeView.applyValue(t._value),t.timeView._updateRanges())},open:function(e){t.trigger(g,{view:this.element.find(".k-date-tab").length?"date":"time",sender:t})?e.preventDefault():(this.element.attr(F,!1),t.element.attr(A,!0)),t.timeView._updateTitle()},close:function(e){t.trigger(v,{view:this.element.find(".k-date-tab").length?"date":"time",sender:t})?e.preventDefault():(t.element.attr(A,!1),this.element.attr(F,!0))}})),n.on(b+w,".k-datetime-buttongroup .k-button",t._groupChangeClick.bind(t)),n.on(b+w,".k-datetime-footer button.k-time-cancel",t._cancelClickHandler.bind(t)),n.on(b+w,".k-datetime-footer button.k-time-accept",t._setClickHandler.bind(t))},_groupChangeClick:function(t){j(t),e(t.currentTarget).index()?this._switchToTimeView():this._switchToDateView(),this._toggleIcons()},_switchToDateView:function(){this.popup.element.find(".k-group-start, .k-group-end").removeClass(N).eq(0).addClass(N),this.popup.element.find(".k-datetime-wrap").removeClass("k-time-tab").addClass("k-date-tab")},_switchToTimeView:function(){this.timeView.addTranslate(),this.timeView.applyValue(this._value),this.timeView._updateRanges(),this.popup.element.find(".k-group-start, .k-group-end").removeClass(N).eq(1).addClass(N),this.popup.element.find(".k-datetime-wrap").removeClass("k-date-tab").addClass("k-time-tab")},_toggleIcons:function(){this._dateIcon.toggle(),this._timeIcon.toggle()},_cancelClickHandler:function(e){j(e),this._value&&(this.value(this._value),this.dateView.value(this._value)),this.popup.close()},_setClickHandler:function(e){j(e);var t,i=this._applyDateValue();i=i||new Date,t=this.timeView._currentlySelected||i,this.timeView._updateCurrentlySelected(),i.setHours(t.getHours()),i.setMinutes(t.getMinutes()),i.setSeconds(t.getSeconds()),i=this._applyTimeValue(i),this._change(i),this.popup.close()}});function Y(e){var t=new Date(2100,0,1);return t.setMinutes(-e),t}function j(e){e.preventDefault()}function q(t){var a,n=i.getCulture(t.culture).calendars.standard.patterns,o=!t.parseFormats.length;t.format=r(t.format||n.g),t.timeFormat=a=r(t.timeFormat||n.t),i.DateView.normalize(t),o&&t.parseFormats.unshift("yyyy-MM-ddTHH:mm:ss"),-1===e.inArray(a,t.parseFormats)&&t.parseFormats.push(a)}i.cssProperties.registerPrefix("DateTimePicker","k-input-"),i.cssProperties.registerValues("DateTimePicker",[{prop:"rounded",values:i.cssProperties.roundedValues.concat([["full","full"]])}]),_.plugin($)}(window.kendo.jQuery)}));
//# sourceMappingURL=kendo.datetimepicker.min.js.map