{"version":3,"file":"kendo.drawer.min.js","names":["factory","define","amd","$","kendo","Widget","NS","FOCUSED","keys","PUSH","OVERLAY","LEFT","RIGHT","Drawer","window","jQuery","ui","extend","init","element","options","userEvents","that","this","fn","call","_element","_wrapper","_navigatable","position","_mode","mini","_miniMode","_initDrawerItems","mode","_setBodyOffset","UserEvents","document","body","drawerContainer","fastTap","allowSelection","tap","e","contains","drawerItemsWrapper","event","target","_itemClick","autoCollapse","visible","trigger","sender","hide","preventDefault","swipeToOpen","bind","_start","_update","_end","minHeight","css","contentElement","children","wrapAll","parent","drawerElement","template","addClass","navigatable","drawerItems","find","attr","first","on","_focus","_blur","_keyDown","_current","removeClass","_setCurrent","eq","current","id","guid","next","removeAttr","handled","keyCode","UP","prevAll","length","last","DOWN","nextAll","HOME","END","SPACEBAR","ENTER","noop","ESC","drawerWrapper","wrap","width","append","after","prepend","overlayMiniOffset","outerWidth","leftPositioned","separatorItems","_selectedItemIndex","overlayContainer","miniWidth","miniTemplate","_miniTemplate","html","minWidth","show","isExpanded","hasClass","_selectItem","value","Math","abs","x","velocity","y","triggeredByInput","cancel","drawerMini","_push","_overlay","pastHalf","velocityThreshold","moveEventArgs","limitedPosition","updatedPosition","delta","min","max","stopPropagation","item","selectedItemIndex","index","items","closest","destroy","name","events","plugin"],"sources":["kendo.drawer.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.userevents'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"drawer\",\n name: \"Drawer\",\n category: \"web\",\n description: \"The Kendo Drawer widget provides slide to reveal sidebar\",\n depends: [ \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n SHOW = \"show\",\n HIDE = \"hide\",\n NS = \".kendoDrawer\",\n FOCUSED = \"k-focus\",\n keys = kendo.keys,\n ITEMCLICK = \"itemClick\",\n TABINDEX = \"tabIndex\",\n PUSH = \"push\",\n OVERLAY = \"overlay\",\n LEFT = \"left\",\n RIGHT = \"right\";\n\n var Drawer = kendo.ui.Widget.extend({\n init: function(element, options) {\n var that = this;\n var userEvents;\n\n Widget.fn.init.call(this, element, options);\n\n options = that.options;\n\n that._element(element);\n\n that._wrapper(element);\n\n that._navigatable();\n\n that.position();\n\n that._mode();\n\n if (options.mini) {\n that._miniMode();\n }\n\n that._initDrawerItems();\n\n if (options.mini && options.mode != PUSH) {\n that._setBodyOffset();\n }\n\n userEvents = this.userEvents = new kendo.UserEvents(options.mode != PUSH ? $(document.body) : this.drawerContainer, { fastTap: true, allowSelection: true });\n\n that.tap = function(e) {\n if ($.contains(that.drawerItemsWrapper[0], e.event.target)) {\n that._itemClick(e);\n }\n if (options.autoCollapse && that.visible && !that.trigger(\"hide\", { sender: this })) {\n that.hide();\n e.preventDefault();\n }\n };\n\n if (this.options.swipeToOpen) {\n userEvents.bind(\"start\", function(e) { that._start(e); });\n userEvents.bind(\"move\", function(e) { that._update(e); });\n userEvents.bind(\"end\", function(e) { that._end(e); });\n userEvents.bind(\"tap\", that.tap);\n } else {\n userEvents.bind(\"press\", that.tap);\n }\n\n if (options.minHeight && options.mode == PUSH) {\n that.drawerContainer.css(\"min-height\", options.minHeight);\n }\n },\n\n _element: function() {\n var that = this;\n\n var element = that.element;\n var options = that.options;\n that.contentElement = element.children()\n .wrapAll(\"
\")\n .parent();\n that.drawerElement = $(options.template);\n\n element.addClass(\"k-widget k-drawer\");\n },\n\n _navigatable: function() {\n\n if (!this.options.navigatable) {\n return;\n }\n\n var that = this;\n var element = that.element;\n var drawerItems = element.find(\"[data-role='drawer-item']\");\n\n element.find(\"[data-role='drawer-separator']\").attr(\"aria-hidden\", true);\n\n drawerItems.attr(\"role\",\"tab\");\n\n drawerItems.first().parent()\n .attr(\"role\", \"tablist\")\n .attr(\"aria-orientation\", \"vertical\");\n\n element\n .attr(TABINDEX, 0)\n .on(\"focus\" + NS, that._focus.bind(that))\n .on(\"focusout\" + NS, that._blur.bind(that))\n .on(\"keydown\" + NS, that, that._keyDown.bind(that));\n },\n\n _blur: function() {\n var that = this;\n\n if (that._current) {\n that._current.removeClass(FOCUSED);\n }\n },\n\n _focus: function() {\n var that = this;\n\n that._setCurrent(that._current ? that._current : that.drawerItemsWrapper.find(\"[data-role='drawer-item']\").eq(0));\n },\n\n _setCurrent: function(current) {\n var that = this;\n var id = kendo.guid();\n var next = $(current);\n\n if (that._current) {\n $(that._current)\n .removeClass(FOCUSED)\n .removeAttr(\"id\");\n\n that.element.removeAttr(\"aria-activedescendant\");\n }\n\n next\n .attr(\"id\", id)\n .addClass(FOCUSED);\n\n that.element.attr(\"aria-activedescendant\", id);\n\n that._current = next;\n },\n\n _keyDown: function(e) {\n var that = this;\n var handled = false;\n var current = that._current;\n var next;\n\n if (e.keyCode == keys.UP) {\n handled = true;\n next = current.prevAll(\"[data-role='drawer-item']\").first();\n\n if (next.length) {\n that._setCurrent(next);\n } else {\n that._setCurrent(current.parent().find(\"[data-role='drawer-item']\").last());\n }\n\n }\n\n if (e.keyCode == keys.DOWN) {\n handled = true;\n next = current.nextAll(\"[data-role='drawer-item']\").first();\n\n if (next.length) {\n that._setCurrent(next);\n } else {\n that._setCurrent(current.parent().find(\"[data-role='drawer-item']\").first());\n }\n }\n\n if (e.keyCode == keys.HOME) {\n handled = true;\n that._setCurrent(that.drawerItemsWrapper.find(\"[data-role='drawer-item']\").eq(0));\n }\n\n if (e.keyCode == keys.END) {\n handled = true;\n that._setCurrent(that.drawerItemsWrapper.find(\"[data-role='drawer-item']\").last());\n }\n\n if (e.keyCode == keys.SPACEBAR || e.keyCode == keys.ENTER) {\n handled = true;\n that.tap({\n event: { target: current[0] },\n preventDefault: $.noop\n });\n }\n\n if (e.keyCode == keys.ESC) {\n handled = true;\n that.hide();\n }\n\n if (handled) {\n //prevent scrolling while pressing the keys\n e.preventDefault();\n }\n },\n\n _wrapper: function() {\n var options = this.options;\n var drawerElement = this.drawerElement;\n var element = this.element;\n var contentElement = this.contentElement;\n var drawerItemsWrapper = this.drawerItemsWrapper = drawerElement.wrapAll(\"
\").parent();\n var drawerWrapper = this.drawerWrapper = drawerItemsWrapper.wrap(\"
\").parent();\n var drawerContainer = this.drawerContainer = element.wrap(\"
\").parent();\n\n if (options.mini) {\n if (options.mini.width) {\n drawerWrapper.width(options.mini.width);\n }\n } else {\n drawerWrapper.width(0);\n }\n\n\n if (options.mode === PUSH) {\n drawerContainer.append(contentElement);\n }\n else if (options.mode === OVERLAY) {\n drawerContainer.after(contentElement);\n $(document.body).prepend(drawerContainer);\n }\n\n element.append( drawerWrapper );\n },\n\n _setBodyOffset: function() {\n var overlayMiniOffset = this.element.outerWidth();\n\n if (this.leftPositioned) {\n $(document.body).css(\"padding-left\", overlayMiniOffset);\n }\n else {\n $(document.body).css(\"padding-right\", overlayMiniOffset);\n }\n },\n\n _initDrawerItems: function() {\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var drawerItems = drawerItemsWrapper.find(\"[data-role='drawer-item']\");\n var separatorItems = drawerItemsWrapper.find(\"[data-role='drawer-separator']\");\n\n drawerItems.addClass(\"k-drawer-item\");\n separatorItems.addClass(\"k-drawer-item k-drawer-separator\");\n\n if (this._selectedItemIndex >= 0) {\n drawerItems.removeClass(\"k-selected\");\n drawerItems.eq(this._selectedItemIndex).addClass(\"k-selected\");\n }\n\n if (this.options.navigatable) {\n drawerItems.attr(\"aria-selected\", false);\n }\n\n },\n\n _mode: function() {\n var options = this.options;\n var drawerContainer = this.drawerContainer;\n var overlayContainer;\n\n if (options.mode == PUSH) {\n drawerContainer.addClass('k-drawer-' + PUSH);\n }\n else {\n drawerContainer.addClass('k-drawer-' + OVERLAY);\n overlayContainer = this.overlayContainer = $('
');\n overlayContainer.hide();\n drawerContainer.prepend(overlayContainer);\n }\n },\n\n _miniMode: function() {\n var options = this.options;\n var drawerContainer = this.drawerContainer;\n var miniWidth = options.mini.width;\n var miniTemplate = this._miniTemplate = options.mini.template && $(options.mini.template);\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var drawerWrapper = this.drawerWrapper;\n\n drawerContainer.addClass(\"k-drawer-mini\");\n\n if (miniTemplate) {\n drawerItemsWrapper.html(miniTemplate);\n }\n\n if (miniWidth) {\n drawerWrapper.width(miniWidth);\n }\n\n this.minWidth = options.mini.width || this.drawerWrapper.width();\n },\n\n show: function() {\n var drawerWrapper = this.drawerWrapper;\n var drawerContainer = this.drawerContainer;\n var options = this.options;\n var isExpanded = drawerContainer.hasClass(\"k-drawer-expanded\");\n var miniTemplate = this._miniTemplate;\n var drawerElement = this.drawerElement;\n var drawerItemsWrapper = this.drawerItemsWrapper;\n\n if (!isExpanded) {\n drawerContainer.addClass('k-drawer-expanded');\n this.visible = true;\n }\n\n if (miniTemplate) {\n drawerItemsWrapper.html(drawerElement);\n this._initDrawerItems();\n this._selectItem();\n }\n\n drawerWrapper.width(options.width);\n\n if (options.mode === OVERLAY) {\n this.overlayContainer.show();\n this.visible = true;\n }\n },\n\n hide: function() {\n var that = this;\n var drawerWrapper = that.drawerWrapper;\n var drawerContainer = that.drawerContainer;\n var options = this.options;\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var miniTemplate = this._miniTemplate;\n var miniWidth = options.mini && options.mini.width;\n\n if (this._miniTemplate) {\n drawerItemsWrapper.html(miniTemplate);\n that._initDrawerItems();\n this._selectItem();\n }\n\n if (options.mini) {\n if (miniWidth) {\n drawerWrapper.width(miniWidth);\n } else {\n drawerWrapper.width(\"\");\n }\n } else {\n drawerWrapper.width(0);\n }\n\n if (this.visible) {\n drawerContainer.removeClass('k-drawer-expanded');\n this.visible = false;\n }\n\n if (options.mode === OVERLAY) {\n this.overlayContainer.hide();\n }\n },\n\n position: function(value) {\n var that = this;\n var options = that.options;\n var position = value || options.position;\n var drawerContainer = that.drawerContainer;\n\n if (position == RIGHT) {\n drawerContainer.removeClass('k-drawer-' + LEFT);\n drawerContainer.addClass('k-drawer-' + RIGHT);\n }\n else {\n drawerContainer.removeClass('k-drawer-' + RIGHT);\n drawerContainer.addClass('k-drawer-' + LEFT);\n }\n\n this.leftPositioned = position === LEFT;\n },\n\n _start: function(e) {\n var that = this;\n var options = this.options;\n var drawerWrapper = this.drawerWrapper;\n var drawerItemsWrapper = this.drawerItemsWrapper;\n var userEvents = e.sender;\n\n\n // ignore non-horizontal swipes\n if (Math.abs(e.x.velocity) < Math.abs(e.y.velocity) || kendo.triggeredByInput(e.event)) {\n userEvents.cancel();\n return;\n }\n\n\n if (this.drawerMini) {\n drawerItemsWrapper.html(that.drawerElement);\n }\n\n drawerWrapper.css(\"transition\", \"none\");\n\n if (options.mode != PUSH) {\n this.overlayContainer.show();\n }\n },\n\n _update: function(e) {\n var options = this.options;\n var mode = options.mode;\n\n if (mode == PUSH) {\n this._push(e);\n }\n else {\n this._overlay(e);\n }\n },\n\n _end: function(e) {\n var velocity = e.x.velocity;\n var options = this.options;\n var drawerWrapper = this.drawerWrapper;\n var elementWidth = drawerWrapper.width();\n var pastHalf = elementWidth > options.width / 2;\n var velocityThreshold = 0.8;\n var shouldShow;\n\n drawerWrapper.css(\"transition\", \"all .3s ease-out\");\n\n if (this.leftPositioned) {\n shouldShow = velocity > -velocityThreshold && (velocity > velocityThreshold || pastHalf);\n }\n else {\n shouldShow = velocity < velocityThreshold && (velocity < -velocityThreshold || pastHalf);\n }\n\n if (shouldShow) {\n if (this.trigger(\"show\", { sender: this })) {\n e.preventDefault();\n this.hide();\n } else {\n this.show();\n }\n } else {\n if (this.trigger(\"hide\", { sender: this })) {\n e.preventDefault();\n this.show();\n } else {\n this.hide();\n }\n }\n },\n\n _overlay: function(moveEventArgs) {\n var options = this.options;\n var minWidth = (options.mini && options.mini.width) || this.minWidth || 0;\n var drawerWrapper = this.drawerWrapper;\n var elementWidth = drawerWrapper.width();\n var limitedPosition;\n var updatedPosition;\n\n updatedPosition = elementWidth + (this.leftPositioned ? moveEventArgs.x.delta : -moveEventArgs.x.delta);\n\n limitedPosition = Math.min(Math.max(updatedPosition, minWidth), options.width);\n\n moveEventArgs.event.preventDefault();\n moveEventArgs.event.stopPropagation();\n\n drawerWrapper.width(limitedPosition);\n },\n\n _push: function(moveEventArgs) {\n var options = this.options;\n var minWidth = (options.mini && options.mini.width) || this.minWidth || 0;\n var drawerWrapper = this.drawerWrapper;\n var elementWidth = drawerWrapper.width();\n var limitedPosition;\n var updatedPosition;\n\n updatedPosition = elementWidth + (this.leftPositioned ? moveEventArgs.x.delta : -moveEventArgs.x.delta);\n\n limitedPosition = Math.min(Math.max(updatedPosition, minWidth), options.width);\n\n moveEventArgs.event.preventDefault();\n moveEventArgs.event.stopPropagation();\n\n drawerWrapper.width(limitedPosition);\n },\n\n _selectItem: function(item) {\n var selectedItemIndex;\n\n if (item) {\n item.addClass(\"k-selected\");\n this.trigger(\"itemClick\", { item: item, sender: this });\n this._selectedItemIndex = item.index();\n return;\n }\n\n selectedItemIndex = this._selectedItemIndex;\n\n if (selectedItemIndex) {\n this.drawerItemsWrapper.find(\"[data-role='drawer-item']\").eq(selectedItemIndex).addClass(\"k-selected\");\n }\n },\n\n _itemClick: function(e) {\n var that = this;\n var item;\n var items;\n\n if ($(e.event.target).find(\".k-drawer-item\").length > 0) {\n item = $(e.event.target).find(\".k-drawer-item\");\n }\n else if ($(e.event.target).closest(\".k-drawer-item\").length > 0) {\n item = $(e.event.target).closest(\".k-drawer-item\");\n }\n else if ($(e.event.target).hasClass(\".k-drawer-item\")) {\n item = $(e.event.target);\n }\n items = that.drawerItemsWrapper.find(\".k-drawer-item\").removeClass(\"k-selected\");\n that._selectItem(item);\n\n if (that.options.navigatable) {\n items.attr(\"aria-selected\", false);\n item.attr(\"aria-selected\", true);\n that._setCurrent(item);\n }\n },\n\n destroy: function() {\n var options = this.options;\n\n if (options.mode != PUSH) {\n if (this.leftPositioned) {\n $(document.body).css(\"padding-left\", 0);\n }\n else {\n $(document.body).css(\"padding-right\", 0);\n }\n }\n\n Widget.fn.destroy.call(this);\n\n this.userEvents.destroy();\n\n kendo.destroy(this.element);\n this.element = this.drawerWrapper = this.drawerElement = this.drawerContainer = this.drawerItemsWrapper = this._miniTemplate = null;\n },\n\n options: {\n name: \"Drawer\",\n autoCollapse: true,\n position: LEFT,\n mode: \"overlay\",\n swipeToOpen: true,\n width: 280,\n mini: false,\n navigatable: false,\n template: \"\"\n },\n\n events: [\n HIDE,\n SHOW,\n ITEMCLICK\n ]\n\n });\n kendo.ui.plugin(Drawer);\n })(window.kendo.jQuery);\n\n}));\n"]}