refactor: update theme components

This commit is contained in:
Łukasz Holeczek
2021-08-27 00:06:27 +02:00
parent e086d28946
commit 6ece5c009c
6 changed files with 123 additions and 103 deletions
+13 -18
View File
@@ -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",
+1
View File
@@ -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>
+21 -13
View File
@@ -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>
+64 -48
View File
@@ -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
View File
@@ -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",
+10 -10
View File
@@ -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: {},
}); })