vue-sidebar-menu
Version:
A Vue.js Sidebar Menu Component
3 lines (2 loc) • 20.8 kB
JavaScript
var VueSidebarMenu=function(e,t){"use strict";var n=function(){return{getSidebarProps:t.inject("vsmProps"),getSidebarRef:t.inject("getSidebarRef"),getIsCollapsed:t.inject("getIsCollapsed"),getMobileItem:t.inject("getMobileItem"),getMobileItemRect:t.inject("getMobileItemRect"),getCurrentRoute:t.inject("getCurrentRoute"),updateIsCollapsed:t.inject("updateIsCollapsed"),setMobileItem:t.inject("setMobileItem"),unsetMobileItem:t.inject("unsetMobileItem"),clearMobileItemTimeout:t.inject("clearMobileItemTimeout"),onRouteChange:t.inject("onRouteChange"),emitItemClick:t.inject("emitItemClick")}};function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}function a(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function u(e,t){return Array.isArray(e)?c(e,t):Array.isArray(t)?c(t,e):e===t}function c(e,t){return Array.isArray(t)?e.length===t.length&&e.every((function(e,n){return e===t[n]})):1===e.length&&e[0]===t}function s(e,o){var i=t.getCurrentInstance().appContext.config.globalProperties.$router,c=n(),s=c.getSidebarRef,d=c.getSidebarProps,m=c.getIsCollapsed,p=c.getMobileItem,v=c.getMobileItemRect,f=c.getCurrentRoute,g=c.setMobileItem,h=c.unsetMobileItem,b=c.clearMobileItemTimeout,y=c.emitItemClick,k=t.inject("emitScrollUpdate"),C=t.ref(!1),w=t.ref(!1),B=t.computed((function(){return M(e.item)||I(e.item.child)})),x=t.computed((function(){return M(e.item,!0)})),M=function(e,t){if(e.isActive&&"function"==typeof e.isActive){var n=e.isActive(e);if("boolean"==typeof n)return n}if(!e.href||e.external)return!1;if(i){var o=i.resolve(e.href),r=i.currentRoute.value,c=function(e,t){var n=e.matched,o=n.length,i=n[o-1],r=t.matched;if(!i||!r.length)return-1;var u=r.findIndex(a.bind(null,i));if(u>-1)return u;var c=l(n[o-2]);return o>1&&l(i)===c&&r[r.length-1].path!==c?r.findIndex(a.bind(null,n[o-2])):u}(o,r);return t||e.exact?c>-1&&c===r.matched.length-1&&function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!u(e[n],t[n]))return!1;return!0}(r.params,o.params):c>-1&&function(e,t){var n,o=function(){var n=t[i],o=e[i];if("string"==typeof n){if(n!==o)return{v:!1}}else if(!Array.isArray(o)||o.length!==n.length||n.some((function(e,t){return e!==o[t]})))return{v:!1}};for(var i in t)if(n=o())return n.v;return!0}(r.params,o.params)}return e.href===f.value},I=function(e){return!!e&&e.some((function(e){return M(e)||I(e.child)}))},S=function(t,n){V.value||m.value&&setTimeout((function(){O.value&&(V.value||g({item:e.item,itemEl:n})),"click"!==t.type||j.value||h(!1,O.value?void 0:300)}),0)},E=t.computed({get:function(){return!!j.value&&(m.value&&O.value?_.value:!!d.showChild||(d.showOneChild&&O.value||"deep"===d.showOneChild?e.item.id===e.activeShow:C.value))},set:function(t){(d.showOneChild&&O.value||"deep"===d.showOneChild)&&o("update-active-show",t?e.item.id:void 0),C.value=t}}),_=t.computed((function(){return m.value&&O.value?V.value:w.value})),O=t.computed((function(){return 1===e.level})),P=t.computed((function(){return m.value?!(!e.item.hidden||void 0!==e.item.hiddenOnCollapse)||!0===e.item.hiddenOnCollapse:!0===e.item.hidden})),j=t.computed((function(){return!!(e.item.child&&e.item.child.length>0)})),R=t.computed((function(){return["vsm--link","vsm--link_level-".concat(e.level),{"vsm--link_mobile":V.value,"vsm--link_hover":_.value,"vsm--link_active":B.value,"vsm--link_disabled":e.item.disabled,"vsm--link_open":E.value},e.item.class]})),A=t.computed((function(){var t=e.item.href?e.item.href:"#",n=e.item.external?"_blank":"_self",o=e.item.disabled?-1:null,i=x.value?"page":null,l=j.value?E.value:null;return r({href:t,target:n,tabindex:o,"aria-current":i,"aria-expanded":l,"aria-controls":l?"vsm-".concat(e.item.id):null},e.item.attributes)})),N=t.computed((function(){return{id:"vsm-".concat(e.item.id)}})),L=t.computed((function(){return["vsm--item",{"vsm--item_mobile":V.value}]})),V=t.computed((function(){var t;return e.item.id===(null===(t=p.value)||void 0===t?void 0:t.id)})),D=t.computed((function(){return r(r({position:"absolute","max-height":"".concat(v.value.maxHeight,"px"),width:"".concat(v.value.maxWidth,"px"),"overflow-y":"auto"},v.value.dropup?{bottom:"".concat(v.value.dropup,"px")}:{top:"".concat(v.value.top+v.value.height,"px")}),d.rtl?{right:d.widthCollapsed}:{left:d.widthCollapsed})})),H=t.computed((function(){return r(r({position:"absolute",top:"".concat(v.value.top,"px")},d.rtl?{right:d.widthCollapsed}:{left:d.widthCollapsed}),{},{width:"".concat(v.value.maxWidth,"px"),height:"".concat(v.value.height,"px"),"padding-left":"".concat(v.value.padding[0],"px"),"padding-right":"".concat(v.value.padding[1],"px"),"z-index":"20"})})),T=t.computed((function(){return r(r({position:"absolute",top:"".concat(v.value.top,"px")},d.rtl?{right:"0px"}:{left:"0px"}),{},{width:"".concat(v.value.maxWidth+parseInt(d.widthCollapsed),"px"),height:"".concat(v.value.height,"px"),"z-index":"10"})}));return t.watch((function(){return B.value}),(function(){B.value&&(E.value=!0)}),{immediate:!0}),{active:B,exactActive:x,show:E,hover:_,isFirstLevel:O,isHidden:P,hasChild:j,linkClass:R,linkAttrs:A,childAttrs:N,itemClass:L,isMobileItem:V,mobileItemDropdownStyle:D,mobileItemStyle:H,mobileItemBackgroundStyle:T,onLinkClick:function(t){(e.item.href&&!e.item.disabled||(t.preventDefault(),!e.item.disabled))&&(S(t,t.currentTarget.parentElement),j.value&&(e.item.href&&!B.value||(E.value=!E.value)),y(t,e.item))},onMouseOver:function(t){e.item.disabled||(t.stopPropagation(),w.value=!0)},onMouseOut:function(e){e.stopPropagation(),w.value=!1},onMouseEnter:function(t){e.item.disabled||(d.disableHover?V.value&&j.value&&b():(b(),S(t,t.currentTarget)))},onMouseLeave:function(){d.disableHover&&!j.value||V.value&&h(!1,d.disableHover?void 0:300)},onExpandEnter:function(e){e.style.height=e.scrollHeight+"px"},onExpandAfterEnter:function(e){if(e.style.height="auto",!m.value){var n=s.value.children[0];e.getBoundingClientRect().bottom>n.getBoundingClientRect().bottom&&t.nextTick((function(){e.scrollIntoView({behavior:"smooth",block:"end"})})),k()}},onExpandBeforeLeave:function(e){m.value&&O.value?e.style.display="none":e.style.height=e.scrollHeight+"px"},onExpandAfterLeave:function(){m.value||k()}}}const d=["href","onClick"],m={compatConfig:{MODE:3,inheritAttrs:!1}};var p=Object.assign(m,{__name:"SidebarMenuLink",props:{item:{type:Object,required:!0}},setup(e){const n=e,o=t.getCurrentInstance().appContext.config.globalProperties.$router,i=t.computed((()=>!(n.item.href&&!n.item.external&&o)));return(e,n)=>{const o=t.resolveComponent("router-link");return i.value?(t.openBlock(),t.createElementBlock("a",t.normalizeProps(t.mergeProps({key:0},e.$attrs)),[t.renderSlot(e.$slots,"default")],16)):(t.openBlock(),t.createBlock(o,{key:1,custom:"",to:e.$attrs.href},{default:t.withCtx((({href:n,navigate:o})=>[t.createElementVNode("a",t.mergeProps(e.$attrs,{href:n,onClick:o}),[t.renderSlot(e.$slots,"default")],16,d)])),_:3},8,["to"]))}}});p.__file="src/components/SidebarMenuLink.vue";const v={compatConfig:{MODE:3}};var f=Object.assign(v,{__name:"SidebarMenuIcon",props:{icon:{type:[String,Object],default:""}},setup(e){const n=e,o=t.computed((()=>({class:["vsm--icon","object"==typeof n.icon?n.icon.class:n.icon],"aria-hidden":!0,...n.icon.attributes})));return(n,i)=>"object"==typeof e.icon&&e.icon.text?(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.icon.element?e.icon.element:"i"),t.normalizeProps(t.mergeProps({key:0},o.value)),{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.icon.text),1)])),_:1},16)):"object"==typeof e.icon?(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.icon.element?e.icon.element:"i"),t.normalizeProps(t.mergeProps({key:1},o.value)),null,16)):(t.openBlock(),t.createElementBlock("i",t.normalizeProps(t.mergeProps({key:2},o.value)),null,16))}});f.__file="src/components/SidebarMenuIcon.vue";const g={compatConfig:{MODE:3}};var h=Object.assign(g,{__name:"SidebarMenuBadge",props:{badge:{type:Object,default:()=>{}}},setup(e){const n=e,o=t.computed((()=>({class:["vsm--badge",n.badge.class],...n.badge.attributes})));return(n,i)=>e.badge.text?(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.badge.element?e.badge.element:"span"),t.normalizeProps(t.mergeProps({key:0},o.value)),{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.badge.text),1)])),_:1},16)):(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.badge.element?e.badge.element:"span"),t.normalizeProps(t.mergeProps({key:1},o.value)),null,16))}});h.__file="src/components/SidebarMenuBadge.vue";const b={key:0},y={class:"vsm--dropdown"},k={compatConfig:{MODE:3}};var C=Object.assign(k,{__name:"SidebarMenuItem",props:{item:{type:Object,required:!0},level:{type:Number,default:1},activeShow:{type:String,default:void 0}},emits:["update-active-show"],setup(e,{emit:o}){const i=e,r=o,{getSidebarProps:l,getIsCollapsed:a}=n(),{linkComponentName:u}=t.toRefs(l),c=t.ref(void 0),d=e=>{c.value=e},{show:m,hover:v,isFirstLevel:g,isHidden:k,hasChild:C,linkClass:w,linkAttrs:B,childAttrs:x,itemClass:M,isMobileItem:I,mobileItemStyle:S,mobileItemDropdownStyle:E,mobileItemBackgroundStyle:_,onLinkClick:O,onMouseOver:P,onMouseOut:j,onMouseEnter:R,onMouseLeave:A,onExpandEnter:N,onExpandAfterEnter:L,onExpandBeforeLeave:V,onExpandAfterLeave:D}=s(i,r);return(n,o)=>{const i=t.resolveComponent("sidebar-menu-item",!0);return e.item.component&&!t.unref(k)?(t.openBlock(),t.createElementBlock("li",b,[(t.openBlock(),t.createBlock(t.resolveDynamicComponent(e.item.component),t.normalizeProps(t.guardReactiveProps(e.item.props)),null,16))])):e.item.header&&!t.unref(k)?(t.openBlock(),t.createElementBlock("li",t.mergeProps({key:1,class:["vsm--header",e.item.class]},e.item.attributes),t.toDisplayString(e.item.header),17)):t.unref(k)?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createElementBlock("li",t.mergeProps({key:2,class:t.unref(M),onMouseover:o[0]||(o[0]=(...e)=>t.unref(P)&&t.unref(P)(...e)),onMouseout:o[1]||(o[1]=(...e)=>t.unref(j)&&t.unref(j)(...e))},t.toHandlers(t.unref(a)&&t.unref(g)?{mouseenter:t.unref(R),mouseleave:t.unref(A)}:{},!0)),[(t.openBlock(),t.createBlock(t.resolveDynamicComponent(t.unref(u)?t.unref(u):p),t.mergeProps({item:e.item,class:t.unref(w)},t.unref(B),{onClick:t.unref(O)}),{default:t.withCtx((()=>[t.unref(a)&&t.unref(g)?(t.openBlock(),t.createBlock(t.Transition,{key:0,name:"slide-animation"},{default:t.withCtx((()=>[t.unref(v)?(t.openBlock(),t.createElementBlock("div",{key:0,class:"vsm--mobile-bg",style:t.normalizeStyle(t.unref(_))},null,4)):t.createCommentVNode("v-if",!0)])),_:1})):t.createCommentVNode("v-if",!0),e.item.icon?(t.openBlock(),t.createBlock(f,{key:1,icon:e.item.icon},null,8,["icon"])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",{class:t.normalizeClass(["vsm--title",t.unref(a)&&t.unref(g)&&!t.unref(I)&&"vsm--title_hidden"]),style:t.normalizeStyle(t.unref(I)&&t.unref(S))},[t.createElementVNode("span",null,t.toDisplayString(e.item.title),1),e.item.badge?(t.openBlock(),t.createBlock(h,{key:0,badge:e.item.badge},null,8,["badge"])):t.createCommentVNode("v-if",!0),t.unref(C)?(t.openBlock(),t.createElementBlock("div",{key:1,class:t.normalizeClass(["vsm--arrow",{"vsm--arrow_open":t.unref(m)}])},[t.renderSlot(n.$slots,"dropdown-icon",t.normalizeProps(t.guardReactiveProps({isOpen:t.unref(m)})))],2)):t.createCommentVNode("v-if",!0)],6)])),_:3},16,["item","class","onClick"])),t.unref(C)?(t.openBlock(),t.createBlock(t.Transition,{key:0,appear:t.unref(I),name:"expand",onEnter:t.unref(N),onAfterEnter:t.unref(L),onBeforeLeave:t.unref(V),onAfterLeave:t.unref(D)},{default:t.withCtx((()=>[t.unref(m)?(t.openBlock(),t.createElementBlock("div",t.mergeProps({key:0,class:["vsm--child",t.unref(I)&&"vsm--child_mobile"],style:t.unref(I)&&t.unref(E)},t.unref(x)),[t.createElementVNode("ul",y,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.item.child,(o=>(t.openBlock(),t.createBlock(i,{key:o.id,item:o,level:e.level+1,"active-show":c.value,onUpdateActiveShow:d},{"dropdown-icon":t.withCtx((({isOpen:e})=>[t.renderSlot(n.$slots,"dropdown-icon",t.mergeProps({ref_for:!0},{isOpen:e}))])),_:2},1032,["item","level","active-show"])))),128))])],16)):t.createCommentVNode("v-if",!0)])),_:3},8,["appear","onEnter","onAfterEnter","onBeforeLeave","onAfterLeave"])):t.createCommentVNode("v-if",!0)],16))}}});C.__file="src/components/SidebarMenuItem.vue";const w={compatConfig:{MODE:3}};var B=Object.assign(w,{__name:"SidebarMenuScroll",setup(e){const{getIsCollapsed:o}=n(),i=t.ref(null),r=t.ref(null),l=t.ref(null),a=t.ref(!1);let u=0,c=!1;const s=t.ref(!1),d=()=>{i.value&&t.nextTick((()=>{y()}))},m=()=>{requestAnimationFrame(d)},p=e=>{const t=Math.abs(r.value.getBoundingClientRect().y-e.clientY),n=l.value.offsetHeight/2;k(t-n)},v=e=>{e.stopImmediatePropagation(),a.value=!0,window.addEventListener("mousemove",f),window.addEventListener("mouseup",g),u=l.value.offsetHeight-(e.clientY-l.value.getBoundingClientRect().y)},f=e=>{if(!a.value)return;const t=e.clientY-r.value.getBoundingClientRect().y,n=l.value.offsetHeight-u;s.value=!0,k(t-n)},g=e=>{a.value=!1,u=0,c||(s.value=!1),window.removeEventListener("mousemove",f),window.removeEventListener("mouseup",g)},h=e=>{s.value=!0,c=!0},b=e=>{c=!1,a.value||(s.value=!1)},y=()=>{const e=100*i.value.clientHeight/i.value.scrollHeight,t=e<100?e:0,n=100*i.value.scrollTop/i.value.clientHeight||0;l.value.style.height=`${t}%`,l.value.style.transform=`translateY(${n}%)`},k=e=>{const t=100*e/r.value.offsetHeight;i.value.scrollTop=t*i.value.scrollHeight/100};return t.watch((()=>o.value),(()=>{d()})),t.onMounted((()=>{d(),window.addEventListener("resize",d)})),t.onUnmounted((()=>{window.removeEventListener("resize",d)})),t.provide("emitScrollUpdate",d),(e,n)=>(t.openBlock(),t.createElementBlock("div",{class:"vsm--scroll-wrapper",onMouseenter:h,onMouseleave:b},[t.createElementVNode("div",{ref_key:"scrollRef",ref:i,class:"vsm--scroll",onScroll:m},[t.renderSlot(e.$slots,"default")],544),t.createVNode(t.Transition,{persisted:""},{default:t.withCtx((()=>[t.withDirectives(t.createElementVNode("div",{ref_key:"scrollBarRef",ref:r,class:"vsm--scroll-bar",onMousedown:p},[t.createElementVNode("div",{ref_key:"scrollThumbRef",ref:l,class:t.normalizeClass(["vsm--scroll-thumb",[a.value&&"vsm--scroll-thumb_clicking"]]),onMousedown:v},null,34)],544),[[t.vShow,s.value]])])),_:1})],32))}});B.__scopeId="data-v-402f9588",B.__file="src/components/SidebarMenuScroll.vue";const x={class:"vsm--wrapper"},M=["aria-label"],I={compatConfig:{MODE:3}};var S=Object.assign(I,{__name:"SidebarMenu",props:{menu:{type:Array,required:!0},collapsed:{type:Boolean,default:!1},width:{type:String,default:"290px"},widthCollapsed:{type:String,default:"65px"},showChild:{type:Boolean,default:!1},theme:{type:String,default:void 0,validator:e=>["","white-theme"].includes(e)},showOneChild:{type:[Boolean,String],default:!1,validator:e=>"string"==typeof e?["deep"].includes(e):"boolean"==typeof e},rtl:{type:Boolean,default:!1},relative:{type:Boolean,default:!1},hideToggle:{type:Boolean,default:!1},disableHover:{type:Boolean,default:!1},linkComponentName:{type:String,default:void 0}},emits:{"item-click":(e,t)=>!(!e||!t),"update:collapsed":e=>!("boolean"!=typeof e)},setup(e,{expose:n,emit:o}){const i=e,r=o,{getSidebarRef:l,getIsCollapsed:a,updateIsCollapsed:u,unsetMobileItem:c,updateCurrentRoute:s}=function(e,n){var o=t.toRefs(e),i=o.collapsed,r=o.relative,l=o.width,a=o.widthCollapsed,u=o.rtl,c=t.ref(null),s=t.ref(i.value),d=t.reactive({item:null,rect:{top:0,height:0,padding:[0,0],maxHeight:0,maxWidth:0,dropup:0},timeout:null}),m=t.computed((function(){return d.item})),p=t.computed((function(){return d.rect})),v=t.ref(""),f=function(e){s.value=e},g=function(e){var t=e.item,n=e.itemEl;y();var o=n.children[0],i=h(o);k(t),C(i)},h=function(e){var t=e.getBoundingClientRect(),n=t.top,o=t.bottom,i=t.height,s=c.value.getBoundingClientRect(),d=s.left,m=s.right,p=c.value.firstElementChild.getBoundingClientRect(),v=p.bottom,f=p.height,g=e.offsetParent,h=g.offsetTop,b=g.getBoundingClientRect(),y=b.top,k=b.height,C=window.innerHeight,w=window.innerWidth,B=0,x=w,M=parseInt(l.value)-parseInt(a.value);if(r.value){var I=c.value.parentElement;C=I.clientHeight,w=I.clientWidth,B=I.getBoundingClientRect().top,x=I.getBoundingClientRect().right}var S=u.value?w-(x-d):x-m;M=S<=M?S:M;var E=window.getComputedStyle(e),_=E.paddingLeft,O=E.paddingRight,P=parseInt(_),j=parseInt(O),R=n-y,A=v-n-(f-(k+h)),N=C-(o-B),L=Math.min(window.innerHeight,window.innerHeight-B,C,C+B),V=L-(Math.max(o,0)-Math.max(B,0))<.25*L?A:0;return{top:R,height:i,padding:[P,j],maxWidth:M,maxHeight:N=V?n-B:N,dropup:V}},b=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:800;m.value&&(y(),e?k(null):d.timeout=setTimeout((function(){k(null)}),t))},y=function(){d.timeout&&clearTimeout(d.timeout)},k=function(e){d.item=e},C=function(e){Object.keys(d.rect).forEach((function(t){d.rect[t]=e[t]}))},w=function(){var e=window.location.pathname+window.location.search+window.location.hash;v.value=e},B=function(e,t){n("item-click",e,t)};return t.provide("vsmProps",e),t.provide("getSidebarRef",c),t.provide("getIsCollapsed",s),t.provide("getMobileItem",m),t.provide("getMobileItemRect",p),t.provide("getCurrentRoute",v),t.provide("updateIsCollapsed",f),t.provide("setMobileItem",g),t.provide("unsetMobileItem",b),t.provide("clearMobileItemTimeout",y),t.provide("onRouteChange",w),t.provide("emitItemClick",B),{getSidebarRef:c,getIsCollapsed:s,getMobileItem:m,getMobileItemRect:p,getCurrentRoute:v,updateIsCollapsed:f,setMobileItem:g,unsetMobileItem:b,clearMobileItemTimeout:y,updateCurrentRoute:w,onItemClick:B}}(i,r),d=t.ref(void 0),m=t.computed((()=>{let e=0;return function t(n){return n.map((n=>({id:Date.now()+""+e++,...n,...n.child&&{child:t(n.child)}})))}(i.menu)})),p=t.computed((()=>a.value?i.widthCollapsed:i.width)),v=t.computed((()=>["v-sidebar-menu",a.value?"vsm_collapsed":"vsm_expanded",i.theme&&`vsm_${i.theme}`,i.rtl&&"vsm_rtl",i.relative&&"vsm_relative"])),f=e=>{d.value=e},g=()=>{c(),u(!a.value),r("update:collapsed",a.value)};t.watch((()=>i.collapsed),(e=>{c(),u(e)}));return t.getCurrentInstance().appContext.config.globalProperties.$router||(t.onMounted((()=>{s(),window.addEventListener("hashchange",s)})),t.onUnmounted((()=>{window.removeEventListener("hashchange",s)}))),n({onRouteChange:s}),(n,o)=>(t.openBlock(),t.createElementBlock("div",{ref_key:"sidebarMenuRef",ref:l,class:t.normalizeClass([v.value]),style:t.normalizeStyle({"max-width":p.value})},[t.createElementVNode("div",x,[t.renderSlot(n.$slots,"header"),t.createVNode(B,null,{default:t.withCtx((()=>[t.createElementVNode("ul",{class:"vsm--menu",style:t.normalizeStyle({width:p.value})},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.value,(e=>(t.openBlock(),t.createBlock(C,{key:e.id,item:e,"active-show":d.value,onUpdateActiveShow:f},{"dropdown-icon":t.withCtx((({isOpen:e})=>[t.renderSlot(n.$slots,"dropdown-icon",t.mergeProps({ref_for:!0},{isOpen:e}),(()=>[o[0]||(o[0]=t.createElementVNode("span",{class:"vsm--arrow_default"},null,-1))]))])),_:2},1032,["item","active-show"])))),128))],4)])),_:3}),t.renderSlot(n.$slots,"footer")]),e.hideToggle?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createElementBlock("button",{key:0,class:"vsm--toggle-btn","aria-label":e.collapsed?"Expand sidebar":"Collapse sidebar",onClick:g},[t.renderSlot(n.$slots,"toggle-icon",{},(()=>[o[1]||(o[1]=t.createElementVNode("span",{class:"vsm--toggle-btn_default"},null,-1))]))],8,M))],6))}});S.__file="src/components/SidebarMenu.vue";var E={install:function(e){e.component("SidebarMenu",S)}};return e.SidebarMenu=S,e.default=E,Object.defineProperty(e,"__esModule",{value:!0}),e}({},Vue);
//# sourceMappingURL=vue-sidebar-menu.min.js.map