2020-12-02 19:46:17 +00:00
|
|
|
<template>
|
2020-12-02 20:45:15 +00:00
|
|
|
<div>
|
|
|
|
|
<sidebar-menu
|
|
|
|
|
ref="sidebar"
|
|
|
|
|
:width="sidebarWidth"
|
|
|
|
|
:menu="menu"
|
|
|
|
|
:hideToggle="hideToggle"
|
|
|
|
|
:collapsed="collapsed"
|
|
|
|
|
:theme="selectedTheme"
|
|
|
|
|
:show-one-child="true"
|
|
|
|
|
@item-click="onItemClick"
|
|
|
|
|
>
|
|
|
|
|
<div slot="header">
|
|
|
|
|
<div class="text-right" @click="onToggleClick">
|
|
|
|
|
<b-icon :icon="className"></b-icon>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</sidebar-menu>
|
|
|
|
|
</div>
|
2020-12-02 19:46:17 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
2020-12-08 18:01:22 -04:00
|
|
|
import api from "./../../api/index";
|
2020-12-02 19:46:17 +00:00
|
|
|
export default {
|
2020-12-02 20:45:15 +00:00
|
|
|
name: "CustomSidebar",
|
2020-12-10 11:19:30 -04:00
|
|
|
props: ["menu"],
|
2020-12-02 20:45:15 +00:00
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
collapsed: false,
|
|
|
|
|
isOnMobile: false,
|
|
|
|
|
hideToggle: true,
|
|
|
|
|
selectedTheme: "",
|
|
|
|
|
sidebarWidth: "310px",
|
|
|
|
|
};
|
2020-12-02 19:46:17 +00:00
|
|
|
},
|
2020-12-02 20:45:15 +00:00
|
|
|
computed: {
|
|
|
|
|
className() {
|
|
|
|
|
return this.collapsed
|
|
|
|
|
? "arrow-right-circle-fill"
|
|
|
|
|
: "arrow-left-circle-fill";
|
|
|
|
|
},
|
2020-12-02 19:46:17 +00:00
|
|
|
},
|
2020-12-02 20:45:15 +00:00
|
|
|
mounted() {
|
|
|
|
|
this.onResize();
|
|
|
|
|
window.addEventListener("resize", this.onResize);
|
2020-12-02 19:46:17 +00:00
|
|
|
},
|
2020-12-02 20:45:15 +00:00
|
|
|
methods: {
|
|
|
|
|
/**
|
|
|
|
|
* Toggle Handler, fired on click
|
|
|
|
|
*/
|
|
|
|
|
onToggleClick() {
|
|
|
|
|
this.collapsed = !this.collapsed;
|
|
|
|
|
this.$refs.sidebar.$emit("toggle-collapse", this.collapsed);
|
|
|
|
|
this.$emit("onToggleCollapse", this.collapsed);
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* Toggle item Handler, fired when a menu item is clicked
|
|
|
|
|
* @param {object} event - click event params
|
|
|
|
|
* @param {object} item - menu item params
|
|
|
|
|
* @param {object} node - html node
|
|
|
|
|
*/
|
|
|
|
|
onItemClick(event, item, node) {
|
|
|
|
|
this.$emit("OnClickSidebarItem", { item });
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* On resize event handler id the windows is resized
|
|
|
|
|
* collase and isMobile proerty will be updated
|
|
|
|
|
*/
|
|
|
|
|
onResize() {
|
|
|
|
|
if (window.innerWidth <= 767) {
|
|
|
|
|
this.isOnMobile = true;
|
|
|
|
|
this.collapsed = true;
|
|
|
|
|
} else {
|
|
|
|
|
this.isOnMobile = false;
|
|
|
|
|
this.collapsed = false;
|
|
|
|
|
}
|
2020-12-08 18:01:22 -04:00
|
|
|
}
|
2020-12-02 19:46:17 +00:00
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.badge-custom {
|
2020-12-02 20:45:15 +00:00
|
|
|
color: #000;
|
|
|
|
|
background-color: #d4dfe6;
|
|
|
|
|
padding: 0px 6px;
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
border-radius: 3px;
|
|
|
|
|
height: 20px;
|
|
|
|
|
line-height: 20px;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
text-transform: uppercase;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
|
|
|
|
.text-right {
|
2020-12-02 20:45:15 +00:00
|
|
|
color: white;
|
|
|
|
|
font-size: x-large;
|
|
|
|
|
margin: 3px;
|
|
|
|
|
margin-right: 16px;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
|
|
|
|
.sidebar-overlay {
|
2020-12-02 20:45:15 +00:00
|
|
|
position: fixed;
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
background-color: #000;
|
|
|
|
|
opacity: 0.5;
|
|
|
|
|
z-index: 900;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pre {
|
2020-12-02 20:45:15 +00:00
|
|
|
font-family: Consolas, monospace;
|
|
|
|
|
color: #000;
|
|
|
|
|
background: #fff;
|
|
|
|
|
border-radius: 2px;
|
|
|
|
|
padding: 15px;
|
|
|
|
|
line-height: 1.5;
|
|
|
|
|
overflow: auto;
|
2020-12-02 19:46:17 +00:00
|
|
|
}
|
2020-12-02 20:45:15 +00:00
|
|
|
</style>
|