diff --git a/cypress/e2e/NotFoundView.cy.ts b/cypress/e2e/Exception/NotFoundView.cy.ts similarity index 100% rename from cypress/e2e/NotFoundView.cy.ts rename to cypress/e2e/Exception/NotFoundView.cy.ts diff --git a/cypress/e2e/LeaderboardView.cy.ts b/cypress/e2e/Leaderboard/LeaderboardView.cy.ts similarity index 100% rename from cypress/e2e/LeaderboardView.cy.ts rename to cypress/e2e/Leaderboard/LeaderboardView.cy.ts diff --git a/src/components/BaseComponents/FooterComponent.vue b/src/components/BaseComponents/BaseFooter.vue similarity index 100% rename from src/components/BaseComponents/FooterComponent.vue rename to src/components/BaseComponents/BaseFooter.vue diff --git a/src/components/Buttons/Button1.vue b/src/components/BaseComponents/Buttons/BaseButton.vue similarity index 100% rename from src/components/Buttons/Button1.vue rename to src/components/BaseComponents/Buttons/BaseButton.vue diff --git a/src/components/Buttons/__tests__/Button1.spec.ts b/src/components/BaseComponents/Buttons/__tests__/BaseButton.spec.ts similarity index 87% rename from src/components/Buttons/__tests__/Button1.spec.ts rename to src/components/BaseComponents/Buttons/__tests__/BaseButton.spec.ts index e1c2a39182663c7d37365f9973ff4953fe8d1768..8e7c84193f26f460848744d1266f26d07d61e5c4 100644 --- a/src/components/Buttons/__tests__/Button1.spec.ts +++ b/src/components/BaseComponents/Buttons/__tests__/BaseButton.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' -import ButtonComponent from '@/components/Buttons/Button1.vue' +import ButtonComponent from '../BaseButton.vue' describe('ButtonComponent', () => { it('displays the passed buttonText prop', () => { diff --git a/src/components/BaseComponents/FooterAlternative.vue b/src/components/BaseComponents/FooterAlternative.vue deleted file mode 100644 index 719ebdbef91acdb77d19a2eff55e443d37e1d906..0000000000000000000000000000000000000000 --- a/src/components/BaseComponents/FooterAlternative.vue +++ /dev/null @@ -1,137 +0,0 @@ -<script setup lang="ts"> -import '@fortawesome/fontawesome-free/css/all.css' -import { RouterLink } from 'vue-router' -import {logDOM} from "@testing-library/vue"; - - - - -const ifNotLoggedInLogin = () => { - /* if (useUserInfoStore.isActive) { - return '/discover' - } - return '/login'*/ - return '/login' -} - -const ifLoggedInDiscover = () => { - /*if (store.isActive) { - return '/discover' - } - return '/'*/ - return '/' -} - -const ifLoggedInReset = () => { - /*if (store.isActive) { - store.resetAll() - }*/ - return '/login' -} -</script> - -<template> - <div class="footer footer-wrapper fixed-bottom" style="background-color: #3B71CA"> - - <div class="links-wrapper"> - <p class="links-header">Links</p> - <div class="links-container"> - <RouterLink class="router" id="home" :to="ifLoggedInDiscover">Home</RouterLink> - <RouterLink class="router" id="discover" :to="ifNotLoggedInLogin()">Discover</RouterLink> - <RouterLink class="router" id="login" to="/login" @click="ifLoggedInReset()">Login</RouterLink> - </div> - </div> - - <div class="support-wrapper"> - <p class="support-header">Support us</p> - <div class="support-container"> - <a href="https://twitter.com" target="_blank"> - <i class="fab fa-twitter"></i> - Twitter - </a> - <a href="https://instagram.com" target="_blank"> - <i class="fab fa-instagram"></i> - Instagram - </a> - <a href="https://facebook.com" target="_blank"> - <i class="fab fa-facebook"></i> - Facebook - </a> - <a href="https://discord.gg" target="_blank"> - <i class="fab fa-discord"></i> - Discord - </a> - </div> - </div> - - <div class="info-wrapper"> - <p class="info-header">Company</p> - <div class="info-container"> - <RouterLink class="router" to="/about-us">About us</RouterLink> - <RouterLink class="router" to="/privacy-policy">Privacy</RouterLink> - </div> - </div> - - </div> -</template> - -<style scoped> -:root { - --footer-margin: 2rem -} - -.footer-wrapper { - width: 100%; - display: grid; - grid-template-columns: 1fr 1fr 1fr; - background-size: cover; - justify-content: center; -} - -.links-header, .support-header, .info-header { - font-family: Inter,sans-serif; - font-size: 26px; - font-weight: 600; - color: #FFFFFF; - margin: var(--footer-margin); - padding-left: 10px; -} - -.links-container, .support-container, .info-container { - display: flex; - flex-direction: column; - margin: var(--footer-margin); -} - -.support-container a i { - margin-right: 0.7rem; -} - -.router, .support-container a { - width: 100%; - height: 39px; - font-family: 'Inter', serif; - font-weight: 500; - font-size: 18px; - text-decoration: none; - border-radius: 10px; - align-content: center; - color: #FFFFFF; - border: 1px solid #3B71CA; - padding-left: 10px; -} - -.router:hover, .support-container a:hover { - background-color: #FFFFFF; - color: #3B71CA; - font-weight: 500; - font-size: 18px; -} - -@media (max-width: 588px) { - .footer-wrapper { - display: flex; - flex-direction: column; - } -} -</style> diff --git a/src/components/InputFields/BaseInput.vue b/src/components/BaseComponents/Input/BaseInput.vue similarity index 100% rename from src/components/InputFields/BaseInput.vue rename to src/components/BaseComponents/Input/BaseInput.vue diff --git a/src/components/InputFields/__tests__/BaseInput.spec.ts b/src/components/BaseComponents/Input/__tests__/BaseInput.spec.ts similarity index 89% rename from src/components/InputFields/__tests__/BaseInput.spec.ts rename to src/components/BaseComponents/Input/__tests__/BaseInput.spec.ts index 90f881ef89744bd7c300e04ddc9ed3bf19bc64f8..b795f41627a01c0d19fc748f40a5619194b4b2a4 100644 --- a/src/components/InputFields/__tests__/BaseInput.spec.ts +++ b/src/components/BaseComponents/Input/__tests__/BaseInput.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils'; -import InputField from '@/components/InputFields/BaseInput.vue'; +import InputField from '../BaseInput.vue'; describe('InputField.vue', () => { it('emits inputChangeEvent when input event is triggered', async () => { diff --git a/src/components/BaseComponents/MenuComponent.vue b/src/components/BaseComponents/NavBar.vue similarity index 100% rename from src/components/BaseComponents/MenuComponent.vue rename to src/components/BaseComponents/NavBar.vue diff --git a/src/components/BaseComponents/__tests__/FooterComponent.spec.ts b/src/components/BaseComponents/__tests__/BaseFooter.spec.ts similarity index 87% rename from src/components/BaseComponents/__tests__/FooterComponent.spec.ts rename to src/components/BaseComponents/__tests__/BaseFooter.spec.ts index c6d4bdabaa9d12bb69982a9757a9684b3798fe53..4bf16d9bcd500003c0260e456a8633d40c1f4a17 100644 --- a/src/components/BaseComponents/__tests__/FooterComponent.spec.ts +++ b/src/components/BaseComponents/__tests__/BaseFooter.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' -import FooterComponent from '../FooterComponent.vue' +import FooterComponent from '../BaseFooter.vue' describe('FooterComponent', () => { it('renders properly and includes the correct copyright notice', () => { diff --git a/src/components/BaseComponents/__tests__/MenuComponent.spec.ts b/src/components/BaseComponents/__tests__/NavBar.spec.ts similarity index 98% rename from src/components/BaseComponents/__tests__/MenuComponent.spec.ts rename to src/components/BaseComponents/__tests__/NavBar.spec.ts index 935044db4a996726971cc170edea2c9b7b02ea9b..dcbc92d44f1f013375c4a5d60b5d6b0bd49cfd92 100644 --- a/src/components/BaseComponents/__tests__/MenuComponent.spec.ts +++ b/src/components/BaseComponents/__tests__/NavBar.spec.ts @@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils'; import { createRouter, createMemoryHistory } from 'vue-router'; import { createPinia, setActivePinia } from 'pinia'; import { useUserInfoStore } from '@/stores/UserStore'; -import MyComponent from '../MenuComponent.vue'; // Adjust path as needed +import MyComponent from '../NavBar.vue'; // Adjust path as needed import router from '@/router/index'; // Adjust path as needed import { access } from 'fs'; import { render, screen } from '@testing-library/vue'; diff --git a/src/components/Configuration/Configuration.vue b/src/components/Configuration/ConfigurationParent.vue similarity index 100% rename from src/components/Configuration/Configuration.vue rename to src/components/Configuration/ConfigurationParent.vue diff --git a/src/components/Configuration/ConfigurationSteps/BankId.vue b/src/components/Configuration/ConfigurationSteps/BankId.vue deleted file mode 100644 index bc40db3e7cd5aa6501e2daef33dc14842df2637c..0000000000000000000000000000000000000000 --- a/src/components/Configuration/ConfigurationSteps/BankId.vue +++ /dev/null @@ -1,82 +0,0 @@ -<script setup lang="ts"> -/* -import Button1 from '@/components/Buttons/Button1.vue' -import { useRouter } from 'vue-router' -import { ref } from 'vue' - -const formRef = ref() -const bankIDRef = ref(false) -const minIdRef = ref(false) -const vippsRef = ref(false) - - -const router = useRouter(); -const emit = defineEmits(['changeRouterEvent']); -emit('changeRouterEvent', '/bank-id'); - -const onClick = () => { - const radios = formRef.value.querySelectorAll('input[type="radio"]'); - const checkedRadios = Array.from(radios).filter(radio => radio.checked); - - if (checkedRadios.length === 0) { - alert('Please select an option.'); - return; - } - - let choice = '' - if (bankIDRef.value.checked) choice = 'BankId på mobil' - else if (minIdRef.value.checked) choice = 'MinId' - else if (vippsRef.value.checked) choice = 'Vipps' - - emit('bankIdSelectedEvent', choice) - router.push('/commitment') -} -*/ -</script> - -<template> - <!-- - <div class="container"> - <div> - <h3 class="d-flex align-items-center justify-content-center"> - In order to provide best advice we need to connect to your bank account - </h3> - </div> - - <form class="btn-group-vertical" ref="formRef" @submit.prevent="onClick"> - - <input ref="bankIDRef" type="radio" class="btn-check" name="bank-id" id="btn-check-outlined" autocomplete="off"> - <label class="btn btn-outline-primary d-flex align-items-center justify-content-center" for="btn-check-outlined">BankID på mobil</label> - - <input ref="minIdRef" type="radio" class="btn-check" name="bank-id" id="btn-check2-outlined" autocomplete="off"> - <label class="btn btn-outline-primary d-flex align-items-center justify-content-center" for="btn-check2-outlined">MinID</label> - - <input ref="vippsRef" type="radio" class="btn-check" name="bank-id" id="btn-check3-outlined" autocomplete="off"> - <label class="btn btn-outline-primary d-flex align-items-center justify-content-center" for="btn-check3-outlined">Vipps</label> - - </form> - - <div class="confirm-button-container"> - <button1 id="confirmButton" - @click="onClick" - button-text="Continue"> - </button1> - </div> - - </div> - --> -</template> - -<style scoped> -/* -#confirmButton { - margin-bottom: 2rem; - width: 300px; -} - -.confirm-button-container { - display: flex; - justify-content: center; -} - */ -</style> \ No newline at end of file diff --git a/src/components/Configuration/ConfigurationSteps/Commitment.vue b/src/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue similarity index 94% rename from src/components/Configuration/ConfigurationSteps/Commitment.vue rename to src/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue index 952d5aff64aa2a45edf23a6389519f78ddcdb96e..836ec18e28f118e65a09a76e803cdac2317d5700 100644 --- a/src/components/Configuration/ConfigurationSteps/Commitment.vue +++ b/src/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue @@ -1,5 +1,5 @@ <script setup lang="ts"> -import Button1 from '@/components/Buttons/Button1.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import { useRouter } from 'vue-router' import { ref } from 'vue' import { useConfigurationStore } from '@/stores/ConfigurationStore' @@ -59,7 +59,7 @@ const handleSubmit = () => { </form> <p class="text-danger">{{ errorMsg }}</p> <div class="confirm-button-container"> - <button1 id="confirmButton" @click="handleSubmit" button-text="Fortsett"></button1> + <BaseButton id="confirmButton" @click="handleSubmit" button-text="Fortsett"></BaseButton> </div> </div> </template> diff --git a/src/components/Configuration/ConfigurationSteps/Experience.vue b/src/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue similarity index 94% rename from src/components/Configuration/ConfigurationSteps/Experience.vue rename to src/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue index 475ac5961acd69b14ed9771504d55a6919673287..2118af6a65afe5d0c8e6abe29f990db7416a595f 100644 --- a/src/components/Configuration/ConfigurationSteps/Experience.vue +++ b/src/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue @@ -1,5 +1,5 @@ <script setup lang="ts"> -import Button1 from '@/components/Buttons/Button1.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import { useRouter } from 'vue-router' import { ref } from 'vue' import { useConfigurationStore } from '@/stores/ConfigurationStore' @@ -61,7 +61,7 @@ const handleSubmit = () => { </form> <p class="text-danger">{{ errorMsg }}</p> <div class="confirm-button-container"> - <button1 id="confirmButton" @click="handleSubmit" button-text="Continue"/> + <BaseButton id="confirmButton" @click="handleSubmit" button-text="Continue"/> </div> </div> </template> diff --git a/src/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue b/src/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue similarity index 93% rename from src/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue rename to src/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue index 226d395bdcc6d796fd2b579872b7c99a07f4e7f8..f6bf338f7ff5455a9777ed3c00aa51cf6c39747f 100644 --- a/src/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue +++ b/src/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> -import BaseInput from '@/components/InputFields/BaseInput.vue' +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue' import { ref } from 'vue' -import Button1 from '@/components/Buttons/Button1.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import { useRouter } from 'vue-router' import {type CreateGoalDTO, GoalService} from "@/api"; @@ -111,7 +111,7 @@ const handleSumInputEvent = (newSum: number) => { </form> <div class="confirm-button-container"> - <button1 id="confirmButton" @click="handleSubmit" button-text="Continue"></button1> + <BaseButton id="confirmButton" @click="handleSubmit" button-text="Continue"></BaseButton> </div> <div style="color: red"> {{ errorMessage }} diff --git a/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue b/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue index 44c9c455d7f5751ce9fabfabd0b53897567bfe3c..75adea95c76415912777c1dbd0dee504bdac04ec 100644 --- a/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue +++ b/src/components/Configuration/ConfigurationSteps/SuitableChallenges.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import { useRouter } from 'vue-router' import ChallangeCheckBox from '@/components/Configuration/ChallangeCheckBox.vue' -import Button1 from '@/components/Buttons/Button1.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import { ref } from 'vue' import { useConfigurationStore } from '@/stores/ConfigurationStore' import { useUserInfoStore } from '@/stores/UserStore' @@ -117,7 +117,7 @@ const handleSubmit = () => { <p class="text-danger">{{ errorMsg }}</p> <div class="confirm-button-container"> - <button1 id="confirmButton" @click="handleSubmit" button-text="Continue"/> + <BaseButton id="confirmButton" @click="handleSubmit" button-text="Continue"/> </div> </div> </template> diff --git a/src/components/LeaderboardComponents/Leaderboard.vue b/src/components/Leaderboard/LeaderboardTable.vue similarity index 100% rename from src/components/LeaderboardComponents/Leaderboard.vue rename to src/components/Leaderboard/LeaderboardTable.vue diff --git a/src/components/LeaderboardComponents/__tests__/Leaderboard.spec.ts b/src/components/Leaderboard/__tests__/LeaderboardTable.spec.ts similarity index 91% rename from src/components/LeaderboardComponents/__tests__/Leaderboard.spec.ts rename to src/components/Leaderboard/__tests__/LeaderboardTable.spec.ts index cc604b72b7b39ea455c6c52e2711b88302d040b9..1e358426983dfe36f7089ffcca8def2100b3f16a 100644 --- a/src/components/LeaderboardComponents/__tests__/Leaderboard.spec.ts +++ b/src/components/Leaderboard/__tests__/LeaderboardTable.spec.ts @@ -2,9 +2,9 @@ import { describe, it, expect, beforeEach, vi } from 'vitest'; import { mount } from '@vue/test-utils'; import { createRouter, createMemoryHistory } from 'vue-router'; import { createPinia, setActivePinia } from 'pinia'; -import Leaderboard from '@/components/LeaderboardComponents/Leaderboard.vue'; -import { useUserInfoStore } from '@/stores/UserStore'; -import router from '@/router/index'; +import Leaderboard from '../LeaderboardTable.vue'; +import { useUserInfoStore } from '../../../stores/UserStore'; +import router from '../../../router'; describe('Leaderboard', () => { diff --git a/src/components/Login/LoginForm.vue b/src/components/Login/LoginForm.vue index 19799dc8d733f1808d4753b0cb92854009248228..3b0518e2c2087f23529fb51ac728cd4b4c5050d3 100644 --- a/src/components/Login/LoginForm.vue +++ b/src/components/Login/LoginForm.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> -import BaseInput from '@/components/InputFields/BaseInput.vue' -import Button1 from '@/components/Buttons/Button1.vue' +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import { ref } from 'vue' import { useUserInfoStore } from '@/stores/UserStore'; import { AuthenticationService, OpenAPI, type LoginRequest } from '@/api'; @@ -111,7 +111,7 @@ const handleSubmit = async () => { </div> <p class="text-danger" data-cy="error">{{ errorMsg }}</p> - <button1 id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Logg inn"></button1> + <BaseButton id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Logg inn"></BaseButton> <a class="btn bankid-btn" href="https://preprod.signicat.com/oidc/authorize?response_type=code&scope=openid+profile+signicat.national_id&client_id=demo-preprod&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fredirect&acr_values=urn:signicat:oidc:method:nbid&state=nbid:auth_demo_bankid:123456789"> <img src="/src/assets/bankid.svg" width="26" height="26"> diff --git a/src/components/Login/Login.vue b/src/components/Login/LoginParent.vue similarity index 100% rename from src/components/Login/Login.vue rename to src/components/Login/LoginParent.vue diff --git a/src/components/NewsComponents/NewsComponent.vue b/src/components/News/NewsFeed.vue similarity index 100% rename from src/components/NewsComponents/NewsComponent.vue rename to src/components/News/NewsFeed.vue diff --git a/src/components/NewsComponents/__tests__/NewsComponent.spec.ts b/src/components/News/__tests__/NewsFeed.spec.ts similarity index 89% rename from src/components/NewsComponents/__tests__/NewsComponent.spec.ts rename to src/components/News/__tests__/NewsFeed.spec.ts index ac57f8a37cecb8f2983c52ae3e163520d6c33ae8..0c2a4e092954b6a74218fa0d4998cdb8910574bb 100644 --- a/src/components/NewsComponents/__tests__/NewsComponent.spec.ts +++ b/src/components/News/__tests__/NewsFeed.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { mount } from '@vue/test-utils'; -import MyComponent from '@/components/NewsComponents/NewsComponent.vue'; // Adjust the import path according to your setup +import MyComponent from '../NewsFeed.vue'; // Adjust the import path according to your setup global.fetch = vi.fn(() => Promise.resolve( diff --git a/src/components/SavingGoalComponents/SavingGoal.vue b/src/components/SavingGoal/SavingGoal.vue similarity index 90% rename from src/components/SavingGoalComponents/SavingGoal.vue rename to src/components/SavingGoal/SavingGoal.vue index 40d65c8f1a21bf217e8d04792751f4458a07e52d..3644980546960ef148747fa116d97ccdade6a8a6 100644 --- a/src/components/SavingGoalComponents/SavingGoal.vue +++ b/src/components/SavingGoal/SavingGoal.vue @@ -1,7 +1,7 @@ <script lang="ts"> -import SavingGoalList from "@/components/SavingGoalComponents/SavingGoalList.vue"; -import SavingGoalRoadmap from "@/components/SavingGoalComponents/SavingGoalRoadmap.vue"; -import SavingGoalCreate from "@/components/SavingGoalComponents/SavingGoalCreate.vue"; +import SavingGoalList from "@/components/SavingGoal/SavingGoalList.vue"; +import SavingGoalRoadmap from "@/components/SavingGoal/SavingGoalRoadmap.vue"; +import SavingGoalCreate from "@/components/SavingGoal/SavingGoalCreate.vue"; import type {GoalDTO} from "@/api"; import {GoalService} from "@/api"; diff --git a/src/components/SavingGoalComponents/SavingGoalCreate.vue b/src/components/SavingGoal/SavingGoalCreate.vue similarity index 100% rename from src/components/SavingGoalComponents/SavingGoalCreate.vue rename to src/components/SavingGoal/SavingGoalCreate.vue diff --git a/src/components/SavingGoalComponents/SavingGoalList.vue b/src/components/SavingGoal/SavingGoalList.vue similarity index 100% rename from src/components/SavingGoalComponents/SavingGoalList.vue rename to src/components/SavingGoal/SavingGoalList.vue diff --git a/src/components/SavingGoalComponents/SavingGoalRoadmap.vue b/src/components/SavingGoal/SavingGoalRoadmap.vue similarity index 100% rename from src/components/SavingGoalComponents/SavingGoalRoadmap.vue rename to src/components/SavingGoal/SavingGoalRoadmap.vue diff --git a/src/views/Settings/SettingsAccountView.vue b/src/components/Settings/SettingsAccount.vue similarity index 97% rename from src/views/Settings/SettingsAccountView.vue rename to src/components/Settings/SettingsAccount.vue index 51b570cb6735dead3bff0f9e57ae0efd73906895..9e01429f4c3d343d1277fcaa29b35d0e8bdae044 100644 --- a/src/views/Settings/SettingsAccountView.vue +++ b/src/components/Settings/SettingsAccount.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> import { ref, onMounted } from 'vue'; -import BaseInput from '@/components/InputFields/BaseInput.vue'; +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'; import { useUserInfoStore } from "@/stores/UserStore"; import { UserService } from '@/api'; import type { UserUpdateDTO } from '@/api'; diff --git a/src/views/Settings/SettingsBankView.vue b/src/components/Settings/SettingsBank.vue similarity index 97% rename from src/views/Settings/SettingsBankView.vue rename to src/components/Settings/SettingsBank.vue index 2e06887cf01332788c77cf5993da92582aa74689..d5142d2130fd5ae83927cd8d2da5fce6bca311bb 100644 --- a/src/views/Settings/SettingsBankView.vue +++ b/src/components/Settings/SettingsBank.vue @@ -36,7 +36,7 @@ <script setup lang="ts"> import { ref } from 'vue'; -import BaseInput from '@/components/InputFields/BaseInput.vue'; +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'; import type { BankAccountDTO } from '@/api'; import { UserService } from '@/api'; diff --git a/src/views/Settings/SettingsNotificationView.vue b/src/components/Settings/SettingsNotification.vue similarity index 100% rename from src/views/Settings/SettingsNotificationView.vue rename to src/components/Settings/SettingsNotification.vue diff --git a/src/views/Settings/SettingsProfileView.vue b/src/components/Settings/SettingsProfile.vue similarity index 96% rename from src/views/Settings/SettingsProfileView.vue rename to src/components/Settings/SettingsProfile.vue index 21377e099ff64fb2de1f10c6f74977db4e525cde..c45371b6e47382aeb3f3a402a65791700be2f6b5 100644 --- a/src/views/Settings/SettingsProfileView.vue +++ b/src/components/Settings/SettingsProfile.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> import { ref, onMounted } from 'vue'; -import BaseInput from '@/components/InputFields/BaseInput.vue'; +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'; import { useUserInfoStore } from "@/stores/UserStore"; import { UserService, ImageService } from '@/api'; import type { UserUpdateDTO } from '@/api'; @@ -110,7 +110,7 @@ onMounted(() => { <img :src="iconSrc" alt="Brukeravatar" style="width: 300px"> <div class="mt-2"> <button type="button" class="btn btn-primary" @click="triggerFileUpload"><img - src="@/assets/icons/download.svg"> Last opp bilde</button> + src="../../assets/icons/download.svg"> Last opp bilde</button> </div> </div> <div class="form-group"> diff --git a/src/views/Settings/SettingsSecurityView.vue b/src/components/Settings/SettingsSecurity.vue similarity index 97% rename from src/views/Settings/SettingsSecurityView.vue rename to src/components/Settings/SettingsSecurity.vue index f6352b210bbf65f6698cbb04d78cb615120f04e9..8eab51063b9684504beea4d6e375a1c4b536e3a4 100644 --- a/src/views/Settings/SettingsSecurityView.vue +++ b/src/components/Settings/SettingsSecurity.vue @@ -35,7 +35,7 @@ <script setup lang="ts"> import { ref } from 'vue' - import BaseInput from '@/components/InputFields/BaseInput.vue' + import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue' import { type PasswordUpdateDTO, UserService } from '@/api' const oldPasswordRef = ref(''); diff --git a/src/components/Buttons/ShopButton.vue b/src/components/Shop/ShopButton.vue similarity index 72% rename from src/components/Buttons/ShopButton.vue rename to src/components/Shop/ShopButton.vue index 38f1ee04a792d43376635cd70f93d86e998e236a..843eeb1530c696b3ae8aca05ab310aae54aaf057 100644 --- a/src/components/Buttons/ShopButton.vue +++ b/src/components/Shop/ShopButton.vue @@ -1,5 +1,5 @@ <template> - <button type="button" class="btn btn-primary" id="buttonStyle"><img src="@/assets/items/pigcoin.png" style="width: 2rem"> +{{ buttonText }}</button> + <button type="button" class="btn btn-primary" id="buttonStyle"><img src="../../assets/items/pigcoin.png" style="width: 2rem"> +{{ buttonText }}</button> </template> <script setup lang="ts"> diff --git a/src/components/Buttons/__tests__/ShopButton.spec.ts b/src/components/Shop/__tests__/ShopButton.spec.ts similarity index 92% rename from src/components/Buttons/__tests__/ShopButton.spec.ts rename to src/components/Shop/__tests__/ShopButton.spec.ts index 25858cb46e529322a5da1386f31aab636bff64f9..277e3521fe84175524d94d0f10bfdf5b7da851c3 100644 --- a/src/components/Buttons/__tests__/ShopButton.spec.ts +++ b/src/components/Shop/__tests__/ShopButton.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' -import ImageButtonComponent from '@/components/Buttons/ShopButton.vue' +import ImageButtonComponent from '../ShopButton.vue' describe('ImageButtonComponent', () => { it('renders the button with the correct text and image', () => { diff --git a/src/components/SignUp/SignUpForm.vue b/src/components/SignUp/SignUpForm.vue index 83a5da5494869633326e780f9cc2917e5c954621..6cf987d5b0e174520dad61c1205ad76cdc6a51cd 100644 --- a/src/components/SignUp/SignUpForm.vue +++ b/src/components/SignUp/SignUpForm.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> -import BaseInput from '@/components/InputFields/BaseInput.vue' -import Button1 from '@/components/Buttons/Button1.vue' +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import { ref } from 'vue' import { useRouter } from 'vue-router' import { AuthenticationService } from '@/api' @@ -129,7 +129,7 @@ const handleSubmit = async () => { </div> <p class="text-danger">{{ errorMsg }}</p> <p v-if="!samePasswords" class="text-danger">Passordene er ikke like</p> - <button1 id="confirmButton" @click="handleSubmit" :disabled="isSubmitting" button-text="Registrer deg"></button1> + <BaseButton id="confirmButton" @click="handleSubmit" :disabled="isSubmitting" button-text="Registrer deg"></BaseButton> <LoginLink/> </form> </div> diff --git a/src/components/UpdateUserComponents/UpdateUserLayout.vue b/src/components/UpdateUserComponents/UpdateUserLayout.vue deleted file mode 100644 index 7c9e81cd0b2dff2477e0de17e93ca12982b9155a..0000000000000000000000000000000000000000 --- a/src/components/UpdateUserComponents/UpdateUserLayout.vue +++ /dev/null @@ -1,325 +0,0 @@ -<script setup lang="ts"> -import BaseInput from "@/components/InputFields/BaseInput.vue"; -import { onMounted, ref } from "vue"; -import { AuthenticationService, LeaderboardService, UserService, type UserUpdateDTO } from "@/api"; -import { useUserInfoStore } from "@/stores/UserStore"; - -const firstNameRef = ref() -const surnameRef = ref('') -const emailRef = ref('') -const passwordRef = ref('') -const confirmPasswordRef = ref('') -const formRef = ref() -let samePasswords = ref(true) - -async function setupForm() { - try { - let response = await UserService.getUser(); - console.log(response.firstName) - - firstNameRef.value = response.firstName; - if (response.lastName != null) { - surnameRef.value = response.lastName; - } - if (response.email != null) { - emailRef.value = response.email - } - } catch (err) { - console.error(err) - } -} - - - -const handleFirstNameInputEvent = (newValue: any) => { - firstNameRef.value = newValue -} - - -const handleSurnameInputEvent = (newValue: any) => { - surnameRef.value = newValue -} - -const handleEmailInputEvent = (newValue: any) => { - emailRef.value = newValue -} - -const handlePasswordInputEvent = (newValue: any) => { - passwordRef.value = newValue -} - -const handleConfirmPasswordInputEvent = (newValue: any) => { - confirmPasswordRef.value = newValue -} - -const handleSubmit = async () => { - - samePasswords.value = (passwordRef.value === confirmPasswordRef.value) - console.log(samePasswords.value) - formRef.value.classList.add("was-validated") - const form = formRef.value; - - const updateUserPayload: UserUpdateDTO = { - firstName: firstNameRef.value, - lastName: surnameRef.value, - email: emailRef.value, - }; - - - - - - if (form.checkValidity()) { - if (samePasswords.value) { - try { - UserService.update({ requestBody: updateUserPayload }) - useUserInfoStore().setUserInfo({ - email: emailRef.value, - firstname: firstNameRef.value, - lastname: surnameRef.value, - password: passwordRef.value - }) - - } catch (err) { - console.error(err) - } - } - } else { - console.log('Form is not valid'); - } - -} -onMounted(() => { - setupForm() -}) - - - -</script> - -<template> - <div class="containers"> - <div class="row gutters"> - <div class="col-xl-3 col-lg-3 col-md-12 col-sm-12 col-12"> - <div class="card h-100"> - <div class="card-body"> - <div class="account-settings"> - <div class="user-profile"> - <div class="user-avatar"> - <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="Maxwell Admin"> - </div> - <div class="text-center"> - <div class="mt-2"> - <span class="btn btn-primary"><img src="@/assets/icons/download.svg"></span> - </div> - </div> - <br> - <h3 class="user-name">Yuki Hayashi</h3> - <h6 class="user-email">yuki@Maxwell.com</h6> - </div> - </div> - </div> - </div> - </div> - <div class="col-xl-9 col-lg-9 col-md-12 col-sm-12 col-12"> - <div class="card h-100"> - <div class="card-body"> - <div class="row gutters"> - <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12"> - <h6 class="mb-2 text-primary">Personal Details <img src="@/assets/icons/black_person.svg"></h6> - </div> - <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12"> - <div class="form-group"> - <BaseInput :model-value="firstNameRef" @input-change-event="handleFirstNameInputEvent" - id="firstNameInputChange" input-id="first-name-new" type="text" label="First name" - placeholder="Enter your first name" invalid-message="Please enter your first name" /> - </div> - </div> - <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12"> - <div class="form-group"> - <BaseInput :model-value="surnameRef" @input-change-event="handleSurnameInputEvent" - id="surnameInput-change" input-id="surname-new" type="text" label="Surname" - placeholder="Enter your surname" invalid-message="Please enter your surname" /> - - </div> - </div> - <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12"> - <div class="form-group"> - <BaseInput :model-value="emailRef" @input-change-event="handleEmailInputEvent" id="emailInput-change" - input-id="email-new" type="email" label="Email" placeholder="Enter your email" - invalid-message="Invalid email" /> - - </div> - </div> - <div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12"> - <div class="form-group"> - <BaseInput :model-value="passwordRef" @input-change-event="handlePasswordInputEvent" - id="passwordInput-change" input-id="password-new" type="password" - pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,16}" label="Password" placeholder="Enter password" - invalid-message="Password must be between 4 and 16 characters and contain one capital letter, small letter and a number" /> - - </div> - </div> - </div> - - <div class="row gutters"> - <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12" style="margin-top: 10px;"> - <h6 class="mb-2 text-primary">Personal Configuration <img src="@/assets/icons/black_person.svg"></h6> - </div> - <div class="accordion" id="accordionExample"> - <div class="accordion-item"> - <h2 class="accordion-header"> - <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" - data-bs-target="#collapseThree" aria-expanded="true" aria-controls="collapseThree"> - Configuration - </button> - </h2> - <div id="collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> - <div class="accordion-body"> - Hallo - </div> - </div> - </div> - </div> - </div> - <div class="row gutters"> - <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12"> - <h6 class="mt-3 mb-2 text-primary">Styles <img src="@/assets/icons/black_paintBrush.svg"></h6> - </div> - <div class="accordion" id="accordionExample"> - <div class="accordion-item"> - <h2 class="accordion-header"> - <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" - data-bs-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne"> - Profile pictures - </button> - </h2> - <div id="collapseOne" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> - <div class="accordion-body"> - Hallo - </div> - </div> - </div> - <div class="accordion-item"> - <h2 class="accordion-header"> - <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" - data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo"> - Road styles - </button> - </h2> - <div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> - <div class="accordion-body"> - Hallo - </div> - </div> - </div> - </div> - </div> - <div class="row gutters"> - <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12"> - <div class="text-right"> - <button type="button" id="submit" name="submit" class="btn btn-secondary">Cancel</button> - <button type="button" id="submit" name="submit" class="btn btn-primary">Update</button> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - </div> - -</template> - -<style scoped> -body { - margin: 0; - padding-top: 40px; - color: #2e323c; - background: #f5f6fa; - position: relative; - height: 100%; -} - -.row { - margin: 0px; -} - -.containers { - width: 100%; - justify-content: center; - display: flex; - align-items: center; - margin-top: 2rem; - margin-bottom: 4rem; -} - -.account-settings .user-profile { - margin: 0 0 1rem 0; - padding-bottom: 1rem; - text-align: center; -} - -.account-settings .user-profile .user-avatar { - margin: 0 0 1rem 0; -} - -.account-settings .user-profile .user-avatar img { - width: 90px; - height: 90px; - -webkit-border-radius: 100px; - -moz-border-radius: 100px; - border-radius: 100px; -} - -.account-settings .user-profile h3.user-name { - margin: 0 0 0.5rem 0; -} - -.account-settings .user-profile h6.user-email { - margin: 0; - font-size: 0.8rem; - font-weight: 400; - color: #9fa8b9; -} - -.account-settings .about { - margin: 2rem 0 0 0; - text-align: center; -} - -.account-settings .about h5 { - margin: 0 0 15px 0; - color: #007ae1; -} - -.account-settings .about p { - font-size: 0.825rem; -} - -.form-control { - border: 1px solid #cfd1d8; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - font-size: .825rem; - background: #ffffff; - color: #2e323c; -} - -.text-right { - display: flex; - justify-content: flex-end; - margin-top: 10px; -} - -.card { - background: #efefef; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - border: 0; - margin-bottom: 1rem; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); -} -</style> \ No newline at end of file diff --git a/src/components/UserProfile/UserProfileForeignLayout.vue b/src/components/UserProfile/ExternalProfile.vue similarity index 100% rename from src/components/UserProfile/UserProfileForeignLayout.vue rename to src/components/UserProfile/ExternalProfile.vue diff --git a/src/components/UserProfile/UserProfileLayout.vue b/src/components/UserProfile/MyProfile.vue similarity index 100% rename from src/components/UserProfile/UserProfileLayout.vue rename to src/components/UserProfile/MyProfile.vue diff --git a/src/components/UserProfile/__tests__/UserProfileLayout.spec.ts b/src/components/UserProfile/__tests__/MyProfile.spec.ts similarity index 96% rename from src/components/UserProfile/__tests__/UserProfileLayout.spec.ts rename to src/components/UserProfile/__tests__/MyProfile.spec.ts index 76b28ec9b59f89e455ba4275ef05697b46f8c844..306f0f13d39a6864b6947b57e86362399e1c1003 100644 --- a/src/components/UserProfile/__tests__/UserProfileLayout.spec.ts +++ b/src/components/UserProfile/__tests__/MyProfile.spec.ts @@ -3,7 +3,7 @@ import { mount } from '@vue/test-utils'; import { createRouter, createMemoryHistory } from 'vue-router'; import { createPinia, setActivePinia } from 'pinia'; import { useUserInfoStore } from '@/stores/UserStore'; -import MyComponent from '@/components/UserProfile/UserProfileLayout.vue'; // Adjust path as needed +import MyComponent from '../MyProfile.vue'; // Adjust path as needed import router from '@/router/index'; // Adjust path as needed describe('MyComponent and Router Tests', () => { diff --git a/src/router/index.ts b/src/router/index.ts index ac7eb118808f9079783c9bfdede23a24021454c4..7e793b3cae83f03ff1dd6a33b097b8a3ba01f9da 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,12 +1,6 @@ // Import necessary dependencies from Vue Router and your views import { createRouter, createWebHistory } from 'vue-router'; -import LoginView from '../views/Authentication/LoginView.vue'; import { useUserInfoStore } from '@/stores/UserStore'; -import UserProfileView from "@/views/User/UserProfileView.vue"; -import SignUp from '@/components/SignUp/SignUp.vue' -import UpdateUserView from "@/views/UpdateUser/UpdateUserView.vue"; -import RedirectView from '@/views/RedirectView.vue'; - const routes = [ { path: '/', @@ -17,79 +11,69 @@ const routes = [ { path: '', name: 'home', - component: () => import('../views/SavingGoalView/RoadmapView.vue'), + component: () => import('@/views/SavingGoal/RoadmapView.vue'), }, { path: 'news', name: 'news', - component: () => import('@/views/NewsView.vue'), + component: () => import('@/views/News/NewsView.vue'), }, { path: 'leaderboard', name: 'leaderboard', - component: () => import('@/views/LeaderboardView.vue'), - }, - { - path: 'test', - name: 'test', - component: () => import('@/views/TestView.vue'), + component: () => import('@/views/Leaderboard/LeaderboardView.vue'), }, { path: 'profile', name: 'profile', - component: UserProfileView - }, - { - path: 'update-user', - name: 'update-user', - component: UpdateUserView + component: () => import('@/views/User/MyProfileView.vue'), }, { path: '/settings', name: 'settings', - component: () => import('@/views/SettingsView.vue'), + component: () => import('@/views/User/UserSettingsView.vue'), children: [ { path: '/settings/account', name: 'account', - component: () => import('@/views/Settings/SettingsAccountView.vue'), + component: () => import('@/components/Settings/SettingsAccount.vue'), }, { path: '/settings/profile', name: 'profilesettings', - component: () => import('@/views/Settings/SettingsProfileView.vue'), + component: () => import('@/components/Settings/SettingsProfile.vue'), }, { path: '/settings/security', name: 'security', - component: () => import('@/views/Settings/SettingsSecurityView.vue'), + component: () => import('@/components/Settings/SettingsSecurity.vue'), }, { path: '/settings/notification', name: 'notification', - component: () => import('@/views/Settings/SettingsNotificationView.vue'), + component: () => import('@/components/Settings/SettingsNotification.vue'), }, { path: '/settings/bank', name: 'bank', - component: () => import('@/views/Settings/SettingsBankView.vue'), + component: () => import('@/components/Settings/SettingsBank.vue'), }, ] }, { path: 'roadmap', name: 'roadmap', - component: () => import('@/views/SavingGoalView/RoadmapView.vue'), + component: () => import('@/views/SavingGoal/RoadmapView.vue'), }, { path: 'feedback', name: 'feedback', - component: () => import('@/views/FeedbackView.vue'), + component: () => import('@/views/User/UserFeedbackView.vue'), }, { path: 'shop', name: 'shop', - component: () => import('@/views/ShopView.vue'), + component: () => import('@/views/Shop/ShopView.vue'), }, { path: '/budget-overview', @@ -106,40 +90,29 @@ const routes = [ { path: '/profile/:id', name: 'friend-profile', - component: () => import('@/views/User/UserProfileForeignView.vue'), + component: () => import('@/views/User/ExternalProfileView.vue'), }, { path: 'friends', name: 'friends', component: () => import('@/views/User/UserFriendsView.vue'), }, - { - path: 'add-friend', - name: 'add-friend', - component: () => import('@/views/User/UserAddFriend.vue'), - }, - { - path: 'admin', - name: 'admin', - component: () => import('@/views/TestView.vue'), - meta: { requiresAdmin: true }, - }, { path: 'unauthorized', name: 'unauthorized', - component: () => import('@/views/UnauthorizedView.vue'), + component: () => import('@/views/Exception/UnauthorizedView.vue'), }, { path: '/:pathMatch(.*)*', name: 'not-found', - component: () => import('@/views/NotFoundView.vue'), + component: () => import('@/views/Exception/NotFoundView.vue'), }, ] }, { path: '/login', name: 'login', - component: LoginView, + component: () => import('@/views/Authentication/LoginView.vue'), }, { path: '/forgotten-password', @@ -159,27 +132,22 @@ const routes = [ { path: '/redirect', name: 'redirect', - component: () => RedirectView, + component: () => import('@/views/BankID/RedirectView.vue'), }, { path: '/configuration', name: 'configuration', - component: () => import('@/views/ConfigurationView.vue'), + component: () => import('@/views/Configuration/ConfigurationView.vue'), children: [ - { - path: '/bank-id', - name: 'bankId', - component: () => import('@/components/Configuration/ConfigurationSteps/BankId.vue'), - }, { path: '/commitment', name: 'commitment', - component: () => import('@/components/Configuration/ConfigurationSteps/Commitment.vue'), + component: () => import('@/components/Configuration/ConfigurationSteps/ConfigurationCommitment.vue'), }, { path: '/experience', name: 'experience', - component: () => import('@/components/Configuration/ConfigurationSteps/Experience.vue'), + component: () => import('@/components/Configuration/ConfigurationSteps/ConfigurationExperience.vue'), }, { path: '/suitable-challenges', @@ -189,7 +157,7 @@ const routes = [ { path: '/first-saving-goal', name: 'first saving goal', - component: () => import('@/components/Configuration/ConfigurationSteps/FirstSavingGoal.vue'), + component: () => import('@/components/Configuration/ConfigurationSteps/ConfigurationSavingGoal.vue'), } ] }, diff --git a/src/stores/counter.ts b/src/stores/counter.ts deleted file mode 100644 index b6757ba5723c5b89b35d011b9558d025bbcde402..0000000000000000000000000000000000000000 --- a/src/stores/counter.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ref, computed } from 'vue' -import { defineStore } from 'pinia' - -export const useCounterStore = defineStore('counter', () => { - const count = ref(0) - const doubleCount = computed(() => count.value * 2) - function increment() { - count.value++ - } - - return { count, doubleCount, increment } -}) diff --git a/src/views/Authentication/ChangePasswordView.vue b/src/views/Authentication/ChangePasswordView.vue index 4c733f26c8716d4bb317c6182b379dc9b4c4cc9c..2e15299f39c4aca4bc6d87248ed6c72a13d49a8d 100644 --- a/src/views/Authentication/ChangePasswordView.vue +++ b/src/views/Authentication/ChangePasswordView.vue @@ -31,7 +31,7 @@ <p class="text-danger" data-cy="error">{{ errorMsg }}</p> <p v-if="!samePasswords" class="text-danger">Passordene er ikke like</p> - <button1 id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Oppdater passordet"></button1> + <BaseButton id="confirmButton" type="submit" @click="handleSubmit" :disabled="isSubmitting" button-text="Oppdater passordet"></BaseButton> <SignUpLink/> </form> @@ -75,11 +75,10 @@ <script setup lang="ts"> import { ref } from 'vue'; import { useRouter, useRoute } from 'vue-router'; -import axios from 'axios'; import { UserService } from '@/api'; import SignUpLink from '@/components/SignUp/SignUpLink.vue' -import Button1 from '@/components/Buttons/Button1.vue' -import BaseInput from '@/components/InputFields/BaseInput.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue' import handleUnknownError from '@/components/Exceptions/unkownErrorHandler' const router = useRouter(); diff --git a/src/views/Authentication/ForgottenPasswordView.vue b/src/views/Authentication/ForgottenPasswordView.vue index acb9def5fc9bbcc09d7bde4fd0580b573a2c4206..81b884625b896fc3159458adcbb4bc097427f6cd 100644 --- a/src/views/Authentication/ForgottenPasswordView.vue +++ b/src/views/Authentication/ForgottenPasswordView.vue @@ -16,7 +16,7 @@ <div v-else class="text-success"> {{ confirmationMessage }} </div> - <button1 id="confirmButton" type="submit" :disabled="isSubmitting" button-text="Send e-post"></button1> + <BaseButton id="confirmButton" type="submit" :disabled="isSubmitting" button-text="Send e-post"></BaseButton> <div class="login-link"> <Router-Link to="/login" class="small">Gå tilbake</Router-Link> @@ -29,8 +29,7 @@ <script setup lang="ts"> import { ref } from 'vue'; import { UserService } from '@/api'; -import BaseInput from '@/components/InputFields/BaseInput.vue' -import Button1 from '@/components/Buttons/Button1.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' const formRef = ref() const form = formRef.value; diff --git a/src/views/Authentication/LoginView.vue b/src/views/Authentication/LoginView.vue index eb1c10b45e077e5f760baac9f6a81bd08cf0b49e..a4bb674beddad0aba2764790e54b62a7dcb370e4 100644 --- a/src/views/Authentication/LoginView.vue +++ b/src/views/Authentication/LoginView.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> -import Footer from '@/components/BaseComponents/FooterComponent.vue' -import Menu from '@/components/BaseComponents/MenuComponent.vue' -import Login from '@/components/Login/Login.vue' +import Footer from '@/components/BaseComponents/BaseFooter.vue' +import Menu from '@/components/BaseComponents/NavBar.vue' +import Login from '@/components/Login/LoginParent.vue' </script> <template> diff --git a/src/views/RedirectView.vue b/src/views/BankID/RedirectView.vue similarity index 95% rename from src/views/RedirectView.vue rename to src/views/BankID/RedirectView.vue index 749886e1eec88607ccf7f5355293bc215ed8945d..93e690d2e9aef70d6f2fa374d997ee1cc5909309 100644 --- a/src/views/RedirectView.vue +++ b/src/views/BankID/RedirectView.vue @@ -34,12 +34,4 @@ async function exchangeCodeForToken(code: string, state: string) { router.push({ name: 'login' }); }); } -</script> - -<template> - -</template> - -<style scoped> - -</style> \ No newline at end of file +</script> \ No newline at end of file diff --git a/src/views/BasePageView.vue b/src/views/BasePageView.vue index 148394e41b45dc0082779408f307aff1147f6844..4aebb55972d017af7c1469446acd9a9cb4ef8d61 100644 --- a/src/views/BasePageView.vue +++ b/src/views/BasePageView.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import { RouterView } from 'vue-router' -import Footer from '@/components/BaseComponents/FooterComponent.vue' -import Menu from '@/components/BaseComponents/MenuComponent.vue' +import Footer from '@/components/BaseComponents/BaseFooter.vue' +import Menu from '@/components/BaseComponents/NavBar.vue' import { useUserInfoStore } from '@/stores/UserStore'; </script> diff --git a/src/views/Budget/BudgetOverview.vue b/src/views/Budget/BudgetOverview.vue index 06ecf1083d6cb7c29f320195b4038532c052d690..1eea4fe5ce22bf6b5d7599b353f45612e6730409 100644 --- a/src/views/Budget/BudgetOverview.vue +++ b/src/views/Budget/BudgetOverview.vue @@ -1,5 +1,5 @@ <script setup lang="ts"> -import Button1 from '@/components/Buttons/Button1.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import BudgetBox from '@/components/Budget/BudgetBox.vue' import { onMounted, ref } from 'vue' import handleUnknownError from '@/components/Exceptions/unkownErrorHandler' @@ -72,12 +72,12 @@ const goToBudget = (id: number) => { <template> <div class="container"> <h1 class="text-center">Dine Budsjetter</h1> - <button1 id="createBudgetButton" button-text="Opprett nytt budsjett" class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample"/> + <BaseButton id="createBudgetButton" button-text="Opprett nytt budsjett" class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample"/> <div class="collapse" id="collapseExample"> <div class="container collapse-container"> <div class="input-group"> <input id="collapseInput" class="form-control" type="text" placeholder="Skriv inn navn på budsjettet" v-model="budgetNameInput"> - <button1 id="collapseButton" button-text="Opprett" data-bs-dismiss="modal" @click="createNewBudget"/> + <BaseButton id="collapseButton" button-text="Opprett" data-bs-dismiss="modal" @click="createNewBudget"/> </div> </div> </div> diff --git a/src/views/Budget/BudgetView.vue b/src/views/Budget/BudgetView.vue index 4697c12b5098d407504951f1ed4232ea07af2eea..e06214ebd9bccb12b5370a936974462a7901ceab 100644 --- a/src/views/Budget/BudgetView.vue +++ b/src/views/Budget/BudgetView.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> import { onMounted, ref } from 'vue' -import Button1 from '@/components/Buttons/Button1.vue' +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue' import ExpenseBox from '@/components/Budget/ExpenseBox.vue' import { useRouter } from 'vue-router' import { useBudgetStore } from '@/stores/BudgetStore' @@ -225,8 +225,8 @@ const importBudget = async (budgetId: number) => { <h1 class="text-center">{{ title }}</h1> <div class="button-container"> - <button1 id="goBack" @click="router.push('/budsjett-oversikt')" button-text="Gå tilbake"/> - <button1 id="optionButton" button-text="Alternativer" data-bs-toggle="modal" data-bs-target="#modal"/> + <BaseButton id="goBack" @click="router.push('/budsjett-oversikt')" button-text="Gå tilbake"/> + <BaseButton id="optionButton" button-text="Alternativer" data-bs-toggle="modal" data-bs-target="#modal"/> </div> <p class="text-danger">{{ errorMsg }}</p> @@ -246,7 +246,7 @@ const importBudget = async (budgetId: number) => { <form ref="renameFormRef" @submit.prevent="updateBudget(budget, budgetTitle)"> <div class="input-group"> <input id="collapseInput" class="col-5 form-control" type="text" required minlength="1" placeholder="Skriv inn nytt navn på budsjettet" v-model="budgetTitle"> - <button1 id="collapseButton" type="submit" button-text="Bekreft" data-bs-dismiss="modal"/> + <BaseButton id="collapseButton" type="submit" button-text="Bekreft" data-bs-dismiss="modal"/> </div> </form> </div> diff --git a/src/views/ConfigurationView.vue b/src/views/Configuration/ConfigurationView.vue similarity index 90% rename from src/views/ConfigurationView.vue rename to src/views/Configuration/ConfigurationView.vue index 2c375e5d6c494d84822eb53e84684aba09572356..426224bfc413d2c59ac8443f701771ed77889022 100644 --- a/src/views/ConfigurationView.vue +++ b/src/views/Configuration/ConfigurationView.vue @@ -1,5 +1,5 @@ <script setup lang="ts"> -import Configuration from '@/components/Configuration/Configuration.vue' +import Configuration from '@/components/Configuration/ConfigurationParent.vue' </script> <template> diff --git a/src/views/NotFoundView.vue b/src/views/Exception/NotFoundView.vue similarity index 87% rename from src/views/NotFoundView.vue rename to src/views/Exception/NotFoundView.vue index 1d5ecd34e6978554b63f06cfadfad0a391d41f9a..fceb97ac6adf0017e00025fa1703f5509117497c 100644 --- a/src/views/NotFoundView.vue +++ b/src/views/Exception/NotFoundView.vue @@ -11,7 +11,7 @@ Beklager, det har oppstått en feil. Forespurt side ikke funnet! </div> <div class="error-actions"> - <Button1 data-cy="to-home" button-text="Ta meg hjem" @click="home" /> + <BaseButton data-cy="to-home" button-text="Ta meg hjem" @click="home" /> </div> </div> </div> @@ -22,7 +22,7 @@ <script setup lang="ts"> import { useRouter } from 'vue-router'; -import Button1 from '@/components/Buttons/Button1.vue'; +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'; const router = useRouter(); diff --git a/src/views/UnauthorizedView.vue b/src/views/Exception/UnauthorizedView.vue similarity index 74% rename from src/views/UnauthorizedView.vue rename to src/views/Exception/UnauthorizedView.vue index d992177878338b02d4ecc2f33e588d4743ceba57..99bfe00e211b79514f6fbb1b4ac8a2983b40018b 100644 --- a/src/views/UnauthorizedView.vue +++ b/src/views/Exception/UnauthorizedView.vue @@ -3,12 +3,12 @@ <div class="container py-5"> <div class="row"> <div class="col-md-2 text-center"> - <p><img src="@/assets/icons/danger.svg" alt="fare"> <br/>Statuskode: 403</p> + <p><img src="../../assets/icons/danger.svg" alt="fare"> <br/>Statuskode: 403</p> </div> <div class="col-md-10"> <h3>OOPS!!! Beklager...</h3> <p>Beklager, din tilgang er nektet av sikkerhetsgrunner på serveren vår og også våre sensitive data.<br/>Vennligst gå tilbake til startsiden for å fortsette å surfe.</p> - <Button1 :button-text="'Ta meg hjem'" @click="home" /> + <BaseButton :button-text="'Ta meg hjem'" @click="home" /> </div> </div> </div> @@ -18,7 +18,7 @@ <script setup lang="ts"> import { useRouter } from 'vue-router'; -import Button1 from '@/components/Buttons/Button1.vue'; +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'; const router = useRouter(); diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue deleted file mode 100644 index 70c5e6456e7f882ebbea3fa1476b4cae2fb52aa2..0000000000000000000000000000000000000000 --- a/src/views/HomeView.vue +++ /dev/null @@ -1,9 +0,0 @@ -<script setup lang="ts"> - -</script> - -<template> - <RouterLink to="login">Login</RouterLink> - <br/> - <RouterLink to="sign-up">Sign up</RouterLink> -</template> diff --git a/src/views/LeaderboardView.vue b/src/views/Leaderboard/LeaderboardView.vue similarity index 88% rename from src/views/LeaderboardView.vue rename to src/views/Leaderboard/LeaderboardView.vue index fde5b950331544f95fb849964cbb7ff28fb42314..07f88f352b3f757e9683b273cdeb8938ab923284 100644 --- a/src/views/LeaderboardView.vue +++ b/src/views/Leaderboard/LeaderboardView.vue @@ -9,27 +9,27 @@ <div class="btn-group-vertical" id="radioContainer" role="group" aria-label="Vertikal radio knappgruppe"> <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio1" autocomplete="off" checked> - <label class="btn btn-outline-primary" for="vbtn-radio1" @click="global"><img src="@/assets/globe.png" style="width: 60px" alt="globus"> Global</label> + <label class="btn btn-outline-primary" for="vbtn-radio1" @click="global"><img src="../../assets/globe.png" style="width: 60px" alt="globus"> Global</label> <input type="radio" class="btn-check" name="vbtn-radio" id="vbtn-radio2" autocomplete="off"> <label data-cy="friends-leaderboard-btn" class="btn btn-outline-primary" for="vbtn-radio2" - @click="friends"><img src="@/assets/friends.png" style="width: 60px" alt="venner"> Venner</label> + @click="friends"><img src="../../assets/friends.png" style="width: 60px" alt="venner"> Venner</label> </div> </div> </div> <main> <div id="leaderboard"> - <h1><img src="@/assets/items/pigcoin.png" style="width: 2rem" alt="pig coin"> Totale poeng</h1> + <h1><img src="../../assets/items/pigcoin.png" style="width: 2rem" alt="pig coin"> Totale poeng</h1> <Leaderboard data-cy="total-points-board" :leaderboard="pointsLeaderboardData" :leaderboardExtra="pointsLeaderboardDataExtra" @navigateToUserProfile="navigateToUserProfile" /> </div> <div id="leaderboard"> - <h1><img src="@/assets/icons/fire.png" style="width: 2rem" alt="ild"> Nåværende rekke</h1> + <h1><img src="../../assets/icons/fire.png" style="width: 2rem" alt="ild"> Nåværende rekke</h1> <Leaderboard data-cy="current-points-board" :leaderboard="currentLeaderboardData" :leaderboardExtra="currentLeaderboardDataExtra" @navigateToUserProfile="navigateToUserProfile" /> </div> <div id="leaderboard"> - <h1><img src="@/assets/icons/fire.png" style="width: 2rem" alt="ild"> Høyeste rekke</h1> + <h1><img src="../../assets/icons/fire.png" style="width: 2rem" alt="ild"> Høyeste rekke</h1> <Leaderboard data-cy="streak-board" :leaderboard="streakLeaderboardData" :leaderboardExtra="streakLeaderboardDataExtra" @navigateToUserProfile="navigateToUserProfile" /> </div> @@ -37,7 +37,7 @@ </div> <div id="communityContainer"> <h1>Totale poeng opptjent som et fellesskap</h1> - <h2>1000000 <img src="@/assets/items/v-buck.png" style="width: 2rem" alt="alt"></h2> + <h2>1000000 <img src="../../assets/items/v-buck.png" style="width: 2rem" alt="alt"></h2> </div> </template> @@ -45,7 +45,7 @@ <script setup lang="ts"> import { onMounted, ref } from 'vue'; import { useRouter } from 'vue-router'; -import Leaderboard from '@/components/LeaderboardComponents/Leaderboard.vue'; +import Leaderboard from '@/components/Leaderboard/LeaderboardTable.vue'; import { LeaderboardService } from '@/api'; let streakLeaderboardData = ref([] as any); diff --git a/src/views/NewsView.vue b/src/views/News/NewsView.vue similarity index 55% rename from src/views/NewsView.vue rename to src/views/News/NewsView.vue index bdfb7c611f43f0301e460f56b150a97213393a9d..2c309f722ba054b6b188401b997631ab6673bb94 100644 --- a/src/views/NewsView.vue +++ b/src/views/News/NewsView.vue @@ -1,5 +1,5 @@ <script setup lang="ts"> -import NewsComponent from "@/components/NewsComponents/NewsComponent.vue"; +import NewsComponent from "@/components/News/NewsFeed.vue"; </script> diff --git a/src/views/SavingGoalView/RoadmapView.vue b/src/views/SavingGoal/RoadmapView.vue similarity index 53% rename from src/views/SavingGoalView/RoadmapView.vue rename to src/views/SavingGoal/RoadmapView.vue index cdf655318efd24b40aab9b9e8fa1b82c3d30d3df..67921dc5416487704834d0f84c5cbe07cbf0eebd 100644 --- a/src/views/SavingGoalView/RoadmapView.vue +++ b/src/views/SavingGoal/RoadmapView.vue @@ -1,5 +1,5 @@ <script setup lang="ts"> -import SavingGoal from "@/components/SavingGoalComponents/SavingGoal.vue"; +import SavingGoal from "@/components/SavingGoal/SavingGoal.vue"; </script> <template> diff --git a/src/views/ShopView.vue b/src/views/Shop/ShopView.vue similarity index 91% rename from src/views/ShopView.vue rename to src/views/Shop/ShopView.vue index fc35bb4a7243918395de43b96d207fa4887e4383..15f17c636da19d0e18deb7e1f627027ff310a7ac 100644 --- a/src/views/ShopView.vue +++ b/src/views/Shop/ShopView.vue @@ -10,7 +10,7 @@ <h1>Stash</h1> <div class="category row justify-content-between mb-5 m-2"> <div class="card text-center" style="width: 16rem; border: none"> - <img src="@/assets/items/adfree.png" class="card-img-top" alt="..."> + <img src="../../assets/items/adfree.png" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Adfree</h5> <button type="button" class="btn btn-primary" id="buttonStyle" @click="buyNoAds"> @@ -18,7 +18,7 @@ </div> </div> <div class="card text-center" style="width: 16rem; border: none"> - <img src="@/assets/items/piggybank.webp" class="card-img-top" alt="..."> + <img src="../../assets/items/piggybank.webp" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Premium</h5> <button type="button" class="btn btn-primary" id="buttonStyle" @@ -47,21 +47,21 @@ <h1>Stash</h1> <div class="category row justify-content-between mb-5 m-2"> <div class="card text-center" style="width: 16rem; border: none"> - <img src="@/assets/items/coffee.jpg" class="card-img-top" alt="..."> + <img src="../../assets/items/coffee.jpg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Free Coffee</h5> <ShopButton button-text="500"></ShopButton> </div> </div> <div class="card text-center" style="width: 16rem; border: none"> - <img src="@/assets/items/viaplay.jpg" class="card-img-top" alt="..."> + <img src="../../assets/items/viaplay.jpg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">1 Month Viaplay</h5> <ShopButton button-text="10000"></ShopButton> </div> </div> <div class="card text-center" style="width: 16rem; border: none"> - <img src="@/assets/items/pirbad.png" class="card-img-top" alt="..."> + <img src="../../assets/items/pirbad.png" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">-10% rabatt</h5> <ShopButton button-text="1000"></ShopButton> @@ -76,7 +76,7 @@ </template> <script setup lang="ts"> -import ShopButton from '@/components/Buttons/ShopButton.vue'; +import ShopButton from '@/components/Shop/ShopButton.vue'; import { ref, onMounted } from 'vue'; import { UserService } from '@/api'; import { useUserInfoStore } from '@/stores/UserStore'; diff --git a/src/views/TestView.vue b/src/views/TestView.vue deleted file mode 100644 index a7fce444288c4df4c5f9f531c3e92e3da43935a4..0000000000000000000000000000000000000000 --- a/src/views/TestView.vue +++ /dev/null @@ -1,11 +0,0 @@ -<template> - <div> - <Button1 :buttonText="hallo"></Button1> - </div> -</template> - -<script setup lang="ts"> - import Button1 from '@/components/Buttons/Button1.vue' - - const hallo = 'Hallo' -</script> \ No newline at end of file diff --git a/src/views/UpdateUser/UpdateUserView.vue b/src/views/UpdateUser/UpdateUserView.vue deleted file mode 100644 index aae915c1e1225dca1b3f6ac4b34e5b987c765515..0000000000000000000000000000000000000000 --- a/src/views/UpdateUser/UpdateUserView.vue +++ /dev/null @@ -1,12 +0,0 @@ -<script setup lang="ts"> - -import UpdateUserLayout from "@/components/UpdateUserComponents/UpdateUserLayout.vue"; -</script> - -<template> -<UpdateUserLayout></UpdateUserLayout> -</template> - -<style scoped> - -</style> \ No newline at end of file diff --git a/src/views/User/UserProfileForeignView.vue b/src/views/User/ExternalProfileView.vue similarity index 68% rename from src/views/User/UserProfileForeignView.vue rename to src/views/User/ExternalProfileView.vue index 0662a2c06dc7a47cea608f4172a11d009aafdefe..67951edd79a50af254b995e802c041708a7083b5 100644 --- a/src/views/User/UserProfileForeignView.vue +++ b/src/views/User/ExternalProfileView.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> -import UserProfileForeignLayout from "@/components/UserProfile/UserProfileForeignLayout.vue"; +import UserProfileForeignLayout from "@/components/UserProfile/ExternalProfile.vue"; </script> <!-- The path to a foreign user is /{userId} || /profile/{userId}--> <template> diff --git a/src/views/User/UserProfileView.vue b/src/views/User/MyProfileView.vue similarity index 60% rename from src/views/User/UserProfileView.vue rename to src/views/User/MyProfileView.vue index 85e9882866797433edfa76cc3fbf4368796432cf..f8ec753f18e393bf30db04d063c0b7026906dd02 100644 --- a/src/views/User/UserProfileView.vue +++ b/src/views/User/MyProfileView.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> -import UserProfileLayout from "@/components/UserProfile/UserProfileLayout.vue"; +import UserProfileLayout from "@/components/UserProfile/MyProfile.vue"; </script> <template> diff --git a/src/views/User/UserAddFriend.vue b/src/views/User/UserAddFriend.vue deleted file mode 100644 index 585f5f8c7ec6f69bebe290fe917e46cad1f8eb5e..0000000000000000000000000000000000000000 --- a/src/views/User/UserAddFriend.vue +++ /dev/null @@ -1,238 +0,0 @@ -<script setup lang="ts"> -import { ref } from 'vue' -import { FriendService } from '@/api'; - -async function addFriend(friendID: number) { - const response = await FriendService.addFriendRequest({ userId: friendID }); - console.log(response); -} -</script> - - -<template> - <div class="container"> - <h1>Add Friend</h1> - <div class="row"> - <form class="col-md-5" id="searchBox" role="search"> - <input class="form-control me-2 custom-border" type="search" placeholder="Search" aria-label="Search"> - <button class="btn btn-success" type="submit">Search</button> - </form> - <div class="col-md-8"> - <div class="people-nearby"> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Sophia Page</a></h5> - <p>Software Engineer</p> - <p class="text-muted">500m away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right" @click="addFriend(1)">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar6.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Emma Johnson</a></h5> - <p>Model at Fashion</p> - <p class="text-muted">800m away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar5.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Nora Wilson</a></h5> - <p>Writer at Newspaper</p> - <p class="text-muted">2.5km away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar4.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Diana Amber</a></h5> - <p>Student</p> - <p class="text-muted">700m away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Addison Thomas</a></h5> - <p>Barber at Fashion</p> - <p class="text-muted">1.5km away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar2.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Jonathon Thompson</a></h5> - <p>Fashion Designer</p> - <p class="text-muted">2km away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Olivia Steward</a></h5> - <p>Creative Director</p> - <p class="text-muted">2km away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar6.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Elena Foster</a></h5> - <p>Executive Officer</p> - <p class="text-muted">4km away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Brian Walton</a></h5> - <p>Designer at Designer</p> - <p class="text-muted">3km away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - <div class="nearby-user"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="user" - class="profile-photo-lg"> - </div> - <div class="col-md-7 col-sm-7"> - <h5><a href="#" class="profile-link">Cris Haris</a></h5> - <p>General Manager at Manager</p> - <p class="text-muted">1km away</p> - </div> - <div class="col-md-3 col-sm-3"> - <button class="btn btn-primary pull-right">Add Friend</button> - </div> - </div> - </div> - </div> - </div> - </div> - </div> -</template> - -<style scoped> -body { - margin-top: 20px; - background: #FAFAFA; -} - -.people-nearby .google-maps { - background: #f8f8f8; - border-radius: 4px; - border: 1px solid #f1f2f2; - padding: 20px; - margin-bottom: 20px; -} - -.people-nearby .google-maps .map { - height: 300px; - width: 100%; - border: none; -} - -.people-nearby .nearby-user { - padding: 20px 0; - border-top: 1px solid #f1f2f2; - border-bottom: 1px solid #f1f2f2; - margin-bottom: 20px; -} - -img.profile-photo-lg { - height: 80px; - width: 80px; - border-radius: 50%; -} - -#searchBox { - margin-bottom: 20px; - display: flex; - text-wrap: nowrap; -} - -.row { - width: 100%; - display: flex; - justify-content: center; - align-items: center; -} - -.form-control.custom-border { - border-color: #222223; - /* Change to your desired color */ -} -</style> \ No newline at end of file diff --git a/src/views/FeedbackView.vue b/src/views/User/UserFeedbackView.vue similarity index 88% rename from src/views/FeedbackView.vue rename to src/views/User/UserFeedbackView.vue index a4cbe7a434ef332fb04146ba6c3193ccc0f20688..3c28adbed9221b1b24edd8a33a6638531c293ffd 100644 --- a/src/views/FeedbackView.vue +++ b/src/views/User/UserFeedbackView.vue @@ -9,7 +9,7 @@ <label for="feedback">Din tilbakemelding:</label> <textarea v-model="message" placeholder="Write here" rows="5" name="comment[text]" id="comment_text" cols="33" required></textarea> - <Button1 button-text="Send" @click="submitForm">Send inn</Button1> + <BaseButton button-text="Send" @click="submitForm">Send inn</BaseButton> <p v-if="submissionStatus">{{ submissionStatus }}</p> </form> </div> @@ -19,8 +19,8 @@ <script setup lang="ts"> import { ref } from 'vue'; -import BaseInput from '@/components/InputFields/BaseInput.vue'; -import Button1 from '@/components/Buttons/Button1.vue'; +import BaseInput from '@/components/BaseComponents/Input/BaseInput.vue'; +import BaseButton from '@/components/BaseComponents/Buttons/BaseButton.vue'; const email = ref(""); const message = ref(""); diff --git a/src/views/SettingsView.vue b/src/views/User/UserSettingsView.vue similarity index 100% rename from src/views/SettingsView.vue rename to src/views/User/UserSettingsView.vue