diff --git a/package-lock.json b/package-lock.json index a61aef8..8ff3bab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,8 @@ "jquery": "^3.6.0", "popper.js": "^1.16.1", "vue": "^2.6.14", - "vue-router": "^3.5.2" + "vue-router": "^3.5.2", + "vuex": "^3.6.2" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", @@ -16651,6 +16652,14 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, + "node_modules/vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "peerDependencies": { + "vue": "^2.0.0" + } + }, "node_modules/watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", @@ -31165,6 +31174,12 @@ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "dev": true }, + "vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "requires": {} + }, "watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", diff --git a/package.json b/package.json index 6facae3..cbdb433 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "jquery": "^3.6.0", "popper.js": "^1.16.1", "vue": "^2.6.14", - "vue-router": "^3.5.2" + "vue-router": "^3.5.2", + "vuex": "^3.6.2" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", diff --git a/src/App.vue b/src/App.vue index fb0c28f..e0f9337 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,7 @@ diff --git a/src/components/Navigation.vue b/src/components/Navigation.vue index 69165f1..a5690b6 100644 --- a/src/components/Navigation.vue +++ b/src/components/Navigation.vue @@ -1,5 +1,5 @@ diff --git a/src/main.js b/src/main.js index 8d9b86a..84aac58 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,8 @@ import Vue from 'vue' import App from './App.vue' import router from './router' +import store from './store' + import '../scss/default.scss' import { library } from '@fortawesome/fontawesome-svg-core' import { fas } from '@fortawesome/free-solid-svg-icons' @@ -12,6 +14,7 @@ Vue.component('font-awesome-icon', FontAwesomeIcon) Vue.config.productionTip = false new Vue({ + store, router, render: h => h(App) }).$mount('#app') diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..0c0417b --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,41 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +const moduleSettings = { + state: { + header: { + title: null, + description: null + } + }, + getters: { + getHeader (state) { + return state.header + } + }, + mutations: { + setHeader: (state, payload) => { + state.header = { + title: payload.title ?? null, + description: payload.description ?? null + } + }, + resetHeaderTitle (state) { + state.header.title = null + }, + setHeaderDescription: (state, payload) => { + state.header.description = payload.title + }, + resetHeaderDescription (state) { + state.header.description = null + } + } +} + +export default new Vuex.Store({ + modules: { + settings: moduleSettings + } +}) diff --git a/src/views/About.vue b/src/views/About.vue index 9ece1ae..188ebfe 100644 --- a/src/views/About.vue +++ b/src/views/About.vue @@ -1,11 +1,9 @@ @@ -19,6 +17,17 @@ section#about { diff --git a/src/views/Home.vue b/src/views/Home.vue index 60a8382..5d7bad5 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -5,12 +5,30 @@ + +