{"version":3,"file":"kendo.timeselector.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","ui","Widget","html","extend","FOCUSED","keys","NS","listItemTemplate","template","listTemplate","TimeSelector","init","element","options","that","this","fn","call","_wrappers","_buttons","_attchHandlers","_shortCuts","_columns","_popup","name","columns","shortcuts","size","fillMode","rounded","messages","set","cancel","days","hours","minutes","milliseconds","seconds","events","addTranslate","list","itemHeight","listHeight","translate","bottomOffset","lists","_listsContainer","find","length","i","getItemHeight","eq","outerHeight","css","transform","height","off","on","_itemClickHandler","bind","_listScrollHandler","applyValue","value","values","rest","Math","floor","getTimeParts","each","index","column","columnVal","min","max","_scrollListToPosition","format","selectorFormat","toggle","popup","destroy","_listContainer","_timeSelectorWrapper","_scrollerKeyDownHandler","_applyShortCut","_cancelClickHandler","_setClickHandler","_mouseOverHandler","e","preventDefault","_value","parseInt","currentTarget","attr","change","close","focus","key","keyCode","isRtl","support","wrapper","container","UP","DOWN","altKey","RIGHT","LEFT","_focusList","scrollTop","ENTER","ESC","setTimeout","visible","removeClass","addClass","trigger","_scrollTop","_activeElement","_currentValues","originalEvent","_internalScroll","_scrollingTimeout","clearTimeout","_updateCurrentlySelected","_findSelectedValue","firstOccurence","round","is","item","_renderList","title","elements","step","appendTo","shortcut","_shortcuts","renderButton","text","id","Popup","anchor","open","activate","getBoundingClientRect","plugin","jQuery"],"sources":["kendo.timeselector.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.popup', 'kendo.html.button'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"timeselector\",\n name: \"TimeSelector\",\n category: \"web\",\n description: \"The TimeSelector widget allows the end user to select a time range from a popup\",\n depends: [ \"popup\", \"html.button\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n html = kendo.html,\n extend = $.extend,\n CHANGE = \"change\",\n CLICK = \"click\",\n SCROLL = \"scroll\",\n FOCUSED = \"k-focus\",\n keys = kendo.keys,\n NS = \".kendoTimeSelector\",\n html = kendo.html;\n\n var listItemTemplate = kendo.template(\"
  • #:value#
  • \");\n var listTemplate = kendo.template('
    ' +\n '#:title#' +\n '
    ' +\n '
    ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ' +\n '
      ');\n\n var TimeSelector = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n that._wrappers();\n that._buttons();\n that._attchHandlers();\n that._shortCuts();\n that._columns();\n that._popup();\n },\n options: {\n name: \"TimeSelector\",\n columns: [],\n shortcuts: [],\n size: \"medium\",\n fillMode: \"solid\",\n rounded: \"medium\",\n messages: {\n set: \"Set\",\n cancel: \"Cancel\",\n days: \"Days\",\n hours: \"Hours\",\n minutes: \"Minutes\",\n milliseconds: \"Milliseconds\",\n seconds: \"Seconds\"\n }\n },\n\n events: [CHANGE],\n\n addTranslate: function() {\n var lists = this._listsContainer.find(\".k-time-container.k-content.k-scrollable\");\n var length = lists.length;\n var list;\n var itemHeight;\n var listHeight;\n var topOffset;\n var translate;\n var bottomOffset;\n\n for (var i = 0; i < length; i++) {\n list = lists.eq(i);\n itemHeight = getItemHeight(list.find(\".k-item:visible\").eq(0));\n listHeight = list.outerHeight();\n topOffset = (listHeight - itemHeight) / 2;\n translate = \"translateY(\" + topOffset + \"px)\";\n bottomOffset = listHeight - itemHeight;\n list.find(\"ul\").css({\n transform: translate,\n \"-ms-transform\": translate\n });\n list.find(\".k-scrollable-placeholder\").css({\n height: list.find(\"ul\").height() + bottomOffset\n });\n list.off(NS)\n .on(CLICK + NS, \".k-item\", this._itemClickHandler.bind(this))\n .on(SCROLL + NS, this._listScrollHandler.bind(this));\n }\n },\n\n applyValue: function(value) {\n if (!value) {\n return;\n }\n var that = this;\n var lists = this._listsContainer.find('.k-time-container.k-content.k-scrollable');\n var values = getTimeParts(value);\n\n lists.each(function(index, list) {\n var column = that.options.columns[index];\n var columnVal = values[column.name];\n\n if (columnVal >= column.min && columnVal <= column.max) {\n that._scrollListToPosition($(list), kendo.format(column.selectorFormat, columnVal));\n }\n });\n },\n\n toggle: function() {\n this.popup.toggle();\n },\n\n destroy: function() {\n this._listContainer.off(NS);\n this._timeSelectorWrapper.off(NS);\n\n if (this.popup) {\n this.popup.destroy();\n this.popup = null;\n }\n },\n\n _attchHandlers: function() {\n var that = this;\n\n that._listContainer.on(\"keydown\" + NS, this._scrollerKeyDownHandler.bind(this));\n that._timeSelectorWrapper.on(\"click\" + NS, \".k-time-fast-selection button\", this._applyShortCut.bind(this));\n that._timeSelectorWrapper.on(\"click\" + NS, \".k-timeduration-footer button.k-time-cancel\", this._cancelClickHandler.bind(this));\n that._timeSelectorWrapper.on(\"click\" + NS, \".k-timeduration-footer button.k-time-accept\", this._setClickHandler.bind(this));\n that._listContainer.on(\"mouseover\" + NS, \".k-time-list-wrapper\", this._mouseOverHandler.bind(this));\n },\n\n _applyShortCut: function(e) {\n e.preventDefault();\n this._value = parseInt($(e.currentTarget).attr(kendo.attr(\"value\")));\n this.options.change(this._value);\n this.popup.close();\n this.options.focus();\n },\n\n _scrollerKeyDownHandler: function(e) {\n var that = this,\n key = e.keyCode,\n list = $(e.currentTarget).find(\".k-time-list-wrapper.k-focus\"),\n lists = that._listContainer.find(\".k-time-list-wrapper\"),\n length = lists.length,\n index = lists.index(list),\n isRtl = kendo.support.isRtl(that.wrapper),\n itemHeight = getItemHeight(list.find(\".k-item:visible\").eq(0)),\n container = list.find(\".k-time-container.k-content.k-scrollable\");\n\n if (!list.length) {\n return;\n }\n\n if ((key == keys.UP || key == keys.DOWN) && e.altKey) {\n e.preventDefault();\n that.toggle();\n setTimeout(function() {\n if (!that.popup.visible()) {\n that.options.focus();\n }\n }, 100);\n return;\n }\n\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n if (index + 1 < length) {\n that._focusList(lists.eq(index + 1));\n }\n\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n if (index - 1 >= 0) {\n that._focusList(lists.eq(index - 1));\n }\n } else if (key == keys.UP) {\n container.scrollTop(container.scrollTop() - itemHeight);\n e.preventDefault();\n } else if (key == keys.DOWN) {\n container.scrollTop(container.scrollTop() + itemHeight);\n e.preventDefault();\n } else if (key === keys.ENTER) {\n that._setClickHandler(e);\n } else if (key === keys.ESC) {\n that._cancelClickHandler(e);\n }\n },\n\n _mouseOverHandler: function(e) {\n this._focusList($(e.currentTarget));\n },\n\n _focusList: function(list) {\n this._listContainer.find(\".k-time-list-wrapper\").removeClass(FOCUSED);\n list.addClass(FOCUSED);\n this._listContainer.trigger(\"focus\");\n this._scrollTop = list.find('.k-scrollable').scrollTop();\n },\n\n _setClickHandler: function(e) {\n if ($(kendo._activeElement()).attr(kendo.attr(\"value\"))) {\n return;\n }\n\n e.preventDefault();\n this._value = convertToMsec(this._currentValues);\n this.options.change(this._value);\n this.popup.close();\n this.options.focus();\n },\n\n _cancelClickHandler: function(e) {\n if ($(kendo._activeElement()).attr(kendo.attr(\"value\"))) {\n return;\n }\n e.preventDefault();\n this.popup.close();\n this.options.focus();\n },\n\n _itemClickHandler: function(e) {\n var list = $(e.originalEvent.currentTarget);\n var index = list.find(\".k-item:visible\").index($(e.currentTarget));\n var itemHeight = getItemHeight(list.find(\".k-item:visible\").eq(0));\n\n list.scrollTop(index * itemHeight);\n },\n\n _listScrollHandler: function(e) {\n var that = this;\n var itemHeight = getItemHeight($(e.currentTarget).find(\".k-item:visible\").eq(0));\n\n if (that._internalScroll) {\n return;\n }\n\n if (that._scrollingTimeout) {\n clearTimeout(that._scrollingTimeout);\n }\n\n that._scrollingTimeout = setTimeout(function() {\n if (e.currentTarget.scrollTop % itemHeight > 1) {\n e.currentTarget.scrollTop += itemHeight - e.currentTarget.scrollTop % itemHeight;\n }\n that._scrollTop = e.currentTarget.scrollTop;\n that._updateCurrentlySelected();\n }, 100);\n },\n\n _findSelectedValue: function(list) {\n var firstOccurence = firstItemIndex(list.scrollTop(), getItemHeight(list.find(\".k-item:visible\").eq(0)));\n return list.find(\".k-item:visible\").eq(firstOccurence).attr(\"data-value\");\n },\n\n _updateCurrentlySelected: function() {\n var that = this;\n var lists = this._listsContainer.find('.k-content.k-scrollable');\n\n if (!this._listsContainer.is(\":visible\")) {\n return;\n }\n\n that._currentValues = {};\n\n lists.each(function() {\n var list = $(this);\n that._currentValues[list.attr(\"data-name\")] = parseInt(that._findSelectedValue(list));\n });\n },\n\n _scrollListToPosition: function(list, value) {\n var item = list.find('.k-item[data-value=\"' + value + '\"]');\n var itemHeight = getItemHeight(item);\n\n list.scrollTop(list.find(\".k-item:visible\").index(item) * itemHeight);\n },\n\n _renderList: function(wrapper, options) {\n if (!options) {\n return;\n }\n var that = this;\n var list = $(listTemplate({ name: options.name, title: that.options.messages[options.name] }));\n var elements = \"\";\n\n for (var i = options.min; i <= options.max; i += options.step) {\n elements += listItemTemplate({ value: kendo.format(options.selectorFormat, i) });\n }\n list.find(\"ul\").html(elements);\n list.appendTo(wrapper);\n },\n\n _columns: function() {\n var that = this;\n var column;\n var options = that.options;\n\n if (that._listsContainer) {\n for (var i = 0; i < options.columns.length; i++) {\n column = options.columns[i];\n that._renderList(that._listsContainer, column);\n }\n }\n },\n\n _shortCuts: function() {\n var that = this;\n var options = that.options;\n var shortcut;\n\n if (that._shortcuts) {\n for (var i = 0; i < options.shortcuts.length; i++) {\n shortcut = options.shortcuts[i];\n\n $(html.renderButton('', {\n rounded: options.rounded\n }))\n .attr(kendo.attr(\"value\"), shortcut.value)\n .appendTo(that._shortcuts);\n }\n }\n },\n\n _buttons: function() {\n var that = this;\n var options = that.options;\n\n $(\"\").appendTo(that._timeSelectorWrapper);\n },\n\n _wrappers: function() {\n var that = this;\n var options = that.options;\n\n that._timeSelectorWrapper = $(\"
      \");\n\n that._listContainer = $(\"
      \");\n that._listContainer.appendTo(that._timeSelectorWrapper);\n\n if (options.shortcuts) {\n that._shortcuts = $(\"
      \").appendTo(that._listContainer);\n }\n\n if (options.columns.length) {\n that._listsContainer = $(\"
      \").appendTo(that._listContainer);\n that._listsContainer.attr(\"id\", options.id);\n }\n },\n\n _popup: function() {\n var that = this,\n options = that.options;\n\n that.popup = new ui.Popup(that._timeSelectorWrapper, extend(true, {}, options.popup, {\n anchor: options.anchor,\n open: options.open,\n close: options.close,\n isRtl: kendo.support.isRtl(options.anchor),\n activate: function() {\n that.addTranslate();\n if (that._value) {\n that.applyValue(that._value);\n } else {\n that._updateCurrentlySelected();\n }\n that._focusList(that._listContainer.find(\".k-time-list-wrapper\").eq(0));\n }\n }));\n }\n });\n\n function convertToMsec(value) {\n return ((value.days || 0) * 86400000) + ((value.hours || 0) * 3600000) + ((value.minutes || 0) * 60000) + ((value.seconds || 0) * 1000) + (value.milliseconds || 0);\n }\n\n function getTimeParts(value) {\n var rest;\n var days = Math.floor(value / 86400000);\n rest = value % 86400000;\n var hours = Math.floor(rest / 3600000);\n rest = value % 3600000;\n var minutes = Math.floor(rest / 60000);\n rest = value % 60000;\n var seconds = Math.floor(rest / 1000);\n rest = value % 1000;\n\n return {\n days: days,\n hours: hours,\n minutes: minutes,\n seconds: seconds,\n milliseconds: rest\n };\n }\n\n function firstItemIndex(scrollTop, itemHeight) {\n return Math.max(Math.round(scrollTop / itemHeight), 0);\n }\n\n function getItemHeight(item) {\n return item.length && item[0].getBoundingClientRect().height;\n }\n\n ui.plugin(TimeSelector);\n\n })(window.kendo.jQuery);\n\n}));\n"]}