2

I'm trying to close navigation drawer after it's been opened by clicking outside, but that doesn't work for some reason. If I click outside v-navigation-drawer nothing happens - no errors, no warns, just nothing

My dependencies in package.json:

"dependencies": {
    "@mdi/font": "5.9.55",
    "axios": "^0.27.2",
    "date-fns": "^2.28.0",
    "pinia": "^2.0.14",
    "ramda": "^0.28.0",
    "roboto-fontface": "*",
    "vue": "^3.2.37",
    "vue-router": "^4.0.16",
    "vuetify": "^3.0.0-beta.4",
    "webfontloader": "^1.0.0"
  },

My files: Header.vue

<script setup lang="ts">
import { useAdminSharedStore } from "@/stores/admin/admin-shared-store";

const adminSharedState = useAdminSharedStore();
</script>

<template>
  <v-app-bar prominent color="background" elevation="0">
    <div class="boxed-container w-100">
      <div class="d-flex align-center mx-6">
        <v-app-bar-nav-icon class="d-lg-none" variant="text" @click="adminSharedState.toggleDrawer" />
      </div>
    </div>
  </v-app-bar>
</template>

SideBar.vue:

<script setup lang="ts">
import routeNames from "@/router/route-names";
import { useAdminSharedStore } from "@/stores/admin/admin-shared-store";
import logo from "@/assets/admin/Logo.svg";

const adminSharedState = useAdminSharedStore();
</script>

<template>
    <v-navigation-drawer width="260" color="background" border="0" :model-value="adminSharedState.isOpenDrawer" temporary>
    <div class="ps-6 pe-5 pt-5 pb-2">
      <router-link class="d-flex align-center text-decoration-none home-link" :to="{ name: routeNames.owner }">
        <img :src="logo" alt="logo" width="30" height="24" />
        <p class="text-uppercase title ml-3">Meet scapes</p>
      </router-link>
    </div>
    <v-list class="pr-5 v-sheet" bg-color="background"> </v-list>
  </v-navigation-drawer>
</template>

In SideBar component I also tried v-model and :value instead of :model-value, but for :value that doesn't open drawer at all, and for v-model I had error: Error

And I use pinia (state management) to define is drawer open: store.ts:

import { defineStore } from "pinia";

export const useAdminSharedStore = defineStore({
  id: "admin-shared-store",
  state: () => ({
    _isOpenDrawer: false,
  }),
  getters: {
    isOpenDrawer: (state) => state._isOpenDrawer,
  },
  actions: {
    toggleDrawer() {
      this._isOpenDrawer = !this._isOpenDrawer;
    },
  },
});

0 Answers0