Source

src/components/Navigation/Sidebar.vue

<template>
  <div>
    <b-sidebar
        id="sidebar"
        v-model="sidebar"
        backdrop
        shadow="true"
        right
        no-header>

      <div v-if="mainData && !mainData.error">
        <div class="sidebarHead">
          <b-icon-x @click="sidebar=false" class="h4 float-left mt-2 ml-2 clickable"/>
          <div v-if="mainData">
            <h4 class="mb-1">{{ mainData.title }}</h4>
            <p class="text-muted mb-0">{{ mainData.description }}</p>
          </div>
        </div>


        <side-bar-service v-for="(service, index) in mainData.services" :key="service.name" :service="service" :no-divider="index === mainData.services.length-1"/>

      </div>
      <p class="text-muted p-5" v-else>Verbindung fehlgeschlagen</p>
    </b-sidebar>
  </div>
</template>

<script>
import {mapGetters} from "vuex"
import SideBarService from "./sidebarService";

/**
 * @module Sidebar
 * @category Components
 * @subcategory Navigation
 * @description The Sidebar of the ella-app
 */
export default {
  name: "Sidebar",
  components: {SideBarService},
  computed: {
    ...mapGetters(["mainData"]),
    //map store sidebar state
    sidebar: {
      get() {
        return this.$store.state.sidebar;
      },
      set(value) {
        this.$store.commit("sidebar", value);
      }
    }
  },
  data() {
    return {}
  },
}
</script>

<style scoped lang="scss">
@import "../../styles";

#sidebar {

  .sidebarHead {
    position: sticky;
    top: 0;
    //background-color: #f8f9fa;
    border-bottom-style: solid;
    border-color: $primary;
    text-align: right;
    padding: 5px 10px;

  }
}
</style>