refactor: update theme components
This commit is contained in:
+13
-18
@@ -60,11 +60,6 @@ export default [
|
|||||||
name: "Collapses",
|
name: "Collapses",
|
||||||
to: "/base/collapses",
|
to: "/base/collapses",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
_name: "CNavItem",
|
|
||||||
name: "Forms",
|
|
||||||
to: "/base/forms",
|
|
||||||
},
|
|
||||||
/*
|
/*
|
||||||
{
|
{
|
||||||
_name: 'CNavItem',
|
_name: 'CNavItem',
|
||||||
@@ -79,14 +74,14 @@ export default [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
_name: "CNavItem",
|
_name: "CNavItem",
|
||||||
name: "Navs",
|
name: "Navs & Tabs",
|
||||||
to: "/base/navs",
|
to: "/base/navs",
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
_name: "CNavItem",
|
// _name: "CNavItem",
|
||||||
name: "Navbars",
|
// name: "Navbars",
|
||||||
to: "/base/navbars",
|
// to: "/base/navbars",
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
_name: "CNavItem",
|
_name: "CNavItem",
|
||||||
name: "Paginations",
|
name: "Paginations",
|
||||||
@@ -104,19 +99,19 @@ export default [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
_name: "CNavItem",
|
_name: "CNavItem",
|
||||||
name: "Switches",
|
name: "Spinners",
|
||||||
to: "/base/switches",
|
to: "/base/spinners",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
_name: "CNavItem",
|
_name: "CNavItem",
|
||||||
name: "Tables",
|
name: "Tables",
|
||||||
to: "/base/tables",
|
to: "/base/tables",
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
_name: "CNavItem",
|
// _name: "CNavItem",
|
||||||
name: "Tabs",
|
// name: "Tabs",
|
||||||
to: "/base/tabs",
|
// to: "/base/tabs",
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
_name: "CNavItem",
|
_name: "CNavItem",
|
||||||
name: "Tooltips",
|
name: "Tooltips",
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
v-for="item in currentRoute"
|
v-for="item in currentRoute"
|
||||||
:href="item.to"
|
:href="item.to"
|
||||||
:active="item.to === '' ? true : false"
|
:active="item.to === '' ? true : false"
|
||||||
|
:key="item"
|
||||||
>
|
>
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</CBreadcrumbItem>
|
</CBreadcrumbItem>
|
||||||
|
|||||||
@@ -1,35 +1,43 @@
|
|||||||
<template>
|
<template>
|
||||||
<CSidebar position="fixed" selfHiding="md" :class="sidebarClass">
|
<CSidebar position="fixed" selfHiding="md" :unfoldable="sidebarUnfoldable" :visible="sidebarVisible">
|
||||||
<CSidebarBrand>
|
<CSidebarBrand>
|
||||||
<CIcon
|
<CIcon
|
||||||
customClasses="sidebar-brand-full"
|
customClassName="sidebar-brand-full"
|
||||||
name="logo"
|
name="logo"
|
||||||
size="custom-size"
|
size="custom-size"
|
||||||
:height="35"
|
:height="35"
|
||||||
viewBox="0 0 556 134" />
|
viewBox="0 0 556 134"
|
||||||
|
/>
|
||||||
<CIcon
|
<CIcon
|
||||||
customClasses="sidebar-brand-narrow"
|
customClassName="sidebar-brand-narrow"
|
||||||
name="logo"
|
name="logo"
|
||||||
size="custom-size"
|
size="custom-size"
|
||||||
:height="35"
|
:height="35"
|
||||||
viewBox="0 0 110 134"
|
viewBox="0 0 110 134"
|
||||||
/></CSidebarBrand>
|
/>
|
||||||
|
</CSidebarBrand>
|
||||||
<AppSidebarNav />
|
<AppSidebarNav />
|
||||||
|
<CSidebarToggler
|
||||||
|
class="d-none d-lg-flex"
|
||||||
|
@click="$store.commit('toggleUnfoldable')"
|
||||||
|
/>
|
||||||
</CSidebar>
|
</CSidebar>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { AppSidebarNav } from "./AppSidebarNav";
|
import { AppSidebarNav } from './AppSidebarNav'
|
||||||
export default {
|
export default {
|
||||||
name: "AppSidebar",
|
name: 'AppSidebar',
|
||||||
components: {
|
components: {
|
||||||
AppSidebarNav,
|
AppSidebarNav,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
sidebarClass () {
|
sidebarUnfoldable() {
|
||||||
return this.$store.state.sidebarClass
|
return this.$store.state.sidebarUnfoldable
|
||||||
|
},
|
||||||
|
sidebarVisible() {
|
||||||
|
return this.$store.state.sidebarVisible
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,19 +1,49 @@
|
|||||||
import { defineComponent, h, resolveComponent } from "vue";
|
import { defineComponent, h, resolveComponent } from 'vue'
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from 'vue-router'
|
||||||
|
|
||||||
import { CSidebarNav, CNavItem, CNavGroup, CNavTitle } from "@coreui/vue";
|
import { CSidebarNav, CNavItem, CNavGroup, CNavTitle } from '@coreui/vue'
|
||||||
import nav from "@/_nav.js";
|
import nav from '@/_nav.js'
|
||||||
|
|
||||||
const AppSidebarNav = defineComponent({
|
const AppSidebarNav = defineComponent({
|
||||||
name: "AppSidebarNav",
|
name: 'AppSidebarNav',
|
||||||
components: {
|
components: {
|
||||||
CNavItem,
|
CNavItem,
|
||||||
CNavGroup,
|
CNavGroup,
|
||||||
CNavTitle,
|
CNavTitle,
|
||||||
},
|
},
|
||||||
setup() {
|
setup() {
|
||||||
const singleItem = (item) =>
|
const renderItem = (item) => {
|
||||||
item.to
|
if (item.children) {
|
||||||
|
return h(
|
||||||
|
RouterLink,
|
||||||
|
{
|
||||||
|
to: item.route,
|
||||||
|
custom: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
default: (props) =>
|
||||||
|
h(
|
||||||
|
resolveComponent('CNavGroup'),
|
||||||
|
{
|
||||||
|
visible: props.isActive,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
togglerContent: () => [
|
||||||
|
h(resolveComponent('CIcon'), {
|
||||||
|
customClassName: 'nav-icon',
|
||||||
|
name: item.icon,
|
||||||
|
}),
|
||||||
|
item.name,
|
||||||
|
],
|
||||||
|
default: () =>
|
||||||
|
item.children.map((child) => renderItem(child)),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return item.to
|
||||||
? h(
|
? h(
|
||||||
RouterLink,
|
RouterLink,
|
||||||
{
|
{
|
||||||
@@ -27,63 +57,49 @@ const AppSidebarNav = defineComponent({
|
|||||||
{
|
{
|
||||||
active: props.isActive,
|
active: props.isActive,
|
||||||
href: props.href,
|
href: props.href,
|
||||||
icon: "cil-speedometer",
|
|
||||||
onClick: () => props.navigate(),
|
onClick: () => props.navigate(),
|
||||||
},
|
},
|
||||||
[
|
{
|
||||||
|
default: () => [
|
||||||
item.icon &&
|
item.icon &&
|
||||||
h(resolveComponent("CIcon"), {
|
h(resolveComponent('CIcon'), {
|
||||||
customClassName: "nav-icon",
|
customClassName: 'nav-icon',
|
||||||
name: item.icon,
|
name: item.icon,
|
||||||
}),
|
}),
|
||||||
item.name,
|
item.name,
|
||||||
item.badge &&
|
item.badge &&
|
||||||
h(resolveComponent("CBadge"), {
|
h(
|
||||||
|
resolveComponent('CBadge'),
|
||||||
|
{
|
||||||
class: 'ms-auto',
|
class: 'ms-auto',
|
||||||
color: item.badge.color,
|
color: item.badge.color,
|
||||||
}, item.badge.text),
|
},
|
||||||
]
|
{
|
||||||
),
|
default: () => item.badge.text,
|
||||||
}
|
}
|
||||||
)
|
),
|
||||||
: h(resolveComponent(item._name), {}, item.name);
|
|
||||||
|
|
||||||
const group = (item) =>
|
|
||||||
h(
|
|
||||||
RouterLink,
|
|
||||||
{
|
|
||||||
to: item.route,
|
|
||||||
custom: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
default: (props) =>
|
|
||||||
h(
|
|
||||||
resolveComponent("CNavGroup"),
|
|
||||||
{
|
|
||||||
visible: props.isActive
|
|
||||||
},
|
|
||||||
{
|
|
||||||
togglerContent: () => [
|
|
||||||
h(resolveComponent("CIcon"), {
|
|
||||||
customClassName: "nav-icon",
|
|
||||||
name: item.icon,
|
|
||||||
}),
|
|
||||||
item.name,
|
|
||||||
],
|
],
|
||||||
default: () => item.children.map((child) => singleItem(child)),
|
},
|
||||||
}
|
|
||||||
),
|
),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
: h(
|
||||||
|
resolveComponent(item._name),
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
default: () => item.name,
|
||||||
|
},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
|
||||||
return () =>
|
return () =>
|
||||||
h(
|
h(
|
||||||
CSidebarNav,
|
CSidebarNav,
|
||||||
{},
|
{},
|
||||||
nav.map((item) =>
|
{
|
||||||
typeof item.children === "undefined" ? singleItem(item) : group(item)
|
default: () => nav.map((item) => renderItem(item)),
|
||||||
)
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
});
|
)
|
||||||
export { AppSidebarNav };
|
},
|
||||||
|
})
|
||||||
|
export { AppSidebarNav }
|
||||||
|
|||||||
+5
-5
@@ -121,9 +121,9 @@ const routes = [
|
|||||||
component: () => import("@/views/base/Progress.vue"),
|
component: () => import("@/views/base/Progress.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/base/switches",
|
path: "/base/spinners",
|
||||||
name: "Switches",
|
name: "Spinners",
|
||||||
component: () => import("@/views/base/Switches.vue"),
|
component: () => import("@/views/base/Spinners.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/base/tables",
|
path: "/base/tables",
|
||||||
@@ -159,8 +159,8 @@ const routes = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/buttons/dropdowns",
|
path: "/buttons/dropdowns",
|
||||||
name: "Button Dropdowns",
|
name: "Dropdowns",
|
||||||
component: () => import("@/views/buttons/ButtonDropdowns.vue"),
|
component: () => import("@/views/buttons/Dropdowns.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/buttons/button-groups",
|
path: "/buttons/button-groups",
|
||||||
|
|||||||
+9
-9
@@ -1,18 +1,18 @@
|
|||||||
import { createStore } from "vuex";
|
import { createStore } from 'vuex'
|
||||||
|
|
||||||
export default createStore({
|
export default createStore({
|
||||||
state: {
|
state: {
|
||||||
sidebarClass: '',
|
sidebarVisible: '',
|
||||||
|
sidebarUnfoldable: false,
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
toggleSidebar(state) {
|
toggleSidebar(state) {
|
||||||
if(state.sidebarClass === ''){
|
state.sidebarVisible = !state.sidebarVisible
|
||||||
state.sidebarClass = 'sidebar-self-hiding-xxl'
|
},
|
||||||
}else{
|
toggleUnfoldable(state) {
|
||||||
state.sidebarClass = ''
|
state.sidebarUnfoldable = !state.sidebarUnfoldable
|
||||||
}
|
},
|
||||||
}
|
|
||||||
},
|
},
|
||||||
actions: {},
|
actions: {},
|
||||||
modules: {},
|
modules: {},
|
||||||
});
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user