From 8b2ba1a68b6ae80012ca8af3d21bcb23385786a4 Mon Sep 17 00:00:00 2001 From: Petar Hristov <hristov@itc.rwth-aachen.de> Date: Fri, 27 May 2022 15:21:20 +0200 Subject: [PATCH] Fix: Sidebar stays expanded on option selection --- src/App.vue | 9 +++++++-- src/assets/css/_custom.css | 7 +++++++ src/components/elements/LoadingIndicator.vue | 9 +++++---- src/components/elements/SidebarMenu.vue | 16 +++++++++++++++- src/main.ts | 1 + src/modules/project/pages/ListProjects.vue | 2 +- src/modules/project/pages/ProjectPage.vue | 4 ++-- 7 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 src/assets/css/_custom.css diff --git a/src/App.vue b/src/App.vue index 4b66f3f7..acde7cef 100644 --- a/src/App.vue +++ b/src/App.vue @@ -4,7 +4,7 @@ <LoadingIndicator /> <main> <div class="mr-0 d-flex"> - <SidebarMenu class="pr-2" /> + <SidebarMenu class="mr-2" /> <div class="container-fluid px-5"> <Pilot /> <Maintenance /> @@ -82,6 +82,11 @@ export default defineComponent({ margin-bottom: 10px; height: 1px; width: 100%; - border-top: 1px solid #bebbbb; + border-top: 1px solid var(--light); +} + +#card-deck { + /* Used to align the cards' and container's left edges */ + margin: 0em -0.5em; } </style> diff --git a/src/assets/css/_custom.css b/src/assets/css/_custom.css new file mode 100644 index 00000000..b4bb2390 --- /dev/null +++ b/src/assets/css/_custom.css @@ -0,0 +1,7 @@ +:root { + --navbar-height: 2.5rem; + --loading-indicator-height: 3px; + --loading-indicator-margin: 1rem; + --sidebar-offset-top: calc(var(--navbar-height) + var(--loading-indicator-height) + var(--loading-indicator-margin)); + --sidebar-height: calc(100vh - var(--navbar-height) - calc(var(--loading-indicator-height) + var(--loading-indicator-margin))) +} \ No newline at end of file diff --git a/src/components/elements/LoadingIndicator.vue b/src/components/elements/LoadingIndicator.vue index ab33c3ba..cd544d12 100644 --- a/src/components/elements/LoadingIndicator.vue +++ b/src/components/elements/LoadingIndicator.vue @@ -1,5 +1,5 @@ <template> - <div id="loading-indicator"> + <div> <div v-if="show" class="indicator indicator-active" /> <div v-else class="indicator bg-light" /> </div> @@ -47,8 +47,9 @@ export default defineComponent({ .indicator { position: relative; width: 100%; - height: 3px; - margin-bottom: 1rem; + /* Heights defined as variables in "@/assets/css/_custom.css" */ + height: var(--loading-indicator-height); + margin-bottom: var(--loading-indicator-margin); } .indicator-active { background-color: #e9ecef; @@ -57,7 +58,7 @@ export default defineComponent({ width: 40%; content: ""; position: absolute; - background-color: #00549f; + background-color: var(--primary); top: 0; left: 0; bottom: 0; diff --git a/src/components/elements/SidebarMenu.vue b/src/components/elements/SidebarMenu.vue index 05b75f90..aa057be2 100644 --- a/src/components/elements/SidebarMenu.vue +++ b/src/components/elements/SidebarMenu.vue @@ -184,6 +184,7 @@ export default defineComponent({ class: "vsm--badge_default", } : undefined, + exactPath: true, }; }) as Array<SidebarItem>, }, @@ -291,10 +292,18 @@ export default defineComponent({ <style lang="scss" scoped> @import "/src/assets/scss/_custom.scss"; +.v-sidebar-menu { + height: var(--sidebar-height); + border-radius: 0rem 0.25rem 0.25rem 0rem; + background: $light; +} +.v-sidebar-menu ::v-deep .vsm--toggle-btn { + border-radius: 0rem 0rem 0.25rem 0rem; + background-color: var(--secondary); +} .v-sidebar-menu.vsm_expanded { overflow-y: auto; overflow-x: hidden; - max-height: calc(100vh - 50px - 30px); } .v-sidebar-menu ::v-deep .vsm--badge { background-color: #ffc107; @@ -336,4 +345,9 @@ export default defineComponent({ box-shadow: 3px 0px 0px 0px $primary inset; -webkit-box-shadow: 3px 0px 0px 0px $primary inset; } +.v-sidebar-menu ::v-deep .vsm--link_level-2.vsm--link_active { + // Use this to edit the second level element when active + background-color: var(--primary); + color: $white; +} </style> diff --git a/src/main.ts b/src/main.ts index d0c80729..cf19bfb6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -16,6 +16,7 @@ import "@/plugins/bootstrap-vue"; /* Corporate Design */ import "@/assets/scss/_custom.scss"; +import "@/assets/css/_custom.css"; /* Other */ import App from "@/App.vue"; diff --git a/src/modules/project/pages/ListProjects.vue b/src/modules/project/pages/ListProjects.vue index cdd0ee2d..7b6427c8 100644 --- a/src/modules/project/pages/ListProjects.vue +++ b/src/modules/project/pages/ListProjects.vue @@ -2,7 +2,7 @@ <div id="project"> <CoscineHeadline :headline="$tc('page.listProjects.title', 0)" /> <div class="list"> - <b-card-group deck> + <b-card-group id="card-deck" deck> <CoscineCard :title="$t('page.listProjects.addProject')" type="create" diff --git a/src/modules/project/pages/ProjectPage.vue b/src/modules/project/pages/ProjectPage.vue index 59ec546a..a4ba4dd3 100644 --- a/src/modules/project/pages/ProjectPage.vue +++ b/src/modules/project/pages/ProjectPage.vue @@ -6,7 +6,7 @@ <CoscineHeadline :headline="$tc('page.project.resource', 2)" /> <div class="list"> - <b-card-group deck> + <b-card-group id="card-deck" deck> <CoscineCard :title="$t('page.project.addResource')" type="create" @@ -49,7 +49,7 @@ <CoscineHeadline :headline="$tc('page.project.subProject', 0)" /> <div class="list"> - <b-card-group deck> + <b-card-group id="card-deck" deck> <CoscineCard :title="$t('page.listProjects.addProject')" type="create" -- GitLab