From 59911dc44f12423656f4724c94c6ef74540bc93d Mon Sep 17 00:00:00 2001
From: Henrik Askjer <henrik.askjer@uib.no>
Date: Mon, 29 Nov 2021 11:44:31 +0100
Subject: [PATCH] modular locale menu

---
 src/components/LocaleMenu.vue | 35 +++++++++++++++++++++++++++++++++++
 src/components/Menu.vue       | 34 ++++------------------------------
 src/components/TopBar.vue     | 27 ++++++++++++++++++++-------
 3 files changed, 59 insertions(+), 37 deletions(-)
 create mode 100644 src/components/LocaleMenu.vue

diff --git a/src/components/LocaleMenu.vue b/src/components/LocaleMenu.vue
new file mode 100644
index 00000000..f7bd7086
--- /dev/null
+++ b/src/components/LocaleMenu.vue
@@ -0,0 +1,35 @@
+<template>
+
+                <v-list subheader max-width="250">
+
+                <v-subheader>{{$t("settings.locale")}}</v-subheader>
+                <v-select rounded 
+                          v-model="updateLocale"
+                          prepend-inner-icon="language"
+                          outlined
+                          :items="locales"
+                          dense>
+                    </v-select>
+                </v-list>
+    
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            locales: [{text: "norsk (bokmål)", value: "nob"}, {text: "norsk (nynorsk)", value: "nno"}, {text:"english", value: "eng"}],
+            localesMap: {"nob": "norsk (bokmål)", "nno": "norsk (nynorsk)", "eng": "english"},
+        }
+        
+    },
+    computed: {
+        updateLocale: {
+            get () { return {text: this.localesMap[this.$store.state.currentLocale], value: this.$store.state.currentLocale}}, 
+            set(value) {
+                this.$store.commit("setLocale", {value: value, i18n: this._i18n})
+                }
+        }
+    },
+}
+</script>
\ No newline at end of file
diff --git a/src/components/Menu.vue b/src/components/Menu.vue
index 73ba5f8b..de1fe6e8 100644
--- a/src/components/Menu.vue
+++ b/src/components/Menu.vue
@@ -18,17 +18,7 @@
                   <v-subheader>Hjelp og informasjon</v-subheader>
                 <v-btn text to="/om">Om ordbøkene<v-icon>chevron_right</v-icon></v-btn>
                 </v-list>
-                <v-list subheader max-width="250">
-
-                <v-subheader>{{$t("settings.locale")}}</v-subheader>
-                <v-select rounded 
-                          v-model="updateLocale"
-                          prepend-inner-icon="language"
-                          outlined
-                          :items="locales"
-                          dense>
-                    </v-select>
-                </v-list>
+                <LocaleMenu/>
                 <Settings/>
 
             </v-card-text>
@@ -43,29 +33,13 @@
 
 <script>
 import Settings from './Settings.vue'
+import LocaleMenu from './LocaleMenu.vue'
 
 export default {
     name: "Menu",
-    props: {
-      activatorClass: null
-
-    },
-    data () {
-        return {
-            locales: [{text: "norsk (bokmål)", value: "nob"}, {text: "norsk (nynorsk)", value: "nno"}, {text:"english", value: "eng"}],
-            localesMap: {"nob": "norsk (bokmål)", "nno": "norsk (nynorsk)", "eng": "english"},
-        }
-    },
-    computed: {
-        updateLocale: {
-            get () { return {text: this.localesMap[this.$store.state.currentLocale], value: this.$store.state.currentLocale}}, 
-            set(value) {
-                this.$store.commit("setLocale", {value: value, i18n: this._i18n})
-                }
-        }
-    },
     components: {
-      Settings
+      Settings,
+      LocaleMenu
     }
 }
 </script>
diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue
index f49f447d..a170ec89 100644
--- a/src/components/TopBar.vue
+++ b/src/components/TopBar.vue
@@ -4,14 +4,23 @@
       <v-spacer/>
       <v-toolbar-items class="hidden-sm-and-down">
       <v-divider vertical/>
-      <v-btn text width="210" :class="$vuetify.breakpoint.name"><v-icon left>language</v-icon>Norsk (Bokmål)<v-icon right>expand_more</v-icon></v-btn>
+      <v-btn text width="210" v-if="false" :class="$vuetify.breakpoint.name"><v-icon left>language</v-icon>Norsk (Bokmål)<v-icon right>expand_more</v-icon></v-btn>
       <v-divider vertical/>
-      <v-btn text width="210"><v-icon left>settings</v-icon>Instillinger<v-icon right>expand_more</v-icon></v-btn>
+      <v-menu :close-on-content-click="false">
+          <template v-slot:activator= "{ on, attrs }">
+              <v-btn v-bind="attrs" v-on="on" text width="210"><v-icon left>settings</v-icon>Instillinger<v-icon right>expand_more</v-icon></v-btn>
+          </template>
+          <v-card>
+          <LocaleMenu/>
+          <Settings/>
+          </v-card>
+      
+      </v-menu>
             <v-divider vertical/>
       <v-btn text width="210" @click="toggleAbout"><v-icon left>{{$route.name=='about'? "chevron_left":"info"}}</v-icon>{{$route.name=='about'? "Tilbake":"Om ordbøkene"}}</v-btn>
       <v-divider vertical/>
       </v-toolbar-items>
-      <v-toolbar-items>
+      <v-toolbar-items v-if="$vuetify.breakpoint.mobile">
       <v-divider vertical/>     
         <v-dialog max-width="1200" width="1200" v-model="menuDialog" hide-overlay :fullscreen="$vuetify.breakpoint.mobile"
         :close-on-content-click="false" transition="dialog-top-transition">
@@ -29,6 +38,8 @@
 
 <script>
 import Menu from './Menu.vue'
+import Settings from './Settings.vue'
+import LocaleMenu from './LocaleMenu.vue'
 
 export default {
     name: "TopBar",
@@ -36,7 +47,7 @@ export default {
       return {
         version_label: process.env.VUE_APP_VERSION_LABEL,
         release: process.env.VUE_APP_RELEASE,
-        menuDialog: false
+        menuDialog: false,
       }
     },
     methods: {
@@ -45,7 +56,9 @@ export default {
       }
     },
     components: {
-        Menu
-    }
+        Menu,
+        Settings,
+        LocaleMenu
+    },
 }
-</script>
+</script>
\ No newline at end of file
-- 
GitLab