Skip to content
Snippets Groups Projects
Commit c18471c8 authored by henrikburmann's avatar henrikburmann
Browse files

Merge branch 'renting' of gitlab.stud.idi.ntnu.no:idatt2106_2022_02/boco-frontend into renting

parents 874b1142 a17474e0
No related branches found
No related tags found
1 merge request!81Renting
Showing
with 92 additions and 59 deletions
......@@ -10,6 +10,7 @@
"dependencies": {
"@heroicons/vue": "^1.0.6",
"@mdi/font": "5.9.55",
"@vue-hero-icons/outline": "^1.7.2",
"@vuelidate/core": "^2.0.0-alpha.40",
"@vuelidate/validators": "^2.0.0-alpha.28",
"axios": "^0.26.1",
......@@ -2833,6 +2834,14 @@
"dev": true,
"license": "MIT"
},
"node_modules/@vue-hero-icons/outline": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/@vue-hero-icons/outline/-/outline-1.7.2.tgz",
"integrity": "sha512-mgMpncarjZHXY1K2tyjbYHf53yQG9amroDR9t2iH/umpsN8+f8RNcTy1m131EZ8WBCm8MpF97XpXPV129rvtVg==",
"dependencies": {
"babel-helper-vue-jsx-merge-props": "^2.0.3"
}
},
"node_modules/@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.2.1",
"dev": true,
......@@ -4173,6 +4182,11 @@
"follow-redirects": "^1.14.8"
}
},
"node_modules/babel-helper-vue-jsx-merge-props": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
"integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
},
"node_modules/babel-jest": {
"version": "27.5.1",
"dev": true,
......@@ -16919,6 +16933,14 @@
"version": "21.0.0",
"dev": true
},
"@vue-hero-icons/outline": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/@vue-hero-icons/outline/-/outline-1.7.2.tgz",
"integrity": "sha512-mgMpncarjZHXY1K2tyjbYHf53yQG9amroDR9t2iH/umpsN8+f8RNcTy1m131EZ8WBCm8MpF97XpXPV129rvtVg==",
"requires": {
"babel-helper-vue-jsx-merge-props": "^2.0.3"
}
},
"@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.2.1",
"dev": true
......@@ -17800,6 +17822,11 @@
"follow-redirects": "^1.14.8"
}
},
"babel-helper-vue-jsx-merge-props": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
"integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
},
"babel-jest": {
"version": "27.5.1",
"dev": true,
......
......@@ -11,6 +11,7 @@
"dependencies": {
"@heroicons/vue": "^1.0.6",
"@mdi/font": "5.9.55",
"@vue-hero-icons/outline": "^1.7.2",
"@vuelidate/core": "^2.0.0-alpha.40",
"@vuelidate/validators": "^2.0.0-alpha.28",
"axios": "^0.26.1",
......
public/favicon.ico

15 KiB | W: | H:

public/favicon.ico

14.2 KiB | W: | H:

public/favicon.ico
public/favicon.ico
public/favicon.ico
public/favicon.ico
  • 2-up
  • Swipe
  • Onion skin
src/assets/additem.png

17.6 KiB

src/assets/members.png

4.38 KiB

src/assets/messages.png

17.2 KiB

src/assets/newCommunity.png

19 KiB

src/assets/notifications.png

24.3 KiB

src/assets/profile.png

38.4 KiB

src/assets/removeIcon.png

1.51 KiB

......@@ -12,25 +12,22 @@
</div>
<ul class="flex">
<li>
<img
<PlusIcon
class="m-6 cursor-pointer h-7"
src="../../assets/additem.png"
alt="Legg til"
@click="$router.push('/addNewItem')"
/>
</li>
<li>
<img
<ChatAlt2Icon
class="m-6 cursor-pointer h-7"
src="../../assets/messages.png"
alt="Meldinger"
@click="$router.push('/messages')"
/>
</li>
<li>
<img
<UserCircleIcon
class="m-6 cursor-pointer h-7"
src="../../assets/profile.png"
alt="Profil"
@click="loadProfile"
/>
......@@ -41,10 +38,17 @@
<script>
import { parseUserFromToken } from "@/utils/token-utils";
import {PlusIcon, ChatAlt2Icon, UserCircleIcon} from "@heroicons/vue/outline";
export default {
name: "NavBar.vue",
components:{
PlusIcon,
ChatAlt2Icon,
UserCircleIcon,
},
methods: {
async loadProfile() {
if (this.$store.state.user.token !== null) {
......
<template>
<div
class="w-full max-w-md m-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl mt-[10%] p-4"
>
<div class="md:ring-1 ring-gray-300 rounded-xl overflow-hidden mx-auto mb-auto max-w-md w-full p-4">
<!-- Component heading -->
<h3
class="text-xl font-medium text-center text-gray-600 dark:text-gray-200 mt-4 mb-8"
......@@ -162,13 +160,6 @@
</button> -->
<!-- Button for removing an image -->
<button
class="w-1/12 ml-5 text-white bg-white-500 font-medium rounded-lg text-sm"
v-show="imageAdded"
@click="removeImage"
>
<img src="../../assets/removeIcon.png" alt="Remove icon image" />
</button>
</div>
<!-- Div box for showing all chosen images -->
......@@ -178,8 +169,13 @@
</div>
<!-- Save item button -->
<div class="flex justify-center mt-10">
<Button @click="saveClicked" id="saveButton" :text="'Lagre'"> </Button>
<div class="flex justify-center mt-10 float-right">
<Button
@click="saveClicked"
id="saveButton"
:text="'Lagre'"
>
</Button>
</div>
</div>
</template>
......
<template>
<div
class="w-full max-w-md m-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl mt-[3%] p-4"
>
<div class="md:ring-1 ring-gray-300 rounded-xl overflow-hidden mx-auto mb-auto max-w-md w-full p-4">
<!-- Component heading -->
<h3
class="text-xl font-medium text-center text-gray-600 dark:text-gray-200 mt-4 mb-8"
>
Utleie
</h3>
<h3 class="text-xl font-medium text-center text-gray-600 dark:text-gray-200 mt-4 mb-8">Opprett ny utleie</h3>
<!-- Title -->
<div class="mb-6" :class="{ error: v$.item.title.$errors.length }">
......@@ -212,7 +206,7 @@
</div>
<!-- Save item button -->
<div class="flex justify-center">
<div class="float-right">
<Button :text="'Lagre'" @click="saveClicked" id="saveButton" />
</div>
</div>
......
<template>
<div
class="w-full max-w-md m-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl mt-[10%]"
>
<div class="md:ring-1 ring-gray-300 rounded-xl overflow-hidden mx-auto mb-auto max-w-md w-full">
<div class="px-6 py-4 mt-4">
<h3
class="text-xl font-medium text-center text-gray-600 dark:text-gray-200 mt-4 mb-8"
......
<template>
<div
class="w-full max-w-sm p-6 m-auto bg-white rounded-md shadow-md dark:bg-gray-800 mt-8"
class="md:ring-1 ring-gray-300 rounded-xl overflow-hidden mx-auto mb-auto max-w-md w-full p-4"
>
<h3 class="text-xl font-medium text-center text-gray-600 dark:text-gray-200 mt-4 mb-8">Endre passord</h3>
<div
id="firstPasswordField"
:class="{ error: v$.user.password.$errors.length }"
......@@ -14,7 +17,7 @@
<input
type="password"
v-model="v$.user.password.$model"
class="block w-full px-4 py-2 mt-2 text-gray-700 bg-white border rounded-md dark:bg-gray-800 dark:text-gray-300 dark:border-gray-600 focus:border-primary-light dark:focus:border-primary-light focus:ring-primary-light focus:outline-none focus:ring focus:ring-opacity-40"
class="block w-full px-4 py-2 mt-2 text-gray-700 placeholder-gray-500 bg-white border rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-400 dark:focus:border-blue-300 focus:ring-opacity-40 focus:outline-none focus:ring focus:ring-blue-300"
/>
<!-- error message -->
<div v-for="(error, index) of v$.user.password.$errors" :key="index">
......@@ -44,7 +47,7 @@
<input
type="password"
v-model="v$.user.rePassword.$model"
class="block w-full px-4 py-2 mt-2 text-gray-700 bg-white border rounded-md dark:bg-gray-800 dark:text-gray-300 dark:border-gray-600 focus:border-primary-light dark:focus:border-primary-light focus:ring-primary-light focus:outline-none focus:ring focus:ring-opacity-40"
class="block w-full px-4 py-2 mt-2 text-gray-700 placeholder-gray-500 bg-white border rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-400 dark:focus:border-blue-300 focus:ring-opacity-40 focus:outline-none focus:ring focus:ring-blue-300"
/>
<!-- error message -->
<div v-for="(error, index) of v$.user.rePassword.$errors" :key="index">
......@@ -59,25 +62,27 @@
</div>
<div id="buttonsField" class="mt-6">
<button
<Button
class="float-right"
@click="setNewPassword"
class="w-full px-4 py-2 tracking-wide text-white transition-colors duration-200 transform bg-gray-700 rounded-md hover:bg-gray-600 focus:outline-none focus:bg-gray-600"
>
Endre passord
</button>
:text="'Sett ny passord'"
/>
</div>
</div>
</template>
<script>
import useVuelidate from "@vuelidate/core";
import { required, minLength, sameAs } from "@vuelidate/validators";
import { required, minLength, sameAs, helpers } from "@vuelidate/validators";
import { doNewPassword } from "@/utils/apiutil";
import { mapState } from "vuex";
import Button from "@/components/BaseComponents/ColoredButton";
export default {
name: "NewPasswordForm.vue",
components:{
Button,},
setup() {
return { v$: useVuelidate() };
},
......@@ -85,13 +90,12 @@ export default {
return {
user: {
password: {
required,
minLength: minLength(8),
required: helpers.withMessage(`Feltet må være utfylt`, required),
minLength: helpers.withMessage('Passordet må være minst 8 karakterer lang', minLength(8)),
},
rePassword: {
required,
minLength: minLength(8),
sameAs: sameAs(this.user.password),
sameAs: helpers.withMessage('Passordene må være like', sameAs(this.user.password)),
required: helpers.withMessage(`Feltet må være utfylt`, required),
},
},
};
......@@ -129,7 +133,7 @@ export default {
if (newPasswordResponse.newPasswordSet === true) {
console.log("New password set");
await this.$router.push("/endre");
await this.$router.push("/");
} else if (newPasswordResponse.newPasswordSet === false) {
console.log("Couldn't set new password");
} else {
......
<template>
<div
class="w-full max-w-md m-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl mt-[10%] p-4"
class="w-full max-w-md mx-auto mb-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl p-4"
>
<h3
class="text-xl font-medium text-center text-gray-600 dark:text-gray-200 mt-4 mb-8"
......
<template>
<div class="resetPassword">
<div class="md:ring-1 ring-gray-300 rounded-xl overflow-hidden mx-auto mb-auto max-w-md w-full p-4">
<h3 class="text-xl font-medium text-center text-gray-600 dark:text-gray-200 mt-4 mb-8">Glemt passordet ditt?</h3>
<div
id="emailField"
class="m-6"
......@@ -14,10 +17,11 @@
<input
type="email"
id="email"
class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-medium focus:border-primary-medium block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-medium dark:focus:border-primary-medium"
class="block w-full px-4 py-2 mt-2 text-gray-700 placeholder-gray-500 bg-white border rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-400 dark:focus:border-blue-300 focus:ring-opacity-40 focus:outline-none focus:ring focus:ring-blue-300"
placeholder="eksempel@eksempel.no"
v-model="v$.email.$model"
required
@keyup.enter="sendHome"
/>
<!-- error message -->
<div v-for="(error, index) of v$.email.$errors" :key="index">
......@@ -30,22 +34,27 @@
</div>
</div>
</div>
<Button
class="float-right"
@click="sendHome"
:text="'Tilbakestill passord'"
/>
</div>
<button
@click="sendHome"
class="flex justify-center align-items: flex-end; text-white bg-primary-medium hover:bg-primary-dark focus:ring-4 focus:outline-none focus:ring-primary-light font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-primary-medium dark:hover:bg-primary-dark dark:focus:ring-primary-dark"
>
Send e-post
</button>
</div>
</template>
<script>
import useVuelidate from "@vuelidate/core";
import { required, email, helpers } from "@vuelidate/validators";
import Button from "@/components/BaseComponents/ColoredButton";
export default {
name: "ResetPassword.vue",
components:{
Button,
},
data() {
return {
showError: false,
......@@ -58,7 +67,7 @@ export default {
validations() {
return {
email: {
required,
required: helpers.withMessage('Feltet må være utfylt', required),
email: helpers.withMessage(`E-posten er ugyldig`, email),
},
};
......
......@@ -64,7 +64,7 @@
Total pris: {{ totPrice }} kr
</p>
<button
class="px-4 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-blue-600 rounded-md hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
class="px-4 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-primary-medium rounded-md hover:bg-primary-light focus:outline-none focus:ring focus:ring-opacity-80"
>
<!-- This button should send you to the rent page -->
Rent now
......
<template>
<div
class="w-full max-w-xl m-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl mt-[10%] p-6"
class="w-full max-w-xl m-auto md:ring-1 ring-gray-300 overflow-hidden rounded-xl p-4"
>
<div v-show="isCurrentUser" class="float-right px-4 pt-4">
<button
......@@ -27,7 +27,7 @@
v-show="dropdown"
class="z-10 w-44 text-base list-none bg-white rounded divide-y divide-gray-100 shadow dark:bg-gray-700"
>
<ul class="py-1 absolute bg-white" aria-labelledby="dropdownDefault">
<ul class="py-1 absolute bg-white ring-1 ring-gray-300 rounded-xl" aria-labelledby="dropdownDefault">
<li>
<router-link
to=""
......
......@@ -18,7 +18,7 @@
<div class="flex flex-row justify-center">
<button
v-if="!admin"
class="px-4 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-blue-600 rounded-md hover:bg-blue-500 focus:outline-none focus:ring focus:ring-blue-300 focus:ring-opacity-80"
class="px-4 py-2 font-medium tracking-wide text-white capitalize transition-colors duration-200 transform bg-primary-medium rounded-md hover:bg-primary-light focus:outline-none focus:ring focus:ring-opacity-80"
>
Åpne chat
</button>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment