|
1 | 1 | <template> |
2 | | - <v-navigation-drawer dark clipped fixed app v-model="$store.state.drawer" class="secondary main-sidebar" value="false" width="220"> |
| 2 | + <div @click="click()" @mouseleave="mouseleave()"> |
| 3 | + <v-navigation-drawer |
| 4 | + permanent |
| 5 | + :mini-variant="$store.state.sidebarMini" |
| 6 | + dark clipped |
| 7 | + fixed |
| 8 | + app |
| 9 | + class="secondary main-sidebar" |
| 10 | + mini-variant-width="60" |
| 11 | + > |
3 | 12 | <v-list dense> |
4 | 13 | <template v-if="checkRole(item.guard)" v-for="(item) in items"> |
5 | | - <v-list-group v-model="item.model" :key="item.text" :prepend-icon="item.model ? item.icon : item['icon-alt']" |
| 14 | + <v-list-group v-model="item.model" :key="item.text" :prepend-icon="item.icon" |
6 | 15 | append-icon=""> |
7 | 16 | <v-list-tile slot="activator"> |
8 | 17 | <v-list-tile-content> |
9 | 18 | <v-list-tile-title> |
10 | 19 | {{ $t('global.routes.' + item.text) }} |
11 | 20 | </v-list-tile-title> |
12 | 21 | </v-list-tile-content> |
13 | | - </v-list-tile> |
14 | | - <v-list-tile v-for="(child, i) in item.children" :key="i" :href="'#' + item.route + child.route"> |
15 | | - <v-list-tile-action v-if="child.icon"> |
16 | | - <v-icon>{{ child.icon }}</v-icon> |
| 22 | + <v-list-tile-action v-if="item.icon"> |
| 23 | + <v-icon>{{ item.model ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}</v-icon> |
17 | 24 | </v-list-tile-action> |
18 | | - <v-list-tile-content> |
19 | | - <v-list-tile-title> |
20 | | - {{ $t('global.routes.' + child.text) }} |
21 | | - </v-list-tile-title> |
22 | | - </v-list-tile-content> |
23 | 25 | </v-list-tile> |
| 26 | + <template v-if="!$store.state.sidebarMini"> |
| 27 | + <v-list-tile v-for="(child, i) in item.children" :key="i" :href="'#' + item.route + child.route"> |
| 28 | + <v-list-tile-action v-if="child.icon"> |
| 29 | + <v-icon>{{ child.icon }}</v-icon> |
| 30 | + </v-list-tile-action> |
| 31 | + <v-list-tile-content> |
| 32 | + <v-list-tile-title> |
| 33 | + {{ $t('global.routes.' + child.text) }} |
| 34 | + </v-list-tile-title> |
| 35 | + </v-list-tile-content> |
| 36 | + </v-list-tile> |
| 37 | + </template> |
24 | 38 | </v-list-group> |
25 | 39 | </template> |
26 | 40 | </v-list> |
27 | 41 | </v-navigation-drawer> |
| 42 | + </div> |
28 | 43 | </template> |
29 | 44 |
|
30 | 45 | <script> |
31 | | -import { mapGetters } from "vuex"; |
| 46 | +import { mapState, mapGetters, mapMutations } from "vuex"; |
32 | 47 |
|
33 | 48 | export default { |
| 49 | + computed: { |
| 50 | + ...mapState(["sidebarMini", "sidebar"]), |
| 51 | + ...mapGetters("auth", ["checkRole"]) |
| 52 | + }, |
| 53 | + props: { |
| 54 | + source: String |
| 55 | + }, |
| 56 | + methods: { |
| 57 | + ...mapMutations([ |
| 58 | + 'toggleSidebarWidth', |
| 59 | + 'setSidebarWidth' |
| 60 | + ]), |
| 61 | + click() { |
| 62 | + if(this.sidebarMini) { |
| 63 | + this.setSidebarWidth(false) |
| 64 | + } |
| 65 | + }, |
| 66 | + mouseleave() { |
| 67 | + this.setSidebarWidth(true) |
| 68 | + } |
| 69 | + }, |
34 | 70 | data: () => ({ |
| 71 | + setSidebarMini: false, |
35 | 72 | dialog: false, |
36 | | - drawer: null, |
37 | 73 | items: [ |
38 | 74 | { |
39 | | - icon: "keyboard_arrow_up", |
40 | | - "icon-alt": "keyboard_arrow_down", |
| 75 | + icon: "people", |
41 | 76 | text: "crm.name", |
42 | 77 | model: false, |
43 | 78 | guard: "CRM", |
@@ -90,8 +125,7 @@ export default { |
90 | 125 | ] |
91 | 126 | }, |
92 | 127 | { |
93 | | - icon: "keyboard_arrow_up", |
94 | | - "icon-alt": "keyboard_arrow_down", |
| 128 | + icon: "person_add_disabled", |
95 | 129 | text: "admin.name", |
96 | 130 | model: false, |
97 | 131 | guard: "ADMIN", |
|
0 commit comments