@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) • 8.96 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.userevents.js")):"function"==typeof define&&define.amd?define(["exports","kendo.userevents"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Drawer={}))}(this,(function(e){!function(e){var t=window.kendo,i=t.ui.Widget,r=".kendoDrawer",a="k-focus",n=t.keys,s="push",d="overlay",o="left",l="start",h="k-drawer-items",m=t.ui.Widget.extend({init:function(r,a){var n,d=this;i.fn.init.call(this,r,a),a=d.options,d._element(r),d._wrapper(r),d._navigatable(),d.position(),d._mode(),a.mini&&d._miniMode(),d._initDrawerItems(),a.mini&&a.mode!=s&&d._setBodyOffset(),n=this.userEvents=new t.UserEvents(a.mode!=s?e(document.body):this.drawerContainer,{fastTap:!0,allowSelection:!0}),d.tap=function(t){e.contains(d.drawerItemsWrapper.filter("."+h)[0],t.event.target)&&d._itemClick(t),a.autoCollapse&&d.visible&&!d.trigger("hide",{sender:this})&&(d.hide(),t.preventDefault())},this.options.swipeToOpen?(n.bind("start",(function(e){d._start(e)})),n.bind("move",(function(e){d._update(e)})),n.bind("end",(function(e){d._end(e)})),n.bind("tap",d.tap)):n.bind("press",d.tap),a.minHeight&&a.mode==s&&d.drawerContainer.css("min-height",a.minHeight),d._showWatermarkOverlay&&d._showWatermarkOverlay(d.drawerContainer[0]),a.expanded&&(d._removeTransition(),d.show())},_element:function(){var t=this,i=t.element,r=t.options;if(t.contentElement=i.children().wrapAll("<div class='k-drawer-content'></div>").parent(),r.template instanceof Function){let i=r.template();t.drawerElement=e(i)}else t.drawerElement=e(r.template);i.addClass("k-drawer")},_navigatable:function(){var e=this,t=e.element;t.find("[data-role='drawer-item']").first().parent().attr("role","menubar").attr("aria-orientation","vertical"),this.options.navigatable&&t.attr("tabIndex",0).on("focus"+r,e._focus.bind(e)).on("focusout"+r,e._blur.bind(e)).on("keydown"+r,e,e._keyDown.bind(e))},_blur:function(){this._current&&this._current.removeClass(a)},_focus:function(){var e=this;e._setCurrent(e._current?e._current:e.drawerItemsWrapper.find("[data-role='drawer-item']").eq(0))},_setCurrent:function(i){var r=this,n=t.guid(),s=e(i);r._current&&(e(r._current).removeClass(a).removeAttr("id"),r.drawerItemsWrapper.removeAttr("aria-activedescendant")),s.attr("id",n).addClass(a),r.drawerItemsWrapper.attr("aria-activedescendant",n),r._current=s},_keyDown:function(t){var i,r=this,a=!1,s=r._current;t.keyCode==n.UP&&(a=!0,(i=s.prevAll("[data-role='drawer-item']").first()).length?r._setCurrent(i):r._setCurrent(s.parent().find("[data-role='drawer-item']").last())),t.keyCode==n.DOWN&&(a=!0,(i=s.nextAll("[data-role='drawer-item']").first()).length?r._setCurrent(i):r._setCurrent(s.parent().find("[data-role='drawer-item']").first())),t.keyCode==n.HOME&&(a=!0,r._setCurrent(r.drawerItemsWrapper.find("[data-role='drawer-item']").eq(0))),t.keyCode==n.END&&(a=!0,r._setCurrent(r.drawerItemsWrapper.find("[data-role='drawer-item']").last())),t.keyCode!=n.SPACEBAR&&t.keyCode!=n.ENTER||(a=!0,r.tap({event:{target:s[0]},preventDefault:e.noop})),t.keyCode==n.ESC&&(a=!0,r.hide()),a&&t.preventDefault()},_wrapper:function(){var e=this.options,t=this.drawerElement,i=this.element,r=this.contentElement,a=this.drawerItemsWrapper=t,n=this.drawerWrapper=a.wrapAll("<div class='k-drawer-wrapper'></div>").parent(),s=this.drawerContainer=i.wrap("<div class='k-drawer-container'></div>").parent();t.filter("ul").addClass(h),e.mini?e.mini.width&&n.width(e.mini.width):n.width(0),s.append(r),i.append(n)},_addTransition:function(){this.drawerWrapper.css("transition","all .3s ease-out")},_removeTransition:function(){this.drawerWrapper.css("transition","none")},_setBodyOffset:function(){var t=this.element.outerWidth();this.leftPositioned?e(document.body).css("padding-left",t):e(document.body).css("padding-right",t)},_initDrawerItems:function(){var e=this.drawerItemsWrapper,t=e.find("[data-role='drawer-item']"),i=e.find("[data-role='drawer-separator']");t.addClass("k-drawer-item").attr("role","menuitem"),i.addClass("k-drawer-item k-drawer-separator").attr("role","separator"),this._toggleLevelClasses(!!this.visible),t.each(((e,t)=>{t.setAttribute("aria-label",t.textContent.trim())})),this._selectedItemIndex>=0&&(t.removeClass("k-selected"),t.eq(this._selectedItemIndex).addClass("k-selected"))},_toggleLevelClasses:function(t){let i,r;this.drawerItemsWrapper.find("[data-role='drawer-item']").each(((a,n)=>{i=e(n).data("level")||0,r="k-level-"+i,e(n).toggleClass(r,t)}))},_mode:function(){var t,i=this.options,r=this.drawerContainer;i.mode==s?r.addClass("k-drawer-"+s):(r.addClass("k-drawer-"+d),(t=this.overlayContainer=e('<div class="k-overlay"></div>')).hide(),r.prepend(t))},_miniMode:function(){var t=this.options,i=this.drawerContainer,r=t.mini.width,a=this._miniTemplate=t.mini.template,n=this.drawerItemsWrapper,s=this.drawerWrapper;if(i.addClass("k-drawer-mini"),a)if(a instanceof Function){let t=a();n.html(e(t))}else n.html(e(a));r&&s.width(r),this.minWidth=t.mini.width||this.drawerWrapper.width()},show:function(){var e=this.drawerWrapper,t=this.drawerContainer,i=this.options,r=t.hasClass("k-drawer-expanded"),a=this._miniTemplate,n=this.drawerItemsWrapper;r||(t.addClass("k-drawer-expanded"),this.visible=!0),a&&(n.html(a),this._initDrawerItems(),this._selectItem()),e.width(i.width),i.mini&&t.removeClass("k-drawer-mini"),i.mode===d&&(this.overlayContainer.show(),this.visible=!0),this._toggleLevelClasses(!0)},hide:function(){var e=this,t=e.drawerWrapper,i=e.drawerContainer,r=this.options,a=this.drawerItemsWrapper,n=this._miniTemplate,s=r.mini&&r.mini.width;this._addTransition(),this._miniTemplate&&(a.html(n),e._initDrawerItems(),this._selectItem()),r.mini?(i.addClass("k-drawer-mini"),s?t.width(s):t.width("")):t.width(0),this.visible&&(i.removeClass("k-drawer-expanded"),this.visible=!1),r.mode===d&&this.overlayContainer.hide(),this._toggleLevelClasses(!1)},position:function(e){var t=this,i=t.options,r=e||i.position;"right"==r?(t.element.removeClass("k-drawer-"+l),t.element.addClass("k-drawer-end")):(t.element.removeClass("k-drawer-end"),t.element.addClass("k-drawer-"+l)),this.leftPositioned=r===o},_start:function(e){var i=this.options,r=(this.drawerWrapper,this.drawerItemsWrapper),a=e.sender;Math.abs(e.x.velocity)<Math.abs(e.y.velocity)||t.triggeredByInput(e.event)?a.cancel():(this.drawerMini&&r.html(this.drawerElement),this._removeTransition(),i.mode!=s&&this.overlayContainer.show())},_update:function(e){this.options.mode==s?this._push(e):this._overlay(e)},_end:function(e){var t=e.x.velocity,i=this.options,r=this.drawerWrapper.width()>i.width/2,a=.8;this._addTransition(),(this.leftPositioned?t>-.8&&(t>a||r):t<a&&(t<-.8||r))?this.trigger("show",{sender:this})?(e.preventDefault(),this.hide()):this.show():this.trigger("hide",{sender:this})?(e.preventDefault(),this.show()):this.hide()},_overlay:function(e){var t,i,r=this.options,a=r.mini&&r.mini.width||this.minWidth||0,n=this.drawerWrapper;i=n.width()+(this.leftPositioned?e.x.delta:-e.x.delta),t=Math.min(Math.max(i,a),r.width),e.event.preventDefault(),e.event.stopPropagation(),n.width(t)},_push:function(e){var t,i,r=this.options,a=r.mini&&r.mini.width||this.minWidth||0,n=this.drawerWrapper;i=n.width()+(this.leftPositioned?e.x.delta:-e.x.delta),t=Math.min(Math.max(i,a),r.width),e.event.preventDefault(),e.event.stopPropagation(),n.width(t)},_selectItem:function(e){var t;if(e)return e.addClass("k-selected"),this.trigger("itemClick",{item:e,sender:this}),void(this._selectedItemIndex=e.index());(t=this._selectedItemIndex)&&this.drawerItemsWrapper.find("[data-role='drawer-item']").eq(t).addClass("k-selected")},_itemClick:function(t){var i,r=this;e(t.event.target).find(".k-drawer-item").length>0?i=e(t.event.target).find(".k-drawer-item"):e(t.event.target).closest(".k-drawer-item").length>0?i=e(t.event.target).closest(".k-drawer-item"):e(t.event.target).hasClass(".k-drawer-item")&&(i=e(t.event.target)),r.drawerItemsWrapper.find(".k-drawer-item").removeClass("k-selected"),r._selectItem(i),r.options.navigatable&&r._setCurrent(i)},destroy:function(){this.options.mode!=s&&(this.leftPositioned?e(document.body).css("padding-left",0):e(document.body).css("padding-right",0)),i.fn.destroy.call(this),this.userEvents.destroy(),t.destroy(this.element),this.element=this.drawerWrapper=this.drawerElement=this.drawerContainer=this.drawerItemsWrapper=this._miniTemplate=null},options:{name:"Drawer",autoCollapse:!0,expanded:!1,position:o,mode:"overlay",swipeToOpen:!0,width:280,mini:!1,navigatable:!1,template:""},events:["hide","show","itemClick"]});t.ui.plugin(m)}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"drawer",name:"Drawer",category:"web",description:"The Kendo Drawer widget provides slide to reveal sidebar",depends:["userevents"]},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.drawer.min.js.map