@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) • 9.38 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.popup.js"),require("kendo.html.button.js"),require("kendo.actionsheet.js")):"function"==typeof define&&define.amd?define(["exports","kendo.popup","kendo.html.button","kendo.actionsheet"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Timeselector={}))}(this,(function(e){!function(e){var t=window.kendo,i=t.ui,n=t.htmlEncode,o=i.Widget,s=t.html,l=e.extend,r=t.mediaQuery,a="k-focus",c=t.keys,u=".kendoTimeSelector",p=(s=t.html,({value:e})=>`<li class='k-item' data-value='${n(e)}'><span>${n(e)}</span></li>`),d=o.extend({init:function(e,i){var n=this;o.fn.init.call(n,e,i),n.bigScreenMQL=r("large"),n.smallScreenMQL=r("small"),"auto"==n.options.adaptiveMode&&n.smallScreenMQL.onChange((function(){n.popup&&t.isFunction(n.popup.fullscreen)&&n.popup.fullscreen(n.smallScreenMQL.mediaQueryList.matches)})),n._wrappers(),n._buttons(),n._attchHandlers(),n._shortCuts(),n._columns(),n._popup()},options:{name:"TimeSelector",columns:[],shortcuts:[],adaptiveMode:"none",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 e,t,i,n,o,s=this._listsContainer.find(".k-time-container.k-content.k-scrollable"),l=s.length,r=0;r<l;r++)t=m((e=s.eq(r)).find(".k-item:visible").eq(0)),n="translateY("+((i=e.outerHeight())-t)/2+"px)",o=i-t,e.find("ul").css({transform:n,"-ms-transform":n}),e.find(".k-scrollable-placeholder").css({height:e.find("ul").height()+o}),e.off(u).on("click"+u,".k-item",this._itemClickHandler.bind(this)).on("scroll"+u,this._listScrollHandler.bind(this))},applyValue:function(i){if(i){var n=this,o=this._listsContainer.find(".k-time-container.k-content.k-scrollable"),s=function(e){var t,i=Math.floor(e/864e5);t=e%864e5;var n=Math.floor(t/36e5);t=e%36e5;var o=Math.floor(t/6e4);t=e%6e4;var s=Math.floor(t/1e3);return t=e%1e3,{days:i,hours:n,minutes:o,seconds:s,milliseconds:t}}(i);o.each((function(i,o){var l=n.options.columns[i],r=s[l.name];r>=l.min&&r<=l.max&&n._scrollListToPosition(e(o),t.format(l.selectorFormat,r))}))}},toggle:function(){this.popup.toggle()},destroy:function(){this._listContainer.off(u),this._timeSelectorWrapper.off(u),this.popup&&(this.popup.destroy(),this.popup=null),this.bigScreenMQL&&this.bigScreenMQL.destroy(),this.smallScreenMQL&&this.smallScreenMQL.destroy()},_attchHandlers:function(){var e=this;e._listContainer.on("keydown"+u,this._scrollerKeyDownHandler.bind(this)),e._timeSelectorWrapper.on("click"+u,".k-time-fast-selection button",this._applyShortCut.bind(this)),e._timeSelectorWrapper.on("click"+u,".k-timeduration-footer button.k-time-cancel",this._cancelClickHandler.bind(this)),e._timeSelectorWrapper.on("click"+u,".k-timeduration-footer button.k-time-accept",this._setClickHandler.bind(this)),e._listContainer.on("mouseover"+u,".k-time-list-wrapper",this._mouseOverHandler.bind(this))},_applyShortCut:function(i){i.preventDefault(),this._value=parseInt(e(i.currentTarget).attr(t.attr("value"))),this.options.change(this._value),this.popup.close(),this.options.focus()},_scrollerKeyDownHandler:function(i){var n=this,o=i.keyCode,s=e(i.currentTarget).find(".k-time-list-wrapper.k-focus"),l=n._listContainer.find(".k-time-list-wrapper"),r=l.length,a=l.index(s),u=t.support.isRtl(n.wrapper),p=m(s.find(".k-item:visible").eq(0)),d=s.find(".k-time-container.k-content.k-scrollable");if(s.length)return o!=c.UP&&o!=c.DOWN||!i.altKey?void(o==c.RIGHT&&!u||o==c.LEFT&&u?a+1<r&&n._focusList(l.eq(a+1)):o==c.LEFT&&!u||o==c.RIGHT&&u?a-1>=0&&n._focusList(l.eq(a-1)):o==c.UP?(d.scrollTop(d.scrollTop()-p),i.preventDefault()):o==c.DOWN?(d.scrollTop(d.scrollTop()+p),i.preventDefault()):o===c.ENTER?n._setClickHandler(i):o===c.ESC&&n._cancelClickHandler(i)):(i.preventDefault(),n.toggle(),void setTimeout((function(){n.popup.visible()||n.options.focus()}),100))},_mouseOverHandler:function(t){this._focusList(e(t.currentTarget))},_focusList:function(e){this._listContainer.find(".k-time-list-wrapper").removeClass(a),e.addClass(a),this._listContainer.trigger("focus"),this._scrollTop=e.find(".k-scrollable").scrollTop()},_setClickHandler:function(i){var n;e(t._activeElement()).attr(t.attr("value"))||(i.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(i){e(t._activeElement()).attr(t.attr("value"))||(i.preventDefault(),this.popup.close(),this.options.focus())},_itemClickHandler:function(t){var i=e(t.originalEvent.currentTarget),n=i.find(".k-item:visible").index(e(t.currentTarget)),o=m(i.find(".k-item:visible").eq(0));i.scrollTop(n*o)},_listScrollHandler:function(t){var i=this,n=m(e(t.currentTarget).find(".k-item:visible").eq(0));i._internalScroll||(i._scrollingTimeout&&clearTimeout(i._scrollingTimeout),i._scrollingTimeout=setTimeout((function(){t.currentTarget.scrollTop%n>1&&(t.currentTarget.scrollTop+=n-t.currentTarget.scrollTop%n),i._scrollTop=t.currentTarget.scrollTop,i._updateCurrentlySelected()}),100))},_findSelectedValue:function(e){var t,i,n=(t=e.scrollTop(),i=m(e.find(".k-item:visible").eq(0)),Math.max(Math.round(t/i),0));return e.find(".k-item:visible").eq(n).attr("data-value")},_updateCurrentlySelected:function(){var t=this,i=this._listsContainer.find(".k-content.k-scrollable");this._listsContainer.is(":visible")&&(t._currentValues={},i.each((function(){var i=e(this);t._currentValues[i.attr("data-name")]=parseInt(t._findSelectedValue(i))})))},_scrollListToPosition:function(e,t){var i=e.find('.k-item[data-value="'+t+'"]'),n=m(i);e.scrollTop(e.find(".k-item:visible").index(i)*n)},_renderList:function(i,o){if(o){for(var s=e((({title:e,name:t})=>`<div class="k-time-list-wrapper"><span class="k-title">${n(e)}</span><div class="k-time-list"><div class="k-content k-scrollable k-time-container" data-name="${n(t)}"><ul class="k-reset"></ul><div class="k-scrollable-placeholder"></div></div></div></div>`)({name:o.name,title:this.options.messages[o.name]})),l="",r=o.min;r<=o.max;r+=o.step)l+=p({value:t.format(o.selectorFormat,r)});s.find("ul").html(l),s.appendTo(i)}},_columns:function(){var e,t=this,i=t.options;if(t._listsContainer)for(var n=0;n<i.columns.length;n++)e=i.columns[n],t._renderList(t._listsContainer,e)},_shortCuts:function(){var i,n=this,o=n.options;if(n._shortcuts)for(var l=0;l<o.shortcuts.length;l++)i=o.shortcuts[l],e(s.renderButton(`<button class="k-button ${t.getValidCssClass("k-button-","size",n.options.size||"medium")} k-button-solid k-button-solid-base k-rounded-md">`+i.text+"</button>",{rounded:o.rounded})).attr(t.attr("value"),i.value).appendTo(n._shortcuts)},_buttons:function(){var t=this.options;e("<div class='k-actions k-actions-stretched k-actions-horizontal k-timeduration-footer'>"+s.renderButton('<button class="k-time-cancel k-button">'+n(t.messages.cancel)+"</button>",{rounded:t.rounded,size:t.size})+s.renderButton('<button class="k-time-accept k-button k-button-solid k-button-solid-primary">'+n(t.messages.set)+"</button>",{rounded:t.rounded,size:t.size})+"</div>").appendTo(this._timeSelectorWrapper)},_wrappers:function(){var i=this,n=i.options;i._timeSelectorWrapper=e("<div></div>"),i._listContainer=e(`<div tabindex='0' class='k-timeselector ${t.getValidCssClass("k-timeselector-","size",i.options.size||"medium")}'></div>`),i._listContainer.appendTo(i._timeSelectorWrapper),n.shortcuts&&(i._shortcuts=e("<div class='k-actions k-actions-start k-actions-horizontal k-time-fast-selection'></div>").appendTo(i._listContainer)),n.columns.length&&(i._listsContainer=e("<div class='k-time-list-container'><span class='k-time-highlight'></span></div>").appendTo(i._listContainer),i._listsContainer.attr("id",n.id))},_popup:function(){var e=this,n=e.options;"auto"!=n.adaptiveMode||e.bigScreenMQL.mediaQueryList.matches?e.popup=new i.Popup(e._timeSelectorWrapper,l(!0,{},n.popup,{anchor:n.anchor,open:n.open,close:n.close,isRtl:t.support.isRtl(n.anchor),activate:function(){e.addTranslate(),e._value?e.applyValue(e._value):e._updateCurrentlySelected(),e._focusList(e._listContainer.find(".k-time-list-wrapper").eq(0))}})):(e._timeSelectorWrapper.appendTo(document.body),e.popup=new i.ActionSheet(e._timeSelectorWrapper,{adaptive:!0,title:"Set time",subtitle:"00/00/00",closeButton:!0,fullscreen:e.smallScreenMQL.mediaQueryList.matches,popup:l(!0,{},n.popup,{anchor:n.anchor,open:n.open,close:n.close,isRtl:t.support.isRtl(n.anchor)}),activate:function(){e.addTranslate(),e._value?e.applyValue(e._value):e._updateCurrentlySelected(),e._focusList(e._listContainer.find(".k-time-list-wrapper").eq(0))}}),e._timeSelectorWrapper.find(".k-timeduration-footer").appendTo(e.popup.element))}});function m(e){return e.length&&e[0].getBoundingClientRect().height}i.plugin(d)}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"timeselector",name:"TimeSelector",category:"web",description:"The TimeSelector widget allows the end user to select a time range from a popup",depends:["popup","html.button","actionsheet"]},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.timeselector.min.js.map