UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

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