diff --git a/package-lock.json b/package-lock.json index 631146a..d8873eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13657,6 +13657,11 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, + "vuex": { + "version": "4.0.0-beta.4", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.0-beta.4.tgz", + "integrity": "sha512-/+4E1dokq5cwbl4mohOqOj8h0vOLOWmLSqlqTf++bfmN9/JKWtwYfsBrzlK0sYrNfuYcpQeX0BVxQHoHXDfYZQ==" + }, "watchpack": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", diff --git a/package.json b/package.json index 33a844a..5bf65c0 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "core-js": "^3.6.5", "lodash": "^4.17.20", "uikit": "^3.5.9", - "vue": "^3.0.0" + "vue": "^3.0.0", + "vuex": "^4.0.0-beta.4" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", diff --git a/src/App.vue b/src/App.vue index 4e3ae55..7db952a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -37,4 +37,11 @@ export default { color: #2c3e50; // margin-top: 60px; } +.disabled { + cursor: not-allowed; + color: gray +} +.disabled:hover { + color:gray +} diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index 01c0668..d6a3c53 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -74,15 +74,17 @@
@@ -116,23 +118,33 @@ export default { data: () => { return { + translation: 'Add Translation...', translations: {}, } }, computed: { savedTranslations() { - let o = {} - let counter = 0 - for(const tr in this.translations){ - if(counter>2) - break; - o = {...o, [tr]:this.translations[tr]} - counter +=1 - // Object.assign({}, o,{[tr]: this.translations[tr]}) - } - console.log(o); - return o + // let o = {} + // let counter = 0 + // for(const tr in this.translations){ + // if(counter>2) + // break; + // o = {...o, [tr]:this.translations[tr]} + // counter +=1 + // // Object.assign({}, o,{[tr]: this.translations[tr]}) + // } + // console.log(o); + return this.$store.state.settings.savedTr; + } + }, + methods: { + add(tr){ + if(!tr) return; + this.$store.dispatch('add', tr) + }, + remove(tr){ + this.$store.dispatch('remove', tr) } }, async created(){ diff --git a/src/main.js b/src/main.js index 01433bc..5c5f5c9 100644 --- a/src/main.js +++ b/src/main.js @@ -1,4 +1,7 @@ import { createApp } from 'vue' import App from './App.vue' +import {store} from './store' -createApp(App).mount('#app') +const app = createApp(App) +app.use(store) +app.mount('#app') \ No newline at end of file diff --git a/src/store.js b/src/store.js new file mode 100644 index 0000000..1dcb3ce --- /dev/null +++ b/src/store.js @@ -0,0 +1,35 @@ +import { createStore } from 'vuex' + +export const store = createStore({ + state: { + settings: { + savedTr: [] + }, + search: '', + }, + mutations: { + add_translation (state,translation ) { + state.settings.savedTr.push(translation) + }, + remove_translation (state,abbr ) { + state.settings.savedTr = state.settings.savedTr.filter(tr => tr.abbreviation !==abbr) + + }, + add_search(state, search){ + state.search = search + } + }, + actions:{ + add({commit}, tr){ + commit('add_translation', tr); + }, + remove({commit}, abbr){ + commit('remove_translation', abbr); + }, + add_s({commit}, sr){ + commit('add_search', sr); + }, + } +}) + +// export default store; \ No newline at end of file