@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) • 7.71 kB
JavaScript
!function(t){"function"==typeof define&&define.amd?define(["kendo.popup.min","kendo.html.button.min"],t):t()}((function(){!function(t,e){var i=window.kendo,n=i.ui,o=i.htmlEncode,s=n.Widget,r=i.html,l=t.extend,a="k-focus",c=i.keys,u=".kendoTimeSelector",d=(r=i.html,function(t){var e=t.value;return"<li class='k-item' data-value='"+o(e)+"'><span>"+o(e)+"</span></li>"}),p=s.extend({init:function(t,e){var i=this;s.fn.init.call(i,t,e),i._wrappers(),i._buttons(),i._attchHandlers(),i._shortCuts(),i._columns(),i._popup()},options:{name:"TimeSelector",columns:[],shortcuts:[],size:"medium",fillMode:"solid",rounded:"medium",messages:{set:"Set",cancel:"Cancel",days:"Days",hours:"Hours",minutes:"Minutes",milliseconds:"Milliseconds",seconds:"Seconds"}},events:["change"],addTranslate:function(){for(var t,e,i,n,o,s=this._listsContainer.find(".k-time-container.k-content.k-scrollable"),r=s.length,l=0;l<r;l++)e=m((t=s.eq(l)).find(".k-item:visible").eq(0)),n="translateY("+((i=t.outerHeight())-e)/2+"px)",o=i-e,t.find("ul").css({transform:n,"-ms-transform":n}),t.find(".k-scrollable-placeholder").css({height:t.find("ul").height()+o}),t.off(u).on("click"+u,".k-item",this._itemClickHandler.bind(this)).on("scroll"+u,this._listScrollHandler.bind(this))},applyValue:function(e){if(e){var n=this,o=this._listsContainer.find(".k-time-container.k-content.k-scrollable"),s=function(t){var e,i=Math.floor(t/864e5);e=t%864e5;var n=Math.floor(e/36e5);e=t%36e5;var o=Math.floor(e/6e4);e=t%6e4;var s=Math.floor(e/1e3);return{days:i,hours:n,minutes:o,seconds:s,milliseconds:e=t%1e3}}(e);o.each((function(e,o){var r=n.options.columns[e],l=s[r.name];l>=r.min&&l<=r.max&&n._scrollListToPosition(t(o),i.format(r.selectorFormat,l))}))}},toggle:function(){this.popup.toggle()},destroy:function(){this._listContainer.off(u),this._timeSelectorWrapper.off(u),this.popup&&(this.popup.destroy(),this.popup=null)},_attchHandlers:function(){var t=this;t._listContainer.on("keydown"+u,this._scrollerKeyDownHandler.bind(this)),t._timeSelectorWrapper.on("click"+u,".k-time-fast-selection button",this._applyShortCut.bind(this)),t._timeSelectorWrapper.on("click"+u,".k-timeduration-footer button.k-time-cancel",this._cancelClickHandler.bind(this)),t._timeSelectorWrapper.on("click"+u,".k-timeduration-footer button.k-time-accept",this._setClickHandler.bind(this)),t._listContainer.on("mouseover"+u,".k-time-list-wrapper",this._mouseOverHandler.bind(this))},_applyShortCut:function(e){e.preventDefault(),this._value=parseInt(t(e.currentTarget).attr(i.attr("value"))),this.options.change(this._value),this.popup.close(),this.options.focus()},_scrollerKeyDownHandler:function(e){var n=this,o=e.keyCode,s=t(e.currentTarget).find(".k-time-list-wrapper.k-focus"),r=n._listContainer.find(".k-time-list-wrapper"),l=r.length,a=r.index(s),u=i.support.isRtl(n.wrapper),d=m(s.find(".k-item:visible").eq(0)),p=s.find(".k-time-container.k-content.k-scrollable");if(s.length)return o!=c.UP&&o!=c.DOWN||!e.altKey?void(o==c.RIGHT&&!u||o==c.LEFT&&u?a+1<l&&n._focusList(r.eq(a+1)):o==c.LEFT&&!u||o==c.RIGHT&&u?a-1>=0&&n._focusList(r.eq(a-1)):o==c.UP?(p.scrollTop(p.scrollTop()-d),e.preventDefault()):o==c.DOWN?(p.scrollTop(p.scrollTop()+d),e.preventDefault()):o===c.ENTER?n._setClickHandler(e):o===c.ESC&&n._cancelClickHandler(e)):(e.preventDefault(),n.toggle(),void setTimeout((function(){n.popup.visible()||n.options.focus()}),100))},_mouseOverHandler:function(e){this._focusList(t(e.currentTarget))},_focusList:function(t){this._listContainer.find(".k-time-list-wrapper").removeClass(a),t.addClass(a),this._listContainer.trigger("focus"),this._scrollTop=t.find(".k-scrollable").scrollTop()},_setClickHandler:function(e){var n;t(i._activeElement()).attr(i.attr("value"))||(e.preventDefault(),this._value=864e5*((n=this._currentValues).days||0)+36e5*(n.hours||0)+6e4*(n.minutes||0)+1e3*(n.seconds||0)+(n.milliseconds||0),this.options.change(this._value),this.popup.close(),this.options.focus())},_cancelClickHandler:function(e){t(i._activeElement()).attr(i.attr("value"))||(e.preventDefault(),this.popup.close(),this.options.focus())},_itemClickHandler:function(e){var i=t(e.originalEvent.currentTarget),n=i.find(".k-item:visible").index(t(e.currentTarget)),o=m(i.find(".k-item:visible").eq(0));i.scrollTop(n*o)},_listScrollHandler:function(e){var i=this,n=m(t(e.currentTarget).find(".k-item:visible").eq(0));i._internalScroll||(i._scrollingTimeout&&clearTimeout(i._scrollingTimeout),i._scrollingTimeout=setTimeout((function(){e.currentTarget.scrollTop%n>1&&(e.currentTarget.scrollTop+=n-e.currentTarget.scrollTop%n),i._scrollTop=e.currentTarget.scrollTop,i._updateCurrentlySelected()}),100))},_findSelectedValue:function(t){var e,i,n=(e=t.scrollTop(),i=m(t.find(".k-item:visible").eq(0)),Math.max(Math.round(e/i),0));return t.find(".k-item:visible").eq(n).attr("data-value")},_updateCurrentlySelected:function(){var e=this,i=this._listsContainer.find(".k-content.k-scrollable");this._listsContainer.is(":visible")&&(e._currentValues={},i.each((function(){var i=t(this);e._currentValues[i.attr("data-name")]=parseInt(e._findSelectedValue(i))})))},_scrollListToPosition:function(t,e){var i=t.find('.k-item[data-value="'+e+'"]'),n=m(i);t.scrollTop(t.find(".k-item:visible").index(i)*n)},_renderList:function(e,n){if(n){for(var s,r,l,a=t((s={name:n.name,title:this.options.messages[n.name]},r=s.title,l=s.name,'<div class="k-time-list-wrapper"><span class="k-title">'+o(r)+'</span><div class="k-time-list"><div class="k-content k-scrollable k-time-container" data-name="'+o(l)+'"><ul class="k-reset"></ul><div class="k-scrollable-placeholder"></div></div></div></div>')),c="",u=n.min;u<=n.max;u+=n.step)c+=d({value:i.format(n.selectorFormat,u)});a.find("ul").html(c),a.appendTo(e)}},_columns:function(){var t,e=this,i=e.options;if(e._listsContainer)for(var n=0;n<i.columns.length;n++)t=i.columns[n],e._renderList(e._listsContainer,t)},_shortCuts:function(){var e,n=this,o=n.options;if(n._shortcuts)for(var s=0;s<o.shortcuts.length;s++)e=o.shortcuts[s],t(r.renderButton('<button class="k-button k-button-md k-button-solid k-button-solid-base k-rounded-md">'+e.text+"</button>",{rounded:o.rounded})).attr(i.attr("value"),e.value).appendTo(n._shortcuts)},_buttons:function(){var e=this.options;t("<div class='k-actions k-actions-stretched k-actions-horizontal k-timeduration-footer'>"+r.renderButton('<button class="k-time-cancel k-button k-button-md">'+e.messages.cancel+"</button>",{rounded:e.rounded})+r.renderButton('<button class="k-time-accept k-button k-button-md k-button-solid k-button-solid-primary">'+e.messages.set+"</button>",{rounded:e.rounded})+"</div>").appendTo(this._timeSelectorWrapper)},_wrappers:function(){var e=this,i=e.options;e._timeSelectorWrapper=t("<div></div>"),e._listContainer=t("<div tabindex='0' class='k-timeselector k-timeselector-md'></div>"),e._listContainer.appendTo(e._timeSelectorWrapper),i.shortcuts&&(e._shortcuts=t("<div class='k-actions k-actions-start k-actions-horizontal k-time-fast-selection'></div>").appendTo(e._listContainer)),i.columns.length&&(e._listsContainer=t("<div class='k-time-list-container'><span class='k-time-highlight'></span></div>").appendTo(e._listContainer),e._listsContainer.attr("id",i.id))},_popup:function(){var t=this,e=t.options;t.popup=new n.Popup(t._timeSelectorWrapper,l(!0,{},e.popup,{anchor:e.anchor,open:e.open,close:e.close,isRtl:i.support.isRtl(e.anchor),activate:function(){t.addTranslate(),t._value?t.applyValue(t._value):t._updateCurrentlySelected(),t._focusList(t._listContainer.find(".k-time-list-wrapper").eq(0))}}))}});function m(t){return t.length&&t[0].getBoundingClientRect().height}n.plugin(p)}(window.kendo.jQuery)}));
//# sourceMappingURL=kendo.timeselector.min.js.map